parent
604561ba9a
commit
3d93e1e802
|
@ -6,6 +6,11 @@ let
|
||||||
|
|
||||||
cfg = config.programs.bat;
|
cfg = config.programs.bat;
|
||||||
|
|
||||||
|
toConfigFile = generators.toKeyValue {
|
||||||
|
mkKeyValue = k: v: "--${k}=${lib.escapeShellArg v}";
|
||||||
|
listsAsDuplicateKeys = true;
|
||||||
|
};
|
||||||
|
|
||||||
in {
|
in {
|
||||||
meta.maintainers = [ maintainers.marsam ];
|
meta.maintainers = [ maintainers.marsam ];
|
||||||
|
|
||||||
|
@ -13,11 +18,12 @@ in {
|
||||||
enable = mkEnableOption "bat, a cat clone with wings";
|
enable = mkEnableOption "bat, a cat clone with wings";
|
||||||
|
|
||||||
config = mkOption {
|
config = mkOption {
|
||||||
type = types.attrsOf types.str;
|
type = with types; attrsOf (either str (listOf str));
|
||||||
default = { };
|
default = { };
|
||||||
example = {
|
example = {
|
||||||
theme = "TwoDark";
|
theme = "TwoDark";
|
||||||
pager = "less -FR";
|
pager = "less -FR";
|
||||||
|
map-syntax = [ "*.jenkinsfile:Groovy" "*.props:Java Properties" ];
|
||||||
};
|
};
|
||||||
description = ''
|
description = ''
|
||||||
Bat configuration.
|
Bat configuration.
|
||||||
|
@ -48,10 +54,8 @@ in {
|
||||||
home.packages = [ pkgs.bat ];
|
home.packages = [ pkgs.bat ];
|
||||||
|
|
||||||
xdg.configFile = mkMerge ([{
|
xdg.configFile = mkMerge ([{
|
||||||
"bat/config" = mkIf (cfg.config != { }) {
|
"bat/config" =
|
||||||
text = concatStringsSep "\n"
|
mkIf (cfg.config != { }) { text = toConfigFile cfg.config; };
|
||||||
(mapAttrsToList (n: v: ''--${n}="${v}"'') cfg.config);
|
|
||||||
};
|
|
||||||
}] ++ flip mapAttrsToList cfg.themes
|
}] ++ flip mapAttrsToList cfg.themes
|
||||||
(name: body: { "bat/themes/${name}.tmTheme" = { text = body; }; }));
|
(name: body: { "bat/themes/${name}.tmTheme" = { text = body; }; }));
|
||||||
};
|
};
|
||||||
|
|
|
@ -45,6 +45,7 @@ import nmt {
|
||||||
./modules/programs/aria2
|
./modules/programs/aria2
|
||||||
./modules/programs/autojump
|
./modules/programs/autojump
|
||||||
./modules/programs/bash
|
./modules/programs/bash
|
||||||
|
./modules/programs/bat
|
||||||
./modules/programs/browserpass
|
./modules/programs/browserpass
|
||||||
./modules/programs/dircolors
|
./modules/programs/dircolors
|
||||||
./modules/programs/direnv
|
./modules/programs/direnv
|
||||||
|
|
43
tests/modules/programs/bat/bat.nix
Normal file
43
tests/modules/programs/bat/bat.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
config = {
|
||||||
|
theme = "TwoDark";
|
||||||
|
pager = "less -FR";
|
||||||
|
map-syntax = [ "*.jenkinsfile:Groovy" "*.props:Java Properties" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
themes.testtheme = ''
|
||||||
|
This is a test theme.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.overlays =
|
||||||
|
[ (self: super: { bat = pkgs.writeScriptBin "dummy" ""; }) ];
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileExists home-files/.config/bat/config
|
||||||
|
assertFileContent home-files/.config/bat/config ${
|
||||||
|
pkgs.writeText "bat.expected" ''
|
||||||
|
--map-syntax='*.jenkinsfile:Groovy'
|
||||||
|
--map-syntax='*.props:Java Properties'
|
||||||
|
--pager='less -FR'
|
||||||
|
--theme='TwoDark'
|
||||||
|
''
|
||||||
|
}
|
||||||
|
|
||||||
|
assertFileExists home-files/.config/bat/themes/testtheme.tmTheme
|
||||||
|
assertFileContent home-files/.config/bat/themes/testtheme.tmTheme ${
|
||||||
|
pkgs.writeText "bat.expected" ''
|
||||||
|
This is a test theme.
|
||||||
|
''
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
1
tests/modules/programs/bat/default.nix
Normal file
1
tests/modules/programs/bat/default.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ bat = ./bat.nix; }
|
Loading…
Reference in a new issue