{ config, pkgs, ... }: let cids = import ./staticids.nix; networkPrefix = config.networkPrefix; user = { isSystemUser = true; uid = cids.uids.pyload; group = "pyload"; home = "/var/lib/pyload"; createHome = true; }; group = { gid = cids.gids.pyload; }; in { users.users.pyload = user; users.groups.pyload = group; # Create the multimedia directory structure on the host systemd.tmpfiles.rules = [ "d /var/lib/multimedia 0755 root root - -" "d /var/lib/multimedia/downloads 0755 pyload pyload - -" "d /var/lib/multimedia/movies 0755 pyload pyload - -" "d /var/lib/multimedia/tv-shows 0755 pyload pyload - -" ]; containers.pyload = { autoStart = true; ephemeral = false; privateNetwork = true; hostBridge = "server"; hostAddress = "${networkPrefix}.97.1"; localAddress = "${networkPrefix}.97.11/24"; bindMounts = { "/var/lib/pyload" = { hostPath = "/var/lib/pyload"; isReadOnly = false; }; "/multimedia" = { hostPath = "/var/lib/multimedia"; isReadOnly = false; }; }; config = { lib, config, pkgs, ... }: { networking = { hostName = "pyload"; useHostResolvConf = false; defaultGateway = { address = "${networkPrefix}.97.1"; interface = "eth0"; }; nameservers = [ "${networkPrefix}.97.1" ]; firewall.enable = false; }; services.pyload = { enable = true; downloadDirectory = "/multimedia/downloads"; listenAddress = "0.0.0.0"; port = 8000; }; users.users.pyload = user; users.groups.pyload = group; system.stateVersion = "24.05"; }; }; }