feat: updated magic values

This commit is contained in:
Nick 2024-10-09 23:26:43 -05:00
parent 36b3b2cff4
commit cbb7128218
8 changed files with 60 additions and 62 deletions

View file

@ -1,11 +1,11 @@
let let
perms22 = ["fmask=0022" "dmask=0022"]; ownerWriteOthersReadMask = ["fmask=0022" "dmask=0022"];
perms77 = ["fmask=0077" "dmask=0077"]; ownerExclusiveReadWriteMask = ["fmask=0077" "dmask=0077"];
permsRW = ["rw"]; readWritePermissions = ["rw"];
permsSmb = ["rw" "gid=100" "vers=3.0" "x-systemd.automount" "x-systemd.requires=network-online.target"]; sambaPermissions = ["rw" "gid=100" "vers=3.0" "x-systemd.automount" "x-systemd.requires=network-online.target"];
permsFm = ["file_mode=0644" "dir_mode=0755"]; fileModeAndDirMode = ["file_mode=0644" "dir_mode=0755"];
uid0 = ["uid=1000"]; userIdForUser0 = ["uid=1000"];
uid1 = ["uid=1001"]; userIdForUser1 = ["uid=1001"];
in { in {
device = { device = {
# Desktop # Desktop
@ -17,17 +17,17 @@ in {
address0 = "192.168.50.196"; address0 = "192.168.50.196";
}; };
boot = { boot = {
options = perms22; options = ownerWriteOthersReadMask;
}; };
storage0 = { storage0 = {
mount = "/mnt/media/games"; mount = "/mnt/media/games";
device = "/dev/disk/by-label/Games"; device = "/dev/disk/by-label/Games";
options = permsRW; options = readWritePermissions;
}; };
storage1 = { storage1 = {
mount = "/mnt/media/storage"; mount = "/mnt/media/storage";
device = "/dev/disk/by-label/Storage"; device = "/dev/disk/by-label/Storage";
options = permsRW; options = readWritePermissions;
}; };
}; };
@ -41,7 +41,7 @@ in {
address0 = "192.168.50.142"; address0 = "192.168.50.142";
}; };
boot = { boot = {
options = perms22; options = ownerWriteOthersReadMask;
}; };
}; };
@ -50,6 +50,7 @@ in {
server = let server = let
serverName = "server"; serverName = "server";
serverIP = "192.168.50.140"; serverIP = "192.168.50.140";
nasPath = "NAS1";
in { in {
label = "Server"; label = "Server";
name = serverName; name = serverName;
@ -57,21 +58,17 @@ in {
address0 = serverIP; address0 = serverIP;
}; };
boot = { boot = {
options = perms77; options = ownerExclusiveReadWriteMask;
}; };
storage0 = let storage0 = {
nasPath = "NAS1";
in {
mount = "/mnt/media/${nasPath}"; mount = "/mnt/media/${nasPath}";
device = "/dev/disk/by-label/${nasPath}"; device = "/dev/disk/by-label/${nasPath}";
options = permsRW; options = readWritePermissions;
}; };
samba0 = let samba0 = {
share0Name = "media"; mount = "/mnt/media/${serverName}";
in { device = "//${serverIP}";
mount = "/mnt/media/${serverName}/${share0Name}"; options = sambaPermissions ++ fileModeAndDirMode ++ userIdForUser0;
device = "//${serverIP}/${share0Name}";
options = permsSmb ++ permsFm ++ uid0;
}; };
}; };
@ -99,31 +96,31 @@ in {
folder0 = { folder0 = {
mount = "/mnt/media/${nasName}/${user0}"; mount = "/mnt/media/${nasName}/${user0}";
device = "//${nasIP}/homes/${user0Name}"; device = "//${nasIP}/homes/${user0Name}";
options = permsSmb ++ uid0; options = sambaPermissions ++ userIdForUser0;
}; };
# Garnet Home Folder # Garnet Home Folder
folder1 = { folder1 = {
mount = "/mnt/media/${nasName}/${user1}"; mount = "/mnt/media/${nasName}/${user1}";
device = "//${nasIP}/homes/${user1Name}"; device = "//${nasIP}/homes/${user1Name}";
options = permsSmb ++ uid1; options = sambaPermissions ++ userIdForUser1;
}; };
# Fallaryn Home Folder # Fallaryn Home Folder
folder2 = { folder2 = {
mount = "/mnt/media/${nasName}/${user2}"; mount = "/mnt/media/${nasName}/${user2}";
device = "//${nasIP}/homes/${user2Name}"; device = "//${nasIP}/homes/${user2Name}";
options = permsSmb ++ uid0; options = sambaPermissions ++ userIdForUser0;
}; };
# Denise Home Folder # Denise Home Folder
folder3 = { folder3 = {
mount = "/mnt/media/${nasName}/${user3}"; mount = "/mnt/media/${nasName}/${user3}";
device = "//${nasIP}/homes/${user3Name}"; device = "//${nasIP}/homes/${user3Name}";
options = permsSmb ++ uid0; options = sambaPermissions ++ userIdForUser0;
}; };
# Minecraft Worlds # Minecraft Worlds
folder4 = { folder4 = {
mount = "/home/${user1}/.local/share/PrismLauncher/instances/1.21/.minecraft/saves"; mount = "/home/${user1}/.local/share/PrismLauncher/instances/1.21/.minecraft/saves";
device = "//${nasIP}/homes/${user1Name}/Minecraft"; device = "//${nasIP}/homes/${user1Name}/Minecraft";
options = permsSmb ++ uid1; options = sambaPermissions ++ userIdForUser1;
}; };
}; };
@ -136,17 +133,17 @@ in {
address0 = ""; address0 = "";
}; };
boot = { boot = {
options = perms22; options = ownerWriteOthersReadMask;
}; };
storage0 = { storage0 = {
mount = "/run/media/games"; mount = "/run/media/games";
device = "/dev/disk/by-label/Games"; device = "/dev/disk/by-label/Games";
options = permsRW; options = readWritePermissions;
}; };
storage1 = { storage1 = {
mount = "/run/media/entertainment"; mount = "/run/media/entertainment";
device = "/dev/disk/by-label/Entertainment"; device = "/dev/disk/by-label/Entertainment";
options = permsRW; options = readWritePermissions;
}; };
}; };

View file

@ -260,7 +260,7 @@ in {
}; };
paths = { paths = {
path0 = "${servicePath}/${jellyfinLabel}"; path0 = "${servicePath}/${jellyfinLabel}";
path1 = ""; path1 = jellyfinName;
path2 = ""; path2 = "";
}; };
ports = { ports = {

View file

@ -15,7 +15,7 @@
instanceName = service: (instance.${service}.subdomain); instanceName = service: (instance.${service}.subdomain);
domain0Services = [ domain0ServiceNames = [
"nextcloud" "nextcloud"
"jellyfin" "jellyfin"
"minecraft" "minecraft"
@ -24,7 +24,7 @@
"vaultwarden" "vaultwarden"
]; ];
domain1Services = [ domain1ServiceNames = [
"nextcloud" "nextcloud"
"castopod" "castopod"
"forgejo" "forgejo"
@ -33,8 +33,8 @@
"writefreely" "writefreely"
]; ];
domain0Sub = map instanceName domain0Services; domain0Subdomains = map instanceName domain0ServiceNames;
domain1Sub = map instanceName domain1Services; domain1Subdomains = map instanceName domain1ServiceNames;
domainRoot = [ domainRoot = [
domain.url0 domain.url0
@ -52,12 +52,12 @@ in {
name = "${prefix}.${domain.url0}"; name = "${prefix}.${domain.url0}";
value = dnsConfig; value = dnsConfig;
}) })
domain0Sub) domain0Subdomains)
++ (map (prefix: { ++ (map (prefix: {
name = "${prefix}.${domain.url1}"; name = "${prefix}.${domain.url1}";
value = dnsConfig; value = dnsConfig;
}) })
domain1Sub) domain1Subdomains)
++ (map (name: { ++ (map (name: {
name = name; name = name;
value = dnsConfig; value = dnsConfig;

View file

@ -13,7 +13,7 @@ in {
enable = true; enable = true;
openFirewall = true; openFirewall = true;
settings = { settings = {
media = { ${samba.paths.path1} = {
path = jellyfin.paths.path0; path = jellyfin.paths.path0;
writable = "true"; writable = "true";
}; };

View file

@ -68,7 +68,7 @@ in {
}; };
}; };
systemd.tmpfiles = let systemd.tmpfiles = let
createDir = [ directoriesAddedToHome = [
"Downloads/Nicotine" "Downloads/Nicotine"
"Downloads/Nicotine/Downloads" "Downloads/Nicotine/Downloads"
"Downloads/Nicotine/Incomplete" "Downloads/Nicotine/Incomplete"
@ -82,7 +82,7 @@ in {
"Files/Games" "Files/Games"
]; ];
removeDir = [ directoriesRemovedFromHome = [
"Desktop" "Desktop"
"Documents" "Documents"
"Music" "Music"
@ -94,7 +94,7 @@ in {
in { in {
rules = rules =
["d ${git.path0} 0755 ${user0} users -"] ["d ${git.path0} 0755 ${user0} users -"]
++ (map (path: "d /home/${user0}/${path} 0755 ${user0} users -") createDir) ++ (map (path: "d /home/${user0}/${path} 0755 ${user0} users -") directoriesAddedToHome)
++ (map (path: "R /home/${user0}/${path} 0755 ${user0} users - -") removeDir); ++ (map (path: "R /home/${user0}/${path} 0755 ${user0} users - -") directoriesRemovedFromHome);
}; };
} }

View file

@ -5,8 +5,9 @@
}: let }: let
inherit (flake.config.people) user0 user1; inherit (flake.config.people) user0 user1;
inherit (flake.config.system.device) desktop server nas; inherit (flake.config.system.device) desktop server nas;
secrets0 = config.sops.secrets."network/synology".path; inherit (flake.config.instance) samba;
secrets1 = config.sops.secrets."network/server".path; synologySecrets = config.sops.secrets."network/synology".path;
serverSecrets = config.sops.secrets."network/server".path;
in { in {
fileSystems = let fileSystems = let
synologyDrives = [ synologyDrives = [
@ -25,30 +26,30 @@ in {
"samba0" "samba0"
]; ];
synologyMounts = folder: { synologyMounts = synologyDrive: {
name = "${nas.${folder}.mount}"; name = "${nas.${synologyDrive}.mount}";
value = { value = {
device = nas.${folder}.device; device = nas.${synologyDrive}.device;
fsType = "cifs"; fsType = "cifs";
options = nas.${folder}.options ++ ["credentials=${secrets0}"]; options = nas.${synologyDrive}.options ++ ["credentials=${synologySecrets}"];
}; };
}; };
storageMounts = storage: { storageMounts = storageDrive: {
name = "${desktop.${storage}.mount}"; name = "${desktop.${storageDrive}.mount}";
value = { value = {
device = desktop.${storage}.device; device = desktop.${storageDrive}.device;
fsType = "ext4"; fsType = "ext4";
options = desktop.${storage}.options; options = desktop.${storageDrive}.options;
}; };
}; };
sambaMounts = samba: { sambaMounts = sambaDrive: {
name = "${server.${samba}.mount}"; name = "${server.${sambaDrive}.mount}/${samba.paths.path1}";
value = { value = {
device = server.${samba}.device; device = "${server.${sambaDrive}.device}/${samba.paths.path1}";
fsType = "cifs"; fsType = "cifs";
options = server.${samba}.options ++ ["credentials=${secrets1}"]; options = server.${sambaDrive}.options ++ ["credentials=${serverSecrets}"];
}; };
}; };
in in

View file

@ -5,7 +5,7 @@
}: let }: let
inherit (flake.config.people) user2; inherit (flake.config.people) user2;
inherit (flake.config.system.device) fallaryn nas; inherit (flake.config.system.device) fallaryn nas;
secrets0 = config.sops.secrets."network/fallaryn".path; synologySecrets = config.sops.secrets."network/fallaryn".path;
in { in {
imports = []; imports = [];
@ -24,7 +24,7 @@ in {
value = { value = {
device = nas.${folder}.device; device = nas.${folder}.device;
fsType = "cifs"; fsType = "cifs";
options = nas.${folder}.options ++ ["credentials=${secrets0}"]; options = nas.${folder}.options ++ ["credentials=${synologySecrets}"];
}; };
}; };

View file

@ -6,8 +6,8 @@
inherit (flake.config.people) user0 user1 user2; inherit (flake.config.people) user0 user1 user2;
inherit (flake.config.system.device) laptop nas server; inherit (flake.config.system.device) laptop nas server;
secrets0 = config.sops.secrets."network/synology".path; synologySecrets = config.sops.secrets."network/synology".path;
secrets1 = config.sops.secrets."network/server".path; serverSecrets = config.sops.secrets."network/server".path;
in { in {
fileSystems = let fileSystems = let
synologyDrives = [ synologyDrives = [
@ -25,7 +25,7 @@ in {
value = { value = {
device = nas.${folder}.device; device = nas.${folder}.device;
fsType = "cifs"; fsType = "cifs";
options = nas.${folder}.options ++ ["credentials=${secrets0}"]; options = nas.${folder}.options ++ ["credentials=${synologySecrets}"];
}; };
}; };
@ -34,7 +34,7 @@ in {
value = { value = {
device = server.${samba}.device; device = server.${samba}.device;
fsType = "cifs"; fsType = "cifs";
options = server.${samba}.options ++ ["credentials=${secrets1}"]; options = server.${samba}.options ++ ["credentials=${serverSecrets}"];
}; };
}; };
in in