{pkgs, lib, config, system, ...}: let inherit (builtins.extraBuiltins) pass; inherit (lib) types; inherit (config.services) gitolite; userPass = name: pass ("${config.networking.domain}/${config.networking.hostName}/"+name); gitolite-admin = "julm"; in { config = { environment.systemPackages = [ pkgs.gitolite ]; # NOTE: make confortable to call gitolite from a shell services = { gitolite = { enable = true; user = "git"; group = gitolite.user; adminPubkey = pass "${config.networking.domain}/ssh/${gitolite-admin}"; extraGitoliteRc = '' $RC{UMASK} = '0027'; $RC{LOG_DEST} = 'repo-log,syslog'; $RC{LOG_FACILITY} = 'local0'; $RC{GIT_CONFIG_KEYS} = 'hooks.* gitweb.*'; $RC{LOCAL_CODE} = "$rc{GL_ADMIN_BASE}/local" if -d "$rc{GL_ADMIN_BASE}/local"; push(@{$RC{ENABLE}}, ( 'Alias' #, 'cgit' , 'D' , 'Shell ${gitolite-admin}' , 'create' , 'expand-deny-messages' , 'fork' , 'keysubdirs-as-groups' , 'readme' , 'repo-specific-hooks' , 'ssh-authkeys-split' )); ''; }; }; }; }