stockholm/lib/git.nix

48 lines
855 B
Nix
Raw Normal View History

{ lib, ... }:
2015-07-11 16:55:22 +02:00
2016-10-13 21:01:22 +02:00
with lib;
2015-07-11 16:55:22 +02:00
let
2016-10-13 21:01:22 +02:00
addName = name: set:
set // { inherit name; };
addNames = mapAttrs addName;
2015-07-11 16:55:22 +02:00
commands = addNames {
git-receive-pack = {};
git-upload-pack = {};
};
receive-modes = addNames {
fast-forward = {};
non-fast-forward = {};
create = {};
delete = {};
merge = {}; # TODO implement in git.nix
};
permissions = {
fetch = {
allow-commands = [
commands.git-upload-pack
];
};
push = ref: extra-modes: {
allow-commands = [
commands.git-receive-pack
commands.git-upload-pack
];
allow-receive-ref = ref;
allow-receive-modes = [ receive-modes.fast-forward ] ++ extra-modes;
};
};
refs = {
master = "refs/heads/master";
all-heads = "refs/heads/*";
};
in
commands // receive-modes // permissions // refs