50 lines
1.2 KiB
Nix
50 lines
1.2 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
cfg = config.programs.pistol;
|
|
|
|
configFile =
|
|
concatStringsSep "\n" (mapAttrsToList (k: v: "${k} ${v}") cfg.config);
|
|
|
|
in {
|
|
meta.maintainers = [ hm.maintainers.mtoohey ];
|
|
|
|
options.programs.pistol = {
|
|
enable = mkEnableOption ''
|
|
Pistol, a general purpose file previewer designed for terminal file
|
|
managers'';
|
|
|
|
config = mkOption {
|
|
type = with types; attrsOf str;
|
|
default = { };
|
|
example = literalExpression ''
|
|
{
|
|
"text/*" = "bat --paging=never --color=always %pistol-filename%";
|
|
"inode/directory" = "ls -l --color %pistol-filename%";
|
|
}
|
|
'';
|
|
description = ''
|
|
Pistol configuration written to
|
|
<filename>$XDG_CONFIG_HOME/pistol/pistol.conf</filename>.
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
config = mkIf cfg.enable (mkMerge [
|
|
{ home.packages = [ pkgs.pistol ]; }
|
|
|
|
(mkIf (cfg.config != { } && pkgs.stdenv.hostPlatform.isDarwin) {
|
|
home.file."Library/Application Support/pistol/pistol.conf".text =
|
|
configFile;
|
|
})
|
|
|
|
(mkIf (cfg.config != { } && !pkgs.stdenv.hostPlatform.isDarwin) {
|
|
xdg.configFile."pistol/pistol.conf".text = configFile;
|
|
})
|
|
]);
|
|
}
|