787219edaf
Addresses #16545. Allows for user defined environment variables that hold paths to wordlists. This is to allow for easy access to wordlists for users and scripts, (in other distributions a convenient wordlist is typically found in /usr/share/dict/words or similar). The default wordlist is the one found in scowl, for no other reason than that's the one that was mentioned in the linked issue. It is possible to specify multiple environment variables as well. This is for users who need multiple wordlists (such as multilingual users).
60 lines
1.8 KiB
Nix
60 lines
1.8 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
with lib;
|
|
let
|
|
concatAndSort = name: files: pkgs.runCommand name {} ''
|
|
awk 1 ${lib.escapeShellArgs files} | sed '{ /^\s*$/d; s/^\s\+//; s/\s\+$// }' | sort | uniq > $out
|
|
'';
|
|
in
|
|
{
|
|
options = {
|
|
environment.wordlist = {
|
|
enable = mkEnableOption "environment variables for lists of words";
|
|
|
|
lists = mkOption {
|
|
type = types.attrsOf (types.nonEmptyListOf types.path);
|
|
|
|
default = {
|
|
WORDLIST = [ "${pkgs.scowl}/share/dict/words.txt" ];
|
|
};
|
|
|
|
defaultText = literalExpression ''
|
|
{
|
|
WORDLIST = [ "''${pkgs.scowl}/share/dict/words.txt" ];
|
|
}
|
|
'';
|
|
|
|
description = ''
|
|
A set with the key names being the environment variable you'd like to
|
|
set and the values being a list of paths to text documents containing
|
|
lists of words. The various files will be merged, sorted, duplicates
|
|
removed, and extraneous spacing removed.
|
|
|
|
If you have a handful of words that you want to add to an already
|
|
existing wordlist, you may find `builtins.toFile` useful for this
|
|
task.
|
|
'';
|
|
|
|
example = literalExpression ''
|
|
{
|
|
WORDLIST = [ "''${pkgs.scowl}/share/dict/words.txt" ];
|
|
AUGMENTED_WORDLIST = [
|
|
"''${pkgs.scowl}/share/dict/words.txt"
|
|
"''${pkgs.scowl}/share/dict/words.variants.txt"
|
|
(builtins.toFile "extra-words" '''
|
|
desynchonization
|
|
oobleck''')
|
|
];
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf config.environment.wordlist.enable {
|
|
environment.variables =
|
|
lib.mapAttrs
|
|
(name: value: "${concatAndSort "wordlist-${name}" value}")
|
|
config.environment.wordlist.lists;
|
|
};
|
|
}
|