From adb51fd36ebece2a0a9a85acca3c2c565785a0fc Mon Sep 17 00:00:00 2001 From: Vinzenz Schroeter Date: Sun, 24 Sep 2023 13:20:34 +0200 Subject: [PATCH] better split also for desktop envs --- modules/default.nix | 2 +- modules/desktop/default.nix | 18 +++++--- modules/desktop/gnome-home.nix | 23 ++++++++++ modules/desktop/gnome.nix | 83 ++++++++++++++-------------------- modules/desktop/kde-home.nix | 18 ++++++++ modules/desktop/kde.nix | 73 ++++++++++++------------------ 6 files changed, 117 insertions(+), 100 deletions(-) create mode 100644 modules/desktop/gnome-home.nix create mode 100644 modules/desktop/kde-home.nix diff --git a/modules/default.nix b/modules/default.nix index 60755fa..9ae0dec 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -5,11 +5,11 @@ modulesCfg: {lib, ...}: { ./nixpkgs.nix ./globalinstalls.nix ./server.nix - ./desktop ] ++ (map (path: (import path modulesCfg)) [ ./hardware ./users + ./desktop ]); config = { diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index a7bbc6f..cb56ba0 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -1,16 +1,22 @@ -{ +modulesCfg: { config, pkgs, lib, ... }: let isEnabled = config.my.desktop.enable; + isHomeManager = modulesCfg.enableHomeManager; in { - imports = [ - ./gnome.nix - ./kde.nix - ./gaming.nix - ]; + imports = + [ + ./gnome.nix + ./kde.nix + ./gaming.nix + ] + ++ lib.optionals isHomeManager [ + ./gnome-home.nix + ./kde-home.nix + ]; options.my.desktop.enable = lib.mkEnableOption "desktop"; diff --git a/modules/desktop/gnome-home.nix b/modules/desktop/gnome-home.nix new file mode 100644 index 0000000..ee3870b --- /dev/null +++ b/modules/desktop/gnome-home.nix @@ -0,0 +1,23 @@ +{ + lib, + config, + pkgs, + ... +}: let + isEnabled = config.my.desktop.enableGnome; +in { + config = lib.mkIf isEnabled { + home-manager.sharedModules = [ + { + home.packages = with pkgs; [ + amberol + ]; + dconf.settings = { + "org/gnome/desktop/peripherals/keyboard" = { + numlock-state = true; + }; + }; + } + ]; + }; +} diff --git a/modules/desktop/gnome.nix b/modules/desktop/gnome.nix index 9e754f3..6fef40d 100644 --- a/modules/desktop/gnome.nix +++ b/modules/desktop/gnome.nix @@ -5,62 +5,45 @@ ... }: let isEnabled = config.my.desktop.enableGnome; - enableHomeManager = config.my.modulesCfg.enableHomeManager; in { options.my.desktop.enableGnome = lib.mkEnableOption "gnome desktop"; - config = lib.mkMerge [ - (lib.mkIf isEnabled { - my.desktop.enable = true; + config = lib.mkIf isEnabled { + my.desktop.enable = true; - services = { - xserver = { - # Enable the GNOME Desktop Environment. - displayManager.gdm.enable = true; - desktopManager.gnome.enable = true; - }; - - gnome = { - tracker-miners.enable = false; - tracker.enable = false; - }; + services = { + xserver = { + # Enable the GNOME Desktop Environment. + displayManager.gdm.enable = true; + desktopManager.gnome.enable = true; }; - programs.gpaste.enable = true; - - environment = { - systemPackages = with pkgs; [ - gnomeExtensions.gsconnect - ]; - - # remove some gnome default apps - gnome.excludePackages = with pkgs.gnome; [ - cheese # photo booth - epiphany # web browser - evince # document viewer - geary # email client - seahorse # password manager - gnome-clocks - gnome-maps - gnome-weather - gnome-music - pkgs.gnome-connections - ]; + gnome = { + tracker-miners.enable = false; + tracker.enable = false; }; - }) - (lib.mkIf (isEnabled && enableHomeManager) { - home-manager.sharedModules = [ - { - home.packages = with pkgs; [ - amberol - ]; - dconf.settings = { - "org/gnome/desktop/peripherals/keyboard" = { - numlock-state = true; - }; - }; - } + }; + + programs.gpaste.enable = true; + + environment = { + systemPackages = with pkgs; [ + gnomeExtensions.gsconnect ]; - }) - ]; + + # remove some gnome default apps + gnome.excludePackages = with pkgs.gnome; [ + cheese # photo booth + epiphany # web browser + evince # document viewer + geary # email client + seahorse # password manager + gnome-clocks + gnome-maps + gnome-weather + gnome-music + pkgs.gnome-connections + ]; + }; + }; } diff --git a/modules/desktop/kde-home.nix b/modules/desktop/kde-home.nix new file mode 100644 index 0000000..2ece5e0 --- /dev/null +++ b/modules/desktop/kde-home.nix @@ -0,0 +1,18 @@ +{ + lib, + config, + ... +}: let + isEnabled = config.my.desktop.enableKde; +in { + config = lib.mkIf isEnabled { + home-manager.sharedModules = [ + { + services.kdeconnect = { + enable = true; + indicator = true; + }; + } + ]; + }; +} diff --git a/modules/desktop/kde.nix b/modules/desktop/kde.nix index 253ff29..45c31ee 100644 --- a/modules/desktop/kde.nix +++ b/modules/desktop/kde.nix @@ -5,57 +5,44 @@ ... }: let isEnabled = config.my.desktop.enableKde; - enableHomeManager = config.my.modulesCfg.enableHomeManager; in { options.my.desktop.enableKde = lib.mkEnableOption "KDE desktop"; - config = lib.mkMerge [ - (lib.mkIf isEnabled { - my.desktop.enable = true; + config = lib.mkIf isEnabled { + my.desktop.enable = true; - # flatpak xdg-portal-kde crashes, otherwise this would be global - services.flatpak.enable = false; + # flatpak xdg-portal-kde crashes, otherwise this would be global + services.flatpak.enable = false; - services = { - # Enable the KDE Plasma Desktop Environment. - xserver = { - desktopManager.plasma5.enable = true; + services = { + # Enable the KDE Plasma Desktop Environment. + xserver = { + desktopManager.plasma5.enable = true; - displayManager = { - sddm.enable = true; - defaultSession = "plasmawayland"; - }; + displayManager = { + sddm.enable = true; + defaultSession = "plasmawayland"; }; }; + }; - environment = { - systemPackages = with pkgs; [ - libsForQt5.kate - libsForQt5.kalk - ]; - - plasma5.excludePackages = with pkgs.libsForQt5; [ - elisa - gwenview - okular - khelpcenter - ]; - }; - - programs = { - dconf.enable = true; - partition-manager.enable = true; - }; - }) - (lib.mkIf (isEnabled && enableHomeManager) { - home-manager.sharedModules = [ - { - services.kdeconnect = { - enable = true; - indicator = true; - }; - } + environment = { + systemPackages = with pkgs; [ + libsForQt5.kate + libsForQt5.kalk ]; - }) - ]; + + plasma5.excludePackages = with pkgs.libsForQt5; [ + elisa + gwenview + okular + khelpcenter + ]; + }; + + programs = { + dconf.enable = true; + partition-manager.enable = true; + }; + }; }