{ config, pkgs, lib, ... }: with builtins // lib; let cfg = config.services.cook-cli; pcfg = config.programs.cook-cli; args = escapeShellArgs ([ "--port" (toString cfg.port) ] ++ cfg.extraArgs ++ [ cfg.recipeRoot ]); in { options.services.cook-cli = { enable = mkEnableOption "cook-cli webserver"; package = mkOption { type = types.package; default = pcfg.package; description = '' cook-cli package. It is recommended to set this only in programs.cook-cli ''; }; recipeRoot = mkOption { type = types.path; default = "${config.xdg.dataHome}/cookbook"; }; port = mkOption { type = types.port; defulat = 9080; }; extraArgs = mkOption { type = with types; listOf str; default = []; }; }; config = mkIf cfg.enable { systemd.user.services.cook-cli = { Unit = { Description = "A website for serving cooklang cookbooks"; After = [ "network.target" ]; }; Service = { Restart = "on-failure"; RestartSec = 10; Type = "simple"; ExecStart = "${getExe cfg.package} server ${args}"; }; Install = { WantedBy = [ "default.target" ]; }; }; }; }