parent
604561ba9a
commit
3d93e1e802
|
@ -6,6 +6,11 @@ let
|
|||
|
||||
cfg = config.programs.bat;
|
||||
|
||||
toConfigFile = generators.toKeyValue {
|
||||
mkKeyValue = k: v: "--${k}=${lib.escapeShellArg v}";
|
||||
listsAsDuplicateKeys = true;
|
||||
};
|
||||
|
||||
in {
|
||||
meta.maintainers = [ maintainers.marsam ];
|
||||
|
||||
|
@ -13,11 +18,12 @@ in {
|
|||
enable = mkEnableOption "bat, a cat clone with wings";
|
||||
|
||||
config = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
type = with types; attrsOf (either str (listOf str));
|
||||
default = { };
|
||||
example = {
|
||||
theme = "TwoDark";
|
||||
pager = "less -FR";
|
||||
map-syntax = [ "*.jenkinsfile:Groovy" "*.props:Java Properties" ];
|
||||
};
|
||||
description = ''
|
||||
Bat configuration.
|
||||
|
@ -48,10 +54,8 @@ in {
|
|||
home.packages = [ pkgs.bat ];
|
||||
|
||||
xdg.configFile = mkMerge ([{
|
||||
"bat/config" = mkIf (cfg.config != { }) {
|
||||
text = concatStringsSep "\n"
|
||||
(mapAttrsToList (n: v: ''--${n}="${v}"'') cfg.config);
|
||||
};
|
||||
"bat/config" =
|
||||
mkIf (cfg.config != { }) { text = toConfigFile cfg.config; };
|
||||
}] ++ flip mapAttrsToList cfg.themes
|
||||
(name: body: { "bat/themes/${name}.tmTheme" = { text = body; }; }));
|
||||
};
|
||||
|
|
|
@ -45,6 +45,7 @@ import nmt {
|
|||
./modules/programs/aria2
|
||||
./modules/programs/autojump
|
||||
./modules/programs/bash
|
||||
./modules/programs/bat
|
||||
./modules/programs/browserpass
|
||||
./modules/programs/dircolors
|
||||
./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