feat: refactored abstractions

This commit is contained in:
Nick 2024-10-19 18:22:29 -05:00
parent f3897c1e0c
commit 2e0ba5f89e
23 changed files with 324 additions and 310 deletions

View file

@ -7,7 +7,6 @@
"phone"
"server"
"tablet"
"wildcard"
];
instanceNames = [
"acme"
@ -28,7 +27,8 @@
"syncthing"
"synology"
"vaultwarden"
"wiki-js"
"web"
"wiki"
"writefreely"
];
userNames = [
@ -78,9 +78,7 @@ in let
sshKeys = listType;
group = stringType;
email = genOptions stringType "address";
domain = genOptions stringType "url";
dns = genOptions stringType "provider";
git = genOptions stringType "path";
paths = genOptions stringType "path";
};
};
serviceSubmodule = lib.types.submodule {
@ -104,6 +102,10 @@ in let
subdomain = stringType;
label = stringType;
name = stringType;
domains = genOptions stringType "url";
dns = genOptions stringType "provider";
localhost = genOptions stringType "address";
email = genOptions stringType "address";
sops = genOptions stringType "path";
paths = genOptions stringType "path";
ports = genOptions intType "port";

View file

@ -166,16 +166,5 @@ in {
address0 = "192.168.50.189";
};
};
# No particular system
wildcard = {
ip = {
address0 = "127.0.0.1"; # Local
address1 = "0.0.0.0"; # All
address2 = "192.168.50.1"; # Router
address3 = "192.168.50.0"; # Router
};
};
};
}

View file

@ -51,6 +51,21 @@ let
varLib = "/var/lib";
in {
instance = {
web = {
domains = {
url0 = domain0;
url1 = domain1;
};
dns = {
provider0 = "namecheap";
};
localhost = {
address0 = "127.0.0.1"; # Local
address1 = "0.0.0.0"; # All
address2 = "192.168.50.1"; # Router
address3 = "192.168.50.0"; # Router
};
};
acme = {
label = acmeLabel;
name = acmeName;
@ -73,14 +88,17 @@ in {
};
};
castopod = let
castDomain = "podcast";
castopodSubdomain = "podcast";
in {
label = castLabel;
name = castName;
email = {
address0 = "noreply@${castopodSubdomain}.${domain1}";
};
sops = {
path0 = "${sops}/${castName}";
};
subdomain = castDomain;
subdomain = castopodSubdomain;
paths = {
path0 = "${servicePath}/${castLabel}";
};
@ -88,19 +106,22 @@ in {
port0 = 8000;
};
ssl = {
cert = "${sslPath}/${castDomain}.${domain1}/fullchain.pem";
key = "${sslPath}/${castDomain}.${domain1}/key.pem";
cert = "${sslPath}/${castopodSubdomain}.${domain1}/fullchain.pem";
key = "${sslPath}/${castopodSubdomain}.${domain1}/key.pem";
};
};
forgejo = let
forgejoDomain = "source";
forgejoSubdomain = "source";
in {
label = forgejoLabel;
name = forgejoName;
email = {
address0 = "noreply@${forgejoSubdomain}.${domain1}";
};
sops = {
path0 = "${sops}/${forgejoName}";
};
subdomain = forgejoDomain;
subdomain = forgejoSubdomain;
paths = {
path0 = "${servicePath}/${forgejoLabel}";
};
@ -108,8 +129,8 @@ in {
port0 = 3033;
};
ssl = {
cert = "${sslPath}/${forgejoDomain}.${domain1}/fullchain.pem";
key = "${sslPath}/${forgejoDomain}.${domain1}/key.pem";
cert = "${sslPath}/${forgejoSubdomain}.${domain1}/fullchain.pem";
key = "${sslPath}/${forgejoSubdomain}.${domain1}/key.pem";
};
};
jellyfin = {
@ -148,6 +169,9 @@ in {
mastodon = {
label = mastodonLabel;
name = mastodonName;
email = {
address0 = "thenutrivore@${domain1}";
};
sops = {
path0 = "${sops}/${mastodonName}";
};
@ -245,13 +269,18 @@ in {
key = "${sslPath}/${owncastSubdomain}.${domain1}/key.pem";
};
};
peertube = {
peertube = let
peertubeSubdomain = "video";
in {
label = peertubeLabel;
name = peertubeName;
email = {
address0 = "noreply@${peertubeSubdomain}.${domain1}";
};
sops = {
path0 = "${sops}/${peertubeName}";
};
subdomain = "video";
subdomain = peertubeSubdomain;
paths = {
path0 = "${servicePath}/${peertubeLabel}";
};
@ -322,13 +351,18 @@ in {
key = "${sslPath}/${syncthingName}.${domain0}/key.pem";
};
};
vaultwarden = {
vaultwarden = let
vaultwardenSubdomain = vaultwardenName;
in {
label = vaultwardenLabel;
name = vaultwardenName;
email = {
address0 = "noreply@${vaultwardenSubdomain}.${domain0}";
};
sops = {
path0 = "${sops}/${vaultwardenName}";
};
subdomain = vaultwardenName;
subdomain = vaultwardenSubdomain;
paths = {
path0 = "${servicePath}/${vaultwardenLabel}/BackupDir";
};

View file

@ -16,21 +16,9 @@ in {
email = {
address0 = "nickjhiebert@proton.me";
address1 = "thenutrivore@proton.me";
address2 = "thenutrivore@the-nutrivore.social";
address3 = "noreply@vaultwarden.cloudbert.fun";
address4 = "noreply@video.the-nutrivore.social";
address5 = "noreply@source.the-nutrivore.social";
address6 = "noreply@podcast.the-nutrivore.social";
};
domain = {
url0 = "cloudbert.fun";
url1 = "the-nutrivore.social";
};
git = {
path0 = "/home/${user0}/Files/Projects";
};
dns = {
provider0 = "namecheap";
paths = {
path0 = "/home/${user0}/Files/Projects"; # Git path
};
sshKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBF9TmImDoYDpsW5VMFbOcuK3aH4TWRtx/xGxT3yUtEN nick@desktop"