Skip to content

Commit

Permalink
nixos/bat: init bat module
Browse files Browse the repository at this point in the history
Signed-off-by: Fernando Rodrigues <alpha@sigmasquadron.net>
  • Loading branch information
SigmaSquadron committed Oct 20, 2024
1 parent 0622467 commit bc243bf
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 1 deletion.
3 changes: 2 additions & 1 deletion doc/manpage-urls.json
Original file line number Diff line number Diff line change
Expand Up @@ -322,5 +322,6 @@
"nix-shell(1)": "https://nixos.org/manual/nix/stable/command-ref/nix-shell.html",
"mksquashfs(1)": "https://man.archlinux.org/man/extra/squashfs-tools/mksquashfs.1.en",
"curl(1)": "https://curl.se/docs/manpage.html",
"netrc(5)": "https://man.cx/netrc"
"netrc(5)": "https://man.cx/netrc",
"cat(1)": "https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html"
}
2 changes: 2 additions & 0 deletions nixos/doc/manual/release-notes/rl-2411.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,8 @@

- [Zapret](https://github.com/bol-van/zapret), a DPI bypass tool. Available as [services.zapret](option.html#opt-services.zapret).

- [Bat](https://github.com/sharkdp/bat), a {manpage}`cat(1)` clone with wings. Available as [programs.bat](#opt-programs.bat).

## Backward Incompatibilities {#sec-release-24.11-incompatibilities}

- The `sound` options have been removed or renamed, as they had a lot of unintended side effects. See [below](#sec-release-24.11-migration-sound) for details.
Expand Down
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@
./programs/bash/blesh.nix
./programs/bash/ls-colors.nix
./programs/bash/undistract-me.nix
./programs/bat.nix
./programs/bcc.nix
./programs/benchexec.nix
./programs/browserpass.nix
Expand Down
59 changes: 59 additions & 0 deletions nixos/modules/programs/bat.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
pkgs,
config,
lib,
...
}:
let
inherit (lib.options) mkEnableOption mkPackageOption mkOption;
inherit (lib.modules) mkIf;
inherit (lib.lists) optionals;
inherit (lib.types) lines;
inherit (lib) maintainers;
cfg = config.programs.bat;
in
{
options.programs.bat = {
enable = mkEnableOption "`bat`, a {manpage}`cat(1)` clone with wings";
package = mkPackageOption pkgs "bat" { };
enableExtras = mkEnableOption "`bat`'s extra scripts and utilities";
# TODO: Somehow turn this into a structured submodule per RFC 0042.
# `bat`'s configuration syntax translates particularly terribly to
# Nix as some options can be declared multiple times and many options
# are actually aliases to other options and shouldn't be set together.
extraConfig = mkOption {
default = "";
example = ''
--theme="TwoDark"
--italic-text=always
--paging=never
--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse"
--map-syntax "*.ino:C++"
--map-syntax ".ignore:Git Ignore"
'';
description = ''
Lines to be appended verbatim to the system-wide `bat` configuration file.
'';
type = lines;
};
};
config = mkIf cfg.enable {
environment = {
systemPackages =
[ cfg.package ]
++ optionals cfg.enableExtras (
with pkgs.bat-extras;
[
batdiff
batgrep
batman
batpipe
batwatch
prettybat
]
);
etc."bat/config".text = cfg.extraConfig;
};
};
meta.maintainers = with maintainers; [ sigmasquadron ];
}

0 comments on commit bc243bf

Please sign in to comment.