nixos/services.gitolite: remove with lib;

This commit is contained in:
Felix Buehler 2024-08-28 21:18:58 +02:00 committed by Jörg Thalheim
parent a19107dd8a
commit 691cc4462a

View File

@ -1,7 +1,4 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib;
let let
cfg = config.services.gitolite; cfg = config.services.gitolite;
# Use writeTextDir to not leak Nix store hash into file name # Use writeTextDir to not leak Nix store hash into file name
@ -11,8 +8,8 @@ in
{ {
options = { options = {
services.gitolite = { services.gitolite = {
enable = mkOption { enable = lib.mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable gitolite management under the Enable gitolite management under the
@ -22,8 +19,8 @@ in
''; '';
}; };
dataDir = mkOption { dataDir = lib.mkOption {
type = types.str; type = lib.types.str;
default = "/var/lib/gitolite"; default = "/var/lib/gitolite";
description = '' description = ''
The gitolite home directory used to store all repositories. If left as the default value The gitolite home directory used to store all repositories. If left as the default value
@ -33,8 +30,8 @@ in
''; '';
}; };
adminPubkey = mkOption { adminPubkey = lib.mkOption {
type = types.str; type = lib.types.str;
description = '' description = ''
Initial administrative public key for Gitolite. This should Initial administrative public key for Gitolite. This should
be an SSH Public Key. Note that this key will only be used be an SSH Public Key. Note that this key will only be used
@ -43,8 +40,8 @@ in
''; '';
}; };
enableGitAnnex = mkOption { enableGitAnnex = lib.mkOption {
type = types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enable git-annex support. Uses the `extraGitoliteRc` option Enable git-annex support. Uses the `extraGitoliteRc` option
@ -52,18 +49,18 @@ in
''; '';
}; };
commonHooks = mkOption { commonHooks = lib.mkOption {
type = types.listOf types.path; type = lib.types.listOf lib.types.path;
default = []; default = [];
description = '' description = ''
A list of custom git hooks that get copied to `~/.gitolite/hooks/common`. A list of custom git hooks that get copied to `~/.gitolite/hooks/common`.
''; '';
}; };
extraGitoliteRc = mkOption { extraGitoliteRc = lib.mkOption {
type = types.lines; type = lib.types.lines;
default = ""; default = "";
example = literalExpression '' example = lib.literalExpression ''
''' '''
$RC{UMASK} = 0027; $RC{UMASK} = 0027;
$RC{SITE_INFO} = 'This is our private repository host'; $RC{SITE_INFO} = 'This is our private repository host';
@ -93,24 +90,24 @@ in
''; '';
}; };
user = mkOption { user = lib.mkOption {
type = types.str; type = lib.types.str;
default = "gitolite"; default = "gitolite";
description = '' description = ''
Gitolite user account. This is the username of the gitolite endpoint. Gitolite user account. This is the username of the gitolite endpoint.
''; '';
}; };
description = mkOption { description = lib.mkOption {
type = types.str; type = lib.types.str;
default = "Gitolite user"; default = "Gitolite user";
description = '' description = ''
Gitolite user account's description. Gitolite user account's description.
''; '';
}; };
group = mkOption { group = lib.mkOption {
type = types.str; type = lib.types.str;
default = "gitolite"; default = "gitolite";
description = '' description = ''
Primary group of the Gitolite user account. Primary group of the Gitolite user account.
@ -119,7 +116,7 @@ in
}; };
}; };
config = mkIf cfg.enable ( config = lib.mkIf cfg.enable (
let let
manageGitoliteRc = cfg.extraGitoliteRc != ""; manageGitoliteRc = cfg.extraGitoliteRc != "";
rcDir = pkgs.runCommand "gitolite-rc" { preferLocalBuild = true; } rcDirScript; rcDir = pkgs.runCommand "gitolite-rc" { preferLocalBuild = true; } rcDirScript;
@ -136,18 +133,18 @@ in
END END
cat "$out/gitolite.rc.default" >>"$out/gitolite.rc" cat "$out/gitolite.rc.default" >>"$out/gitolite.rc"
'' + '' +
optionalString (cfg.extraGitoliteRc != "") '' lib.optionalString (cfg.extraGitoliteRc != "") ''
echo -n ${escapeShellArg '' echo -n ${lib.escapeShellArg ''
# Added by NixOS: # Added by NixOS:
${removeSuffix "\n" cfg.extraGitoliteRc} ${lib.removeSuffix "\n" cfg.extraGitoliteRc}
# per perl rules, this should be the last line in such a file: # per perl rules, this should be the last line in such a file:
1; 1;
''} >>"$out/gitolite.rc" ''} >>"$out/gitolite.rc"
''; '';
in { in {
services.gitolite.extraGitoliteRc = optionalString cfg.enableGitAnnex '' services.gitolite.extraGitoliteRc = lib.optionalString cfg.enableGitAnnex ''
# Enable git-annex support: # Enable git-annex support:
push( @{$RC{ENABLE}}, 'git-annex-shell ua'); push( @{$RC{ENABLE}}, 'git-annex-shell ua');
''; '';
@ -171,8 +168,8 @@ in
GITOLITE_RC_DEFAULT = "${rcDir}/gitolite.rc.default"; GITOLITE_RC_DEFAULT = "${rcDir}/gitolite.rc.default";
}; };
serviceConfig = mkMerge [ serviceConfig = lib.mkMerge [
(mkIf (cfg.dataDir == "/var/lib/gitolite") { (lib.mkIf (cfg.dataDir == "/var/lib/gitolite") {
StateDirectory = "gitolite gitolite/.gitolite gitolite/.gitolite/logs"; StateDirectory = "gitolite gitolite/.gitolite gitolite/.gitolite/logs";
StateDirectoryMode = "0750"; StateDirectoryMode = "0750";
}) })
@ -236,6 +233,6 @@ in
}; };
environment.systemPackages = [ pkgs.gitolite pkgs.git ] environment.systemPackages = [ pkgs.gitolite pkgs.git ]
++ optional cfg.enableGitAnnex pkgs.git-annex; ++ lib.optional cfg.enableGitAnnex pkgs.git-annex;
}); });
} }