From a48dd228d977b1c5085cb8e014fd0ccfc45ca77b Mon Sep 17 00:00:00 2001 From: Marien Zwart Date: Sun, 31 Aug 2025 23:36:32 +1000 Subject: [PATCH] jq: make `colors` and `package` nullable ...and since according to commit f9b5172d956c79add5f6c8acccea2c7ca7f904c9 the defaults are the upstream values, default `colors` to null. Setting JQ_COLORS is just unnecessary environment clutter when using the default colors. Although the module now does nothing besides (optionally) installing `jq` when `colors` is left at its default value, that is still useful: from a flake with multiple home-manager configurations, some of which have `jq` provided through other means, setting/forcing `programs.jq.package` to null is more convenient than conditionally adding `jq` to `home.packages`. --- modules/programs/jq.nix | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/modules/programs/jq.nix b/modules/programs/jq.nix index 527dbcc87..cb2b807c4 100644 --- a/modules/programs/jq.nix +++ b/modules/programs/jq.nix @@ -35,11 +35,11 @@ in programs.jq = { enable = lib.mkEnableOption "the jq command-line JSON processor"; - package = lib.mkPackageOption pkgs "jq" { }; + package = lib.mkPackageOption pkgs "jq" { nullable = true; }; colors = mkOption { description = '' - The colors used in colored JSON output. + The colors used in colored JSON output, or null to use the defaults. See the [Colors section](https://jqlang.github.io/jq/manual/#Colors) of the jq manual. @@ -58,30 +58,21 @@ in } ''; - default = { - null = "1;30"; - false = "0;37"; - true = "0;37"; - numbers = "0;37"; - strings = "0;32"; - arrays = "1;37"; - objects = "1;37"; - objectKeys = "1;34"; - }; + default = null; - type = colorsType; + type = types.nullOr colorsType; }; }; }; config = mkIf cfg.enable { - home.packages = [ cfg.package ]; + home.packages = lib.mkIf (cfg.package != null) [ cfg.package ]; home.sessionVariables = let c = cfg.colors; in - { + lib.mkIf (c != null) { JQ_COLORS = "${c.null}:${c.false}:${c.true}:${c.numbers}:${c.strings}:${c.arrays}:${c.objects}:${c.objectKeys}"; }; };