Make sh replacements overwrite replaced commands
Previously we only installed shell replacements, but it would be nice
if our drop-in replacements could replace the command so that we don't
need to remember to use them separately
Change-Id: Ie670c620b42ea4b4bf44bc28efb1ea936102fa60
Reviewed-on: https://git.clicks.codes/c/Chimera/NixFiles/+/415
Tested-by: Samuel Shuert <coded@clicks.codes>
Reviewed-by: Skyler Grey <minion@clicks.codes>
diff --git a/modules/home/shell/default.nix b/modules/home/shell/default.nix
index f03ad77..d7c65a5 100644
--- a/modules/home/shell/default.nix
+++ b/modules/home/shell/default.nix
@@ -14,13 +14,56 @@
defaultAliases.enable = lib.mkEnableOption "Use sensible custom aliases";
usefulPackages.enable = lib.mkEnableOption "Enable useful shell packages (ripgrep, wget, etc)";
replacements = {
- eza.enable = lib.mkEnableOption "Use eza instead of ls";
- bfs.enable = lib.mkEnableOption "Use bfs instead of find";
- ripgrep.enable = lib.mkEnableOption "Use ripgrep instead of grep";
- htop.enable = lib.mkEnableOption "Use htop instead of top";
- erdtree.enable = lib.mkEnableOption "Use erdtree instead of tree";
- dust.enable = lib.mkEnableOption "Use dust instead of du";
- bat.enable = lib.mkEnableOption "Use bat instead of cat";
+ defaultEnable = lib.mkEnableOption "Enable replacing everything by default";
+
+ eza.enable = lib.mkOption {
+ description = "Use eza instead of ls";
+ type = lib.types.bool;
+ default = config.chimera.shell.replacements.defaultEnable;
+ example = true;
+ };
+ bfs.enable = lib.mkOption {
+ description = "Use bfs instead of find";
+ type = lib.types.bool;
+ default = config.chimera.shell.replacements.defaultEnable;
+ example = true;
+ };
+ ripgrep.enable = lib.mkOption {
+ description = "Use ripgrep instead of grep";
+ type = lib.types.bool;
+ default = config.chimera.shell.replacements.defaultEnable;
+ example = true;
+ };
+ htop.enable = lib.mkOption {
+ description = "Use htop instead of top";
+ type = lib.types.bool;
+ default = config.chimera.shell.replacements.defaultEnable;
+ example = true;
+ };
+ erdtree.enable = lib.mkOption {
+ description = "Use erdtree instead of tree";
+ type = lib.types.bool;
+ default = config.chimera.shell.replacements.defaultEnable;
+ example = true;
+ };
+ dust.enable = lib.mkOption {
+ description = "Use dust instead of du";
+ type = lib.types.bool;
+ default = config.chimera.shell.replacements.defaultEnable;
+ example = true;
+ };
+ bat.enable = lib.mkOption {
+ description = "Use bat instead of cat";
+ type = lib.types.bool;
+ default = config.chimera.shell.replacements.defaultEnable;
+ example = true;
+ };
+ zoxide.enable = lib.mkOption {
+ description = "Use zoxide instead of cd";
+ type = lib.types.bool;
+ default = config.chimera.shell.replacements.defaultEnable;
+ example = true;
+ };
};
};
@@ -31,14 +74,41 @@
"sudo nixos-rebuild switch --flake ${config.chimera.shell.rebuildFlakePath}";
clr = "clear";
edit = config.home.sessionVariables.EDITOR;
+ find = lib.mkIf config.chimera.shell.replacements.bat.enable "${pkgs.bfs}/bin/bfs";
+ grep = lib.mkIf config.chimera.shell.replacements.bat.enable "${config.programs.ripgrep.package}/bin/rg";
+ top = lib.mkIf config.chimera.shell.replacements.bat.enable "${config.programs.htop.package}/bin/htop";
+ tree = lib.mkIf config.chimera.shell.replacements.bat.enable "${pkgs.erdtree}/bin/erdtree";
+ du = lib.mkIf config.chimera.shell.replacements.bat.enable "${pkgs.dust}/bin/dust";
+ cat = lib.mkIf config.chimera.shell.replacements.bat.enable "${pkgs.bat}/bin/bat";
};
- programs = lib.mkIf config.chimera.shell.usefulPackages.enable {
- tealdeer = {
+ programs.eza = lib.mkIf config.chimera.shell.replacements.eza.enable {
+ enable = true;
+ enableAliases = true;
+ };
+
+ programs.ripgrep = lib.mkIf config.chimera.shell.replacements.ripgrep.enable {
+ enable = true;
+ arguments = [ "--smart-case" ];
+ };
+
+ programs.htop = lib.mkIf config.chimera.shell.replacements.htop.enable {
+ enable = true;
+ };
+
+ programs.zoxide = lib.mkIf config.chimera.shell.replacements.zoxide.enable {
+ enable = true;
+ enableZshIntegration = config.chimera.shell.zsh.enable;
+ enableBashIntegration = config.chimera.shell.bash.enable;
+ options = [ "--cmd cd" ];
+ };
+
+ programs.tealdeer = lib.mkIf config.chimera.shell.usefulPackages.enable {
enable = true;
settings.updates.autoupdate = true;
- };
- jq.enable = true;
+ };
+ programs.jq = lib.mkIf config.chimera.shell.usefulPackages.enable {
+ enable = true;
};
home.packages =
@@ -52,13 +122,12 @@
pkgs.sd
pkgs.tokei
pkgs.hyperfine
+ pkgs.tmux
]
else
[ ]
)
- ++ (if config.chimera.shell.replacements.eza.enable then [ pkgs.eza ] else [ ])
++ (if config.chimera.shell.replacements.bfs.enable then [ pkgs.bfs ] else [ ])
- ++ (if config.chimera.shell.replacements.ripgrep.enable then [ pkgs.ripgrep ] else [ ])
++ (if config.chimera.shell.replacements.htop.enable then [ pkgs.htop ] else [ ])
++ (if config.chimera.shell.replacements.erdtree.enable then [ pkgs.erdtree ] else [ ])
++ (if config.chimera.shell.replacements.dust.enable then [ pkgs.dust ] else [ ])