pistol: add module

This commit is contained in:
Matthew Toohey 2022-03-28 11:19:38 -04:00 committed by Robert Helgesson
parent 65bcfaccc5
commit 223b9deead
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
8 changed files with 99 additions and 0 deletions

3
.github/CODEOWNERS vendored
View file

@ -211,6 +211,9 @@
/modules/programs/pidgin.nix @rycee
/modules/programs/pistol.nix @mtoohey31
/tests/modules/programs/pistol @mtoohey31
/modules/programs/piston-cli.nix @ethancedwards8
/modules/programs/powerline-go.nix @DamienCassou

View file

@ -287,4 +287,10 @@
fingerprint = "D5D6 FD1F 0D9A 3284 FB9B C26D 3F98 EC7E C2B8 7ED1";
}];
};
mtoohey = {
name = "Matthew Toohey";
email = "contact@mtoohey.com";
github = "mtoohey31";
githubId = 36740602;
};
}

View file

@ -568,6 +568,13 @@ in
A new module is available: 'programs.micro'.
'';
}
{
time = "2022-06-24T22:40:27+00:00";
message = ''
A new module is available: 'programs.pistol'.
'';
}
];
};
}

View file

@ -132,6 +132,7 @@ let
./programs/pazi.nix
./programs/pet.nix
./programs/pidgin.nix
./programs/pistol.nix
./programs/piston-cli.nix
./programs/powerline-go.nix
./programs/pubs.nix

View file

@ -0,0 +1,49 @@
{ 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;
})
]);
}

View file

@ -88,6 +88,7 @@ import nmt {
./modules/programs/nushell
./modules/programs/pandoc
./modules/programs/pet
./modules/programs/pistol
./modules/programs/powerline-go
./modules/programs/pubs
./modules/programs/qutebrowser

View file

@ -0,0 +1,31 @@
{ pkgs, ... }:
let
expected = builtins.toFile "settings-expected" ''
application/json bat --paging=never --color=always --style=auto --wrap=character --terminal-width=%pistol-extra0% --line-range=1:%pistol-extra1% %pistol-filename%
text/* bat --paging=never --color=always --style=auto --wrap=character --terminal-width=%pistol-extra0% --line-range=1:%pistol-extra1% %pistol-filename%'';
in {
programs.pistol = {
enable = true;
config = {
"text/*" =
"bat --paging=never --color=always --style=auto --wrap=character --terminal-width=%pistol-extra0% --line-range=1:%pistol-extra1% %pistol-filename%";
"application/json" =
"bat --paging=never --color=always --style=auto --wrap=character --terminal-width=%pistol-extra0% --line-range=1:%pistol-extra1% %pistol-filename%";
};
};
test.stubs.pistol = { };
nmt.script = let
path = if pkgs.stdenv.hostPlatform.isDarwin then
"home-files/Library/Application Support/pistol/pistol.conf"
else
"home-files/.config/pistol/pistol.conf";
in ''
assertFileExists '${path}'
assertFileContent '${path}' '${expected}'
'';
}

View file

@ -0,0 +1 @@
{ pistol-config = ./config.nix; }