{config,lib,pkgs,...}:letcfg=config.services.oidc-playground;pkg=pkgs.callPackage./pkg.nix{inheritpkgs;};in{options.services.oidc-playground={enable=lib.mkEnableOption"OIDC Playground";package=lib.mkOption{type=lib.types.package;default=pkg;description="OIDC Playground package";};user=lib.mkOption{type=lib.types.str;default="oidc-playground";description="User to run as";};group=lib.mkOption{type=lib.types.str;default="oidc-playground";description="Group to run as";};port=lib.mkOption{type=lib.types.port;default=6432;description="Port to serve on";};origin=lib.mkOption{type=lib.types.str;default="http://localhost:6432";description="Web origin";};issuer=lib.mkOption{type=lib.types.nullOrlib.types.str;default=null;example="https://auth.example.com";description="Default issuer URL";};scopes=lib.mkOption{type=lib.types.str;default="profile email";description="Default OIDC scopes";};};config=lib.mkIfcfg.enable{systemd.services.oidc-playground={description="OIDC Playground Service";after=["network.target"];wantedBy=["multi-user.target"];serviceConfig={ExecStart=letargs=["--port=${builtins.toStringcfg.port}""--origin=${cfg.origin}""--scopes=${lib.escapeShellArgcfg.scopes}"]++lib.optionals(cfg.issuer!=null)["--client-provider=${cfg.issuer}"];in"${lib.getExecfg.package}${lib.concatStringsSep" "args}";Restart="always";User=cfg.user;Group=cfg.group;};};users={users.${cfg.user}={isSystemUser=true;group=cfg.group;};groups.${cfg.group}={};};};}