refactor: reworked all maps

This commit is contained in:
Nick 2024-11-04 02:09:15 -06:00
parent b5aa0453e4
commit a114034e0e
20 changed files with 220 additions and 207 deletions

View file

@ -1,41 +1,4 @@
{lib, ...}: let
deviceNames = [
"desktop"
"laptop"
"nas"
"phone"
"printer0"
"printer1"
"server"
"tablet"
];
instanceNames = [
"acme"
"caddy"
"castopod"
"forgejo"
"jellyfin"
"mastodon"
"matrix"
"minecraft"
"nextcloud"
"nginx"
"ollama"
"owncast"
"peertube"
"postgresql"
"samba"
"syncthing"
"synology"
"vaultwarden"
"web"
"wiki"
"writefreely"
];
userNames = [
"user0"
"user1"
];
stringType = lib.mkOption {
type = lib.types.str;
};
@ -60,11 +23,16 @@
in let
peopleSubmodule = lib.types.submodule {
options =
builtins.listToAttrs (map (name: {
builtins.listToAttrs (
map (name: {
inherit name;
value = stringType;
})
userNames)
[
"user0"
"user1"
]
)
// {
user = lib.mkOption {
type = lib.types.attrsOf userSubmodule;
@ -83,14 +51,33 @@ in let
};
serviceSubmodule = lib.types.submodule {
options =
builtins.listToAttrs (
map
(name: {
builtins.listToAttrs (map (name: {
inherit name;
value = stringType;
})
instanceNames
)
[
"acme"
"caddy"
"castopod"
"forgejo"
"jellyfin"
"mastodon"
"matrix"
"minecraft"
"nextcloud"
"nginx"
"ollama"
"owncast"
"peertube"
"postgresql"
"samba"
"syncthing"
"synology"
"vaultwarden"
"web"
"wiki"
"writefreely"
])
// {
instance = lib.mkOption {
type = lib.types.attrsOf instanceSubmodule;
@ -117,14 +104,20 @@ in let
};
systemSubmodule = lib.types.submodule {
options =
builtins.listToAttrs (
map
(name: {
builtins.listToAttrs (map (name: {
inherit name;
value = stringType;
})
deviceNames
)
[
"desktop"
"laptop"
"nas"
"phone"
"printer0"
"printer1"
"server"
"tablet"
])
// {
device = lib.mkOption {
type = lib.types.attrsOf deviceSubmodule;

View file

@ -3,7 +3,16 @@
i18n = let
locale = "en_CA.UTF-8";
extraSettings = [
in {
defaultLocale = locale;
extraLocaleSettings =
builtins.listToAttrs
(map (option: {
name = option;
value = locale;
})
[
"LC_ADDRESS"
"LC_IDENTIFICATION"
"LC_MEASUREMENT"
@ -13,18 +22,6 @@
"LC_PAPER"
"LC_TELEPHONE"
"LC_TIME"
];
in {
defaultLocale = locale;
extraLocaleSettings = builtins.listToAttrs (
map (
option: {
name = option;
value = locale;
}
)
extraSettings
);
]);
};
}

View file

@ -18,34 +18,6 @@
directory = instance.acme.paths.path0;
environmentFile = config.sops.secrets."dns/namecheap".path;
};
domain0SubdomainNames = [
"nextcloud"
"jellyfin"
"minecraft"
"ollama"
"syncthing"
"vaultwarden"
];
domain1SubdomainNames = [
"wiki"
"nextcloud"
"castopod"
"forgejo"
"matrix"
"owncast"
"peertube"
"writefreely"
];
domainRoot = [
domain0
domain1
];
domain0Subdomains = map instanceName domain0SubdomainNames;
domain1Subdomains = map instanceName domain1SubdomainNames;
in {
security.acme = {
acceptTerms = true;
@ -58,17 +30,38 @@ in {
name = "${prefix}.${domain0}";
value = dnsConfig;
})
domain0Subdomains)
map
instanceName [
"nextcloud"
"jellyfin"
"minecraft"
"ollama"
"syncthing"
"vaultwarden"
])
++ (map (prefix: {
name = "${prefix}.${domain1}";
value = dnsConfig;
})
domain1Subdomains)
map
instanceName [
"wiki"
"nextcloud"
"castopod"
"forgejo"
"matrix"
"owncast"
"peertube"
"writefreely"
])
++ (map (name: {
name = name;
value = dnsConfig;
})
domainRoot)
[
domain0
domain1
])
);
};

View file

@ -59,7 +59,6 @@ in {
};
sops = let
sopsSecrets = ["smtp" "database"];
sopsPath = secret: {
path = "${service.sops.path0}/${service.name}-${secret}";
owner = service.name;
@ -72,7 +71,10 @@ in {
name = "${service.name}-${secret}";
value = sopsPath secret;
})
sopsSecrets
[
"smtp"
"database"
]
);
};

View file

@ -1,9 +1,13 @@
let
serviceFolders = [
{
imports =
(map
(folder: ./${folder})
[
"mastodon"
];
serviceFiles = [
])
++ (map
(file: ./${file}.nix)
[
"acme"
"caddy"
"jellyfin"
@ -19,9 +23,5 @@ let
# "forgejo"
# "castopod"
# "nextcloud"
];
in {
imports =
(map (folder: ./${folder}) serviceFolders)
++ (map (file: ./${file}.nix) serviceFiles);
]);
}

View file

@ -64,7 +64,6 @@ in {
};
};
sops = let
sopsSecrets = ["smtp" "database"];
sopsPath = secret: {
path = "${service.sops.path0}/${service.name}-${secret}";
owner = service.name;
@ -77,7 +76,10 @@ in {
name = "${service.name}-${secret}";
value = sopsPath secret;
})
sopsSecrets
[
"smtp"
"database"
]
);
};

View file

@ -146,7 +146,6 @@ in {
systemd.services.caddy.serviceConfig.ReadWriteDirectories = lib.mkForce ["/var/lib/caddy" "/run/mastodon-web"];
sops = let
sopsSecrets = ["smtp" "database" "redis"];
sopsPath = secret: {
path = "${service.sops.path0}/${service.name}-${secret}";
owner = service.name;
@ -159,7 +158,11 @@ in {
name = "${service.name}-${secret}";
value = sopsPath secret;
})
sopsSecrets
[
"smtp"
"database"
"redis"
]
);
};

View file

@ -50,7 +50,6 @@ in {
};
};
sops = let
sopsSecrets = ["pass"];
sopsPath = secret: {
path = "${service.sops.path0}/${service.name}-${secret}";
owner = service.name;
@ -63,7 +62,9 @@ in {
name = "${service.name}-${secret}";
value = sopsPath secret;
})
sopsSecrets
[
"pass"
]
);
};

View file

@ -75,7 +75,6 @@ in {
};
sops = let
sopsSecrets = ["pass"];
sopsPath = secret: {
path = "${service.sops.path0}/${service.name}-${secret}";
owner = service.name;
@ -88,7 +87,9 @@ in {
name = "${service.name}-${secret}";
value = sopsPath secret;
})
sopsSecrets
[
"pass"
]
);
};

View file

@ -81,7 +81,6 @@ in {
};
sops = let
sopsSecrets = ["smtp" "database" "redis" "root" "secret"];
sopsPath = secret: {
path = "${service.sops.path0}/${service.name}-${secret}-pass";
owner = service.name;
@ -94,7 +93,13 @@ in {
name = "${service.name}-${secret}";
value = sopsPath secret;
})
sopsSecrets
[
"smtp"
"database"
"redis"
"root"
"secret"
]
);
};

View file

@ -61,7 +61,6 @@ in {
};
sops = let
sopsSecrets = ["env"];
sopsPath = secret: {
path = "${service.sops.path0}/${service.name}-${secret}";
owner = service.name;
@ -74,7 +73,9 @@ in {
name = "${service.name}/${secret}";
value = sopsPath secret;
})
sopsSecrets
[
"env"
]
);
};

View file

@ -49,7 +49,6 @@ in {
};
sops = let
sopsSecrets = ["pass" "ssh"];
sopsPath = secret: {
path = "${service.sops.path0}/${secret}";
owner = "root";
@ -62,7 +61,10 @@ in {
name = "${service.name}/${secret}";
value = sopsPath secret;
})
sopsSecrets
[
"pass"
"ssh"
]
);
};

View file

@ -1,6 +1,10 @@
{flake, ...}: let
inherit (flake) self;
moduleNames = [
moduleImports =
map
(module: self.homeModules.${module})
[
"desktop"
"entertainment"
"productionArt"
@ -9,8 +13,6 @@
"productionWriting"
"shared"
];
moduleImports = map (module: self.homeModules.${module}) moduleNames;
in {
imports = moduleImports;
}

View file

@ -1,13 +1,15 @@
{flake, ...}: let
inherit (flake) self;
moduleNames = [
moduleImports =
map
(module: self.homeModules.${module})
[
"entertainment"
"desktop"
"productionWriting"
"shared"
];
moduleImports = map (module: self.homeModules.${module}) moduleNames;
in {
imports = moduleImports;
}

View file

@ -1,10 +1,12 @@
{flake, ...}: let
inherit (flake) self;
moduleNames = [
moduleImports =
map
(module: self.homeModules.${module})
[
"shared"
];
moduleImports = map (module: self.homeModules.${module}) moduleNames;
in {
imports = moduleImports;
}

View file

@ -1,13 +1,15 @@
{flake, ...}: let
inherit (flake) self;
moduleNames = [
moduleImports =
map
(module: self.homeModules.${module})
[
"desktop"
"entertainment"
"productionWriting"
"shared"
];
moduleImports = map (module: self.homeModules.${module}) moduleNames;
in {
imports = moduleImports;
}

View file

@ -1,13 +1,15 @@
{flake, ...}: let
inherit (flake) self;
moduleNames = [
moduleImports =
map
(module: self.homeModules.${module})
[
"desktop"
"entertainment"
"productionWriting"
"shared"
];
moduleImports = map (module: self.homeModules.${module}) moduleNames;
in {
imports = moduleImports;
}

View file

@ -1,5 +1,8 @@
{lib, ...}: let
desktopFiles = [
{lib, ...}: {
imports =
map
(file: ./${file}.nix)
[
"boot"
"filesystem"
"graphics"
@ -7,8 +10,6 @@
"networking"
"sops"
];
in {
imports = map (file: ./${file}.nix) desktopFiles;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
system.stateVersion = lib.mkForce "24.05";
}

View file

@ -1,5 +1,8 @@
{lib, ...}: let
laptopFiles = [
{lib, ...}: {
imports =
map
(file: ./${file}.nix)
[
"boot"
"filesystem"
"graphics"
@ -7,8 +10,6 @@
"networking"
"sops"
];
in {
imports = map (file: ./${file}.nix) laptopFiles;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
system.stateVersion = lib.mkForce "24.05";
}

View file

@ -1,5 +1,8 @@
{lib, ...}: let
serverFiles = [
{lib, ...}: {
imports =
map
(file: ./${file}.nix)
[
"boot"
"filesystem"
"graphics"
@ -7,8 +10,6 @@
"networking"
"sops"
];
in {
imports = map (file: ./${file}.nix) serverFiles;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
system.stateVersion = lib.mkForce "24.05";
}