about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorTheofilos Augoustis <theofilos.augoustis@gmail.com>2025-10-17 11:39:49 +0000
committerTheofilos Augoustis <theofilos.augoustis@gmail.com>2025-10-30 13:41:07 +0000
commit5b712ab8e1fdc3f18181d5a5970db6ef3e314c95 (patch)
tree2453eabaf2003bde22928391d745802e328ad684
parent35a0e5d31bf4559417226f0463bdf71cd91cf326 (diff)
downloadfocaccia-5b712ab8e1fdc3f18181d5a5970db6ef3e314c95.tar.gz
focaccia-5b712ab8e1fdc3f18181d5a5970db6ef3e314c95.zip
Add support for building entire musl with reduced x86 instruction set
-rw-r--r--flake.nix34
1 files changed, 26 insertions, 8 deletions
diff --git a/flake.nix b/flake.nix
index 2585ebd..1ce0037 100644
--- a/flake.nix
+++ b/flake.nix
@@ -54,6 +54,30 @@
 			};
 		};
 
+		minimal-compile-flags = " -mno-xsave -mno-xsaveopt -mno-xsavec -mno-xsaves -mno-avx" +
+					  			" -mno-avx2 -mno-avx512f";
+		musl-minimal-pkgs = import nixpkgs {
+			inherit system;
+			crossSystem = {
+				config = "${system}-musl";
+			};
+			overlays = [
+				(final: prev: {
+					stdenv = prev.stdenv.override (old: {
+						cc = if old.cc != null then old.cc.overrideAttrs (ccOld: {
+							env = let
+								oldEnv = ccOld.env or {};
+								oldFlags = oldEnv.NIX_CFLAGS_COMPILE or "";
+							in
+							oldEnv // {
+								NIX_CFLAGS_COMPILE = oldFlags + minimal-compile-flags;
+							};
+						}) else null;
+					});
+				})
+			];
+		};
+
 		# Pin Python version
 		python = pkgs.python312;
 
@@ -249,14 +273,8 @@
 
 		gdbInternal = pkgs.gdb.override { python3 = python; };
 
-		redis-flags = " -mno-xsave -mno-xsaveopt -mno-xsavec -mno-xsaves -mno-avx" +
-					  " -mno-avx2 -mno-avx512f";
-		musl-redis-nocheck = musl-pkgs.pkgsStatic.redis.overrideAttrs (old: rec {
+		musl-minimal-redis-nocheck = musl-minimal-pkgs.pkgsStatic.redis.overrideAttrs (old: {
 			doCheck = false;
-			env = (old.env or {}) // {
-				NIX_CFLAGS_COMPILE = (old.env.NIX_CFLAGS_COMPILE or "") + redis-flags;
-			};
-			makeFlags = (old.makeFlags or []) ++ [ "CFLAGS=${env.NIX_CFLAGS_COMPILE}" ];
 		});
 	in rec {
 		# Default package just builds Focaccia
@@ -380,8 +398,8 @@
 					packages.dev
 					pkgs.rr
 					musl-pkgs.gcc
-					musl-redis-nocheck
 					musl-pkgs.pkg-config
+					musl-minimal-redis-nocheck
 				];
 
 				hardeningDisable = [ "pie" ];