From 6fa0b2f154620cf8da209320865ac4a20e83b9ae Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Thu, 13 Feb 2025 20:10:29 -0500 Subject: nixos+darwin: make separate user modules --- modules/darwin/default.nix | 2 +- modules/darwin/profiles/personal.nix | 8 +++--- modules/darwin/traits/default.nix | 5 ---- modules/darwin/traits/users/default.nix | 1 - modules/darwin/traits/users/seth.nix | 14 ---------- modules/darwin/users/default.nix | 1 + modules/darwin/users/seth.nix | 16 +++++++++++ modules/nixos/default.nix | 1 + modules/nixos/profiles/personal.nix | 10 ++++--- modules/nixos/profiles/server.nix | 2 ++ modules/nixos/traits/default.nix | 1 - modules/nixos/traits/users/default.nix | 1 - modules/nixos/traits/users/seth.nix | 29 -------------------- modules/nixos/users/default.nix | 1 + modules/nixos/users/seth.nix | 31 +++++++++++++++++++++ modules/shared/default.nix | 1 + modules/shared/traits/default.nix | 1 - modules/shared/traits/users/default.nix | 1 - modules/shared/traits/users/seth.nix | 44 ------------------------------ modules/shared/users/default.nix | 1 + modules/shared/users/seth.nix | 48 +++++++++++++++++++++++++++++++++ 21 files changed, 114 insertions(+), 105 deletions(-) delete mode 100644 modules/darwin/traits/default.nix delete mode 100644 modules/darwin/traits/users/default.nix delete mode 100644 modules/darwin/traits/users/seth.nix create mode 100644 modules/darwin/users/default.nix create mode 100644 modules/darwin/users/seth.nix delete mode 100644 modules/nixos/traits/users/default.nix delete mode 100644 modules/nixos/traits/users/seth.nix create mode 100644 modules/nixos/users/default.nix create mode 100644 modules/nixos/users/seth.nix delete mode 100644 modules/shared/traits/users/default.nix delete mode 100644 modules/shared/traits/users/seth.nix create mode 100644 modules/shared/users/default.nix create mode 100644 modules/shared/users/seth.nix diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix index fd0aa54..56005e4 100644 --- a/modules/darwin/default.nix +++ b/modules/darwin/default.nix @@ -7,7 +7,7 @@ ./mixins ./profiles ./services - ./traits + ./users ]; }; }; diff --git a/modules/darwin/profiles/personal.nix b/modules/darwin/profiles/personal.nix index 537e8ae..025197a 100644 --- a/modules/darwin/profiles/personal.nix +++ b/modules/darwin/profiles/personal.nix @@ -1,19 +1,21 @@ { config, lib, ... }: + let cfg = config.profiles.personal; in + { options.profiles.personal = { enable = lib.mkEnableOption "the Personal profile"; }; config = lib.mkIf cfg.enable { - homebrew.enable = true; - - traits = { + borealis = { users = { seth.enable = true; }; }; + + homebrew.enable = true; }; } diff --git a/modules/darwin/traits/default.nix b/modules/darwin/traits/default.nix deleted file mode 100644 index 14812ea..0000000 --- a/modules/darwin/traits/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./users - ]; -} diff --git a/modules/darwin/traits/users/default.nix b/modules/darwin/traits/users/default.nix deleted file mode 100644 index df767b4..0000000 --- a/modules/darwin/traits/users/default.nix +++ /dev/null @@ -1 +0,0 @@ -{ imports = [ ./seth.nix ]; } diff --git a/modules/darwin/traits/users/seth.nix b/modules/darwin/traits/users/seth.nix deleted file mode 100644 index 4431506..0000000 --- a/modules/darwin/traits/users/seth.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.traits.users.seth; -in -{ - config = lib.mkMerge [ - (lib.mkIf cfg.enable { - home-manager.users.seth = { - # NOTE: this module is for linux, not mac - seth.desktop.enable = false; - }; - }) - ]; -} diff --git a/modules/darwin/users/default.nix b/modules/darwin/users/default.nix new file mode 100644 index 0000000..df767b4 --- /dev/null +++ b/modules/darwin/users/default.nix @@ -0,0 +1 @@ +{ imports = [ ./seth.nix ]; } diff --git a/modules/darwin/users/seth.nix b/modules/darwin/users/seth.nix new file mode 100644 index 0000000..44eb4d3 --- /dev/null +++ b/modules/darwin/users/seth.nix @@ -0,0 +1,16 @@ +{ config, lib, ... }: + +let + cfg = config.borealis.users.seth; +in + +{ + config = lib.mkMerge [ + (lib.mkIf cfg.enable { + home-manager.users.seth = { + # NOTE: this module is for linux, not mac + seth.desktop.enable = false; + }; + }) + ]; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 9d0e709..b184337 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -8,6 +8,7 @@ ./profiles ./services ./traits + ./users ]; }; }; diff --git a/modules/nixos/profiles/personal.nix b/modules/nixos/profiles/personal.nix index 1d5ab8b..84697a5 100644 --- a/modules/nixos/profiles/personal.nix +++ b/modules/nixos/profiles/personal.nix @@ -15,6 +15,12 @@ in }; config = lib.mkIf cfg.enable { + borealis = { + users = { + seth.enable = true; + }; + }; + services = { tailscale.enable = true; }; @@ -24,10 +30,6 @@ in enable = true; secretsDir = inputs.self + "/secrets/personal"; }; - - users = { - seth.enable = true; - }; }; }; } diff --git a/modules/nixos/profiles/server.nix b/modules/nixos/profiles/server.nix index d1c54c1..d54285d 100644 --- a/modules/nixos/profiles/server.nix +++ b/modules/nixos/profiles/server.nix @@ -5,6 +5,7 @@ inputs', ... }: + let cfg = config.profiles.server; @@ -13,6 +14,7 @@ let gb = 1024 * 1024 * 1024; minimumStorageKb = 15 * gb; in + { options.profiles.server = { enable = lib.mkEnableOption "the Server profile"; diff --git a/modules/nixos/traits/default.nix b/modules/nixos/traits/default.nix index abea86a..f4dbc3c 100644 --- a/modules/nixos/traits/default.nix +++ b/modules/nixos/traits/default.nix @@ -5,6 +5,5 @@ ./mac-builder.nix ./nvd-diff.nix ./secrets.nix - ./users ]; } diff --git a/modules/nixos/traits/users/default.nix b/modules/nixos/traits/users/default.nix deleted file mode 100644 index df767b4..0000000 --- a/modules/nixos/traits/users/default.nix +++ /dev/null @@ -1 +0,0 @@ -{ imports = [ ./seth.nix ]; } diff --git a/modules/nixos/traits/users/seth.nix b/modules/nixos/traits/users/seth.nix deleted file mode 100644 index 102dbad..0000000 --- a/modules/nixos/traits/users/seth.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - lib, - secretsDir, - ... -}: -let - cfg = config.traits.users.seth; -in -{ - options.traits.users.seth = { - manageSecrets = lib.mkEnableOption "automatic management of secrets" // { - default = config.traits.secrets.enable; - defaultText = lib.literalExpression "config.traits.secrets.enable"; - }; - }; - - config = lib.mkMerge [ - (lib.mkIf (cfg.enable && cfg.manageSecrets) { - age.secrets = { - sethPassword.file = secretsDir + "/sethPassword.age"; - }; - - users.users.seth = { - hashedPasswordFile = lib.mkDefault config.age.secrets.sethPassword.path; - }; - }) - ]; -} diff --git a/modules/nixos/users/default.nix b/modules/nixos/users/default.nix new file mode 100644 index 0000000..df767b4 --- /dev/null +++ b/modules/nixos/users/default.nix @@ -0,0 +1 @@ +{ imports = [ ./seth.nix ]; } diff --git a/modules/nixos/users/seth.nix b/modules/nixos/users/seth.nix new file mode 100644 index 0000000..34ec8ee --- /dev/null +++ b/modules/nixos/users/seth.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + secretsDir, + ... +}: + +let + cfg = config.borealis.users.seth; +in + +{ + options.borealis.users.seth = { + manageSecrets = lib.mkEnableOption "automatic management of secrets" // { + default = config.traits.secrets.enable; + defaultText = lib.literalExpression "config.traits.secrets.enable"; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf (cfg.enable && cfg.manageSecrets) { + age.secrets = { + sethPassword.file = secretsDir + "/sethPassword.age"; + }; + + users.users.seth = { + hashedPasswordFile = lib.mkDefault config.age.secrets.sethPassword.path; + }; + }) + ]; +} diff --git a/modules/shared/default.nix b/modules/shared/default.nix index 68faa70..9ba06e6 100644 --- a/modules/shared/default.nix +++ b/modules/shared/default.nix @@ -4,5 +4,6 @@ ./mixins ./services ./traits + ./users ]; } diff --git a/modules/shared/traits/default.nix b/modules/shared/traits/default.nix index 8fdce85..68dfb9d 100644 --- a/modules/shared/traits/default.nix +++ b/modules/shared/traits/default.nix @@ -1,6 +1,5 @@ { imports = [ ./locale.nix - ./users ]; } diff --git a/modules/shared/traits/users/default.nix b/modules/shared/traits/users/default.nix deleted file mode 100644 index df767b4..0000000 --- a/modules/shared/traits/users/default.nix +++ /dev/null @@ -1 +0,0 @@ -{ imports = [ ./seth.nix ]; } diff --git a/modules/shared/traits/users/seth.nix b/modules/shared/traits/users/seth.nix deleted file mode 100644 index 401fe55..0000000 --- a/modules/shared/traits/users/seth.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: -let - cfg = config.traits.users.seth; -in -{ - options.traits.users.seth = { - enable = lib.mkEnableOption "Seth's user & home configurations"; - }; - - config = lib.mkMerge [ - (lib.mkIf cfg.enable { - users.users.seth.shell = pkgs.fish; - - programs.fish.enable = true; - - home-manager.users.seth = { - imports = [ (inputs.self + "/users/seth") ]; - seth = { - enable = true; - programs.fish.enable = true; - }; - }; - }) - - (lib.mkIf (cfg.enable && pkgs.stdenv.isDarwin) { - users.users.seth = { - home = lib.mkDefault "/Users/seth"; - }; - }) - - (lib.mkIf (cfg.enable && pkgs.stdenv.isLinux) { - users.users.seth = { - extraGroups = [ "wheel" ]; - isNormalUser = true; - }; - }) - ]; -} diff --git a/modules/shared/users/default.nix b/modules/shared/users/default.nix new file mode 100644 index 0000000..df767b4 --- /dev/null +++ b/modules/shared/users/default.nix @@ -0,0 +1 @@ +{ imports = [ ./seth.nix ]; } diff --git a/modules/shared/users/seth.nix b/modules/shared/users/seth.nix new file mode 100644 index 0000000..89203c1 --- /dev/null +++ b/modules/shared/users/seth.nix @@ -0,0 +1,48 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: + +let + cfg = config.borealis.users.seth; + + inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux; +in + +{ + options.borealis.users.seth = { + enable = lib.mkEnableOption "Seth's user & home configurations"; + }; + + config = lib.mkMerge [ + (lib.mkIf cfg.enable { + users.users.seth.shell = pkgs.fish; + + programs.fish.enable = true; + + home-manager.users.seth = { + imports = [ (inputs.self + "/users/seth") ]; + seth = { + enable = true; + programs.fish.enable = true; + }; + }; + }) + + (lib.mkIf (cfg.enable && isDarwin) { + users.users.seth = { + home = lib.mkDefault "/Users/seth"; + }; + }) + + (lib.mkIf (cfg.enable && isLinux) { + users.users.seth = { + extraGroups = [ "wheel" ]; + isNormalUser = true; + }; + }) + ]; +} -- cgit v1.2.3