57 lines
1.9 KiB
Nix
57 lines
1.9 KiB
Nix
{
|
|
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
|
|
echo " zig-xtensa build-obj -target xtensa-freestanding-none -mcpu=esp32 test.zig"
|
|
'';
|
|
};
|
|
};
|
|
}
|