refactor: cleanup and extract user config

This commit is contained in:
2026-04-23 20:03:51 +02:00
parent 2e02ebb1e2
commit 8a14ad2ed5
7 changed files with 104 additions and 80 deletions
-60
View File
@@ -1,57 +1,5 @@
{ lib, ... }: { lib, ... }:
let 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 = { repo = {
contact.email = "mail@jelles.net"; contact.email = "mail@jelles.net";
@@ -182,13 +130,5 @@ in
readOnly = true; 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.repo = repo;
config.meta.lib.accounts = accounts;
} }
+2 -2
View File
@@ -4,7 +4,7 @@ let
homeModules = config.flake.modules.homeManager; homeModules = config.flake.modules.homeManager;
in in
{ {
flake.modules.nixos.workstation = { flake.modules.nixos.workstation-base = {
imports = [ imports = [
nixosModules.audio nixosModules.audio
nixosModules.bluetooth nixosModules.bluetooth
@@ -30,7 +30,7 @@ in
environment.localBinInPath = true; environment.localBinInPath = true;
}; };
flake.modules.homeManager.workstation = { flake.modules.homeManager.workstation-base = {
imports = [ imports = [
homeModules.ai homeModules.ai
homeModules.bitwarden homeModules.bitwarden
+7 -5
View File
@@ -7,13 +7,15 @@ let
nixosModules = config.flake.modules.nixos; nixosModules = config.flake.modules.nixos;
homeModules = config.flake.modules.homeManager; homeModules = config.flake.modules.homeManager;
metaLib = config.meta.lib; metaLib = config.meta.lib;
workstationHomeImports = [ homeModules.workstation ]; workstationHomeImports = [ homeModules.workstation-base ];
kiriHomeImports = workstationHomeImports ++ [ kiriHomeImports = workstationHomeImports ++ [
homeModules.syncthing homeModules.kiri-workstation
homeModules.qbittorrent-client homeModules.noctalia
];
ergonHomeImports = workstationHomeImports ++ [
homeModules.ergon-workstation
homeModules.noctalia homeModules.noctalia
]; ];
ergonHomeImports = workstationHomeImports ++ [ homeModules.noctalia ];
in in
{ {
flake.modules.nixos.polaris = metaLib.mkHost { flake.modules.nixos.polaris = metaLib.mkHost {
@@ -51,7 +53,7 @@ in
}; };
imports = [ imports = [
nixosModules.workstation nixosModules.workstation-base
nixosModules.steam nixosModules.steam
./_hardware.nix ./_hardware.nix
] ]
+4 -13
View File
@@ -7,24 +7,15 @@ let
nixosModules = config.flake.modules.nixos; nixosModules = config.flake.modules.nixos;
homeModules = config.flake.modules.homeManager; homeModules = config.flake.modules.homeManager;
metaLib = config.meta.lib; metaLib = config.meta.lib;
workstationHomeImports = [ homeModules.workstation ]; workstationHomeImports = [ homeModules.workstation-base ];
portableNoctalia = homeModules.noctalia-portable; portableNoctalia = homeModules.noctalia-portable;
kiriHomeImports = workstationHomeImports ++ [ kiriHomeImports = workstationHomeImports ++ [
homeModules.syncthing homeModules.kiri-workstation
homeModules.qbittorrent-client
portableNoctalia portableNoctalia
]; ];
ergonHomeImports = workstationHomeImports ++ [ ergonHomeImports = workstationHomeImports ++ [
homeModules.ergon-workstation
portableNoctalia portableNoctalia
(
{ pkgs, ... }:
{
home.packages = [
pkgs.rustup
pkgs.usql
];
}
)
]; ];
in in
{ {
@@ -71,7 +62,7 @@ in
}; };
imports = [ imports = [
nixosModules.workstation nixosModules.workstation-base
nixosModules.laptop-power nixosModules.laptop-power
{ {
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
+17
View File
@@ -361,6 +361,23 @@ in
readOnly = true; 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 = { config.meta.lib = {
inherit inherit
mkInputProfiles mkInputProfiles
+31
View File
@@ -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
];
};
}
+43
View File
@@ -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
];
};
}