]> Git — Sourcephile - tmp/julm/bug-cblas_ctrmv.git/blob - flake.nix
init
[tmp/julm/bug-cblas_ctrmv.git] / flake.nix
1 {
2 inputs = {
3 nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
4 flake-utils.url = "github:numtide/flake-utils";
5 zig-overlay.url = "github:mitchellh/zig-overlay";
6 #zig2nix.url = "github:Cloudef/zig2nix";
7 #zig2nix.inputs.nixpkgs.follows = "nixpkgs";
8 };
9
10 outputs = inputs:
11 inputs.flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
12 let
13 pkgs = import inputs.nixpkgs { inherit system; };
14 zig = pkgs.zig;
15 #zig = inputs.zig-overlay.packages.${system}.master;
16 # Wrap binary package zig on linux so /usr/bin/env can be found inside a sandbox
17 zigBin =
18 pkgs.writeScriptBin "zig" ''
19 args=()
20 for d in /*; do
21 args+=("--dev-bind" "$d" "$d")
22 done
23 ${pkgs.bubblewrap}/bin/bwrap "''${args[@]}" \
24 --bind ${pkgs.coreutils} /usr \
25 -- ${pkgs.lib.getExe zig} "$@"
26 '';
27 postInstall = ''
28 set -x
29 readelf -d $out/bin/test-* | grep RUNPATH
30 lddtree $out/bin/test-*
31 set +x
32 '';
33 in
34 {
35 packages.test-zig = pkgs.stdenv.mkDerivation {
36 name = "test-zig";
37 src = ./.;
38 buildInputs = [ zigBin pkgs.gsl pkgs.pkg-config pkgs.llvmPackages.bintools pkgs.pax-utils pkgs.binutils ];
39 buildPhase = ''
40 set -x
41 export ZIG_GLOBAL_CACHE_DIR=$PWD
42 mkdir -p $out/bin
43 zig build-exe main.c -femit-bin=$out/bin/test-zig $(pkg-config --cflags --libs gsl)
44 set +x
45 '';
46 inherit postInstall;
47 };
48 packages.test-gcc = pkgs.stdenv.mkDerivation {
49 name = "test-gcc";
50 src = ./.;
51 buildInputs = [ pkgs.gsl pkgs.pkg-config pkgs.pax-utils pkgs.binutils ];
52 buildPhase = ''
53 set -x
54 mkdir -p $out/bin
55 gcc main.c -o $out/bin/test-gcc $(pkg-config --cflags --libs gsl)
56 set +x
57 '';
58 inherit postInstall;
59 };
60 devShells.default = pkgs.mkShell {
61 packages = [
62 zig
63 pkgs.gsl
64 #pkgs.blas
65 pkgs.pkg-config
66 ];
67 };
68 });
69 }