{ config, pkgs, lib, ... }: with lib; let # Container config name = "crafty"; # Version tagging craftyVersion = "v4.10.1"; # Storage optimization spindown = config.numbus-server.hardware.HddSpindown; optimizedDir = if spindown.enable && (spindown.optimize == "compatible" || (isList spindown.optimize && elem name spindown.optimize)) then cfg.configDir else cfg.dataDir; # Helper helper = import ../service-helper.nix { inherit config pkgs lib; }; cfg = config.numbus-server.services.crafty; in helper.mkPodmanService { inherit name; description = "Crafty controller, one place to manage your minecraft servers"; defaultPort = "8443"; scheme = "https"; dataDirEnabled = optimizedDir == cfg.dataDir; middlewares = [ "secureHeaders" ]; dirPermissions = [ "100999:100 ${cfg.configDir}" "100999:100 ${cfg.configDir}/log" "100999:100 ${cfg.configDir}/config" "100999:100 ${optimizedDir}/import" "100999:100 ${optimizedDir}/backups" "100999:100 ${optimizedDir}/servers" ]; composeText = '' services: crafty: image: registry.gitlab.com/crafty-controller/crafty-4:${craftyVersion} container_name: crafty user: '1000:1000' networks: crafty: ipv4_address: 10.89.250.253 ports: - "${cfg.port}:8443/tcp" - "19132:19132/udp" - "25500-25600:25500-25600" volumes: - ${optimizedDir}/backups:/crafty/backups - ${optimizedDir}/servers:/crafty/servers - ${optimizedDir}/import:/crafty/import - ${cfg.configDir}/logs:/crafty/logs - ${cfg.configDir}/config:/crafty/app/config environment: - TZ=${time.timeZone} security_opt: - no-new-privileges:true cap_drop: - NET_RAW restart: unless-stopped networks: crafty: driver: bridge name: crafty ipam: config: - subnet: "10.89.250.0/24" gateway: "10.89.250.254" ''; }