diff options
author | Aaron Andersen <aaron@fosslib.net> | 2020-07-12 08:47:09 -0400 |
---|---|---|
committer | Aaron Andersen <aaron@fosslib.net> | 2020-07-12 09:19:00 -0400 |
commit | 5e32ec39cac10c8bf48de741a3d07cdee74e259f (patch) | |
tree | f95887c8332ea126b1aa10ff4b444ce9752ea948 | |
parent | fc2a4610a190e951f243215cfa50f60e4d0d275e (diff) | |
download | nixpkgs-5e32ec39cac10c8bf48de741a3d07cdee74e259f.tar nixpkgs-5e32ec39cac10c8bf48de741a3d07cdee74e259f.tar.gz nixpkgs-5e32ec39cac10c8bf48de741a3d07cdee74e259f.tar.bz2 nixpkgs-5e32ec39cac10c8bf48de741a3d07cdee74e259f.tar.lz nixpkgs-5e32ec39cac10c8bf48de741a3d07cdee74e259f.tar.xz nixpkgs-5e32ec39cac10c8bf48de741a3d07cdee74e259f.tar.zst nixpkgs-5e32ec39cac10c8bf48de741a3d07cdee74e259f.zip |
nixos/gitolite: provision data directory only before service begins
-rw-r--r-- | nixos/modules/services/misc/gitolite.nix | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/nixos/modules/services/misc/gitolite.nix b/nixos/modules/services/misc/gitolite.nix index cc69f81bbcc..59cbdac319c 100644 --- a/nixos/modules/services/misc/gitolite.nix +++ b/nixos/modules/services/misc/gitolite.nix @@ -27,7 +27,10 @@ in type = types.str; default = "/var/lib/gitolite"; description = '' - Gitolite home directory (used to store all the repositories). + The gitolite home directory used to store all repositories. If left as the default value + this directory will automatically be created before the gitolite server starts, otherwise + the sysadmin is responsible for ensuring the directory exists with appropriate ownership + and permissions. ''; }; @@ -149,14 +152,6 @@ in }; users.groups.${cfg.group}.gid = config.ids.gids.gitolite; - systemd.tmpfiles.rules = [ - "d '${cfg.dataDir}' 0750 ${cfg.user} ${cfg.group} - -" - "d '${cfg.dataDir}'/.gitolite - ${cfg.user} ${cfg.group} - -" - "d '${cfg.dataDir}'/.gitolite/logs - ${cfg.user} ${cfg.group} - -" - - "Z ${cfg.dataDir} 0750 ${cfg.user} ${cfg.group} - -" - ]; - systemd.services.gitolite-init = { description = "Gitolite initialization"; wantedBy = [ "multi-user.target" ]; @@ -167,13 +162,19 @@ in GITOLITE_RC_DEFAULT = "${rcDir}/gitolite.rc.default"; }; - serviceConfig = { - Type = "oneshot"; - User = cfg.user; - Group = cfg.group; - WorkingDirectory = "~"; - RemainAfterExit = true; - }; + serviceConfig = mkMerge [ + (mkIf (cfg.dataDir == "/var/lib/gitolite") { + StateDirectory = "gitolite gitolite/.gitolite gitolite/.gitolite/logs"; + StateDirectoryMode = "0750"; + }) + { + Type = "oneshot"; + User = cfg.user; + Group = cfg.group; + WorkingDirectory = "~"; + RemainAfterExit = true; + } + ]; path = [ pkgs.gitolite pkgs.git pkgs.perl pkgs.bash pkgs.diffutils config.programs.ssh.package ]; script = |