diff options
| author | Tim Keller <tjk@tjkeller.xyz> | 2026-10-30 19:19:29 -0500 |
|---|---|---|
| committer | Tim Keller <tjk@tjkeller.xyz> | 2026-10-30 19:19:29 -0500 |
| commit | 75b9bf76277ddb97fa3787b40c22c4b4750aad31 (patch) | |
| tree | 25994b0a3a7f2fb12c1839eafc25c4d73d88eed8 | |
| parent | 4c2d824402c89639b6347fd7904fb296b060890e (diff) | |
| download | nixos-75b9bf76277ddb97fa3787b40c22c4b4750aad31.tar.xz nixos-75b9bf76277ddb97fa3787b40c22c4b4750aad31.zip | |
add slskd config
| -rw-r--r-- | hosts/poweredge/resources/secrets/slskd.yaml | 16 | ||||
| -rw-r--r-- | hosts/poweredge/slskd.nix | 91 |
2 files changed, 107 insertions, 0 deletions
diff --git a/hosts/poweredge/resources/secrets/slskd.yaml b/hosts/poweredge/resources/secrets/slskd.yaml new file mode 100644 index 0000000..3f0a43b --- /dev/null +++ b/hosts/poweredge/resources/secrets/slskd.yaml @@ -0,0 +1,16 @@ +env-file: ENC[AES256_GCM,data:HFyQoP9iZMx4ieCk7f36McCTVN+5P+wZ5O+4bztmvIjJkdT4CgzXQDEuDEfDCwPNW25hAR+zV6znW6eO/tDoJndliD0ifl6+xODL9g34nInfocB1+alMjcHFz3Ix9HEMUYkABZ3qxn9DQGagrlRBB0sDMHkW2fRcl2Sd7qY5lhM676jpfF+oh2QTWYn9ZP8aS9FcYB2SaeFox3o=,iv:18IODA/fQBwlJhvNKXuo0kc18w4dEspEz5inusnh1f4=,tag:2jAJr5R5LnKwRAhC5lb5Pg==,type:str] +sops: + age: + - enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2WitIOGhGVUp3N0pTQkds + OUJOQ0hReExNNEhZaXhENURwMGFGN3pBckVjClcvbDY4VUpXeWJXa0lLdWVoazNT + S2JjKzFaZ3lwWkZNbnRpOEpmREtMTm8KLS0tIE9yTXQvVzRvVU1YSGRLbWtQaGRB + REx6K2loY3JsTmFkNzZzN3FDdzhaaWsKRVP71gq5x0qPmWwhsDgTtDwe5Ip6cg78 + pvU/OeUmXEdLJAsXFAaCIKPe5QSMaopgKiB9rfXJFM3mn2bhnHNYBQ== + -----END AGE ENCRYPTED FILE----- + recipient: age1zfvmt2avdlfz0fvchczplc84u7m8vqausm7zytl9s4x9m9yax4cqy30zpz + lastmodified: "2026-10-28T22:22:21Z" + mac: ENC[AES256_GCM,data:lhyXZ2PEZ59C7EfshQ5x09dmLTeAhlEjt5rwpMjdVcicUKioH1GdUD+hjKNAUDCfuBS1Oy/ay0yFGn9TZvMqngbXRgSxx4EY26EssvmfZ6wgp1F8t41+gm0tuQFUkkn51k713O21sTAZS7BfpOyiFCHYD852RbRoENJrgRK6KQk=,iv:Jw2Tw1QwdxY7cTT0UBiVJmJhtp+nNsQttv7G8yHs8Rk=,tag:CwjZpbMi8T4ubNMen0EqYg==,type:str] + unencrypted_suffix: _unencrypted + version: 3.13.3 diff --git a/hosts/poweredge/slskd.nix b/hosts/poweredge/slskd.nix new file mode 100644 index 0000000..542757f --- /dev/null +++ b/hosts/poweredge/slskd.nix @@ -0,0 +1,91 @@ +{ config, ... }: { + # Secrets + sops.secrets.slskd-env = { sopsFile = ./resources/secrets/slskd.yaml; key = "env-file"; }; + + # Container + containers.slskd = let + home = "/var/lib/slskd"; + download-dir = "${home}/complete"; + incomplete-dir = "${home}/incomplete"; + in { + autoStart = true; + privateNetwork = true; + hostBridge = "br-lan0"; + localMacAddress = "02:00:00:00:01:51"; + + # Download dirs, shared with transmission's media tree, plus a + # read-only mount of the whole library for Soulseek sharing + bindMounts = { + "${download-dir}" = { + hostPath = "/media/ingens/media/dls/slskd/complete"; + isReadOnly = false; + }; + "${incomplete-dir}" = { + hostPath = "/media/ingens/media/dls/slskd/incomplete"; + isReadOnly = false; + }; + "/srv" = { + hostPath = "/media/ingens/media/dls/slskd/srv"; + isReadOnly = false; + }; + "/media/ingens/media" = { + hostPath = "/media/ingens/media"; + isReadOnly = true; + }; + }; + + # Bind secrets + bindMounts."/run/secrets/slskd.env" = { + hostPath = config.sops.secrets.slskd-env.path; + isReadOnly = true; + }; + + config = { lib, config, pkgs, ... }: { + # Network + networking = { + enableIPv6 = false; # Prevent ip leaks + firewall.allowedTCPPorts = [ 80 50300 ]; # Web ui + soulseek listen port tcp + firewall.allowedUDPPorts = [ 50300 ]; # soulseek listen port udp + # DHCP (see transmission.nix) + interfaces.eth0.useDHCP = true; + dhcpcd.extraConfig = '' + interface eth0 + static routers=192.168.1.9 + static domain_name_servers=9.9.9.9 1.1.1.1 + ''; + }; + + # slskd + services.slskd = { + enable = true; + environmentFile = "/run/secrets/slskd.env"; + settings = { + directories = { + downloads = download-dir; + incomplete = incomplete-dir; + }; + shares.directories = [ "/srv" ]; + transfers = { + upload.slots = 5; + upload.speed_limit = 0; + download.slots = 5; + download.speed_limit = 0; + }; + flags.no_version_check = true; + }; + }; + + users.users.slskd.uid = 1000; # uid is not set otherwise + + # Reverse proxy + services.caddy = { + enable = true; + virtualHosts.":80".extraConfig = '' + reverse_proxy localhost:5030 + ''; + }; + + system.stateVersion = "26.05"; + }; + }; +} |
