blob: e8054b256234744ee280dec306d5eb530b1c5c8a (
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
{ flake, home-manager, lib, config, hostName, userName, pkgs, ... }:
let
haveGKleen = flake.nixosModules.accounts ? "gkleen@${hostName}";
homeManagerRelease = lib.importJSON (home-manager + /release.json);
in {
imports = with flake.nixosModules.userProfiles.${userName}; [
direnv utils
];
users.users.${userName} = lib.mkIf haveGKleen {
inherit (config.users.users."gkleen") hashedPassword shell;
openssh.authorizedKeys.keyFiles = config.users.users."gkleen".openssh.authorizedKeys.keyFiles;
};
home-manager.users.${userName} = { config, ... }: lib.foldr lib.recursiveUpdate {} ([
{
programs = {
git.enable = true;
ssh.enable = true;
gpg.enable = true;
};
services = {
gpg-agent = {
enable = true;
enableSshSupport = true;
extraConfig = ''
pinentry-program ${pkgs.pinentry-curses}/bin/pinentry
grab
'';
};
};
}
] ++ (lib.optional (lib.versionAtLeast homeManagerRelease.release "25.11") {
programs = {
git.settings = {
user = {
email = "gkleen@yggdrasil.li";
name = "Gregor Kleen";
};
core.excludesfile = toString ./gitignore;
pull.rebase = true;
submodule.recurse = true;
init.defaultBranch = "main";
column.ui = "auto";
branch.sort = "-committerdate";
tag.sort = "version:refname";
diff = {
algorithm = "histogram";
colorMoved = "plain";
mnemonicPrefix = true;
renames = true;
};
push = {
default = "simple";
autoSetupRemote = true;
followTags = true;
};
fetch = {
prune = true;
pruneTags = true;
all = true;
};
rerere = {
enabled = true;
autoupdate = true;
};
rebase = {
autoSquash = true;
autoStash = true;
updateRefs = true;
};
merge.conflictstyle = "zdiff3";
};
delta = {
enable = true;
enableGitIntegration = true;
};
ssh = {
enableDefaultConfig = false;
matchBlocks."*" = {
forwardAgent = false;
addKeysToAgent = "no";
compression = false;
userKnownHostsFile = "~/.ssh/known_hosts";
# controlMaster = "auto";
# controlPersist = "30m";
# controlPath = "~/.ssh/master-%r@%n:%p";
serverAliveInterval = 6;
serverAliveCountMax = 10;
hashKnownHosts = true;
identitiesOnly = true;
};
};
};
}));
}
|