From 1bc6a348b0c75d8309c1a9f9e45da5effa257afa Mon Sep 17 00:00:00 2001 From: Chris Toph Date: Tue, 22 Apr 2025 00:56:36 -0400 Subject: [PATCH] Refactor shell.nix to import overlays and yay. Better fitted for doomsday scenario --- shell.nix | 75 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 62 insertions(+), 13 deletions(-) diff --git a/shell.nix b/shell.nix index 107a700..c608401 100644 --- a/shell.nix +++ b/shell.nix @@ -1,4 +1,4 @@ -# Shell for bootstrapping flake-enabled nix and other tooling +# This is a Nix flake shell that provides a minimal environment for new install or system recovery { pkgs ? # If pkgs is not defined, instantiate nixpkgs from locked commit @@ -8,23 +8,72 @@ url = "https://github.com/nixos/nixpkgs/archive/${lock.rev}.tar.gz"; sha256 = lock.narHash; }; + # Import overlays from the flake's overlay structure + overlays = [ + (import ./overlays { inputs = { }; }).default + ]; in - import nixpkgs { overlays = [ ]; }, + import nixpkgs { inherit overlays; }, ... }: +let + # Explicitly add the yay package to the shell in case overlay fucks up + yay = import ./pkgs/yay/package.nix { inherit pkgs lib; }; + inherit (pkgs) lib; +in { default = pkgs.mkShell { - nativeBuildInputs = builtins.attrValues { - inherit (pkgs) + nativeBuildInputs = + builtins.attrValues { + inherit (pkgs) + # Basic nix tools + nix + nixos-rebuild + home-manager + nh - nix - home-manager - nh - git - fish - dconf2nix - bats # for bash testing - ; - }; + # Git for repo management + git + + # Shells + fish + bash + + # Config tools + dconf2nix + + # Network tools (for recovery scenarios) + curl + wget + + # System tools + coreutils + findutils + gzip + zstd + + # Text editors for emergency config edits + micro + nano + + # Diagnostics + inxi + pciutils + usbutils + lshw + ; + } + ++ [ + yay + ]; + + FLAKE = toString ./.; + + shellHook = '' + clear + echo "Minimal shell initialized with flake overlays" + echo -e "Run '\033[1;34myay rebuild\033[0m' to rebuild your system if needed" + echo -e "FLAKE environment variable is set to: \033[1;34m$FLAKE\033[0m" + ''; }; }