From 715e6d7f891372a747a1ce5b785b9d8ed846d5f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Thu, 29 Jan 2026 23:20:09 +0100 Subject: [PATCH] programs.git: fix assertion message inconsistency --- modules/programs/git.nix | 52 ++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/modules/programs/git.nix b/modules/programs/git.nix index b28380f6..a9ef6887 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -332,21 +332,43 @@ in home.packages = lib.optionals (cfg.package != null) [ cfg.package ]; assertions = [ - { - assertion = - let - enabled = [ - (config.programs.delta.enable && config.programs.delta.enableGitIntegration) - (config.programs.diff-highlight.enable && config.programs.diff-highlight.enableGitIntegration) - (config.programs.diff-so-fancy.enable && config.programs.diff-so-fancy.enableGitIntegration) - (config.programs.difftastic.enable && config.programs.difftastic.git.enable) - (config.programs.patdiff.enable && config.programs.patdiff.enableGitIntegration) - (config.programs.riff.enable && config.programs.riff.enableGitIntegration) - ]; - in - lib.count lib.id enabled <= 1; - message = "Only one of 'programs.git.delta.enable' or 'programs.git.difftastic.enable' or 'programs.git.diff-so-fancy.enable' or 'programs.git.diff-highlight' or 'programs.git.patdiff' can be set to true at the same time."; - } + ( + let + configOf = + { + name, + gitIntegrationOption ? [ "enableGitIntegration" ], + }: + { + name = "programs.${name}.${lib.concatStringsSep "." gitIntegrationOption}"; + value = + config.programs.${name}.enable && lib.getAttrFromPath gitIntegrationOption config.programs.${name}; + }; + enabled = builtins.filter (x: x.value) ( + map configOf [ + { name = "delta"; } + { name = "diff-highlight"; } + { name = "diff-so-fancy"; } + { + name = "difftastic"; + gitIntegrationOption = [ + "git" + "enable" + ]; + } + { name = "patdiff"; } + { name = "riff"; } + ] + ); + in + { + assertion = lib.length enabled <= 1; + message = '' + Only one of the following options can be enabled at a time. + - ${lib.concatStringsSep "\n - " (map (x: "`${x.name}'") enabled)} + ''; + } + ) ]; xdg.configFile = {