diff options
| author | tv <tv@shackspace.de> | 2015-06-14 19:15:56 +0200 | 
|---|---|---|
| committer | tv <tv@shackspace.de> | 2015-06-14 19:15:56 +0200 | 
| commit | 8ee650ed25eb7b3f879b97b66d38a57bc6439ed7 (patch) | |
| tree | 7bb93a9238a4d7ccd55ffa64680c8dcffbddf1d0 /lib | |
| parent | dba033ed10838c9ff8c1720d41f8845c5199927e (diff) | |
modules/tv/git: initial commit (incl. lib.git)
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/default.nix | 14 | ||||
| -rw-r--r-- | lib/git.nix | 41 | 
2 files changed, 53 insertions, 2 deletions
| diff --git a/lib/default.nix b/lib/default.nix index 26653d96d..27cf0e250 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -3,10 +3,20 @@  with builtins;  let -  inherit (lib) stringAsChars; +  inherit (lib) mapAttrs stringAsChars;  in -{ +rec { +  git = import ./git.nix { +    lib = lib // { +      inherit addNames; +    }; +  }; + +  addName = name: set: +    set // { inherit name; }; + +  addNames = mapAttrs addName;    # "7.4.335" -> "74" diff --git a/lib/git.nix b/lib/git.nix new file mode 100644 index 000000000..5916cf83c --- /dev/null +++ b/lib/git.nix @@ -0,0 +1,41 @@ +{ lib, ... }: + +let +  inherit (lib) addNames; + +  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 | 
