feat: set up sshfs on deimos

This commit is contained in:
Nick 2025-06-25 18:28:16 -05:00
parent 27781d3d0f
commit 2b4ad99e25
8 changed files with 54 additions and 8 deletions

View file

@ -90,6 +90,7 @@ let
}
// genOptions mountConfig "folder"
// genOptions mountConfig "samba"
// genOptions mountConfig "remote"
// genOptions mountConfig "storage";
};

View file

@ -1,7 +1,9 @@
{ devicesFunctions }:
let
inherit (devicesFunctions)
sshfsOptions
fileModeAndDirMode
ceresStorageDriveName
ownerExclusiveReadWriteMask
readWritePermissions
sambaPermissions
@ -9,7 +11,6 @@ let
ceresIP
;
ceresName = "ceres";
ceresStorageDriveName = "NAS1";
in
{
label = "Ceres";
@ -33,4 +34,9 @@ in
device = "//${ceresIP}";
options = sambaPermissions ++ fileModeAndDirMode ++ userIdForUser0;
};
remote0 = {
mount = "/mnt/media/remote";
device = "nick@24.76.173.0:/mnt/media/${ceresStorageDriveName}";
options = sshfsOptions;
};
}

View file

@ -21,6 +21,15 @@ let
"x-systemd.automount"
"x-systemd.requires=network-online.target"
];
sshfsOptions = [
"allow_other"
"_netdev"
"x-systemd.automount"
"reconnect"
"user"
"ServerAliveInterval=15"
"IdentityFile=/var/run/secrets/ssh/private"
];
fileModeAndDirMode = [
"file_mode=0644"
"dir_mode=0755"
@ -36,6 +45,7 @@ let
];
dummy = [
];
ceresStorageDriveName = "NAS1";
ceresIP = "192.168.50.140";
charonIP = "192.168.50.42";
deimosIP = "192.168.50.142";

View file

@ -40,7 +40,7 @@ in
};
fonts = {
names = {
name0 = "MonaspiceNe Nerd Font"; # User0 Font
name0 = "MonaspiceRn Nerd Font"; # User0 Font
name1 = ""; # User1 Font
name2 = ""; # User2 Font
};

View file

@ -6,6 +6,14 @@
home.packages = builtins.attrValues {
inherit (pkgs.kdePackages)
dolphin
kio-extras
baloo
kdegraphics-thumbnailers
ffmpegthumbs
breeze
breeze-icons
oxygen
polkit-kde-agent-1
;
};
}

View file

@ -1,3 +1,8 @@
{ flake, osConfig, ... }:
let
inherit (flake.config.machines.devices) deimos;
hostname = osConfig.networking.hostName;
in
{
services.wpaperd = {
enable = true;
@ -7,7 +12,7 @@
apply-shadow = true;
duration = "1m";
sorting = "random";
};
} // (if hostname == deimos.name then { mode = "center"; } else { });
};
};
}

View file

@ -1,7 +1,7 @@
ssh:
private: ENC[AES256_GCM,data:XJk/gjPkFeSZtPkKYS2vRHqMY/X5zRaDlS4UwzUvjm9MvTgdhoXUlqvFC0Dl5SZhRlY+XXAuG7gIIUESzCFWQKdOoUcto3r0WSuIm9EwLKXnnaHemeFVHYgZU9Rz45PK6yFWUC06+n56b2A1dFXftjeXcCqaQrT/jk3RDSHmhW9u7QgDmhhaybxXOrzkup2U8kjhrMmRBcf4xP//nihuzHcyYX75ONr56bgkjl6gpZTfZrn2ad8b+4iGn+rElzf7RHAG0mwTeEX2kYRyafaanGuc2xTnZubBAYDnc1eM6T99PXC0iWh/lUKc1zG1l18UchWzgvl3sPK0Cb2/5aaFMUk2ET6kVOlpKyGc94MRpyv3iUi8soFjh34sWH3mFtec2OWfIxDhoVfZoc2hmP2Hflfjp7acwaMskFBHaCSO2DGtNmN3hSUhAAeLx8OZupSIJmDVpq00qKUbN+5z4K78AdGuUOP07cE889evNniCHLP6yPav7tIulnBS9lD2U+CbqF7vMtdZx/eYFwJjmMtE,iv:JxSytvXKWLHDedlE0Wq5YpPUnfb0HoQgKJ2bt1Z8yqk=,tag:MjOoUSWsHWHgxp0yu9YQFA==,type:str]
public: ENC[AES256_GCM,data:Cn4hutHHeptbefHOKK7zv5TmveGOqfHAwGHogDq9sRmeb+b1lzHwj7qvg8lcnlJtIo4qS+TrKtSj5ZCsPNXOhWG1rkk97gTfPMbcxj5f1O3WJigL2wsrB2cQgc5UsA==,iv:ID4zRdr/efClOAHbXzxG1bNuJR0A2qbydzGlMhvEcRE=,tag:qbIoaGb+RXxRRkkQtuX7/A==,type:str]
hosts: ENC[AES256_GCM,data:trhzR1gQvSFsI0AdGlestwFU4HbocBjLS5b8Vmlv5tOHR47JlMCVekDEtkQ9DTl/OGXB/5AynGtd2vUkso37noPiqhPXCNwGfhc3np6IKGYA5vYd3xxZdH3XCJDTjG046VhYX5MA/d6kbReX9PtOxfnglGFLIxwPB0GZ7WZdPDqGf97HHb0ivdRho8UzC3ea2IcDpUwkRo30r+wMzCO2oKB7A3alcXHRi5UuYQ5mW1zDhUC/NS7Q9xkyOztZ++E6pH77crnPI5Z41M96mWkbVu65/kW4NOAp1t7B5VL6qi8XBt6QL9pM/u3a93QuCOZ6uN+JwbEYQt87Y7vPrvcO8711OyMyyNJKm+0Rr8Li+Lp/X5dS++at5eP3NXJhCBpG0cNa1DM/2PwQbs+5shslDfkssR8RAdIgigWQeIVSsUBZcAwU+YwFtPC5sXO1Julmey+KBv/+9dOmlJ3pmRLoGa0KkQixzZZzfRErXfMSn+DJpsZtMzBFzd0AwULw6opAOWCdlk9rWMd4JInDusf7p3PdpCm2Sv31zlBCGWUNxWv59+PdTZoLuL6yAxj+qdNpqzJdLSSKEcPB1whrxwiVlR44B6Ws0vuqhPxuEhd/BIcwPzrD9u7i2hYR+Ox4FItBmwuysiyNqfPs8/FgOOwpB4WjhbxwVr95W9o5N3QZGoTqGKYLEcmOwcYo7b86GLbwpxB0PPgVFWoZUqBZDC6nBIkCCGv/4xWBrQlzftyfcDOE+qlZARPdssixo4BZ4q6KJ+hbcwXGNnJub2t043LVuoOOM/OazcNe3T2eftvFM2TKJEHO6VdJ0G3foxwtGvysMp4R08ysgcr/VZ/tjcRp8FO/2LIR68f+ZtY4nIQBLTis+5JVqbUbMMZAjNSWuj2MNfcE6DWAcj8P4druqA0539KXtc4xDCqZu30IzfAkyOWvHnTaNHLw1xhv5gF/07sHqk+QxhpDKJrwUwQfZVYCrsBAJjBDAGwEfyQKlZBchI4zFAJ3Xs43WbwXQR35+5HTF1ZTwakJ9MqwQxD+jN24wNm9XAPKzvRoy/LAAtLpoH/spylBF7+CjZpGxXkO/Y8vhzPnw7WB7BnNsn4mqP7gFltNL6dHNA3i+mfZSCJkqieqIhKa1LoWgbvdVcQAs7VGVvNPaRsjZVYFvezxvem7AAsIxa/imQ6r17Tmcy3/50FjeoAlE8+Lxp4wDyLZjtX8rTfOjS4B1O3vfa4q6wnbOeuep+AWnA4U4qyr+KrzJnmGCnVpnbqKoy5k26odvU29sM7m1ZWE+uEAatUfSu432vLbzj6jct5wzyKJFIylpPXj3IeojrmISbPB9P8/l2I5au5zyQWW6nAZ5E6c7w23i8X6/Kc9u2XR9BQTg/eznzwKhExLnR9HOWiE4lqQkXPzTWqzfDDt3Fxya+Lu7YbrYVfAN/pf963kKjw1T5LTcLWBmR0WZTMnLprtBAI1LoBQaxE9pkfIx4NMTfWBP23IppkM11HBktvzmR3sM/F0lX7aAPLCA75nmSoa1BdC5dPFZRmFqxRI9TtHeh26PBXugZ7Bgemr7QBh1+dqgWyTjkw/FB100/yVtqvnb5qoTUyidd5oH9331TS2YXkNAB2jjfBytpfw5ReMfmXxYon5XS56J5/ghl6ZmV5XhoZZ56H9xrDFYrsVvoAHv6o77Ojh3IxXEFaJ9Wx2D/bzX0zks1LTIM4lkrRT9gwjx/WF2YEfhcx8s8XjjAPOR6uCxvlc4GxQ4rWbdTIq,iv:l4WIY3l7UBTY3Dkt2lLJ8DLf2f8zWFGtq/3IXj5rfdo=,tag:Ni6q4YAzd+Y/BPM8tKL2HA==,type:str]
hosts: ENC[AES256_GCM,data:OC2i3Kr4cg1bNE7Usc4ydTCsaO8ET03JsiJG4UqV+BzeBDmontsZ1VH6zlFF8YFnAlBjiFmmQgKxQtFMntwWs4W0q6zqDdXcyMmgmdiHW7OkdKB2PzNvKkdhDszTgsSigAB3FtHyJqv8WtcOBGzXnjoT1LXcErazO2+utk+t0sSyMwuCpcNbTXROmyUEDVTJ46Hf+cG1URkMIqPL4fwwN0RX1M5DkXGoLXrVk6DUfJZOn+fNiLBDUNPgOTqeQSdklIcCvRQBvy3BYrFPbgmPz5IaplqF/DdsscSKfFLTsc1WbLuuaoV08y6q5RKapsckoVmffdNxfZ+CrYTy7ftOBP3OBxwPuF9Xj2uKhoUSg9R0quS6G5Hmz9+nLsqILCEnAZmn8XVR9XIRtrI38AC/hWjtTss4tQ94yUdedKjNnUSgTZvpS6BfYxiTDch9ZEGwyfDYkWD8Cfpyrfu6XRSfOgaNq6JGUyOpt5CA6vPizAMuHYRNvM5xL00iz7ZuqF39LUxZ+2YHmqHE5z+19Upd3BUCmyqrehMk7Ls7xwbLQX9h6GZ4CFNKWlCpN3DCw/Fio6AhhmPrutvW9aeGCQ0htF2nOKOMJymLHOl6X/2nVTr6H8j49hKlHqnRQ6fOTXNEv3d9MYEETyG1bwxdhnFoqvfEbDT3eU1s80eT0bkNNcRz/5Xlum1EsF6vSU4s6gI9+7OwnV9KqhRrghZlJB+Ln0JzEuehwxdvCA3ZbFdiwOoLgqcZogphtozSjgN+M2Grf1IwbJt+nJFg4BRYrCMNlB3iv5NyO4paWUdVDTUuBcfbgXDfSpuC2oL0wIi4pvsfAsRJ4Qzq9SZD1fs19xgQfU7PN+AXcIRxtJrZv26mSzo3nA5WRfWzlo8y8DPMRNGkHO0RSln8wDMMQCb00QG5U7TJfZ59lqVD78TDPGKph3dPAmsF0c9RUQvinbjUevl1DJlU9wd3mMB5ZVdUQLv66uLRHQAJqufwhaBS4AZAScZR0jz5iyVxb2W3IHYXD1Mv7IuoKwWHaZq42DFjKFY3jKUjvZ3KOQFqZKtiCxzJWSi4oFZ3Y4QLY34Eif8fGnNgsbBt/Y52rw8bVFfcxQn6F0YTR4/fjz3uViuM6Ce1kFtXhp/nl+Bks9O4F6grcmdPTerxkvjQqWSihesEbO8I2Oc+wOdBW0tTQ9MzzaTbDLjZB8OgkDTmnjdcxsgmQRrHaqomyOd3gLrMXYG91W2sOuC+SMv9MiPw1tHiESUnQlg1tK3ytuhB3M4h0rxn6AKVsXUNTQFOoKu5/a54S3pmLABztEP9DCzOFzl2+OgxLBL3loZImW9R2aYqBUac4uUGR3Ip3sI4wwYgkqm3T5b7fVmuDfJF2EYEW2OisnkAFlRl7JAqIfCzXCGxlHNDofomQl8zqUwUi1r+vZfGeLpSJyBHPDidYLcp3zkh/vayaNJJvfu0tbvKXsJwOuwcYLglsnqQPdN+KsDiZzDz6/GX2VRedL9NlRD8IwHm9ENqS6bs6/DN6SL79IdQ4udr0svgg8iZ+RUCCc98vBmwoveD6VpV6LmUCxThxmA6mp6jk27VS8bIsvScrvaUR8yIkqRgURpMmsiKab/69t1FGAO1sGKkpWFErTuwUjrb0O2MZYCiMG0erW4EYzROrgpe+Nvnd25hYoC+P+ga6xlPhVluBFFNA66MS662SGVLNSXQTi8fu/jX+rLCECM+e/SjQtkwT5s6VXxWfjgwOB16n0PMqngthJGz8HXhZhK0Cl5z1+7d/RoUXr0iPGoP1dLOB59x6TO/ZmtrKz7fuwamRmdlHBX6BWcsLvgUEw6TwhLkbEjb0QxNxK6qmBEkckLtDVk0EAlJiPnYpfqXBSBf+wG3C+Ctzl4j,iv:3VP3yinYidbjCNzX473E11NmniLnV3H4sKlxgnoqyu8=,tag:NB0NmAHT/MfOQ9sowIAAyg==,type:str]
network:
synology: ENC[AES256_GCM,data:r0Aor25K6IuywAq5Px9JasWpnYzAA87ffA1k/97GEqMRkb6V6VYW1Q1EoEGNnBoa5o6KBtHk0WY=,iv:IeZMBwKGOevgB3bgnSsF6JJ6ntcJa5fe5irVUuMOGwY=,tag:9JWqeKa0g7YzqpKy1VLFEA==,type:str]
server: ENC[AES256_GCM,data:EFsmXNkuf5OAMh8hjfZTixmmdjqBNIME9JjQC8azeCwcMVInm8bWdxE4OqFmxOk9MAU=,iv:pI6WeM2aQC+7vx1Xmp5O2rikqNLgzuEOg+Lo7TqFQxU=,tag:ElcA8mn9dx+IjIf38nKT5A==,type:str]
@ -48,7 +48,7 @@ sops:
bXBOa1VSakoyaWxpODJEOU11QUZCaUEK8Ch9Ten3DdrPHF1DTH2qei85AlHUOaLD
aNfzakake7ej+MxJYdKEU0bcWofNMKzIlZa2uM10KZSENDP8d8qlig==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-06-22T17:49:20Z"
mac: ENC[AES256_GCM,data:xaNgww0DTuVdPtVy9oTmn0HKmDKpiOnjFnSBjJ7YxqV8R2c+VWEnA6P1vBrR5L9xG/nXvBhMm7XMOA/z0eZRWM2CfjNyrk6KOFyLArvJLyzj8zRZThe6rFNAiSjndwVNBHtYSYid3Bisupuagp1HuYXK1JDlgc9a93c7rlbG1OI=,iv:OBl0hhf0T+I7FuXAkgUrJOkJHN2H0LR+JKp1KsyyMD0=,tag:+PE51+dUw9erKChmvl6j/w==,type:str]
lastmodified: "2025-06-25T21:19:21Z"
mac: ENC[AES256_GCM,data:bCdXkiK+gEgdz+MG4Npne7s3PjZL135U4H8vWWxtDoOnCXi+gbKzPMKzwpFkAflfAwWttiswb2I4dfiFFIaEezILmCA5dE48WMZFccyMdCrU30FscQ2x1b41AGrQdiZK4ZwVR7iWSNbcmOJMjIXA8c97Q4ldIInYaSleEt1kvuk=,iv:RNH6cRUOKGfuHaWeNhIsibdpX6ULEtw8KuApTdZb4Vg=,tag:p9CzqXZDxk6hVIL/BK/8Rw==,type:str]
unencrypted_suffix: _unencrypted
version: 3.10.2

View file

@ -35,7 +35,11 @@ in
"samba0"
];
sambaFolders = [
remoteDrives = [
"remote0"
];
remoteFolders = [
audiobookshelf.name
jellyfin.name
];
@ -61,6 +65,15 @@ in
];
};
};
sshfsMounts = sshfsDrive: folder: {
name = "${ceres.${sshfsDrive}.mount}/${folder}";
value = {
device = "${ceres.${sshfsDrive}.device}/${folder}";
fsType = "sshfs";
options = ceres.${sshfsDrive}.options;
};
};
in
{
"/" = {
@ -75,7 +88,10 @@ in
}
// (builtins.listToAttrs (map synologyMounts synologyDrives))
// (builtins.listToAttrs (
builtins.concatMap (drive: map (folder: sambaMounts drive folder) sambaFolders) sambaDrives
builtins.concatMap (drive: map (folder: sambaMounts drive folder) remoteFolders) sambaDrives
))
// (builtins.listToAttrs (
builtins.concatMap (drive: map (folder: sshfsMounts drive folder) remoteFolders) remoteDrives
));
swapDevices = [