summaryrefslogtreecommitdiff
path: root/home/git/ignore.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home/git/ignore.nix')
-rw-r--r--home/git/ignore.nix37
1 files changed, 37 insertions, 0 deletions
diff --git a/home/git/ignore.nix b/home/git/ignore.nix
new file mode 100644
index 0000000..8d1da2f
--- /dev/null
+++ b/home/git/ignore.nix
@@ -0,0 +1,37 @@
+# This module defines the contents of `~/.config/git/ignore`. It fetches the
+# templates for different gitignores and compiles them into one.
+{
+ pkgs,
+ lib,
+ ...
+}: let
+ gitignore = ignores:
+ pkgs.stdenv.mkDerivation {
+ name = (lib.concatStringsSep "+" ignores) + ".gitignore";
+
+ src = pkgs.fetchFromGitHub {
+ owner = "toptal";
+ repo = "gitignore";
+ rev = "7e72ecd8af69b39c25aedc645117f0dc261cedfd";
+ hash = "sha256-Ln3w6wx+pX4UFLY2gGJGax2/nxgp/Svrn0uctSIRdEc=";
+ };
+
+ inherit ignores;
+ buildPhase = ''
+ for i in $ignores; do
+ cat ./templates/$i.gitignore >>$out
+ done
+ '';
+ };
+
+ targets =
+ [
+ "Node"
+ "Deno"
+ "C"
+ ]
+ ++ (lib.optional pkgs.stdenv.isDarwin "MacOS")
+ ++ (lib.optional pkgs.stdenv.isLinux "Linux");
+in {
+ xdg.configFile."git/ignore".source = gitignore targets;
+}