From 8a14ad2ed50a8452ed44cae750db6618d559bc25 Mon Sep 17 00:00:00 2001 From: Jelle Spreeuwenberg Date: Thu, 23 Apr 2026 20:03:51 +0200 Subject: [PATCH] refactor: cleanup and extract user config --- modules/data.nix | 60 --------------------------- modules/features/workstation-base.nix | 4 +- modules/hosts/polaris/default.nix | 12 +++--- modules/hosts/zenith/default.nix | 17 ++------ modules/lib.nix | 17 ++++++++ modules/users/ergon.nix | 31 ++++++++++++++ modules/users/kiri.nix | 43 +++++++++++++++++++ 7 files changed, 104 insertions(+), 80 deletions(-) create mode 100644 modules/users/ergon.nix create mode 100644 modules/users/kiri.nix diff --git a/modules/data.nix b/modules/data.nix index 50f96f1..8416ab6 100644 --- a/modules/data.nix +++ b/modules/data.nix @@ -1,57 +1,5 @@ { lib, ... }: let - userSpecs = { - kiri = { - realName = "Jelle Spreeuwenberg"; - homeDirectory = "/home/kiri"; - emails = { - personal = { - address = "mail@jelles.net"; - primary = true; - scope = "personal"; - type = "mxrouting"; - }; - old = { - address = "mail@jellespreeuwenberg.nl"; - scope = null; - type = "mxrouting"; - }; - uni = { - address = "j.spreeuwenberg@student.tue.nl"; - scope = null; - type = "office365"; - }; - work = { - address = "jelle.spreeuwenberg@yookr.org"; - scope = "work"; - type = "office365"; - }; - }; - sourceControl = { }; - }; - - ergon = { - realName = "Jelle Spreeuwenberg"; - homeDirectory = "/home/ergon"; - emails = { - personal = { - address = "mail@jelles.net"; - scope = "personal"; - type = "mxrouting"; - }; - work = { - address = "jelle.spreeuwenberg@yookr.org"; - primary = true; - scope = "work"; - type = "office365"; - }; - }; - sourceControl.projectScope = "work"; - }; - }; - - accounts = lib.mapAttrs (name: spec: spec // { inherit name; }) userSpecs; - repo = { contact.email = "mail@jelles.net"; @@ -182,13 +130,5 @@ in readOnly = true; }; - options.meta.lib.accounts = lib.mkOption { - type = lib.types.attrs; - description = "Canonical account attrsets shared by host definitions."; - internal = true; - readOnly = true; - }; - config.meta.lib.repo = repo; - config.meta.lib.accounts = accounts; } diff --git a/modules/features/workstation-base.nix b/modules/features/workstation-base.nix index 656ec9b..c462e5e 100644 --- a/modules/features/workstation-base.nix +++ b/modules/features/workstation-base.nix @@ -4,7 +4,7 @@ let homeModules = config.flake.modules.homeManager; in { - flake.modules.nixos.workstation = { + flake.modules.nixos.workstation-base = { imports = [ nixosModules.audio nixosModules.bluetooth @@ -30,7 +30,7 @@ in environment.localBinInPath = true; }; - flake.modules.homeManager.workstation = { + flake.modules.homeManager.workstation-base = { imports = [ homeModules.ai homeModules.bitwarden diff --git a/modules/hosts/polaris/default.nix b/modules/hosts/polaris/default.nix index 2886a24..2ad140f 100644 --- a/modules/hosts/polaris/default.nix +++ b/modules/hosts/polaris/default.nix @@ -7,13 +7,15 @@ let nixosModules = config.flake.modules.nixos; homeModules = config.flake.modules.homeManager; metaLib = config.meta.lib; - workstationHomeImports = [ homeModules.workstation ]; + workstationHomeImports = [ homeModules.workstation-base ]; kiriHomeImports = workstationHomeImports ++ [ - homeModules.syncthing - homeModules.qbittorrent-client + homeModules.kiri-workstation + homeModules.noctalia + ]; + ergonHomeImports = workstationHomeImports ++ [ + homeModules.ergon-workstation homeModules.noctalia ]; - ergonHomeImports = workstationHomeImports ++ [ homeModules.noctalia ]; in { flake.modules.nixos.polaris = metaLib.mkHost { @@ -51,7 +53,7 @@ in }; imports = [ - nixosModules.workstation + nixosModules.workstation-base nixosModules.steam ./_hardware.nix ] diff --git a/modules/hosts/zenith/default.nix b/modules/hosts/zenith/default.nix index d90b317..64c2c75 100644 --- a/modules/hosts/zenith/default.nix +++ b/modules/hosts/zenith/default.nix @@ -7,24 +7,15 @@ let nixosModules = config.flake.modules.nixos; homeModules = config.flake.modules.homeManager; metaLib = config.meta.lib; - workstationHomeImports = [ homeModules.workstation ]; + workstationHomeImports = [ homeModules.workstation-base ]; portableNoctalia = homeModules.noctalia-portable; kiriHomeImports = workstationHomeImports ++ [ - homeModules.syncthing - homeModules.qbittorrent-client + homeModules.kiri-workstation portableNoctalia ]; ergonHomeImports = workstationHomeImports ++ [ + homeModules.ergon-workstation portableNoctalia - ( - { pkgs, ... }: - { - home.packages = [ - pkgs.rustup - pkgs.usql - ]; - } - ) ]; in { @@ -71,7 +62,7 @@ in }; imports = [ - nixosModules.workstation + nixosModules.workstation-base nixosModules.laptop-power { hardware.enableRedistributableFirmware = true; diff --git a/modules/lib.nix b/modules/lib.nix index f69efa4..3b68897 100644 --- a/modules/lib.nix +++ b/modules/lib.nix @@ -361,6 +361,23 @@ in readOnly = true; }; + options.meta.lib.accounts = lib.mkOption { + type = lib.types.attrs; + default = { }; + apply = lib.mapAttrs ( + name: account: + let + accountName = account.name or name; + in + account + // { + name = accountName; + } + ); + description = "Canonical account attrsets shared by host definitions."; + internal = true; + }; + config.meta.lib = { inherit mkInputProfiles diff --git a/modules/users/ergon.nix b/modules/users/ergon.nix new file mode 100644 index 0000000..1dcc986 --- /dev/null +++ b/modules/users/ergon.nix @@ -0,0 +1,31 @@ +{ + ... +}: +{ + meta.lib.accounts.ergon = { + realName = "Jelle Spreeuwenberg"; + emails = { + personal = { + address = "mail@jelles.net"; + scope = "personal"; + type = "mxrouting"; + }; + work = { + address = "jelle.spreeuwenberg@yookr.org"; + primary = true; + scope = "work"; + type = "office365"; + }; + }; + sourceControl.projectScope = "work"; + }; + + flake.modules.homeManager.ergon-workstation = + { pkgs, ... }: + { + home.packages = [ + pkgs.rustup + pkgs.usql + ]; + }; +} diff --git a/modules/users/kiri.nix b/modules/users/kiri.nix new file mode 100644 index 0000000..d6b8f98 --- /dev/null +++ b/modules/users/kiri.nix @@ -0,0 +1,43 @@ +{ + config, + ... +}: +let + homeModules = config.flake.modules.homeManager; +in +{ + meta.lib.accounts.kiri = { + realName = "Jelle Spreeuwenberg"; + emails = { + personal = { + address = "mail@jelles.net"; + primary = true; + scope = "personal"; + type = "mxrouting"; + }; + old = { + address = "mail@jellespreeuwenberg.nl"; + scope = null; + type = "mxrouting"; + }; + uni = { + address = "j.spreeuwenberg@student.tue.nl"; + scope = null; + type = "office365"; + }; + work = { + address = "jelle.spreeuwenberg@yookr.org"; + scope = "work"; + type = "office365"; + }; + }; + sourceControl = { }; + }; + + flake.modules.homeManager.kiri-workstation = { + imports = [ + homeModules.syncthing + homeModules.qbittorrent-client + ]; + }; +}