{config,lib,pkgs,...}:letcfg=config.services.ugit;settingsFormat=pkgs.formats.json{};name="myapp";configFile=settingsFormat.generate"${name}.json"(lib.filterAttrsRecursive(_:v:v!=null)cfg.settings);in{options.services.${name}={enable=lib.mkEnableOptionname;package=lib.mkOption{type=lib.types.package;description="The ${name} package to use.";};settings=lib.mkOption{type=lib.types.submodule{# Pass one argument per @nix(import) name used by the schema.options=import./options.nix{inheritlib;profileLink=import./profile-link.nix{inheritlib;};};};default={};description="${name} configuration, rendered to JSON and passed via --config.";};};config=lib.mkIfcfg.enable{systemd.services.${name}={wantedBy=["multi-user.target"];after=["network.target"];serviceConfig={ExecStart="${cfg.package}/bin/${name} --config ${configFile}";DynamicUser=true;StateDirectory=name;WorkingDirectory="/var/lib/${name}";};};};}