From 036f6196731c75aeff147bf20d544e7e42177248 Mon Sep 17 00:00:00 2001 From: Jan-Bulthuis Date: Mon, 17 Feb 2025 12:53:45 +0100 Subject: [PATCH] Rewrote systemwide system, fixed broken build --- modules/users/default.nix | 3 - modules/users/systemwide.nix | 26 ++++- user-modules/default.nix | 1 - user-modules/desktop/custom/default.nix | 18 ++-- .../desktop/custom/lock-screen/waylock.nix | 5 - .../desktop/custom/window-manager/i3.nix | 18 ---- .../desktop/custom/window-manager/river.nix | 8 +- user-modules/desktop/default.nix | 96 +------------------ user-modules/desktop/systemwide.nix | 22 +++++ user-modules/development/systemwide.nix | 6 ++ user-modules/development/utility/docker.nix | 6 -- user-modules/gaming/launchers/steam.nix | 19 +--- user-modules/gaming/systemwide.nix | 20 ++++ user-modules/keyring/default.nix | 7 -- user-modules/keyring/systemwide.nix | 7 ++ user-modules/systemwide/default.nix | 10 -- 16 files changed, 93 insertions(+), 179 deletions(-) create mode 100644 user-modules/desktop/systemwide.nix create mode 100644 user-modules/development/systemwide.nix create mode 100644 user-modules/gaming/systemwide.nix create mode 100644 user-modules/keyring/systemwide.nix delete mode 100644 user-modules/systemwide/default.nix diff --git a/modules/users/default.nix b/modules/users/default.nix index 442a46d..04b4f95 100644 --- a/modules/users/default.nix +++ b/modules/users/default.nix @@ -31,9 +31,6 @@ let in { imports = [ - # Import system wide configuration required for user modules - ../../user-modules/systemwide/default.nix - # Import systemwide configuration ./systemwide.nix ]; diff --git a/modules/users/systemwide.nix b/modules/users/systemwide.nix index 044c608..e3df684 100644 --- a/modules/users/systemwide.nix +++ b/modules/users/systemwide.nix @@ -1,13 +1,33 @@ { - lib, config, + lib, ... }: with lib; let - configuration = (map (user: user.systemwide) (attrValues config.home-manager.users)); + moduleFiles = [ + ../../user-modules/desktop/systemwide.nix + ../../user-modules/development/systemwide.nix + ../../user-modules/gaming/systemwide.nix + ../../user-modules/keyring/systemwide.nix + ]; + + moduleConfig = lists.foldr (file: acc: recursiveUpdate acc (import file)) { } moduleFiles; + + moduleNames = attrNames moduleConfig; + + mkModule = + name: moduleConfig: + { pkgs, ... }: + { + config = mkIf (any (user: user.modules.${name}.enable) (attrValues config.home-manager.users)) ( + if (isAttrs moduleConfig) then moduleConfig else (moduleConfig { inherit config pkgs; }) + ); + }; + + imports = map (name: mkModule name moduleConfig."${name}") moduleNames; in { - config = configuration; + imports = imports; } diff --git a/user-modules/default.nix b/user-modules/default.nix index 66d6292..5d77398 100644 --- a/user-modules/default.nix +++ b/user-modules/default.nix @@ -27,7 +27,6 @@ ./shell/bash.nix ./shell/fish.nix ./spotify/default.nix - ./systemwide/default.nix ./terminal/default.nix ./terminal/foot/default.nix ./theming/default.nix diff --git a/user-modules/desktop/custom/default.nix b/user-modules/desktop/custom/default.nix index 7968c13..ac475db 100644 --- a/user-modules/desktop/custom/default.nix +++ b/user-modules/desktop/custom/default.nix @@ -12,7 +12,6 @@ in { imports = [ # Import desktop environment modules - ./background/glpaper/default.nix ./bar/waybar.nix ./lock-screen/waylock.nix ./window-manager/i3.nix @@ -83,13 +82,14 @@ in } ( # TODO: Move to dedicated module within desktop or maybe theming? - if cfg.decorations == null then - { } - else - { - csd = { }; - ssd = { }; - } - ."${cfg.decorations}" + # if cfg.decorations == null then + # { } + # else + # { + # csd = { }; + # ssd = { }; + # } + # ."${cfg.decorations}" + { } ); } diff --git a/user-modules/desktop/custom/lock-screen/waylock.nix b/user-modules/desktop/custom/lock-screen/waylock.nix index 4deaf0b..f87eb1a 100644 --- a/user-modules/desktop/custom/lock-screen/waylock.nix +++ b/user-modules/desktop/custom/lock-screen/waylock.nix @@ -16,10 +16,5 @@ in config = mkIf cfg.enable { home.packages = (with pkgs; [ waylock ]); - - # Systemwide configuration - systemwide = { - security.pam.services.waylock = { }; - }; }; } diff --git a/user-modules/desktop/custom/window-manager/i3.nix b/user-modules/desktop/custom/window-manager/i3.nix index 14d6a15..6d5903f 100644 --- a/user-modules/desktop/custom/window-manager/i3.nix +++ b/user-modules/desktop/custom/window-manager/i3.nix @@ -23,23 +23,5 @@ in xsession.windowManager.i3 = { enable = true; }; - - # Systemwide configuration - systemwide = { - services.xserver = { - layout = "us"; - xkbVariant = ""; - enable = true; - windowManager.i3.enable = true; - desktopManager = { - xterm.enable = true; - xfce = { - enable = true; - # noDesktop = false; - # enableXfwm = false; - }; - }; - }; - }; }; } diff --git a/user-modules/desktop/custom/window-manager/river.nix b/user-modules/desktop/custom/window-manager/river.nix index a554427..0407d6d 100644 --- a/user-modules/desktop/custom/window-manager/river.nix +++ b/user-modules/desktop/custom/window-manager/river.nix @@ -36,11 +36,6 @@ in river ''; - # Systemwide configuration - systemwide = { - programs.river.enable = true; - }; - # TODO: Fix this # modules.desktop.reloadScript = '' # ${pkgs.river}/bin/riverctl background-color 0x${config.theming.colors.bg} @@ -118,7 +113,8 @@ in spawn = [ "\"${layout} ${layoutOptions}\"" "waybar" # TODO: Decouple - "\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\"" + # TODO: Generic background options + # "\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\"" "udiskie" ]; map = ( diff --git a/user-modules/desktop/default.nix b/user-modules/desktop/default.nix index 7968c13..9945b8f 100644 --- a/user-modules/desktop/default.nix +++ b/user-modules/desktop/default.nix @@ -1,95 +1,5 @@ +{ ... }: + { - lib, - pkgs, - config, - ... -}: - -with lib; -let - cfg = config.modules.desktop; -in -{ - imports = [ - # Import desktop environment modules - ./background/glpaper/default.nix - ./bar/waybar.nix - ./lock-screen/waylock.nix - ./window-manager/i3.nix - ./window-manager/river.nix - ]; - - options.modules.desktop = { - wayland = mkEnableOption "wayland"; - # TODO: Remove, not needed with session/display manager - initScript = mkOption { - type = types.lines; - default = "${pkgs.bash}/bin/bash"; - description = "Bash script to execute after logging in."; - }; - # TODO: Find a nicer way to do this as this is also executed on startup - reloadScript = mkOption { - type = types.lines; - default = ""; - description = "Shell script to execute after reload/rebuild."; - }; - decorations = mkOption { - type = types.nullOr ( - types.enum [ - "csd" - "ssd" - ] - ); - default = null; - description = "Window decorations to use."; - }; - }; - - config = - lib.recursiveUpdate - { - # Ensure desktop related systemd services (xdg) have access to session variables. - systemd.user.sessionVariables = config.home.sessionVariables; - - home.packages = optionals cfg.wayland ( - with pkgs; - [ - wl-clipboard - wtype - grim - slurp - ] - ); - - home.activation = { - customReloadScript = lib.hm.dag.entryAfter [ "writeBoundary" ] ( - '' - #!${pkgs.bash}/bin/bash - '' - + cfg.reloadScript - ); - }; - - home.file.".initrc" = { - enable = true; - executable = true; - text = - '' - #!${pkgs.bash}/bin/bash - - '' - + cfg.initScript; - }; - } - ( - # TODO: Move to dedicated module within desktop or maybe theming? - if cfg.decorations == null then - { } - else - { - csd = { }; - ssd = { }; - } - ."${cfg.decorations}" - ); + imports = [ ./custom/default.nix ]; } diff --git a/user-modules/desktop/systemwide.nix b/user-modules/desktop/systemwide.nix new file mode 100644 index 0000000..5e274e6 --- /dev/null +++ b/user-modules/desktop/systemwide.nix @@ -0,0 +1,22 @@ +{ + waylock = { + security.pam.services.waylock = { }; + }; + river = { + programs.river.enable = true; + }; + i3 = { + services.xserver = { + layout = "us"; + xkbVariant = ""; + enable = true; + windowManager.i3.enable = true; + desktopManager = { + xterm.enable = true; + xfce = { + enable = true; + }; + }; + }; + }; +} diff --git a/user-modules/development/systemwide.nix b/user-modules/development/systemwide.nix new file mode 100644 index 0000000..94f25a6 --- /dev/null +++ b/user-modules/development/systemwide.nix @@ -0,0 +1,6 @@ +{ + docker = { + virtualisation.docker.enable = true; + machine.sudo-groups = [ "docker" ]; + }; +} diff --git a/user-modules/development/utility/docker.nix b/user-modules/development/utility/docker.nix index b29024f..67ba34c 100644 --- a/user-modules/development/utility/docker.nix +++ b/user-modules/development/utility/docker.nix @@ -37,11 +37,5 @@ in # Neovim configuration programs.nixvim = { }; - - # Systemwide configuration - systemwide = { - virtualisation.docker.enable = true; - machine.sudo-groups = [ "docker" ]; - }; }; } diff --git a/user-modules/gaming/launchers/steam.nix b/user-modules/gaming/launchers/steam.nix index c63371a..182cc78 100644 --- a/user-modules/gaming/launchers/steam.nix +++ b/user-modules/gaming/launchers/steam.nix @@ -1,7 +1,6 @@ { config, lib, - pkgs, ... }: @@ -12,22 +11,6 @@ with lib; }; config = mkIf config.modules.steam.enable { - # Systemwide configuration - systemwide = { - modules.unfree.allowedPackages = [ - "steam" - "steam-original" - "steam-unwrapped" - ]; - - programs.steam.enable = true; - - # Make steam create desktop entries in a subfolder - programs.steam.package = pkgs.steam.override { - extraBwrapArgs = [ - "--bind $HOME/.local/share/applications/Steam $HOME/.local/share/applications" - ]; - }; - }; + # Steam must be installed systemwide as of time of writing }; } diff --git a/user-modules/gaming/systemwide.nix b/user-modules/gaming/systemwide.nix new file mode 100644 index 0000000..cb5b572 --- /dev/null +++ b/user-modules/gaming/systemwide.nix @@ -0,0 +1,20 @@ +{ + steam = + { pkgs, ... }: + { + modules.unfree.allowedPackages = [ + "steam" + "steam-original" + "steam-unwrapped" + ]; + + programs.steam.enable = true; + + # Make steam create desktop entries in a subfolder + programs.steam.package = pkgs.steam.override { + extraBwrapArgs = [ + "--bind $HOME/.local/share/applications/Steam $HOME/.local/share/applications" + ]; + }; + }; +} diff --git a/user-modules/keyring/default.nix b/user-modules/keyring/default.nix index 8a03d25..63734fa 100644 --- a/user-modules/keyring/default.nix +++ b/user-modules/keyring/default.nix @@ -19,12 +19,5 @@ in home.packages = with pkgs; [ seahorse ]; - - # Systemwide configuration - systemwide = { - services.gnome.gnome-keyring = { - enable = true; - }; - }; }; } diff --git a/user-modules/keyring/systemwide.nix b/user-modules/keyring/systemwide.nix new file mode 100644 index 0000000..2068e29 --- /dev/null +++ b/user-modules/keyring/systemwide.nix @@ -0,0 +1,7 @@ +{ + keyring = { + services.gnome.gnome-keyring = { + enable = true; + }; + }; +} diff --git a/user-modules/systemwide/default.nix b/user-modules/systemwide/default.nix deleted file mode 100644 index 85e47f7..0000000 --- a/user-modules/systemwide/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ lib, ... }: - -with lib; -{ - options.systemwide = mkOption { - type = types.attrsOf types.anything; - default = { }; - description = "Systemwide configuration required for user-specific settings."; - }; -}