diff --git a/modules/programs/less.nix b/modules/programs/less.nix index c9296928..60a67e24 100644 --- a/modules/programs/less.nix +++ b/modules/programs/less.nix @@ -43,10 +43,11 @@ in int str ]; + attrs = attrsOf (either scalar (listOf scalar)); in - attrsOf (either scalar (listOf scalar)); - default = { }; - description = "GNU-style options to be set via {env}`$LESS`."; + coercedTo attrs (lib.cli.toGNUCommandLine { }) (listOf str); + default = [ ]; + description = "Options to be set via {env}`$LESS`."; example = { RAW-CONTROL-CHARS = true; quiet = true; @@ -61,10 +62,10 @@ in xdg.configFile."lesskey" = lib.mkIf (cfg.config != "") { text = cfg.config; }; - programs.less.config = lib.mkIf (cfg.options != { }) ( + programs.less.config = lib.mkIf (cfg.options != [ ]) ( lib.mkBefore '' #env - LESS = ${lib.cli.toGNUCommandLineShell { } cfg.options} + LESS = ${lib.concatStringsSep " " cfg.options} '' ); }; diff --git a/tests/modules/programs/less/correct-option-order.nix b/tests/modules/programs/less/correct-option-order.nix new file mode 100644 index 00000000..6376898d --- /dev/null +++ b/tests/modules/programs/less/correct-option-order.nix @@ -0,0 +1,30 @@ +{ lib, ... }: + +{ + programs.less = { + enable = true; + options = lib.mkMerge [ + { + quiet = true; + use-color = true; + } + (lib.mkAfter { + color = [ + "HkK" # header: gray + "Mkb" # marks: blue + ]; + }) + (lib.mkOrder 2000 { + prompt = "s%f"; + }) + ]; + }; + + nmt.script = '' + assertFileExists home-files/.config/lesskey + assertFileContent home-files/.config/lesskey ${builtins.toFile "lesskey.expected" '' + #env + LESS = --quiet --use-color --color HkK --color Mkb --prompt s%f + ''} + ''; +} diff --git a/tests/modules/programs/less/default.nix b/tests/modules/programs/less/default.nix index 675c1a6c..08bd2e07 100644 --- a/tests/modules/programs/less/default.nix +++ b/tests/modules/programs/less/default.nix @@ -1,4 +1,5 @@ { + less-correct-option-order = ./correct-option-order.nix; less-custom-config = ./custom-config.nix; less-custom-options = ./custom-options.nix; less-custom-options-and-config = ./custom-options-and-config.nix;