{ config, lib, pkgs, ... }: let cfg = config.services.openrefine; settingsFormat = pkgs.formats.ini { }; in { options.services.openrefine = { enable = lib.mkEnableOption "OpenRefine server"; package = lib.mkPackageOption pkgs "openrefine" { }; settings = lib.mkOption { type = settingsFormat.type; default = { }; example = lib.literalExpression '' ''; }; extraFlags = lib.mkOption { type = with lib.types; listOf str; default = [ ]; example = lib.literalExpression '' [ "--port" "29345" ] ''; }; }; config = lib.mkIf cfg.enable { systemd.user.services.openrefine = { Unit = { Description = "OpenRefine server"; Documentation = [ "https://openrefine.org/docs" ]; After = [ "network-online.target" "default.target" ]; }; Service = { ExecStart = '' ${lib.getExe' cfg.package "refine"} ${lib.concatStringsSep " " cfg.extraFlags} ''; Restart = "on-failure"; }; }; }; }