diff --git a/hosts/nixdesk/profiles/samba-mount.nix b/hosts/nixdesk/profiles/samba-mount.nix index e246c11..63aa585 100644 --- a/hosts/nixdesk/profiles/samba-mount.nix +++ b/hosts/nixdesk/profiles/samba-mount.nix @@ -1,72 +1,35 @@ { config, + lib, pkgs, ... }: { environment.systemPackages = [pkgs.cifs-utils]; - systemd.mounts = [ - { - description = "smb hopper transmission download directory"; - what = "//192.168.50.97/transmission"; # hopper local ip - where = "/server/transmission"; - type = "cifs"; - options = "uid=xun,gid=users,credentials=${config.sops.secrets.samba.path}"; - } - { - description = "smb hopper vault"; - what = "//192.168.50.97/vault"; # hopper local ip - where = "/server/vault"; - type = "cifs"; - options = "uid=xun,gid=users,credentials=${config.sops.secrets.samba.path}"; - } - { - description = "smb hopper library"; - what = "//192.168.50.97/library"; # hopper local ip - where = "/server/library"; - type = "cifs"; - options = "uid=xun,gid=users,credentials=${config.sops.secrets.samba.path},vers=3.0"; - } - { - description = "smb hopper slskd files"; - what = "//192.168.50.97/slskd"; # hopper local ip - where = "/server/slskd"; - type = "cifs"; - options = "uid=xun,gid=users,credentials=${config.sops.secrets.samba.path}"; - } - ]; - systemd.automounts = [ - { - requires = ["network-online.target"]; - where = "/server/transmission"; - wantedBy = ["multi-user.target"]; - automountConfig = { - TimeoutIdleSec = "10min"; + imports = let + shares = [ + "transmission" + "vault" + "library" + "slskd" + ]; + in + map (share: { + systemd.mounts = lib.singleton { + description = "smb hopper ${share}"; + what = "//192.168.50.97/${share}"; + where = "/server/${share}"; + type = "cifs"; + options = "uid=xun,gid=users,credentials=${config.sops.secrets.samba.path}"; }; - } - { - requires = ["network-online.target"]; - where = "/server/vault"; - wantedBy = ["multi-user.target"]; - automountConfig = { - TimeoutIdleSec = "10min"; + systemd.automounts = lib.singleton { + requires = ["network-online.target"]; + where = "/server/${share}"; + wantedBy = ["multi-user.target"]; + automountConfig = { + TimeoutIdleSec = "10min"; + }; }; - } - { - requires = ["network-online.target"]; - where = "/server/library"; - wantedBy = ["multi-user.target"]; - automountConfig = { - TimeoutIdleSec = "10min"; - }; - } - { - requires = ["network-online.target"]; - where = "/server/slskd"; - wantedBy = ["multi-user.target"]; - automountConfig = { - TimeoutIdleSec = "10min"; - }; - } - ]; + }) + shares; }