{ config, lib, pkgs, ... }: let mylib = import ; cfg = config.torrent; in { options.torrent = { qbittorrentWebUiPort = lib.mkOption { type = lib.types.int; }; networkNamespace = lib.mkOption { type = lib.types.str; }; }; config = { environment.systemPackages = [pkgs.qbittorrent-nox]; users.extraUsers.qbittorrent = { isSystemUser = true; group = "qbittorrent"; home = "/var/lib/qbittorrent"; createHome = true; }; users.groups.qbittorrent = {}; systemd = { packages = [pkgs.qbittorrent-nox]; services."qbittorrent" = mylib.joinWgNamespace cfg.networkNamespace { enable = true; path = [pkgs.qbittorrent-nox]; serviceConfig = { ExecStart = "${pkgs.qbittorrent-nox}/bin/qbittorrent-nox --webui-port=${toString cfg.qbittorrentWebUiPort}"; User = "qbittorrent"; }; wantedBy = ["multi-user.target"]; }; services.qbittorrent-webui-proxy = mylib.mkPortProxy "qbittorrent" cfg.networkNamespace cfg.qbittorrentWebUiPort; }; }; }