{ pkgs, lib, config, ... }: let cfg = config.services.glados; ownerArgs = list: toString (map (id: "--owner ${id}") list); enableDataCollector = if cfg.dataCollector.enable then "--enable-data-collector" else ""; in { options.services.glados = { enable = lib.mkEnableOption "GLaDOS systemd service"; dataCollector.enable = lib.mkEnableOption "Enable Minecraft -> InfluxDB data collector"; envFile = lib.mkOption { type = lib.types.str; description = "Path to the environment configuration"; example = "/run/secrets/my-env"; }; }; config = lib.mkIf cfg.enable { systemd.services.glados = { wantedBy = [ "default.target" ]; requires = [ "network-online.target" ]; after = [ "network-online.target" ]; serviceConfig = { ExecStart = "${pkgs.glados}/bin/glados --state $STATE_DIRECTORY/state.yml ${enableDataCollector}"; EnvironmentFile = "${cfg.envFile}"; Environment = "RUST_LOG=warn"; StateDirectory = "glados"; Restart = "always"; }; }; }; }