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, ... }:
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;
}
+2 -2
View File
@@ -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
+7 -5
View File
@@ -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
]
+4 -13
View File
@@ -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;
+17
View File
@@ -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
+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
];
};
}