2025-01-31 22:28:10 -08:00
|
|
|
{ pkgs, sys, ... }: let
|
2025-02-06 14:04:20 -08:00
|
|
|
|
|
|
|
iscsi = {
|
|
|
|
iqn = "iqn.2020-03.net.jafner:fighter";
|
|
|
|
portal = { # For Paladin
|
2025-01-30 14:51:01 -08:00
|
|
|
ip = "192.168.1.12";
|
|
|
|
port = "3260";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
in {
|
|
|
|
services.openiscsi = {
|
|
|
|
enable = true;
|
2025-02-06 14:04:20 -08:00
|
|
|
name = iscsi.iqn;
|
|
|
|
discoverPortal = "${iscsi.portal.ip}:${iscsi.portal.port}";
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
systemd.services = {
|
|
|
|
iscsi-autoconnect-paladin = {
|
2025-02-06 14:04:20 -08:00
|
|
|
description = "Log into iSCSI target ${iscsi.iqn} on paladin";
|
2025-01-30 14:51:01 -08:00
|
|
|
after = [ "network.target" "iscsid.service" ];
|
|
|
|
wants = [ "iscsid.service" ];
|
|
|
|
serviceConfig = {
|
2025-02-06 14:04:20 -08:00
|
|
|
ExecStartPre = "${pkgs.openiscsi}/bin/iscsiadm -m discovery -t sendtargets -p ${iscsi.portal.ip}:${iscsi.portal.port}";
|
|
|
|
ExecStart = "${pkgs.openiscsi}/bin/iscsiadm -m node -T ${iscsi.iqn} -p ${iscsi.portal.ip}:${iscsi.portal.port} --login";
|
|
|
|
ExecStop = "${pkgs.openiscsi}/bin/iscsiadm -m node -T ${iscsi.iqn} -p ${iscsi.portal.ip}:${iscsi.portal.port} --logout";
|
2025-01-30 14:51:01 -08:00
|
|
|
Restart = "on-failure";
|
|
|
|
RemainAfterExit = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2025-02-06 13:39:42 -08:00
|
|
|
sops.secrets."smb" = {
|
|
|
|
sopsFile = ./smb.secrets;
|
2025-02-06 13:54:39 -08:00
|
|
|
format = "binary";
|
2025-02-06 13:39:42 -08:00
|
|
|
key = "";
|
|
|
|
mode = "0440";
|
|
|
|
owner = sys.username;
|
|
|
|
};
|
2025-01-30 14:51:01 -08:00
|
|
|
environment.systemPackages = with pkgs; [ cifs-utils ];
|
|
|
|
fileSystems =
|
|
|
|
let
|
2025-01-31 22:28:10 -08:00
|
|
|
fsType = "cifs";
|
|
|
|
options = [
|
2025-02-06 15:04:46 -08:00
|
|
|
"x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=20s,x-systemd.mount-timeout=20s"
|
2025-02-06 13:39:42 -08:00
|
|
|
"credentials=/run/secrets/smb,uid=1000,gid=1000"
|
2025-01-31 22:28:10 -08:00
|
|
|
];
|
2025-01-30 14:51:01 -08:00
|
|
|
in {
|
2025-01-31 22:28:10 -08:00
|
|
|
"${sys.dataDirs.library.av}" = {
|
|
|
|
device = "//192.168.1.12/AV";
|
|
|
|
inherit fsType options;
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
2025-01-31 22:28:10 -08:00
|
|
|
"${sys.dataDirs.library.digitalModels}" = {
|
2025-01-30 14:51:01 -08:00
|
|
|
device = "//192.168.1.12/3DPrinting";
|
2025-01-31 22:28:10 -08:00
|
|
|
inherit fsType options;
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
2025-01-31 22:28:10 -08:00
|
|
|
"${sys.dataDirs.library.movies}" = {
|
2025-01-30 14:51:01 -08:00
|
|
|
device = "//192.168.1.12/Movies";
|
2025-01-31 22:28:10 -08:00
|
|
|
inherit fsType options;
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
2025-01-31 22:28:10 -08:00
|
|
|
"${sys.dataDirs.library.music}" = {
|
2025-01-30 14:51:01 -08:00
|
|
|
device = "//192.168.1.12/Music";
|
2025-01-31 22:28:10 -08:00
|
|
|
inherit fsType options;
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
2025-01-31 22:28:10 -08:00
|
|
|
"${sys.dataDirs.library.shows}" = {
|
2025-01-30 14:51:01 -08:00
|
|
|
device = "//192.168.1.12/Shows";
|
2025-01-31 22:28:10 -08:00
|
|
|
inherit fsType options;
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
2025-01-31 22:28:10 -08:00
|
|
|
"${sys.dataDirs.library.books}" = {
|
2025-01-30 14:51:01 -08:00
|
|
|
device = "//192.168.1.12/Text";
|
2025-01-31 22:28:10 -08:00
|
|
|
inherit fsType options;
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
2025-01-31 22:28:10 -08:00
|
|
|
"${sys.dataDirs.library.torrenting}" = {
|
2025-01-30 14:51:01 -08:00
|
|
|
device = "//192.168.1.12/Torrenting";
|
2025-01-31 22:28:10 -08:00
|
|
|
inherit fsType options;
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
2025-02-06 14:04:20 -08:00
|
|
|
"/mnt/iscsi/fighter" = {
|
|
|
|
device = "/dev/disk/by-uuid/cf3a253c-e792-48b5-89a1-f91deb02b3be";
|
|
|
|
fsType = "ext4";
|
|
|
|
options = [
|
|
|
|
"nofail"
|
|
|
|
"auto"
|
|
|
|
"users"
|
|
|
|
"x-systemd.automount"
|
|
|
|
];
|
|
|
|
};
|
2025-01-30 14:51:01 -08:00
|
|
|
};
|
|
|
|
}
|