{ description = "Zig Host + Zig Xtensa (ESP32) Environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; zig-overlay.url = "github:mitchellh/zig-overlay"; zls-overlay.url = "github:zigtools/zls"; }; outputs = { self, nixpkgs, zig-overlay, zls-overlay, ... }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; zig_host = zig-overlay.packages.${system}.master; zls = zls-overlay.packages.${system}.zls; zig_xtensa = pkgs.stdenvNoCC.mkDerivation { pname = "zig-xtensa"; version = "0.15.2"; src = pkgs.fetchzip { url = "https://github.com/haivivi/embed-zig/releases/download/espressif-0.15.2/zig-x86_64-linux-gnu-baseline.tar.xz"; # Opraveny hash podla hlásenia Nixu hash = "sha256-Wyc36nKM2PqljI4W8LsnEcVtrmchwQDoaUHAYOI0g1I="; stripRoot = false; }; dontBuild = true; installPhase = '' mkdir -p $out/bin cp -r . $out/ # Symlink na binárku vo vnútri vnoreného adresára ln -s $out/zig-x86_64-linux-gnu-baseline/zig $out/bin/zig-xtensa ''; }; in { devShells.${system}.default = pkgs.mkShell { packages = [ zig_host zls zig_xtensa pkgs.esptool pkgs.espflash ]; shellHook = '' echo ">>> Zig Master (host): $(zig version)" echo ">>> Zig Xtensa (esp32): $(zig-xtensa version 2>/dev/null || echo 'Executable ready')" export PATH=$HOME/.rustup/toolchains/esp/xtensa-esp-elf/esp-14.2.0_20240906/xtensa-esp-elf/bin:$PATH if command -v xtensa-esp32-elf-gcc >/dev/null; then echo ">>> Xtensa GCC: $(xtensa-esp32-elf-gcc --version | head -n 1)" fi ''; }; }; }