about summary refs log tree commit diff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..9021e96
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,65 @@
+{
+  inputs = {
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+  };
+
+  outputs =
+    { self, nixpkgs }:
+    let
+      systems = [
+        "x86_64-linux"
+        "x86_64-darwin"
+        "aarch64-linux"
+        "aarch64-darwin"
+        "riscv64-linux"
+      ];
+
+      eachSystem =
+        f:
+        nixpkgs.lib.genAttrs systems (
+          system:
+          f {
+            inherit system;
+            pkgs = import nixpkgs { inherit system; };
+          }
+        );
+    in
+    {
+      devShells = eachSystem (
+        { system, pkgs }:
+        with pkgs;
+        let
+          stdenv = llvmPackages.stdenv;
+          shell = mkShell.override { inherit stdenv; };
+
+          musl-src = runCommand "musl-src" { } ''
+            mkdir $out
+            tar -xf ${musl.src} -C $out
+          '';
+
+          musl-static = musl.overrideAttrs (attrs: {
+            # this HAS the be fixed in upstream nixpkgs one day, right?
+            CFLAGS = attrs.CFLAGS ++ [
+              "-fdebug-prefix-map=/build=${musl-src}"
+            ];
+            seperateDebugInfo = false;
+            dontStrip = true;
+          });
+        in
+        {
+          default = shell {
+            buildInputs = [
+              musl-static
+            ];
+
+            nativeBuildInputs = [
+              pkg-config
+              gnumake
+              lldb
+              llvmPackages.bintools
+            ];
+          };
+        }
+      );
+    };
+}