stockholm/lib/git.nix

48 lines
855 B
Nix

{ lib, ... }:
with lib;
let
addName = name: set:
set // { inherit name; };
addNames = mapAttrs addName;
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