mirror of
https://gitlab.com/upRootNutrition/dotfiles.git
synced 2025-06-16 10:05:13 -05:00
feat: updated magic values
This commit is contained in:
parent
36b3b2cff4
commit
cbb7128218
8 changed files with 60 additions and 62 deletions
|
@ -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;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -260,7 +260,7 @@ in {
|
||||||
};
|
};
|
||||||
paths = {
|
paths = {
|
||||||
path0 = "${servicePath}/${jellyfinLabel}";
|
path0 = "${servicePath}/${jellyfinLabel}";
|
||||||
path1 = "";
|
path1 = jellyfinName;
|
||||||
path2 = "";
|
path2 = "";
|
||||||
};
|
};
|
||||||
ports = {
|
ports = {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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}"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue