about summary refs log tree commit diff stats
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix52
1 files changed, 44 insertions, 8 deletions
diff --git a/flake.nix b/flake.nix
index fccabba..a1420ba 100644
--- a/flake.nix
+++ b/flake.nix
@@ -6,8 +6,6 @@
 
 		nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 
-		nixpkgs-qemu-60.url = "github:nixos/nixpkgs/f8f124009497b3f9908f395d2533a990feee1de8";
-
 		flake-utils.url = "github:numtide/flake-utils";
 
 		pyproject-nix = {
@@ -27,21 +25,24 @@
 			inputs.nixpkgs.follows = "nixpkgs";
 			inputs.pyproject-nix.follows = "pyproject-nix";
 		};
+
+		qemu-submodule = {
+			url = "path:qemu/";
+			flake = true;
+		};
 	};
 
-	outputs = inputs@{
-		self,
+	outputs = {
 		uv2nix,
 		nixpkgs,
 		flake-utils,
 		pyproject-nix,
 		pyproject-build-systems,
+		qemu-submodule,
 		...
 	}:
 	flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system:
 	let
-		qemu-60 = inputs.nixpkgs-qemu-60.qemu;
-
 		# Refine nixpkgs used in flake to system arch
 		pkgs = import nixpkgs {
 			inherit system;
@@ -248,6 +249,11 @@
 		'';
 
 		gdbInternal = pkgs.gdb.override { python3 = python; };
+		rr = pkgs.rr.overrideAttrs (old: {
+			pname = "focaccia-rr";
+			version = "git";
+			src = ./rr;
+		});
 	in rec {
 		# Default package just builds Focaccia
 		packages = rec {
@@ -271,6 +277,8 @@
 				];
 			});
 
+			qemu-plugin = qemu-submodule.packages.${system}.default;
+
 			default = focaccia;
 		};
 
@@ -302,7 +310,6 @@
 
 			validate-qemu = {
 				type = "app";
-				# program = "${packages.focaccia}/bin/validate-qemu";
 				program = let
 					wrapper = pkgs.writeShellScriptBin "validate-qemu" ''
 						exec ${packages.focaccia}/bin/validate-qemu --gdb "${gdbInternal}/bin/gdb" "$@"
@@ -318,7 +325,8 @@
 				type = "app";
 				program = "${pkgs.writeShellScriptBin "uv-sync" ''
 					set -euo pipefail
-					exec ${pkgs.uv}/bin/uv sync
+					${pkgs.uv}/bin/uv sync
+					sed -i '/riscv/d' uv.lock
 				''}/bin/uv-sync";
 				meta = {
 					description = "Sync uv python packages";
@@ -351,6 +359,19 @@
 					packages.dev
 					musl-pkgs.gcc
 					musl-pkgs.pkg-config
+				];
+
+				hardeningDisable = [ "pie" ];
+
+				env = uvEnv;
+				shellHook = uvShellHook;
+			};
+
+			musl-box64 = pkgs.mkShell {
+				packages = [
+					packages.dev
+					musl-pkgs.gcc
+					musl-pkgs.pkg-config
                     box64-patched
 				];
 
@@ -364,6 +385,21 @@
                   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${zydis-shared-object}/lib
                 '';
 			};
+
+			musl-extra = pkgs.mkShell {
+				packages = [
+					packages.dev
+					rr
+					musl-pkgs.gcc
+					pkgs.capnproto
+					musl-pkgs.pkg-config
+				];
+
+				hardeningDisable = [ "pie" ];
+
+				env = uvEnv;
+				shellHook = uvShellHook;
+			};
 		};
 
 		checks = {