From a709427248732f4d8477409467e3c5c1542b50ef Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Sat, 18 Oct 2025 10:44:26 -0500 Subject: [PATCH] git: aliases / user options -> settings Signed-off-by: Austin Horstman --- modules/programs/git.nix | 82 +++++++++++-------- tests/modules/programs/git/git-with-email.nix | 8 +- tests/modules/programs/git/git-with-lfs.nix | 8 +- tests/modules/programs/git/git-with-msmtp.nix | 8 +- .../git/git-with-signing-key-id-legacy.nix | 8 +- .../programs/git/git-with-signing-key-id.nix | 8 +- .../git/git-without-signing-key-id.nix | 8 +- .../programs/git/git-without-signing.nix | 8 +- tests/modules/programs/git/git.nix | 19 +++-- 9 files changed, 98 insertions(+), 59 deletions(-) diff --git a/modules/programs/git.nix b/modules/programs/git.nix index e9c9c7bfd..3d7bc0d21 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -48,27 +48,6 @@ in ''; }; - userName = mkOption { - type = types.nullOr types.str; - default = null; - description = "Default user name to use."; - }; - - userEmail = mkOption { - type = types.nullOr types.str; - default = null; - description = "Default user email to use."; - }; - - aliases = mkOption { - type = types.attrsOf types.str; - default = { }; - example = { - co = "checkout"; - }; - description = "Git aliases to define."; - }; - signing = { key = mkOption { type = types.nullOr types.str; @@ -296,17 +275,55 @@ in }; }; - imports = [ - (lib.mkRenamedOptionModule - [ "programs" "git" "signing" "gpgPath" ] - [ + imports = + let + oldPrefix = [ "programs" "git" - "signing" - "signer" + ]; + newPrefix = [ + "programs" + "git" + "settings" + ]; + in + [ + (lib.mkRenamedOptionModule + [ "programs" "git" "signing" "gpgPath" ] + [ + "programs" + "git" + "signing" + "signer" + ] + ) + (lib.mkRenamedOptionModule [ "programs" "git" "extraConfig" ] [ "programs" "git" "settings" ]) + ] + ++ (lib.hm.deprecations.mkSettingsRenamedOptionModules oldPrefix newPrefix + { + transform = x: x; + } + [ + { + old = [ "userName" ]; + new = [ + "user" + "name" + ]; + } + { + old = [ "userEmail" ]; + new = [ + "user" + "email" + ]; + } + { + old = [ "aliases" ]; + new = [ "alias" ]; + } ] - ) - ]; + ); config = mkIf cfg.enable ( lib.mkMerge [ @@ -331,11 +348,6 @@ in } ]; - programs.git.iniContent.user = { - name = mkIf (cfg.userName != null) cfg.userName; - email = mkIf (cfg.userEmail != null) cfg.userEmail; - }; - xdg.configFile = { "git/config".text = lib.generators.toGitINI cfg.iniContent; @@ -438,8 +450,6 @@ in }; }) - (mkIf (cfg.aliases != { }) { programs.git.iniContent.alias = cfg.aliases; }) - (mkIf (cfg.settings != { }) { programs.git.iniContent = cfg.settings; }) diff --git a/tests/modules/programs/git/git-with-email.nix b/tests/modules/programs/git/git-with-email.nix index 3d902cfa4..f1ac9b613 100644 --- a/tests/modules/programs/git/git-with-email.nix +++ b/tests/modules/programs/git/git-with-email.nix @@ -7,8 +7,12 @@ programs.git = { enable = true; - userEmail = "hm@example.com"; - userName = "H. M. Test"; + settings = { + user = { + email = "hm@example.com"; + name = "H. M. Test"; + }; + }; }; home.stateVersion = "20.09"; diff --git a/tests/modules/programs/git/git-with-lfs.nix b/tests/modules/programs/git/git-with-lfs.nix index 3e60fc6d8..b515a4cd0 100644 --- a/tests/modules/programs/git/git-with-lfs.nix +++ b/tests/modules/programs/git/git-with-lfs.nix @@ -1,8 +1,12 @@ { programs.git = { enable = true; - userName = "John Doe"; - userEmail = "user@example.org"; + settings = { + user = { + name = "John Doe"; + email = "user@example.org"; + }; + }; lfs = { enable = true; diff --git a/tests/modules/programs/git/git-with-msmtp.nix b/tests/modules/programs/git/git-with-msmtp.nix index eec269c76..b3a092363 100644 --- a/tests/modules/programs/git/git-with-msmtp.nix +++ b/tests/modules/programs/git/git-with-msmtp.nix @@ -8,8 +8,12 @@ programs.git = { enable = true; signing.signer = "path-to-gpg"; - userEmail = "hm@example.com"; - userName = "H. M. Test"; + settings = { + user = { + email = "hm@example.com"; + name = "H. M. Test"; + }; + }; }; home.stateVersion = "20.09"; diff --git a/tests/modules/programs/git/git-with-signing-key-id-legacy.nix b/tests/modules/programs/git/git-with-signing-key-id-legacy.nix index fcc03c7b0..984324e17 100644 --- a/tests/modules/programs/git/git-with-signing-key-id-legacy.nix +++ b/tests/modules/programs/git/git-with-signing-key-id-legacy.nix @@ -3,8 +3,12 @@ config = { programs.git = { enable = true; - userName = "John Doe"; - userEmail = "user@example.org"; + settings = { + user = { + name = "John Doe"; + email = "user@example.org"; + }; + }; signing = { gpgPath = "path-to-gpg"; diff --git a/tests/modules/programs/git/git-with-signing-key-id.nix b/tests/modules/programs/git/git-with-signing-key-id.nix index 53fd1cb28..77aa2b109 100644 --- a/tests/modules/programs/git/git-with-signing-key-id.nix +++ b/tests/modules/programs/git/git-with-signing-key-id.nix @@ -1,8 +1,12 @@ { programs.git = { enable = true; - userName = "John Doe"; - userEmail = "user@example.org"; + settings = { + user = { + name = "John Doe"; + email = "user@example.org"; + }; + }; signing = { signer = "path-to-ssh"; diff --git a/tests/modules/programs/git/git-without-signing-key-id.nix b/tests/modules/programs/git/git-without-signing-key-id.nix index bcb4b4c73..cc2d2642f 100644 --- a/tests/modules/programs/git/git-without-signing-key-id.nix +++ b/tests/modules/programs/git/git-without-signing-key-id.nix @@ -1,8 +1,12 @@ { programs.git = { enable = true; - userName = "John Doe"; - userEmail = "user@example.org"; + settings = { + user = { + name = "John Doe"; + email = "user@example.org"; + }; + }; signing = { signer = "path-to-gpg"; diff --git a/tests/modules/programs/git/git-without-signing.nix b/tests/modules/programs/git/git-without-signing.nix index 050a6fe43..fd629e8bc 100644 --- a/tests/modules/programs/git/git-without-signing.nix +++ b/tests/modules/programs/git/git-without-signing.nix @@ -1,8 +1,12 @@ { programs.git = { enable = true; - userName = "John Doe"; - userEmail = "user@example.org"; + settings = { + user = { + name = "John Doe"; + email = "user@example.org"; + }; + }; }; home.stateVersion = "25.05"; diff --git a/tests/modules/programs/git/git.nix b/tests/modules/programs/git/git.nix index 1be7c166d..b8666aa9c 100644 --- a/tests/modules/programs/git/git.nix +++ b/tests/modules/programs/git/git.nix @@ -29,16 +29,20 @@ in { enable = true; package = pkgs.gitMinimal; - aliases = { - a1 = "foo"; - a2 = "bar"; - escapes = ''"\n ''; - }; - extraConfig = { + settings = { + alias = { + a1 = "foo"; + a2 = "bar"; + escapes = ''"\n ''; + }; extra = { name = "value"; multiple = [ 1 ]; }; + user = { + email = "user@example.org"; + name = "John Doe"; + }; }; ignores = [ "*~" @@ -66,13 +70,10 @@ in key = "00112233445566778899AABBCCDDEEFF"; signByDefault = true; }; - userEmail = "user@example.org"; - userName = "John Doe"; lfs.enable = true; } { - aliases.a2 = lib.mkForce "baz"; settings.alias.a2 = lib.mkForce "baz"; settings."extra \"backcompat.with.dots\"".previously = "worked"; settings.extra.boolean = true;