From 8082994802c9700dfa1c903dc9e56ebe6d3fe98d Mon Sep 17 00:00:00 2001 From: Priec Date: Tue, 24 Feb 2026 01:00:33 +0100 Subject: [PATCH] xtensa zig flake --- flake.nix | 44 +++++++++++++++++++++++++++++++++++--------- test.o | Bin 0 -> 11296 bytes test.zig | 6 ++++++ 3 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 test.o create mode 100644 test.zig 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 0000000000000000000000000000000000000000..f5390bf3cd9a2a66b41de046721af2adc83ab51a GIT binary patch literal 11296 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 literal 0 HcmV?d00001 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"); + } +}