mirror of
https://gitlab.com/upRootNutrition/dotfiles.git
synced 2025-06-16 01:55:13 -05:00
refactor: reworked all maps
This commit is contained in:
parent
b5aa0453e4
commit
a114034e0e
20 changed files with 220 additions and 207 deletions
|
@ -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;
|
||||
|
|
|
@ -3,28 +3,25 @@
|
|||
|
||||
i18n = let
|
||||
locale = "en_CA.UTF-8";
|
||||
extraSettings = [
|
||||
"LC_ADDRESS"
|
||||
"LC_IDENTIFICATION"
|
||||
"LC_MEASUREMENT"
|
||||
"LC_MONETARY"
|
||||
"LC_NAME"
|
||||
"LC_NUMERIC"
|
||||
"LC_PAPER"
|
||||
"LC_TELEPHONE"
|
||||
"LC_TIME"
|
||||
];
|
||||
in {
|
||||
defaultLocale = locale;
|
||||
|
||||
extraLocaleSettings = builtins.listToAttrs (
|
||||
map (
|
||||
option: {
|
||||
extraLocaleSettings =
|
||||
builtins.listToAttrs
|
||||
(map (option: {
|
||||
name = option;
|
||||
value = locale;
|
||||
}
|
||||
)
|
||||
extraSettings
|
||||
);
|
||||
})
|
||||
[
|
||||
"LC_ADDRESS"
|
||||
"LC_IDENTIFICATION"
|
||||
"LC_MEASUREMENT"
|
||||
"LC_MONETARY"
|
||||
"LC_NAME"
|
||||
"LC_NUMERIC"
|
||||
"LC_PAPER"
|
||||
"LC_TELEPHONE"
|
||||
"LC_TIME"
|
||||
]);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
|
||||
])
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
let
|
||||
serviceFolders = [
|
||||
"mastodon"
|
||||
];
|
||||
|
||||
serviceFiles = [
|
||||
"acme"
|
||||
"caddy"
|
||||
"jellyfin"
|
||||
"logrotate"
|
||||
"minecraft"
|
||||
"ollama"
|
||||
"peertube"
|
||||
"postgresql"
|
||||
"owncast"
|
||||
"samba"
|
||||
"vaultwarden"
|
||||
"wiki"
|
||||
# "forgejo"
|
||||
# "castopod"
|
||||
# "nextcloud"
|
||||
];
|
||||
in {
|
||||
{
|
||||
imports =
|
||||
(map (folder: ./${folder}) serviceFolders)
|
||||
++ (map (file: ./${file}.nix) serviceFiles);
|
||||
(map
|
||||
(folder: ./${folder})
|
||||
[
|
||||
"mastodon"
|
||||
])
|
||||
++ (map
|
||||
(file: ./${file}.nix)
|
||||
[
|
||||
"acme"
|
||||
"caddy"
|
||||
"jellyfin"
|
||||
"logrotate"
|
||||
"minecraft"
|
||||
"ollama"
|
||||
"peertube"
|
||||
"postgresql"
|
||||
"owncast"
|
||||
"samba"
|
||||
"vaultwarden"
|
||||
"wiki"
|
||||
# "forgejo"
|
||||
# "castopod"
|
||||
# "nextcloud"
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
{flake, ...}: let
|
||||
inherit (flake) self;
|
||||
moduleNames = [
|
||||
"desktop"
|
||||
"entertainment"
|
||||
"productionArt"
|
||||
"productionAudio"
|
||||
"productionVideo"
|
||||
"productionWriting"
|
||||
"shared"
|
||||
];
|
||||
|
||||
moduleImports = map (module: self.homeModules.${module}) moduleNames;
|
||||
moduleImports =
|
||||
map
|
||||
(module: self.homeModules.${module})
|
||||
[
|
||||
"desktop"
|
||||
"entertainment"
|
||||
"productionArt"
|
||||
"productionAudio"
|
||||
"productionVideo"
|
||||
"productionWriting"
|
||||
"shared"
|
||||
];
|
||||
in {
|
||||
imports = moduleImports;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
{flake, ...}: let
|
||||
inherit (flake) self;
|
||||
moduleNames = [
|
||||
"entertainment"
|
||||
"desktop"
|
||||
"productionWriting"
|
||||
"shared"
|
||||
];
|
||||
|
||||
moduleImports = map (module: self.homeModules.${module}) moduleNames;
|
||||
moduleImports =
|
||||
map
|
||||
(module: self.homeModules.${module})
|
||||
[
|
||||
"entertainment"
|
||||
"desktop"
|
||||
"productionWriting"
|
||||
"shared"
|
||||
];
|
||||
in {
|
||||
imports = moduleImports;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
{flake, ...}: let
|
||||
inherit (flake) self;
|
||||
moduleNames = [
|
||||
"shared"
|
||||
];
|
||||
|
||||
moduleImports = map (module: self.homeModules.${module}) moduleNames;
|
||||
moduleImports =
|
||||
map
|
||||
(module: self.homeModules.${module})
|
||||
[
|
||||
"shared"
|
||||
];
|
||||
in {
|
||||
imports = moduleImports;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
{flake, ...}: let
|
||||
inherit (flake) self;
|
||||
moduleNames = [
|
||||
"desktop"
|
||||
"entertainment"
|
||||
"productionWriting"
|
||||
"shared"
|
||||
];
|
||||
|
||||
moduleImports = map (module: self.homeModules.${module}) moduleNames;
|
||||
moduleImports =
|
||||
map
|
||||
(module: self.homeModules.${module})
|
||||
[
|
||||
"desktop"
|
||||
"entertainment"
|
||||
"productionWriting"
|
||||
"shared"
|
||||
];
|
||||
in {
|
||||
imports = moduleImports;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
{flake, ...}: let
|
||||
inherit (flake) self;
|
||||
moduleNames = [
|
||||
"desktop"
|
||||
"entertainment"
|
||||
"productionWriting"
|
||||
"shared"
|
||||
];
|
||||
|
||||
moduleImports = map (module: self.homeModules.${module}) moduleNames;
|
||||
moduleImports =
|
||||
map
|
||||
(module: self.homeModules.${module})
|
||||
[
|
||||
"desktop"
|
||||
"entertainment"
|
||||
"productionWriting"
|
||||
"shared"
|
||||
];
|
||||
in {
|
||||
imports = moduleImports;
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
{lib, ...}: let
|
||||
desktopFiles = [
|
||||
"boot"
|
||||
"filesystem"
|
||||
"graphics"
|
||||
"hardware"
|
||||
"networking"
|
||||
"sops"
|
||||
];
|
||||
in {
|
||||
imports = map (file: ./${file}.nix) desktopFiles;
|
||||
{lib, ...}: {
|
||||
imports =
|
||||
map
|
||||
(file: ./${file}.nix)
|
||||
[
|
||||
"boot"
|
||||
"filesystem"
|
||||
"graphics"
|
||||
"hardware"
|
||||
"networking"
|
||||
"sops"
|
||||
];
|
||||
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
|
||||
system.stateVersion = lib.mkForce "24.05";
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
{lib, ...}: let
|
||||
laptopFiles = [
|
||||
"boot"
|
||||
"filesystem"
|
||||
"graphics"
|
||||
"hardware"
|
||||
"networking"
|
||||
"sops"
|
||||
];
|
||||
in {
|
||||
imports = map (file: ./${file}.nix) laptopFiles;
|
||||
{lib, ...}: {
|
||||
imports =
|
||||
map
|
||||
(file: ./${file}.nix)
|
||||
[
|
||||
"boot"
|
||||
"filesystem"
|
||||
"graphics"
|
||||
"hardware"
|
||||
"networking"
|
||||
"sops"
|
||||
];
|
||||
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
|
||||
system.stateVersion = lib.mkForce "24.05";
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
{lib, ...}: let
|
||||
serverFiles = [
|
||||
"boot"
|
||||
"filesystem"
|
||||
"graphics"
|
||||
"hardware"
|
||||
"networking"
|
||||
"sops"
|
||||
];
|
||||
in {
|
||||
imports = map (file: ./${file}.nix) serverFiles;
|
||||
{lib, ...}: {
|
||||
imports =
|
||||
map
|
||||
(file: ./${file}.nix)
|
||||
[
|
||||
"boot"
|
||||
"filesystem"
|
||||
"graphics"
|
||||
"hardware"
|
||||
"networking"
|
||||
"sops"
|
||||
];
|
||||
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
|
||||
system.stateVersion = lib.mkForce "24.05";
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue