# This module provides all the shell options { inputs, lib, ... }: { flake.modules.homeManager.shell-tools = { config, pkgs, ... }: { options.shell.program = lib.mkOption { type = lib.types.enum [ "bash" "zsh" ]; default = "zsh"; description = "Which interactive shell configuration to enable."; }; imports = with inputs.self.modules.homeManager; [ bash zsh files ]; config = { home.shell.enableShellIntegration = true; programs.zsh.enable = lib.mkForce (config.shell.program == "zsh"); home.packages = with pkgs; [ btop uv xclip inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.shell-tools ]; }; }; perSystem = { system, pkgs, self', ... }: { packages.shell-tools = inputs.wrappers.lib.wrapPackage { inherit pkgs; # binName = "show-tools"; package = (pkgs.symlinkJoin { name = "show-tools"; paths = with pkgs; [ nh ripgrep fd jq wget curl dig self'.packages.gdu self'.packages.my-eza hostname iproute2 direnv (writeShellApplication { name = "show-tools"; text = '' IFS=':' read -r -a path_dirs <<< "''${PATH:-}" for dir in "''${path_dirs[@]}"; do [[ "$dir" == */bin ]] || continue [[ -d "$dir" ]] || continue printf '%s\n' "$dir"/* done ''; }) ]; }); }; packages.gdu = inputs.wrappers.lib.wrapPackage { inherit pkgs; package = pkgs.gdu; args = [ "-x" "--si" "--collapse-path" "--mouse" "$@" ]; }; }; }