culr/nix/module.nix
2025-07-01 01:56:06 +10:00

60 lines
1.5 KiB
Nix

{
lib,
config,
...
}:
let
inherit (lib)
mkIf
mkEnableOption
mkPackageOption
mkOption
types
concatStringsSep
typeOf
;
cfg = config.programs.culr;
in
{
options.programs.culr = {
enable = mkEnableOption "culr";
package = mkPackageOption { } "" { };
pattern = mkOption {
type = with types; either str (listOf int);
default = [ ];
description = "colourising pattern";
};
palette = mkOption {
type = with types; listOf str;
default = [ ];
description = "palette to use in comma separated RGB hex eg. #0f0f0f";
};
separators = mkOption {
type = with types; str;
default = "";
description = "char list of separators to use";
};
delimiters = mkOption {
type = with types; str;
default = "";
description = "char list of delimiters to use";
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
environment.sessionVariables = {
CULR_ORDER =
let
serialise = {
list = list: concatStringsSep ";" (map (i: builtins.toString i) list);
string = s: s;
};
in
mkIf (cfg.pattern != "" && cfg.pattern != [ ]) (serialise.${typeOf cfg.pattern} cfg.pattern);
CULR_PALETTE = mkIf (cfg.palette != [ ]) (concatStringsSep ";" cfg.palette);
CULR_SEP = mkIf (cfg.separators != "") (cfg.separators);
CULR_DELIM = mkIf (cfg.delimiters != "") (cfg.delimiters);
};
};
}