home-manager/modules/programs/exa.nix
Emily 36a53d9f26 treewide: convert all option docs to Markdown
This process was automated by [my fork of `nix-doc-munge`]. All
conversions were automatically checked to produce the same DocBook
result when converted back, modulo minor typographical/formatting
differences on the acceptable-to-desirable spectrum.

To reproduce this commit, run:

  $ NIX_PATH=nixpkgs=flake:nixpkgs/e7e69199f0372364a6106a1e735f68604f4c5a25 \
    nix shell nixpkgs#coreutils \
    -c find . -name '*.nix' \
    -exec nix run -- github:emilazy/nix-doc-munge/98dadf1f77351c2ba5dcb709a2a171d655f15099 \
    {} +
  $ ./format

[my fork of `nix-doc-munge`]: https://github.com/emilazy/nix-doc-munge/tree/home-manager
2023-07-17 18:40:56 +01:00

70 lines
1.6 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
{
meta.maintainers = [ hm.maintainers.kalhauge ];
options.programs.exa = {
enable =
mkEnableOption (lib.mdDoc "exa, a modern replacement for {command}`ls`");
enableAliases =
mkEnableOption (lib.mdDoc "recommended exa aliases (ls, ll)");
extraOptions = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "--group-directories-first" "--header" ];
description = lib.mdDoc ''
Extra command line options passed to exa.
'';
};
icons = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Display icons next to file names ({option}`--icons` argument).
'';
};
git = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
List each file's Git status if tracked or ignored ({option}`--git` argument).
'';
};
package = mkPackageOptionMD pkgs "exa" { };
};
config = let
cfg = config.programs.exa;
args = escapeShellArgs (optional cfg.icons "--icons"
++ optional cfg.git "--git" ++ cfg.extraOptions);
aliases = {
exa = "exa ${args}";
} // optionalAttrs cfg.enableAliases {
ls = "exa";
ll = "exa -l";
la = "exa -a";
lt = "exa --tree";
lla = "exa -la";
};
in mkIf cfg.enable {
home.packages = [ cfg.package ];
programs.bash.shellAliases = aliases;
programs.zsh.shellAliases = aliases;
programs.fish.shellAliases = aliases;
programs.ion.shellAliases = aliases;
};
}