about summary refs log tree commit diff stats
path: root/modules/by-name/zs/zsh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/by-name/zs/zsh')
-rw-r--r--modules/by-name/zs/zsh/config/command_not_found/command_not_found.sh74
-rw-r--r--modules/by-name/zs/zsh/module.nix8
2 files changed, 4 insertions, 78 deletions
diff --git a/modules/by-name/zs/zsh/config/command_not_found/command_not_found.sh b/modules/by-name/zs/zsh/config/command_not_found/command_not_found.sh
deleted file mode 100644
index 5f7461e6..00000000
--- a/modules/by-name/zs/zsh/config/command_not_found/command_not_found.sh
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/env dash
-
-# nixos-config - My current NixOS configuration
-#
-# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-# This file is part of my nixos-config.
-#
-# You should have received a copy of the License along with this program.
-# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
-
-# This was taken from the
-# `${pkgs.nix-index}/etc/profile.d/command-not-found.sh` file on 2024-02-28
-
-# for bash 4
-# this will be called when a command is entered
-# but not found in the user’s path + environment
-command_not_found_handle() {
-    # taken from http://www.linuxjournal.com/content/bash-command-not-found
-    # - do not run when inside Midnight Commander or within a Pipe
-    if [ -n "${MC_SID-}" ] || ! [ -t 1 ]; then
-        >&2 echo "$1: command not found"
-        return 127
-    fi
-
-    toplevel=nixpkgs # nixpkgs should always be available even in NixOS
-    cmd="$1"
-    attrs=$(nix-locate --minimal --no-group --type x --type s --top-level --whole-name --at-root "/bin/$cmd")
-    len=$(if [ -n "$attrs" ]; then echo "$attrs" | wc -l; else echo 0; fi)
-
-    case "$len" in
-    0)
-        eprintln "$cmd: command not found"
-        ;;
-    1)
-        # If only one package provides this, then we can invoke it
-        # without asking the user.
-
-        # These will not return 127 if they worked correctly.
-
-        >&2 cat <<EOF
-The program '$cmd' is currently not installed. A shell will be opened
-with it.
-EOF
-        if nix build "$toplevel#$attrs" --no-link; then
-            nix shell "$toplevel#$attrs"
-            return $?
-        else
-            >&2 cat <<EOF
-Failed to build: '$toplevel#$attrs'
-$cmd: command not found
-EOF
-        fi
-        ;;
-    *)
-        >&2 cat <<EOF
-The program '$cmd' is currently not installed. It is provided by
-several packages. You can run it once with:
-EOF
-        awk --assign=toplevel="$toplevel" 'BEGIN{counter=0} {printf("%3s)", counter); printf("  nix shell %s#%s\n", toplevel, $1); counter+=1}' "$(ptmp "$attrs")"
-        ;;
-    esac
-
-    return 127 # command not found should always exit with 127
-}
-
-# for zsh...
-# we just pass it to the bash handler above
-# apparently they work identically
-command_not_found_handler() {
-    command_not_found_handle "$@"
-    return $?
-}
diff --git a/modules/by-name/zs/zsh/module.nix b/modules/by-name/zs/zsh/module.nix
index 6c3adb2b..038048da 100644
--- a/modules/by-name/zs/zsh/module.nix
+++ b/modules/by-name/zs/zsh/module.nix
@@ -105,16 +105,16 @@ in {
 
         initContent = let
           start = lib.modules.mkBefore (
-            # NOTE: This must be before the insult, as we otherwise override the previous handler <2024-02-28>
             sourceFile ./config/zsh-init.zsh
-            + sourceFile ./config/command_not_found/command_not_found.sh
-            + sourceFile ./config/command_not_found/command_not_found_insult.sh
             + sourceFile ./config/custom_cursor.zsh
             + sourceFile ./config/edit_command_line.zsh
             + sourceFile ./plugins/zsh-history-substring-search.zsh
           );
           end = lib.modules.mkAfter (
-            sourceFile ./config/keymaps_start.zsh
+            # NOTE(@bpeetz): Put this here, so that command handler in `extraFiles`
+            # are not overriding this. <2025-05-16>
+            sourceFile ./config/command_not_found/command_not_found_insult.sh
+            + sourceFile ./config/keymaps_start.zsh
             + sourceFile ./config/keymaps/command.zsh
             + sourceFile ./config/keymaps/emacs.zsh
             + sourceFile ./config/keymaps/isearch.zsh