diff options
26 files changed, 125 insertions, 104 deletions
diff --git a/modules/darwin/traits/users.nix b/modules/darwin/traits/users.nix index b0a2078..7ad7491 100644 --- a/modules/darwin/traits/users.nix +++ b/modules/darwin/traits/users.nix @@ -1,5 +1,15 @@ { - imports = [ - ../../../users/seth/darwin.nix + config, + lib, + ... +}: let + cfg = config.traits.users; +in { + config = lib.mkMerge [ + (lib.mkIf cfg.seth.enable { + home-manager.users.seth = { + seth.desktop.enable = false; + }; + }) ]; } diff --git a/modules/flake/configurations.nix b/modules/flake/configurations.nix index 6cbe2cb..c7bff5b 100644 --- a/modules/flake/configurations.nix +++ b/modules/flake/configurations.nix @@ -68,7 +68,7 @@ modules = [ - ../../users/${name}/home.nix + ../../users/${name} { _module.args.osConfig = {}; diff --git a/modules/nixos/traits/users.nix b/modules/nixos/traits/users.nix index 3d50ce7..31d1b9c 100644 --- a/modules/nixos/traits/users.nix +++ b/modules/nixos/traits/users.nix @@ -8,10 +8,6 @@ cfg = config.traits.users; inherit (config.networking) hostName; in { - imports = [ - ../../../users/seth/nixos.nix - ]; - options.traits.users = { hostUser = { enable = lib.mkEnableOption "${hostName} user configuration"; @@ -21,6 +17,14 @@ in { default = config.traits.secrets.enable; }; }; + + seth = { + manageSecrets = + lib.mkEnableOption "automatic secrets management" + // { + default = config.traits.secrets.enable; + }; + }; }; config = lib.mkMerge [ @@ -40,5 +44,15 @@ in { hashedPasswordFile = config.age.secrets.userPassword.path; }; }) + + (lib.mkIf (cfg.seth.enable && cfg.seth.manageSecrets) { + age.secrets = { + sethPassword.file = secretsDir + "/sethPassword.age"; + }; + + users.users.seth = { + hashedPasswordFile = lib.mkDefault config.age.secrets.sethPassword.path; + }; + }) ]; } diff --git a/modules/shared/traits/default.nix b/modules/shared/traits/default.nix index fa5ba25..7f5a47d 100644 --- a/modules/shared/traits/default.nix +++ b/modules/shared/traits/default.nix @@ -2,5 +2,6 @@ imports = [ ./locale.nix ./home-manager.nix + ./users.nix ]; } diff --git a/modules/shared/traits/users.nix b/modules/shared/traits/users.nix new file mode 100644 index 0000000..c7b713a --- /dev/null +++ b/modules/shared/traits/users.nix @@ -0,0 +1,40 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: let + cfg = config.traits.users; +in { + options.traits.users = { + seth = { + enable = lib.mkEnableOption "Seth's user & home configurations"; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf cfg.seth.enable { + users.users.seth = + { + shell = pkgs.fish; + home = lib.mkDefault ( + if pkgs.stdenv.isDarwin + then "/Users/seth" + else "/home/seth" + ); + } + // lib.optionalAttrs pkgs.stdenv.isLinux { + extraGroups = ["wheel"]; + isNormalUser = true; + }; + + programs.fish.enable = lib.mkDefault true; + + home-manager.users.seth = { + imports = [inputs.self.homeModules.seth]; + seth.enable = true; + }; + }) + ]; +} diff --git a/users/default.nix b/users/default.nix index a9a61b5..65bcb84 100644 --- a/users/default.nix +++ b/users/default.nix @@ -9,4 +9,8 @@ }; }; }; + + flake.homeModules = { + seth = import ./seth/module; + }; } diff --git a/users/seth/darwin.nix b/users/seth/darwin.nix deleted file mode 100644 index 049d3d3..0000000 --- a/users/seth/darwin.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - imports = [./system.nix]; - - home-manager.users.seth = { - seth.desktop.enable = false; - }; -} diff --git a/users/seth/default.nix b/users/seth/default.nix index c54e5ff..dfaa8d5 100644 --- a/users/seth/default.nix +++ b/users/seth/default.nix @@ -1,3 +1,7 @@ -{ - imports = [./module]; +{inputs, ...}: { + imports = [inputs.self.homeModules.seth]; + seth = { + enable = true; + standalone.enable = true; + }; } diff --git a/users/seth/home.nix b/users/seth/home.nix deleted file mode 100644 index 218ef95..0000000 --- a/users/seth/home.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ - imports = [./.]; - seth.standalone.enable = true; -} diff --git a/users/seth/module/base/default.nix b/users/seth/module/base/default.nix new file mode 100644 index 0000000..b6c7571 --- /dev/null +++ b/users/seth/module/base/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: let + cfg = config.seth; +in { + options.seth = { + enable = lib.mkEnableOption "Seth's home configuration"; + }; + + imports = [ + ./standalone.nix + ]; + + config = lib.mkIf cfg.enable { + home.stateVersion = "23.11"; + }; +} diff --git a/users/seth/module/standalone.nix b/users/seth/module/base/standalone.nix index c08d2ae..4b02690 100644 --- a/users/seth/module/standalone.nix +++ b/users/seth/module/base/standalone.nix @@ -6,12 +6,13 @@ ... }: let cfg = config.seth.standalone; + enable = config.seth.enable && cfg.enable; in { options.seth.standalone = { enable = lib.mkEnableOption "Standalone options"; }; - config = lib.mkIf cfg.enable { + config = lib.mkIf enable { home = { username = "seth"; homeDirectory = diff --git a/users/seth/module/default.nix b/users/seth/module/default.nix index 29163db..c7394a9 100644 --- a/users/seth/module/default.nix +++ b/users/seth/module/default.nix @@ -1,10 +1,8 @@ { imports = [ + ./base ./desktop ./programs ./shell - ./standalone.nix ]; - - home.stateVersion = "23.11"; } diff --git a/users/seth/module/programs/bat.nix b/users/seth/module/programs/bat.nix index 267eb57..a046be2 100644 --- a/users/seth/module/programs/bat.nix +++ b/users/seth/module/programs/bat.nix @@ -6,7 +6,7 @@ cfg = config.seth.programs.bat; in { options.seth.programs.bat = { - enable = lib.mkEnableOption "bat configuration" // {default = true;}; + enable = lib.mkEnableOption "bat configuration" // {default = config.seth.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/programs/default.nix b/users/seth/module/programs/default.nix index 38556cf..bc18b6e 100644 --- a/users/seth/module/programs/default.nix +++ b/users/seth/module/programs/default.nix @@ -8,12 +8,16 @@ cfg = config.seth.programs; in { options.seth.programs = { - basePrograms.enable = lib.mkEnableOption "Base programs and configurations" // {default = true;}; + basePrograms.enable = + lib.mkEnableOption "base programs and configurations" + // { + default = config.seth.enable; + }; }; - imports = [ - inputs.catppuccin.homeManagerModules.catppuccin - inputs.nix-index-database.hmModules.nix-index + imports = with inputs; [ + catppuccin.homeManagerModules.catppuccin + nix-index-database.hmModules.nix-index ./bat.nix ./chromium.nix ./eza.nix diff --git a/users/seth/module/programs/eza.nix b/users/seth/module/programs/eza.nix index 32fd664..4dc07ee 100644 --- a/users/seth/module/programs/eza.nix +++ b/users/seth/module/programs/eza.nix @@ -6,7 +6,7 @@ cfg = config.seth.programs.eza; in { options.seth.programs.eza = { - enable = lib.mkEnableOption "eza configuration" // {default = true;}; + enable = lib.mkEnableOption "eza configuration" // {default = config.seth.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/programs/git.nix b/users/seth/module/programs/git.nix index 8ba6587..674b3c8 100644 --- a/users/seth/module/programs/git.nix +++ b/users/seth/module/programs/git.nix @@ -6,8 +6,8 @@ cfg = config.seth.programs.git; in { options.seth.programs.git = { - enable = lib.mkEnableOption "Git configuration settings" // {default = true;}; - gh.enable = lib.mkEnableOption "GitHub CLI support" // {default = true;}; + enable = lib.mkEnableOption "Git configuration settings" // {default = config.seth.enable;}; + gh.enable = lib.mkEnableOption "GitHub CLI support" // {default = cfg.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/programs/gpg.nix b/users/seth/module/programs/gpg.nix index b259525..b7b03c5 100644 --- a/users/seth/module/programs/gpg.nix +++ b/users/seth/module/programs/gpg.nix @@ -8,7 +8,7 @@ cfg = config.seth.programs.gpg; in { options.seth.programs.gpg = { - enable = lib.mkEnableOption "GnuPG configuration" // {default = true;}; + enable = lib.mkEnableOption "GnuPG configuration" // {default = config.seth.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/programs/neovim.nix b/users/seth/module/programs/neovim.nix index 8230c8d..c06d513 100644 --- a/users/seth/module/programs/neovim.nix +++ b/users/seth/module/programs/neovim.nix @@ -8,7 +8,7 @@ cfg = config.seth.programs.neovim; in { options.seth.programs.neovim = { - enable = lib.mkEnableOption "Neovim configuration" // {default = true;}; + enable = lib.mkEnableOption "Neovim configuration" // {default = config.seth.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/programs/ssh.nix b/users/seth/module/programs/ssh.nix index 48f167c..7872510 100644 --- a/users/seth/module/programs/ssh.nix +++ b/users/seth/module/programs/ssh.nix @@ -7,7 +7,7 @@ cfg = config.seth.programs.ssh; in { options.seth.programs.ssh = { - enable = lib.mkEnableOption "SSH configuration" // {default = true;}; + enable = lib.mkEnableOption "SSH configuration" // {default = config.seth.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/programs/starship/default.nix b/users/seth/module/programs/starship/default.nix index 8f6e78c..caad907 100644 --- a/users/seth/module/programs/starship/default.nix +++ b/users/seth/module/programs/starship/default.nix @@ -6,7 +6,7 @@ cfg = config.seth.programs.starship; in { options.seth.programs.starship = { - enable = lib.mkEnableOption "Starship configuration" // {default = true;}; + enable = lib.mkEnableOption "Starship configuration" // {default = config.seth.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/programs/vim.nix b/users/seth/module/programs/vim.nix index b8a198e..a67effa 100644 --- a/users/seth/module/programs/vim.nix +++ b/users/seth/module/programs/vim.nix @@ -7,7 +7,7 @@ inherit (config.xdg) configHome dataHome stateHome; in { options.seth.programs.vim = { - enable = lib.mkEnableOption "Vim configuration" // {default = true;}; + enable = lib.mkEnableOption "Vim configuration" // {default = config.seth.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/shell/bash.nix b/users/seth/module/shell/bash.nix index 09a78a3..958794d 100644 --- a/users/seth/module/shell/bash.nix +++ b/users/seth/module/shell/bash.nix @@ -6,7 +6,7 @@ cfg = config.seth.shell.bash; in { options.seth.shell.bash = { - enable = lib.mkEnableOption "Bash configuration" // {default = true;}; + enable = lib.mkEnableOption "Bash configuration" // {default = config.seth.enable;}; }; config = lib.mkIf cfg.enable { diff --git a/users/seth/module/shell/default.nix b/users/seth/module/shell/default.nix index 050cb0c..b86697c 100644 --- a/users/seth/module/shell/default.nix +++ b/users/seth/module/shell/default.nix @@ -6,8 +6,8 @@ cfg = config.seth.shell; in { options.seth.shell = { - aliases.enable = lib.mkEnableOption "Shell aliases" // {default = true;}; - variables.enable = lib.mkEnableOption "Shell variables" // {default = true;}; + aliases.enable = lib.mkEnableOption "Shell aliases" // {default = config.seth.enable;}; + variables.enable = lib.mkEnableOption "Shell variables" // {default = config.seth.enable;}; }; imports = [ diff --git a/users/seth/module/shell/fish.nix b/users/seth/module/shell/fish.nix index a349dfa..0b37273 100644 --- a/users/seth/module/shell/fish.nix +++ b/users/seth/module/shell/fish.nix @@ -7,7 +7,7 @@ cfg = config.seth.shell.fish; in { options.seth.shell.fish = { - enable = lib.mkEnableOption "Fish configuration" // {default = true;}; + enable = lib.mkEnableOption "Fish configuration" // {default = config.seth.enable;}; withPlugins = lib.mkEnableOption "Fish plugins" // {default = true;}; }; diff --git a/users/seth/nixos.nix b/users/seth/nixos.nix deleted file mode 100644 index 0c92d5c..0000000 --- a/users/seth/nixos.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - lib, - secretsDir, - ... -}: let - cfg = config.traits.users.seth; - enable = cfg.enable && cfg.manageSecrets; -in { - options.traits.users.seth = { - manageSecrets = - lib.mkEnableOption "automatic secrets management" - // { - default = config.traits.secrets.enable or false; - }; - }; - - imports = [./system.nix]; - - config = lib.mkIf enable { - age.secrets = { - sethPassword.file = secretsDir + "/sethPassword.age"; - }; - - users.users.seth = { - hashedPasswordFile = lib.mkDefault config.age.secrets.sethPassword.path; - }; - }; -} diff --git a/users/seth/system.nix b/users/seth/system.nix deleted file mode 100644 index 4feb807..0000000 --- a/users/seth/system.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - cfg = config.traits.users.seth; -in { - options.traits.users.seth = { - enable = lib.mkEnableOption "Seth's user & home configuration"; - }; - - config = lib.mkIf cfg.enable { - users.users.seth = - { - shell = pkgs.fish; - home = lib.mkDefault ( - if pkgs.stdenv.isDarwin - then "/Users/seth" - else "/home/seth" - ); - } - // lib.optionalAttrs pkgs.stdenv.isLinux { - extraGroups = ["wheel"]; - isNormalUser = true; - }; - - programs.fish.enable = lib.mkDefault true; - - home-manager.users.seth = { - imports = [./.]; - }; - }; -} |
