diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 9684c3a70..4bb80ba4f 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -998,6 +998,13 @@ in A new service is available: 'services.mpdris2'. ''; } + + { + time = "2019-03-19T22:56:20+00:00"; + message = '' + A new module is available: 'programs.bat'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 16517ccfc..e1022f7f6 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -38,6 +38,7 @@ let (loadModule ./programs/astroid.nix { }) (loadModule ./programs/autorandr.nix { }) (loadModule ./programs/bash.nix { }) + (loadModule ./programs/bat.nix { }) (loadModule ./programs/beets.nix { }) (loadModule ./programs/browserpass.nix { }) (loadModule ./programs/chromium.nix { condition = hostPlatform.isLinux; }) diff --git a/modules/programs/bat.nix b/modules/programs/bat.nix new file mode 100644 index 000000000..860c5e82f --- /dev/null +++ b/modules/programs/bat.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.programs.bat; + +in + +{ + meta.maintainers = [ maintainers.marsam ]; + + options.programs.bat = { + enable = mkEnableOption "bat, a cat clone with wings"; + + config = mkOption { + type = types.attrsOf types.str; + default = {}; + example = { + theme = "TwoDark"; + pager = "less -FR"; + }; + description = '' + Bat configuration. + ''; + }; + + }; + + config = mkIf cfg.enable { + home.packages = [ pkgs.bat ]; + + xdg.configFile."bat/config" = mkIf (cfg.config != {}) { + text = concatStringsSep "\n" ( + mapAttrsToList (n: v: ''--${n}="${v}"'') cfg.config + ); + }; + }; +}