summaryrefslogtreecommitdiff
path: root/shared/home-manager/git/ignore.nix
blob: 8d1da2f68ff75e5826ec9fea253a266ae9f88078 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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;
}