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}