dotfiles/config/devices.nix
2024-11-04 20:49:43 -06:00

147 lines
3.5 KiB
Nix
Executable file

let
ownerWriteOthersReadMask = ["fmask=0022" "dmask=0022"];
ownerExclusiveReadWriteMask = ["fmask=0077" "dmask=0077"];
readWritePermissions = ["rw"];
sambaPermissions = ["rw" "gid=100" "vers=3.0" "x-systemd.automount" "x-systemd.requires=network-online.target"];
fileModeAndDirMode = ["file_mode=0644" "dir_mode=0755"];
userIdForUser0 = ["uid=1000"];
userIdForUser1 = ["uid=1001"];
in {
devices = {
# Desktop
desktop = {
label = "Desktop";
name = "desktop";
sync = "";
ip = {
address0 = "192.168.50.196";
};
boot = {
options = ownerWriteOthersReadMask;
};
storage0 = {
mount = "/mnt/media/games";
device = "/dev/disk/by-label/Games";
options = readWritePermissions;
};
storage1 = {
mount = "/mnt/media/storage";
device = "/dev/disk/by-label/Storage";
options = readWritePermissions;
};
};
# Laptop
laptop = {
label = "Laptop";
name = "laptop";
sync = "";
ip = {
address0 = "192.168.50.142";
};
boot = {
options = ownerWriteOthersReadMask;
};
};
# Server
server = let
serverName = "server";
serverIP = "192.168.50.140";
serverStorageDriveName = "NAS1";
in {
label = "Server";
name = serverName;
ip = {
address0 = serverIP;
};
boot = {
options = ownerExclusiveReadWriteMask;
};
storage0 = {
mount = "/mnt/media/${serverStorageDriveName}";
device = "/dev/disk/by-label/${serverStorageDriveName}";
options = readWritePermissions;
};
samba0 = {
mount = "/mnt/media/${serverName}";
device = "//${serverIP}";
options = sambaPermissions ++ fileModeAndDirMode ++ userIdForUser0;
};
};
# Synology
nas = let
user0 = "nick";
user1 = "garnet";
user0Name = "Nick";
user1Name = "Garnet";
nasName = "synology";
nasIP = "192.168.50.209";
in {
label = "Synology";
sync = "MWRGX2V-F5XKE5E-REP6ECT-OOPFBMF-22NHSMW-YFBU6MB-PLFUN63-R3MW2QX";
name = nasName;
ip = {
address0 = nasIP;
};
# Nick Home Folder
folder0 = {
mount = "/mnt/media/${nasName}/${user0}";
device = "//${nasIP}/homes/${user0Name}";
options = sambaPermissions ++ userIdForUser0;
};
# Garnet Home Folder
folder1 = {
mount = "/mnt/media/${nasName}/${user1}";
device = "//${nasIP}/homes/${user1Name}";
options = sambaPermissions ++ userIdForUser1;
};
# Minecraft Worlds
folder2 = {
mount = "/home/${user1}/.local/share/PrismLauncher/instances/1.21/.minecraft/saves";
device = "//${nasIP}/homes/${user1Name}/Minecraft";
options = sambaPermissions ++ userIdForUser1;
};
};
# Pixel 9
phone = {
name = "pixel";
sync = "RMDKNJY-BTX6FYF-G6SR332-WS6HARI-PF74SC6-VPBSGRQ-MKVQZEQ-KSIB6QV";
ip = {
address0 = "192.168.50.243";
};
};
# Printer
printer0 = {
label = "Canon-TR7620a";
ip = {
address0 = "";
};
};
printer1 = {
label = "Brother-HL-2170W";
ip = {
address0 = "192.168.50.195";
};
};
# Samsung S7 FE
tablet = {
name = "tablet";
sync = "I2ZSCZU-T4JMUJJ-XCUQ3MY-G5EUFZ5-KRG2DRY-XIBJZZM-FQW3UMY-CBCTUQU";
ip = {
address0 = "192.168.50.189";
};
};
};
}