let nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-25.05"; pkgs = import nixpkgs { config = {}; overlays = []; }; in pkgs.mkShell { buildInputs = with pkgs; [ rustc cargo gcc # cc-command for building native dependencies pkg-config # useful for C-dependencies openssl # if crates are dependent on openssl openssl.dev # openssl development headers # GUI dependencies - X11 libGL xorg.libX11 xorg.libXcursor xorg.libXi xorg.libXrandr libxkbcommon # GUI dependencies - Wayland (for Wayland support) wayland ]; # Set up library paths for runtime shellHook = let libPath = pkgs.lib.makeLibraryPath (with pkgs; [ libGL xorg.libX11 xorg.libXcursor xorg.libXi xorg.libXrandr libxkbcommon wayland ]); in '' export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${libPath}" echo "NaviPod Development Environment" # Verify Rust is available if command -v rustc &> /dev/null; then echo "✓ Rust $(rustc --version) is available" fi if command -v cargo &> /dev/null; then echo "✓ Cargo $(cargo --version) is available" fi echo "" echo "Welcome to NaviPod development shell!" echo "Run 'cargo build' to build the project." echo "Run 'cargo check' to check for compilation errors." echo "Run './target/debug/navipod-gui' to launch the GUI (from within this shell)." ''; }