diff options
| author | Gregor Kleen <gkleen@yggdrasil.li> | 2025-11-13 22:45:18 +0100 |
|---|---|---|
| committer | Gregor Kleen <gkleen@yggdrasil.li> | 2025-11-13 22:45:18 +0100 |
| commit | f8a9228baa4f68c7639ef703e15f97bf146c53ee (patch) | |
| tree | 6efca90bf896a6747f64b97ed2b9055f2d910508 /users | |
| parent | f92d022f5c03f719492fa4901d21190c3a576187 (diff) | |
| download | nixos-f8a9228baa4f68c7639ef703e15f97bf146c53ee.tar nixos-f8a9228baa4f68c7639ef703e15f97bf146c53ee.tar.gz nixos-f8a9228baa4f68c7639ef703e15f97bf146c53ee.tar.bz2 nixos-f8a9228baa4f68c7639ef703e15f97bf146c53ee.tar.xz nixos-f8a9228baa4f68c7639ef703e15f97bf146c53ee.zip | |
...
Diffstat (limited to 'users')
| -rw-r--r-- | users/gkleen/default.nix | 135 | ||||
| -rw-r--r-- | users/root.nix | 110 |
2 files changed, 155 insertions, 90 deletions
diff --git a/users/gkleen/default.nix b/users/gkleen/default.nix index 5ce93de7..84446582 100644 --- a/users/gkleen/default.nix +++ b/users/gkleen/default.nix | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | { flake, userName, pkgs, customUtils, lib, ... }: | 1 | { flake, home-manager, userName, pkgs, customUtils, lib, ... }: |
| 2 | { | 2 | let |
| 3 | homeManagerRelease = lib.importJSON (home-manager + /release.json); | ||
| 4 | in { | ||
| 3 | imports = with flake.nixosModules.userProfiles.${userName}; [ | 5 | imports = with flake.nixosModules.userProfiles.${userName}; [ |
| 4 | utils direnv | 6 | utils direnv |
| 5 | ]; | 7 | ]; |
| @@ -15,69 +17,84 @@ | |||
| 15 | hashedPassword = "$6$rounds=500000$dOMgCU7DAk$yQFYGOURTEt12387LIYBnFKSWmtwXMUk1LJWnV0m7OFt.y2TnxQn2abdGA5dhwG9EmMB5wZGXf4J5F71c746C/"; | 17 | hashedPassword = "$6$rounds=500000$dOMgCU7DAk$yQFYGOURTEt12387LIYBnFKSWmtwXMUk1LJWnV0m7OFt.y2TnxQn2abdGA5dhwG9EmMB5wZGXf4J5F71c746C/"; |
| 16 | }; | 18 | }; |
| 17 | 19 | ||
| 18 | home-manager.users.${userName} = { | 20 | home-manager.users.${userName} = { config, ... }: lib.foldr lib.recursiveUpdate {} ([ |
| 19 | home.keyboard = { | 21 | { |
| 20 | layout = "us"; | 22 | home.keyboard = { |
| 21 | variant = "dvp"; | 23 | layout = "us"; |
| 22 | options = [ "ctl:nocaps" "compose:caps" ]; | 24 | variant = "dvp"; |
| 23 | }; | 25 | options = [ "ctl:nocaps" "compose:caps" ]; |
| 26 | }; | ||
| 27 | |||
| 28 | programs = { | ||
| 29 | git.enable = true; | ||
| 24 | 30 | ||
| 31 | ssh.enable = true; | ||
| 32 | |||
| 33 | gpg.enable = true; | ||
| 34 | }; | ||
| 35 | } | ||
| 36 | ] ++ (lib.optional (lib.versionAtLeast homeManagerRelease.release "25.11") { | ||
| 25 | programs = { | 37 | programs = { |
| 26 | git = { | 38 | git.settings = { |
| 27 | enable = true; | 39 | user = { |
| 28 | userEmail = "gkleen@yggdrasil.li"; | 40 | email = "gkleen@yggdrasil.li"; |
| 29 | userName = "Gregor Kleen"; | 41 | name = "Gregor Kleen"; |
| 30 | delta.enable = true; | 42 | }; |
| 31 | extraConfig = { | 43 | core.excludesfile = toString ./gitignore; |
| 32 | core.excludesfile = toString ./gitignore; | 44 | pull.rebase = true; |
| 33 | pull.rebase = true; | 45 | submodule.recurse = true; |
| 34 | submodule.recurse = true; | 46 | init.defaultBranch = "main"; |
| 35 | init.defaultBranch = "main"; | 47 | column.ui = "auto"; |
| 36 | column.ui = "auto"; | 48 | branch.sort = "-committerdate"; |
| 37 | branch.sort = "-committerdate"; | 49 | tag.sort = "version:refname"; |
| 38 | tag.sort = "version:refname"; | 50 | diff = { |
| 39 | diff = { | 51 | algorithm = "histogram"; |
| 40 | algorithm = "histogram"; | 52 | colorMoved = "plain"; |
| 41 | colorMoved = "plain"; | 53 | mnemonicPrefix = true; |
| 42 | mnemonicPrefix = true; | 54 | renames = true; |
| 43 | renames = true; | 55 | }; |
| 44 | }; | 56 | push = { |
| 45 | push = { | 57 | default = "simple"; |
| 46 | default = "simple"; | 58 | autoSetupRemote = true; |
| 47 | autoSetupRemote = true; | 59 | followTags = true; |
| 48 | followTags = true; | 60 | }; |
| 49 | }; | 61 | fetch = { |
| 50 | fetch = { | 62 | prune = true; |
| 51 | prune = true; | 63 | pruneTags = true; |
| 52 | pruneTags = true; | 64 | all = true; |
| 53 | all = true; | ||
| 54 | }; | ||
| 55 | rerere = { | ||
| 56 | enabled = true; | ||
| 57 | autoupdate = true; | ||
| 58 | }; | ||
| 59 | rebase = { | ||
| 60 | autoSquash = true; | ||
| 61 | autoStash = true; | ||
| 62 | updateRefs = true; | ||
| 63 | }; | ||
| 64 | merge.conflictstyle = "zdiff3"; | ||
| 65 | }; | 65 | }; |
| 66 | rerere = { | ||
| 67 | enabled = true; | ||
| 68 | autoupdate = true; | ||
| 69 | }; | ||
| 70 | rebase = { | ||
| 71 | autoSquash = true; | ||
| 72 | autoStash = true; | ||
| 73 | updateRefs = true; | ||
| 74 | }; | ||
| 75 | merge.conflictstyle = "zdiff3"; | ||
| 66 | }; | 76 | }; |
| 67 | 77 | delta = { | |
| 68 | ssh = { | ||
| 69 | enable = true; | 78 | enable = true; |
| 70 | controlMaster = "auto"; | 79 | enableGitIntegration = true; |
| 71 | controlPersist = "30m"; | ||
| 72 | serverAliveInterval = 6; | ||
| 73 | serverAliveCountMax = 10; | ||
| 74 | hashKnownHosts = true; | ||
| 75 | extraConfig = '' | ||
| 76 | IdentitiesOnly true | ||
| 77 | ''; | ||
| 78 | }; | 80 | }; |
| 81 | ssh = { | ||
| 82 | enableDefaultConfig = false; | ||
| 83 | matchBlocks."*" = { | ||
| 84 | forwardAgent = false; | ||
| 85 | addKeysToAgent = "no"; | ||
| 86 | compression = false; | ||
| 87 | userKnownHostsFile = "~/.ssh/known_hosts"; | ||
| 88 | controlPath = "~/.ssh/master-%r@%n:%p"; | ||
| 79 | 89 | ||
| 80 | gpg.enable = true; | 90 | controlMaster = "auto"; |
| 91 | controlPersist = "30m"; | ||
| 92 | serverAliveInterval = 6; | ||
| 93 | serverAliveCountMax = 10; | ||
| 94 | hashKnownHosts = true; | ||
| 95 | identitiesOnly = true; | ||
| 96 | }; | ||
| 97 | }; | ||
| 81 | }; | 98 | }; |
| 82 | }; | 99 | })); |
| 83 | } | 100 | } |
diff --git a/users/root.nix b/users/root.nix index ed1acd50..7fa99452 100644 --- a/users/root.nix +++ b/users/root.nix | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | { flake, lib, config, hostName, userName, pkgs, ... }: | 1 | { flake, home-manager, lib, config, hostName, userName, pkgs, ... }: |
| 2 | let | 2 | let |
| 3 | haveGKleen = flake.nixosModules.accounts ? "gkleen@${hostName}"; | 3 | haveGKleen = flake.nixosModules.accounts ? "gkleen@${hostName}"; |
| 4 | homeManagerRelease = lib.importJSON (home-manager + /release.json); | ||
| 4 | in { | 5 | in { |
| 5 | imports = with flake.nixosModules.userProfiles.${userName}; [ | 6 | imports = with flake.nixosModules.userProfiles.${userName}; [ |
| 6 | direnv utils | 7 | direnv utils |
| @@ -11,42 +12,89 @@ in { | |||
| 11 | openssh.authorizedKeys.keyFiles = config.users.users."gkleen".openssh.authorizedKeys.keyFiles; | 12 | openssh.authorizedKeys.keyFiles = config.users.users."gkleen".openssh.authorizedKeys.keyFiles; |
| 12 | }; | 13 | }; |
| 13 | 14 | ||
| 14 | home-manager.users.${userName} = { | 15 | home-manager.users.${userName} = { config, ... }: lib.foldr lib.recursiveUpdate {} ([ |
| 16 | { | ||
| 17 | programs = { | ||
| 18 | git.enable = true; | ||
| 19 | |||
| 20 | ssh.enable = true; | ||
| 21 | |||
| 22 | gpg.enable = true; | ||
| 23 | }; | ||
| 24 | |||
| 25 | services = { | ||
| 26 | gpg-agent = { | ||
| 27 | enable = true; | ||
| 28 | enableSshSupport = true; | ||
| 29 | extraConfig = '' | ||
| 30 | pinentry-program ${pkgs.pinentry-curses}/bin/pinentry | ||
| 31 | grab | ||
| 32 | ''; | ||
| 33 | }; | ||
| 34 | }; | ||
| 35 | } | ||
| 36 | ] ++ (lib.optional (lib.versionAtLeast homeManagerRelease.release "25.11") { | ||
| 15 | programs = { | 37 | programs = { |
| 16 | git = { | 38 | git.settings = { |
| 17 | enable = true; | 39 | user = { |
| 18 | userEmail = "gkleen@yggdrasil.li"; | 40 | email = "gkleen@yggdrasil.li"; |
| 19 | userName = "Gregor Kleen"; | 41 | name = "Gregor Kleen"; |
| 20 | delta.enable = true; | 42 | }; |
| 21 | extraConfig = { | 43 | core.excludesfile = toString ./gitignore; |
| 22 | pull.rebase = false; | 44 | pull.rebase = true; |
| 45 | submodule.recurse = true; | ||
| 46 | init.defaultBranch = "main"; | ||
| 47 | column.ui = "auto"; | ||
| 48 | branch.sort = "-committerdate"; | ||
| 49 | tag.sort = "version:refname"; | ||
| 50 | diff = { | ||
| 51 | algorithm = "histogram"; | ||
| 52 | colorMoved = "plain"; | ||
| 53 | mnemonicPrefix = true; | ||
| 54 | renames = true; | ||
| 55 | }; | ||
| 56 | push = { | ||
| 57 | default = "simple"; | ||
| 58 | autoSetupRemote = true; | ||
| 59 | followTags = true; | ||
| 60 | }; | ||
| 61 | fetch = { | ||
| 62 | prune = true; | ||
| 63 | pruneTags = true; | ||
| 64 | all = true; | ||
| 23 | }; | 65 | }; |
| 66 | rerere = { | ||
| 67 | enabled = true; | ||
| 68 | autoupdate = true; | ||
| 69 | }; | ||
| 70 | rebase = { | ||
| 71 | autoSquash = true; | ||
| 72 | autoStash = true; | ||
| 73 | updateRefs = true; | ||
| 74 | }; | ||
| 75 | merge.conflictstyle = "zdiff3"; | ||
| 24 | }; | 76 | }; |
| 25 | 77 | delta = { | |
| 26 | ssh = { | ||
| 27 | enable = true; | 78 | enable = true; |
| 28 | controlMaster = "auto"; | 79 | enableGitIntegration = true; |
| 29 | controlPersist = "30m"; | ||
| 30 | serverAliveInterval = 6; | ||
| 31 | serverAliveCountMax = 10; | ||
| 32 | hashKnownHosts = true; | ||
| 33 | extraConfig = '' | ||
| 34 | IdentitiesOnly true | ||
| 35 | ''; | ||
| 36 | }; | 80 | }; |
| 81 | ssh = { | ||
| 82 | enableDefaultConfig = false; | ||
| 83 | matchBlocks."*" = { | ||
| 84 | forwardAgent = false; | ||
| 85 | addKeysToAgent = "no"; | ||
| 86 | compression = false; | ||
| 87 | userKnownHostsFile = "~/.ssh/known_hosts"; | ||
| 88 | controlPath = "~/.ssh/master-%r@%n:%p"; | ||
| 37 | 89 | ||
| 38 | gpg.enable = true; | 90 | controlMaster = "auto"; |
| 39 | }; | 91 | controlPersist = "30m"; |
| 40 | 92 | serverAliveInterval = 6; | |
| 41 | services = { | 93 | serverAliveCountMax = 10; |
| 42 | gpg-agent = { | 94 | hashKnownHosts = true; |
| 43 | enable = true; | 95 | identitiesOnly = true; |
| 44 | enableSshSupport = true; | 96 | }; |
| 45 | extraConfig = '' | ||
| 46 | pinentry-program ${pkgs.pinentry-curses}/bin/pinentry | ||
| 47 | grab | ||
| 48 | ''; | ||
| 49 | }; | 97 | }; |
| 50 | }; | 98 | }; |
| 51 | }; | 99 | })); |
| 52 | } | 100 | } |
