--- /dev/null
+{
+ "nodes": {
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1731533236,
+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "inputs": {
+ "systems": "systems_2"
+ },
+ "locked": {
+ "lastModified": 1705309234,
+ "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1741600792,
+ "narHash": "sha256-yfDy6chHcM7pXpMF4wycuuV+ILSTG486Z/vLx/Bdi6Y=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "ebe2788eafd539477f83775ef93c3c7e244421d3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-24.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1708161998,
+ "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "84d981bae8b5e783b3b548de505b22880559515f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-23.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs",
+ "zig-overlay": "zig-overlay"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "systems_2": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "zig-overlay": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils_2",
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1741653076,
+ "narHash": "sha256-c2pb+AfobGv6Ac5u6eYbvltdJWX7YNAy0dYnnhHBleg=",
+ "owner": "mitchellh",
+ "repo": "zig-overlay",
+ "rev": "8380c16525b7c1e964ae8867036ce8d2f24e3e82",
+ "type": "github"
+ },
+ "original": {
+ "owner": "mitchellh",
+ "repo": "zig-overlay",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
--- /dev/null
+{
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
+ flake-utils.url = "github:numtide/flake-utils";
+ zig-overlay.url = "github:mitchellh/zig-overlay";
+ #zig2nix.url = "github:Cloudef/zig2nix";
+ #zig2nix.inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ outputs = inputs:
+ inputs.flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
+ let
+ pkgs = import inputs.nixpkgs { inherit system; };
+ zig = pkgs.zig;
+ #zig = inputs.zig-overlay.packages.${system}.master;
+ # Wrap binary package zig on linux so /usr/bin/env can be found inside a sandbox
+ zigBin =
+ pkgs.writeScriptBin "zig" ''
+ args=()
+ for d in /*; do
+ args+=("--dev-bind" "$d" "$d")
+ done
+ ${pkgs.bubblewrap}/bin/bwrap "''${args[@]}" \
+ --bind ${pkgs.coreutils} /usr \
+ -- ${pkgs.lib.getExe zig} "$@"
+ '';
+ postInstall = ''
+ set -x
+ readelf -d $out/bin/test-* | grep RUNPATH
+ lddtree $out/bin/test-*
+ set +x
+ '';
+ in
+ {
+ packages.test-zig = pkgs.stdenv.mkDerivation {
+ name = "test-zig";
+ src = ./.;
+ buildInputs = [ zigBin pkgs.gsl pkgs.pkg-config pkgs.llvmPackages.bintools pkgs.pax-utils pkgs.binutils ];
+ buildPhase = ''
+ set -x
+ export ZIG_GLOBAL_CACHE_DIR=$PWD
+ mkdir -p $out/bin
+ zig build-exe main.c -femit-bin=$out/bin/test-zig $(pkg-config --cflags --libs gsl)
+ set +x
+ '';
+ inherit postInstall;
+ };
+ packages.test-gcc = pkgs.stdenv.mkDerivation {
+ name = "test-gcc";
+ src = ./.;
+ buildInputs = [ pkgs.gsl pkgs.pkg-config pkgs.pax-utils pkgs.binutils ];
+ buildPhase = ''
+ set -x
+ mkdir -p $out/bin
+ gcc main.c -o $out/bin/test-gcc $(pkg-config --cflags --libs gsl)
+ set +x
+ '';
+ inherit postInstall;
+ };
+ devShells.default = pkgs.mkShell {
+ packages = [
+ zig
+ pkgs.gsl
+ #pkgs.blas
+ pkgs.pkg-config
+ ];
+ };
+ });
+}