Polonium has been frustrating to use. I'm unsure how much of this I can blame polonium vs kde vs plasma-manager vs nix, but 1. keyboard shortcuts aren't working 2. tiling keeps going in and out for various windows 3. seemingly kde startup time takes forever with it installed The more I'm starting to understand KDE's native window management functions, the more I'm thinking that's the right way to go. I'm going to abandom polonium for now, perhaps with some future return.
134 lines
3.0 KiB
Nix
134 lines
3.0 KiB
Nix
{ lib, config, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.roles.desktop;
|
|
|
|
basePackages = with pkgs; [
|
|
brightnessctl
|
|
mangohud # Should probably get refactored with steam/gamescope out to a gaming role
|
|
];
|
|
|
|
x11BasePackages = with pkgs; [
|
|
|
|
];
|
|
|
|
x11OnlyPackages = with pkgs; [
|
|
emacs
|
|
];
|
|
|
|
waylandBasePackages = with pkgs; [
|
|
grim
|
|
slurp
|
|
wl-clipboard
|
|
mako
|
|
];
|
|
|
|
waylandOnlyPackages = with pkgs; [
|
|
emacs-gtk
|
|
];
|
|
in
|
|
{
|
|
options.roles.desktop = {
|
|
enable = mkEnableOption "Enable the desktop role";
|
|
x11Only = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable
|
|
{
|
|
services.xserver.xkb = {
|
|
layout = "us";
|
|
variant = "";
|
|
options = "caps:escape";
|
|
};
|
|
services.xserver.enable = true;
|
|
|
|
services.displayManager.sddm = {
|
|
enable = true;
|
|
wayland.enable = !cfg.x11Only;
|
|
};
|
|
services.desktopManager.plasma6.enable = true;
|
|
|
|
services.xserver.windowManager.i3 = {
|
|
enable = true;
|
|
extraPackages = with pkgs; [
|
|
dmenu
|
|
i3status
|
|
i3lock
|
|
];
|
|
};
|
|
programs.dconf.enable = true;
|
|
services.gnome.gnome-keyring.enable = true;
|
|
|
|
programs.sway = mkIf (!cfg.x11Only) {
|
|
enable = true;
|
|
wrapperFeatures.gtk = true;
|
|
};
|
|
programs.light.enable = mkIf (!cfg.x11Only) true;
|
|
|
|
programs.kdeconnect.enable = true;
|
|
programs.java.enable = true;
|
|
programs.gamemode = {
|
|
enable = true;
|
|
|
|
};
|
|
programs.gamescope = {
|
|
enable = true;
|
|
#capSysNice = true;
|
|
args = [
|
|
#"--adaptive-sync"
|
|
#"--nested-refresh 165"
|
|
#"--backend wayland"
|
|
"--hdr-enabled"
|
|
"--hdr-itm-enable"
|
|
"--hdr-debug-force-output"
|
|
"--mangoapp"
|
|
"--rt"
|
|
"--steam"
|
|
#"--xwayland-count 2"
|
|
];
|
|
env = {
|
|
#PROTON_DISABLE_NVAPI = "1";
|
|
MANGOHUD = "1";
|
|
#MANGOHUD_CONFIG = "cpu_temp gpu_temp ram vram";
|
|
};
|
|
};
|
|
programs.steam = {
|
|
enable = true;
|
|
remotePlay.openFirewall = true;
|
|
localNetworkGameTransfers.openFirewall = true;
|
|
gamescopeSession = {
|
|
enable = true;
|
|
};
|
|
#package = pkgs.steam.override {
|
|
#withJava = true;
|
|
#withPrimus = true;
|
|
#extraPkgs = pkgs: [ bumblebee glxinfo ];
|
|
#};
|
|
};
|
|
services.sunshine = {
|
|
enable = true;
|
|
autoStart = true;
|
|
capSysAdmin = true;
|
|
openFirewall = true;
|
|
};
|
|
|
|
virtualisation.docker.enable = true;
|
|
users.extraGroups.docker.members = [ "johno" ];
|
|
|
|
environment.systemPackages = with pkgs; mkMerge [
|
|
basePackages
|
|
x11BasePackages
|
|
(mkIf cfg.x11Only x11OnlyPackages)
|
|
# TODO: Do we need a "wayland only" mode?
|
|
(mkIf (!cfg.x11Only) waylandBasePackages)
|
|
(mkIf (!cfg.x11Only) waylandOnlyPackages)
|
|
];
|
|
};
|
|
|
|
}
|