From c733f3326a34a57dfab4c17da659316fdb6eab6a Mon Sep 17 00:00:00 2001 From: Soispha Date: Wed, 28 Feb 2024 20:26:18 +0100 Subject: feat(hm): Add nix-index and associated command_not_found_handler --- hm/default.nix | 2 + hm/soispha/conf/default.nix | 1 + hm/soispha/conf/nix-index/default.nix | 14 ++++++ hm/soispha/conf/zsh/config/command_not_found.sh | 64 +++++++++++++++++++++++++ hm/soispha/conf/zsh/default.nix | 6 ++- hm/soispha/default.nix | 2 + 6 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 hm/soispha/conf/nix-index/default.nix create mode 100644 hm/soispha/conf/zsh/config/command_not_found.sh (limited to 'hm') diff --git a/hm/default.nix b/hm/default.nix index 9ef5b92f..605c1fab 100644 --- a/hm/default.nix +++ b/hm/default.nix @@ -13,6 +13,7 @@ # modules impermanence, nixVim, + nix-index-database, }: { home-manager = { useGlobalPkgs = true; @@ -38,6 +39,7 @@ impermanence nixVim + nix-index-database ; }; }; diff --git a/hm/soispha/conf/default.nix b/hm/soispha/conf/default.nix index 80d375c2..a6ab363b 100644 --- a/hm/soispha/conf/default.nix +++ b/hm/soispha/conf/default.nix @@ -24,6 +24,7 @@ ./mumble ./neomutt ./nheko + ./nix-index ./npm ./nvim ./python diff --git a/hm/soispha/conf/nix-index/default.nix b/hm/soispha/conf/nix-index/default.nix new file mode 100644 index 00000000..eb8132d9 --- /dev/null +++ b/hm/soispha/conf/nix-index/default.nix @@ -0,0 +1,14 @@ +{...}: { + programs.nix-index = { + enable = true; + symlinkToCacheHome = true; + + # Handled by myself (and the script is overridden) + enableBashIntegration = false; + enableZshIntegration = false; + enableFishIntegration = false; + }; + programs.nix-index-database = { + comma.enable = false; + }; +} diff --git a/hm/soispha/conf/zsh/config/command_not_found.sh b/hm/soispha/conf/zsh/config/command_not_found.sh new file mode 100644 index 00000000..ae6de636 --- /dev/null +++ b/hm/soispha/conf/zsh/config/command_not_found.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env dash + +# 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=$(echo "$attrs" | wc -l) + + 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. + + if nix build "$toplevel#$attrs" --no-link; then + nix shell "$toplevel#$attrs" + return $? + else + >&2 cat <&2 cat < + + builtins.readFile ./config/command_not_found.sh + builtins.readFile ./config/command_not_found_insult.sh + builtins.readFile ./config/custom_cursor.zsh - + builtins.readFile "${pkgs.fzf}/share/fzf/key-bindings.zsh" - + ''SHELL_LIBRARY_VERSION="2.1.1" source ${shell_library.rawLib.${system}}''; + + builtins.readFile "${pkgs.fzf}/share/fzf/key-bindings.zsh"; shellAliases = { ll = ". ll"; diff --git a/hm/soispha/default.nix b/hm/soispha/default.nix index cae77d92..9811f600 100644 --- a/hm/soispha/default.nix +++ b/hm/soispha/default.nix @@ -1,6 +1,7 @@ { impermanence, nixVim, + nix-index-database, ... }: let username = "soispha"; @@ -23,6 +24,7 @@ in { impermanence.nixosModules.home-manager.impermanence nixVim.homeManagerModules.nixvim + nix-index-database.hmModules.nix-index ]; # I don't know what this does, but I've seen it a lot online, so it should be good, right? -- cgit 1.4.1