nixos/less: add configFile option
Expose the path to a lesskey file as a module option. This makes it
possible to maintain a single lesskey file, used for both NixOS and
non-nix systems. An example of how this can be done follows.
1. Write a derivation that fetches lesskey from a known location:
{ stdenv, fetchgit }:
stdenv.mkDerivation {
name = "foo";
src = fetchgit { .. };
phases = [ "unpackPhase" "installPhase" ];
installPhase = "mkdir -p $out && cp $src/lesskey $out/lesskey";
}
2. Set programs.less.configFile to the corresponding path:
programs.less = {
enable = true;
configFile = "${pkgs.foo}/lesskey";
};
This commit is contained in:
@@ -6,7 +6,7 @@ let
|
|||||||
|
|
||||||
cfg = config.programs.less;
|
cfg = config.programs.less;
|
||||||
|
|
||||||
configFile = ''
|
configText = if (cfg.configFile != null) then (builtins.readFile cfg.configFile) else ''
|
||||||
#command
|
#command
|
||||||
${concatStringsSep "\n"
|
${concatStringsSep "\n"
|
||||||
(mapAttrsToList (command: action: "${command} ${action}") cfg.commands)
|
(mapAttrsToList (command: action: "${command} ${action}") cfg.commands)
|
||||||
@@ -25,7 +25,7 @@ let
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
lessKey = pkgs.runCommand "lesskey"
|
lessKey = pkgs.runCommand "lesskey"
|
||||||
{ src = pkgs.writeText "lessconfig" configFile; }
|
{ src = pkgs.writeText "lessconfig" configText; }
|
||||||
"${pkgs.less}/bin/lesskey -o $out $src";
|
"${pkgs.less}/bin/lesskey -o $out $src";
|
||||||
|
|
||||||
in
|
in
|
||||||
@@ -37,6 +37,19 @@ in
|
|||||||
|
|
||||||
enable = mkEnableOption "less";
|
enable = mkEnableOption "less";
|
||||||
|
|
||||||
|
configFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
example = literalExample "$${pkgs.my-configs}/lesskey";
|
||||||
|
description = ''
|
||||||
|
Path to lesskey configuration file.
|
||||||
|
|
||||||
|
<option>configFile</option> takes precedence over <option>commands</option>,
|
||||||
|
<option>clearDefaultCommands</option>, <option>lineEditingKeys</option>, and
|
||||||
|
<option>envVariables</option>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
commands = mkOption {
|
commands = mkOption {
|
||||||
type = types.attrsOf types.str;
|
type = types.attrsOf types.str;
|
||||||
default = {};
|
default = {};
|
||||||
|
|||||||
Reference in New Issue
Block a user