main
 1{den, ...}: {
 2  den.aspects.dev.includes = [den.aspects.dev.git];
 3  den.aspects.dev.git = {
 4    nixos = {pkgs, ...}: {
 5      environment.systemPackages = [pkgs.git];
 6    };
 7
 8    provides.to-users = {
 9      hjem = {
10        user,
11        pkgs,
12        lib,
13        ...
14      }: {
15        packages = [
16          pkgs.git
17          pkgs.git-lfs
18
19          pkgs.delta
20        ];
21
22        files.".gitconfig".type = "delete";
23
24        xdg.config.files."git/config" = {
25          generator = lib.generators.toGitINI;
26          value = {
27            user = {
28              name = user.identity.displayName;
29              email = user.identity.email;
30            };
31
32            init.defaultBranch = "main";
33            trim.bases = "develop,master,main"; # for git-trim
34            push.autoSetupRemote = true;
35            pull.rebase = true;
36
37            filter.lfs = let
38              lfsPath =
39                lib.getExe pkgs.git-lfs;
40            in {
41              clean = "${lfsPath} clean -- %f";
42              process = lib.concatStringsSep " " [
43                lfsPath
44                "filter-process"
45              ];
46              required = true;
47              smudge = lib.concatStringsSep " " (
48                [
49                  lfsPath
50                  "smudge"
51                ]
52                ++ [
53                  "--"
54                  "%f"
55                ]
56              );
57            };
58
59            # Delta
60            delta = {
61              diff-so-fancy = true;
62              line-numbers = true;
63              true-color = "always";
64            };
65            interactive.diffFilter = "${lib.getExe pkgs.delta} --color-only";
66            pager = {
67              blame = "${lib.getExe pkgs.delta}";
68              diff = "${lib.getExe pkgs.delta}";
69              log = "${lib.getExe pkgs.delta}";
70              show = "${lib.getExe pkgs.delta}";
71            };
72          };
73        };
74      };
75    };
76  };
77}