Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
2.5 kB · 97 lines
Nix
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798{ lib, pkgs, config, ...}:let inherit (lib) maintainers mapAttrs' mkEnableOption mkOption nameValuePair optionalString types ; mkSystemdService = name: cfg: nameValuePair "gitwatch-${name}" ( let getvar = flag: var: optionalString (cfg."${var}" != null) "${flag} ${cfg."${var}"}"; branch = getvar "-b" "branch"; remote = getvar "-r" "remote"; in rec { inherit (cfg) enable; after = [ "network-online.target" ]; wants = after; wantedBy = [ "multi-user.target" ]; description = "gitwatch for ${name}"; path = with pkgs; [ gitwatch git openssh ]; script = '' if [ -n "${cfg.remote}" ] && ! [ -d "${cfg.path}" ]; then git clone ${branch} "${cfg.remote}" "${cfg.path}" fi gitwatch ${remote} ${branch} ${cfg.path} ''; serviceConfig.User = cfg.user; } );in{ options.services.gitwatch = mkOption { description = '' A set of git repositories to watch for. See [gitwatch](https://github.com/gitwatch/gitwatch) for more. ''; default = { }; example = { my-repo = { enable = true; user = "user"; path = "/home/user/watched-project"; remote = "git@github.com:me/my-project.git"; }; disabled-repo = { enable = false; user = "user"; path = "/home/user/disabled-project"; remote = "git@github.com:me/my-old-project.git"; branch = "autobranch"; }; }; type = with types; attrsOf (submodule { options = { enable = mkEnableOption "watching for repo"; path = mkOption { description = "The path to repo in local machine"; type = str; }; user = mkOption { description = "The name of services's user"; type = str; default = "root"; }; remote = mkOption { description = "Optional url of remote repository"; type = nullOr str; default = null; }; branch = mkOption { description = "Optional branch in remote repository"; type = nullOr str; default = null; }; }; }); }; config.systemd.services = mapAttrs' mkSystemdService config.services.gitwatch; meta.maintainers = with maintainers; [ shved ];}