diff --git a/modules/nixos/netbootxyz/default.nix b/modules/nixos/netbootxyz/default.nix index ad11b82..76d297b 100644 --- a/modules/nixos/netbootxyz/default.nix +++ b/modules/nixos/netbootxyz/default.nix @@ -15,43 +15,31 @@ in # Open firewall for netbootxyz if enabled networking.firewall = mkIf cfg.openFirewall { allowedTCPPorts = [ - cfg.httpPort - cfg.httpsPort + cfg.webPort + cfg.assetPort + cfg.tftpPort ]; allowedUDPPorts = [ - cfg.httpPort - cfg.httpsPort + cfg.webPort + cfg.assetPort + cfg.tftpPort ]; }; - # Create data directory - systemd.tmpfiles.rules = [ - "d ${cfg.dataDir} 0755 root root -" - ]; - - # Configure netbootxyz as a container service virtualisation.oci-containers = { - backend = "podman"; containers.netbootxyz = { + autoStart = true; image = "ghcr.io/netbootxyz/netbootxyz:latest"; ports = [ - "${toString cfg.httpPort}:3000" - "${toString cfg.httpsPort}:3001" + "${toString cfg.webPort}:3000" + "${toString cfg.assetPort}:80" + "${toString cfg.tftpPort}:69" ]; volumes = [ - "${cfg.dataDir}:/app/src/config" - ]; - environment = { - MENU_VERSION = "2.0.76"; - PORT_RANGE = "30000:30010"; - }; - extraOptions = [ - "--restart=unless-stopped" + "${cfg.dataDir}:/config" + "${cfg.assetDir}:/assets" ]; }; }; - - # Enable podman for oci-containers - virtualisation.podman.enable = true; }; } diff --git a/modules/nixos/netbootxyz/options.nix b/modules/nixos/netbootxyz/options.nix index 38fba54..c648eb4 100644 --- a/modules/nixos/netbootxyz/options.nix +++ b/modules/nixos/netbootxyz/options.nix @@ -4,15 +4,21 @@ with lib; options.${namespace}.services.netbootxyz = { enable = mkEnableOption "netbootxyz network boot service"; - httpPort = mkOption { + webPort = mkOption { type = types.port; default = 4000; description = "HTTP port for netbootxyz"; }; - httpsPort = mkOption { + assetPort = mkOption { type = types.port; - default = 4080; + default = 4001; + description = "NGINX server for hosting assets."; + }; + + tftpPort = mkOption { + type = types.port; + default = 69; description = "HTTPS port for netbootxyz"; }; @@ -24,8 +30,14 @@ with lib; dataDir = mkOption { type = types.str; - default = "/var/lib/netbootxyz"; + default = "/media/nas/main/nix-app-data/netbootxyz"; description = "Data directory for netbootxyz"; }; + + assetDir = mkOption { + type = types.str; + default = "/media/nas/main/isos"; + description = "Asset directory for netbootxyz"; + }; }; }