diff options
author | Alyssa Ross <hi@alyssa.is> | 2022-10-21 22:05:59 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2022-10-21 22:05:59 +0000 |
commit | b0189ffa7f7313ba7962df1798b1a40d046937ae (patch) | |
tree | 91cadfe8b122540737c4b4dd693d28e7a7628be0 /overlays/personal | |
parent | f01ed9d20d4f669cd1bd598405201fced8689ea9 (diff) | |
download | nixlib-b0189ffa7f7313ba7962df1798b1a40d046937ae.tar nixlib-b0189ffa7f7313ba7962df1798b1a40d046937ae.tar.gz nixlib-b0189ffa7f7313ba7962df1798b1a40d046937ae.tar.bz2 nixlib-b0189ffa7f7313ba7962df1798b1a40d046937ae.tar.lz nixlib-b0189ffa7f7313ba7962df1798b1a40d046937ae.tar.xz nixlib-b0189ffa7f7313ba7962df1798b1a40d046937ae.tar.zst nixlib-b0189ffa7f7313ba7962df1798b1a40d046937ae.zip |
declarative-git-repository: init
Diffstat (limited to 'overlays/personal')
-rw-r--r-- | overlays/personal/declarative-git-repository/default.nix | 55 | ||||
-rw-r--r-- | overlays/personal/default.nix | 3 |
2 files changed, 58 insertions, 0 deletions
diff --git a/overlays/personal/declarative-git-repository/default.nix b/overlays/personal/declarative-git-repository/default.nix new file mode 100644 index 000000000000..e1b2693dff4f --- /dev/null +++ b/overlays/personal/declarative-git-repository/default.nix @@ -0,0 +1,55 @@ +# SPDX-FileCopyrightText: V <v@unfathomable.blue> +# SPDX-FileCopyrightText: 2022 Alyssa Ross <hi@alyssa.is> +# SPDX-License-Identifier: OSL-3.0 + +# Adapted from https://src.unfathomable.blue/nixos-config/tree/pkgs/declarative-git-repository/default.nix + +{ lib, buildEnv, runtimeShell, writeTextDir, writeText, writeTextFile +, writeScript +}: + +{ path +, branch ? "main" +, description +, config ? {} +, hooks ? {} +, owner ? "-", group ? "-" +}: + +with lib; + +let + # As generated by an initial `git init --bare` + defaultConfig = { + core = { + repositoryformatversion = 0; + filemode = true; + bare = true; + }; + }; + + hooksDir = buildEnv { + name = "git-repository-hooks"; + paths = mapAttrsToList (hook: scripts: writeTextFile { + name = hook; + text = '' + #!${runtimeShell} + '' + concatMapStrings (script: '' + ${script} "$@" + '') scripts; + destination = "/${hook}"; + executable = true; + }) hooks; + }; +in writeTextDir "lib/tmpfiles.d/git-repository${replaceStrings [ "/" ] [ "-" ] path}.conf" '' + d ${path} 2775 ${owner} ${group} + + f+ ${path}/HEAD - root root - ref: refs/heads/${branch} + d ${path}/refs 2775 ${owner} ${group} + d ${path}/objects 2775 ${owner} ${group} + d ${path}/objects/pack 2775 ${owner} ${group} + + L+ ${path}/config - - - - ${writeText "git-repository-config" (generators.toGitINI (recursiveUpdate defaultConfig config))} + L+ ${path}/description - - - - ${builtins.toFile "git-repository-description" description} + L+ ${path}/hooks - - - - ${hooksDir} +'' diff --git a/overlays/personal/default.nix b/overlays/personal/default.nix index 9cb1371925aa..5739c5a7d7ba 100644 --- a/overlays/personal/default.nix +++ b/overlays/personal/default.nix @@ -1,5 +1,8 @@ self: super: { choose = self.callPackage ./choose { }; + declarative-git-repository = + self.callPackage ./declarative-git-repository { }; + pr-tracker = self.callPackage ./pr-tracker { }; } |