diff --git a/flake.nix b/flake.nix index 615af54..512cd31 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Zig Master Development Environment"; + description = "Zig Host + Zig Xtensa (ESP32) Environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; @@ -11,18 +11,44 @@ let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; - zig = zig-overlay.packages.${system}.master; + 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 { - buildInputs = [ - zig - zls - ]; + packages = [ + zig_host + zls + zig_xtensa + pkgs.esptool + pkgs.espflash + ]; shellHook = '' - echo "Entering Zig Master Environment" - echo "Zig: $(zig version)" - echo "ZLS: $(zls --version)" + 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 ''; }; }; diff --git a/test.o b/test.o new file mode 100644 index 0000000..f5390bf Binary files /dev/null and b/test.o differ diff --git a/test.zig b/test.zig new file mode 100644 index 0000000..2375171 --- /dev/null +++ b/test.zig @@ -0,0 +1,6 @@ +export fn main() void { + var i: u32 = 0; + while (i < 10) : (i += 1) { + asm volatile ("nop"); + } +}