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.difftastic
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 = lib.getExe pkgs.git-lfs;
39            in {
40              required = true;
41              clean = "${lfsPath} clean -- %f";
42              process = "${lfsPath} filter-process";
43              smudge = "${lfsPath} smudge -- %f";
44            };
45
46            diff.external = "${lib.getExe pkgs.difftastic}";
47          };
48        };
49      };
50    };
51  };
52}