adding slskd

This commit is contained in:
2025-08-05 16:56:53 +02:00
parent 71bfd634f5
commit 27313ada64
2 changed files with 80 additions and 15 deletions

View File

@@ -60,6 +60,9 @@
enable = true; enable = true;
port = 8080; port = 8080;
}; };
slskd = {
enable = true;
};
pihole = { pihole = {
enable = true; enable = true;
port = 8053; port = 8053;

View File

@@ -36,6 +36,31 @@ in {
default = "Downloads"; default = "Downloads";
}; };
}; };
slskd = {
enable = lib.mkEnableOption "Enable Soulseek";
url = lib.mkOption {
type = lib.types.str;
default = "slskd.${srv.domain}";
};
homepage.name = lib.mkOption {
type = lib.types.str;
default = "slskd";
};
homepage.description = lib.mkOption {
type = lib.types.str;
default = "Web-based Soulseek client";
};
homepage.icon = lib.mkOption {
type = lib.types.str;
default = "slskd.svg";
};
homepage.category = lib.mkOption {
type = lib.types.str;
default = "Downloads";
};
};
pihole = { pihole = {
enable = lib.mkEnableOption { enable = lib.mkEnableOption {
description = "Enable"; description = "Enable";
@@ -100,6 +125,35 @@ in {
]; ];
virtualisation.oci-containers.containers = lib.mkMerge [ virtualisation.oci-containers.containers = lib.mkMerge [
(lib.mkIf cfg.enable {
gluetun = {
image = "qmcgaw/gluetun";
ports = [
"8388:8388"
"58846:58846"
"8080:8080"
"5030:5030"
"5031:5031"
"50300:50300"
];
devices = ["/dev/net/tun:/dev/net/tun"];
autoStart = true;
extraOptions = [
"--cap-add=NET_ADMIN"
];
volumes = ["/var:/gluetun"];
environmentFiles = [
config.age.secrets.gluetunEnv.path
];
environment = {
DEV_MODE = "false";
VPN_SERVICE_PROVIDER = "mullvad";
VPN_TYPE = "wireguard";
SERVER_CITIES = "Stockholm";
};
};
})
(lib.mkIf cfg.qbittorrent.enable { (lib.mkIf cfg.qbittorrent.enable {
qbittorrent = { qbittorrent = {
image = "ghcr.io/hotio/qbittorrent:latest"; image = "ghcr.io/hotio/qbittorrent:latest";
@@ -126,28 +180,36 @@ in {
WEBUI_PORT = "${builtins.toString cfg.qbittorrent.port}"; WEBUI_PORT = "${builtins.toString cfg.qbittorrent.port}";
}; };
}; };
})
gluetun = { (lib.mkIf cfg.slskd.enable {
image = "qmcgaw/gluetun"; slskd = {
ports = [ image = "slskd/slskd:latest";
"8388:8388"
"58846:58846"
"8080:8080"
];
devices = ["/dev/net/tun:/dev/net/tun"];
autoStart = true; autoStart = true;
extraOptions = [ dependsOn = ["gluetun"];
"--cap-add=NET_ADMIN" ports = [
"5030:5030"
"5031:5031"
"50300:50300"
];
extraOptions = [
"--network=container:gluetun"
];
volumes = [
"/var/lib/slskd:/app:rw"
"/share/downloads:/downloads:rw"
]; ];
volumes = ["/var:/gluetun"];
environmentFiles = [ environmentFiles = [
config.age.secrets.gluetunEnv.path config.age.secrets.gluetunEnv.path
]; ];
environment = { environment = {
DEV_MODE = "false"; TZ = "Europe/Stockholm";
VPN_SERVICE_PROVIDER = "mullvad"; PUID = "981";
VPN_TYPE = "wireguard"; PGID = "982";
SERVER_CITIES = "Stockholm"; SLSKD_REMOTE_CONFIGURATION = "true";
SLSKD_REMOTE_FILE_MANAGEMENT = "true";
SLSKD_DOWNLOADS_DIR = "/downloads";
SLSKD_UMASK = "022";
}; };
}; };
}) })