From d7070b6fb5908543eb2771248921172199225a6e Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Fri, 13 Jun 2025 16:21:42 +0200 Subject: [PATCH] Manage users with the option system --- flake/hosts.nix | 8 ----- hosts/alto/default.nix | 2 ++ hosts/cirrus/default.nix | 2 ++ hosts/cumulus/default.nix | 2 ++ hosts/fern/default.nix | 6 ++++ hosts/north/default.nix | 6 ++++ modules/system/users/seb.nix | 61 ++++++++++++++++++++++++++++++++++ users/home-manager.nix | 17 ---------- users/seb/@alto/default.nix | 3 -- users/seb/@cirrus/default.nix | 3 -- users/seb/@cumulus/default.nix | 3 -- users/seb/@fern/default.nix | 12 ------- users/seb/@north/default.nix | 12 ------- users/seb/home.nix | 2 -- users/seb/user.nix | 11 ------ 15 files changed, 79 insertions(+), 71 deletions(-) create mode 100644 modules/system/users/seb.nix delete mode 100644 users/home-manager.nix delete mode 100644 users/seb/@alto/default.nix delete mode 100644 users/seb/@cirrus/default.nix delete mode 100644 users/seb/@cumulus/default.nix delete mode 100644 users/seb/@fern/default.nix delete mode 100644 users/seb/@north/default.nix delete mode 100644 users/seb/user.nix diff --git a/flake/hosts.nix b/flake/hosts.nix index 1af1d19..3253f74 100644 --- a/flake/hosts.nix +++ b/flake/hosts.nix @@ -14,19 +14,11 @@ let "${self}/hosts/${hostName}" |> lib.filesystem.listFilesRecursive |> builtins.filter (lib.hasSuffix ".nix"); - userFiles = - "${self}/users" - |> builtins.readDir - |> lib.filterAttrs (_: type: type == "directory") - |> builtins.attrNames - |> map (user: "${self}/users/${user}/@${hostName}") - |> builtins.filter (path: builtins.pathExists path); in lib.flatten [ { networking = { inherit hostName; }; } "${self}/hosts/shared.nix" hostFiles - userFiles ]; }; }; diff --git a/hosts/alto/default.nix b/hosts/alto/default.nix index cda8570..e995cdb 100644 --- a/hosts/alto/default.nix +++ b/hosts/alto/default.nix @@ -6,6 +6,8 @@ sops.enable = true; boot.loader.systemdBoot.enable = true; + users.seb.enable = true; + services = { tailscale = { enable = true; diff --git a/hosts/cirrus/default.nix b/hosts/cirrus/default.nix index 8cdd77c..8f46b21 100644 --- a/hosts/cirrus/default.nix +++ b/hosts/cirrus/default.nix @@ -6,6 +6,8 @@ sops.enable = true; boot.loader.grub.enable = true; + users.seb.enable = true; + services = { tailscale = { enable = true; diff --git a/hosts/cumulus/default.nix b/hosts/cumulus/default.nix index 924696d..6ec811b 100644 --- a/hosts/cumulus/default.nix +++ b/hosts/cumulus/default.nix @@ -6,6 +6,8 @@ sops.enable = true; boot.loader.grub.enable = true; + users.seb.enable = true; + services = { tailscale = { enable = true; diff --git a/hosts/fern/default.nix b/hosts/fern/default.nix index bf740ac..745ef04 100644 --- a/hosts/fern/default.nix +++ b/hosts/fern/default.nix @@ -10,6 +10,12 @@ silent = true; }; + users.seb = { + enable = true; + zsh.enable = true; + homeManager.enable = true; + }; + dm.tuigreet.enable = true; de.hyprland.enable = true; diff --git a/hosts/north/default.nix b/hosts/north/default.nix index 60bf0a7..41be11d 100644 --- a/hosts/north/default.nix +++ b/hosts/north/default.nix @@ -10,6 +10,12 @@ silent = true; }; + users.seb = { + enable = true; + zsh.enable = true; + homeManager.enable = true; + }; + dm.tuigreet.enable = true; de.hyprland.enable = true; diff --git a/modules/system/users/seb.nix b/modules/system/users/seb.nix new file mode 100644 index 0000000..25b1060 --- /dev/null +++ b/modules/system/users/seb.nix @@ -0,0 +1,61 @@ +{ + config, + self, + inputs, + pkgs, + pkgs-unstable, + lib, + ... +}: +let + cfg = config.custom.users.seb; +in +{ + imports = [ inputs.home-manager.nixosModules.home-manager ]; + + options.custom.users.seb = { + enable = lib.mkEnableOption ""; + zsh.enable = lib.mkEnableOption ""; + homeManager = { + enable = lib.mkEnableOption ""; + configPath = lib.mkOption { + type = lib.types.listOf lib.types.path; + default = [ + "${self}/users/shared-home.nix" + "${self}/users/seb/home.nix" + "${self}/users/seb/@${config.networking.hostName}/home.nix" + ]; + }; + }; + }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + sops.secrets."seb-password".neededForUsers = true; + + users.users.seb = { + isNormalUser = true; + description = "Sebastian Stork"; + hashedPasswordFile = config.sops.secrets."seb-password".path; + extraGroups = [ "wheel" ]; + shell = lib.mkIf cfg.zsh.enable pkgs.zsh; + }; + + programs.zsh.enable = lib.mkIf cfg.zsh.enable true; + } + + (lib.mkIf cfg.homeManager.enable { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { + inherit inputs self pkgs-unstable; + }; + + users.seb.imports = cfg.homeManager.configPath; + }; + }) + ] + ); +} diff --git a/users/home-manager.nix b/users/home-manager.nix deleted file mode 100644 index 8a5bbe5..0000000 --- a/users/home-manager.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - inputs, - self, - pkgs-unstable, - ... -}: -{ - imports = [ inputs.home-manager.nixosModules.home-manager ]; - - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = { - inherit inputs self pkgs-unstable; - }; - }; -} diff --git a/users/seb/@alto/default.nix b/users/seb/@alto/default.nix deleted file mode 100644 index 9f75a8c..0000000 --- a/users/seb/@alto/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - imports = [ ../user.nix ]; -} diff --git a/users/seb/@cirrus/default.nix b/users/seb/@cirrus/default.nix deleted file mode 100644 index 9f75a8c..0000000 --- a/users/seb/@cirrus/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - imports = [ ../user.nix ]; -} diff --git a/users/seb/@cumulus/default.nix b/users/seb/@cumulus/default.nix deleted file mode 100644 index 9f75a8c..0000000 --- a/users/seb/@cumulus/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - imports = [ ../user.nix ]; -} diff --git a/users/seb/@fern/default.nix b/users/seb/@fern/default.nix deleted file mode 100644 index a9a9bcd..0000000 --- a/users/seb/@fern/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: -{ - imports = [ - ../../home-manager.nix - ../user.nix - ]; - - users.users.seb.shell = pkgs.zsh; - programs.zsh.enable = true; - - home-manager.users.seb = ./home.nix; -} diff --git a/users/seb/@north/default.nix b/users/seb/@north/default.nix deleted file mode 100644 index a9a9bcd..0000000 --- a/users/seb/@north/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: -{ - imports = [ - ../../home-manager.nix - ../user.nix - ]; - - users.users.seb.shell = pkgs.zsh; - programs.zsh.enable = true; - - home-manager.users.seb = ./home.nix; -} diff --git a/users/seb/home.nix b/users/seb/home.nix index 1fb14a5..31dc0c0 100644 --- a/users/seb/home.nix +++ b/users/seb/home.nix @@ -19,8 +19,6 @@ let }; in { - imports = [ ../shared-home.nix ]; - home.sessionVariables.NH_FLAKE = "~/Projects/nixos-config"; custom = { diff --git a/users/seb/user.nix b/users/seb/user.nix deleted file mode 100644 index 8ea413f..0000000 --- a/users/seb/user.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, ... }: -{ - sops.secrets."seb-password".neededForUsers = true; - - users.users.seb = { - isNormalUser = true; - description = "Sebastian Stork"; - hashedPasswordFile = config.sops.secrets."seb-password".path; - extraGroups = [ "wheel" ]; - }; -}