{ lib, config, pkgs, ... }: with lib; let cfg = config.progs.exa; zsh = config.shell.zsh; exaPackage = pkgs.exa.override { gitSupport = false; }; defaultArgs = "--icons --classify"; bin = "${exaPackage}/bin/exa ${defaultArgs}"; in { options.progs.exa = { enable = mkOption { type = types.bool; default = false; description = "Add and configure exa, a modern replacement for ls"; }; }; config = mkIf cfg.enable { programs.exa = { enable = true; package = exaPackage; }; programs.zsh.shellAliases = mkIf zsh.enable rec { ls = "${bin} --oneline"; la = "${ls} --all"; lt = "${bin} --tree --level=3"; ll = "${bin} --long --header"; lla = "${ll} --all"; }; }; }