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-11-11 08:54:51 +0000
commitf007f43dfd8129a51e8c02df80a6b7eda8c8e99d (patch)
tree873d7d54dc03f7477645b0a809fd5effb34363d1
parentee64519abb38d4d30d0704ad6f79f700aa53ee47 (diff)
downloadfocaccia-f007f43dfd8129a51e8c02df80a6b7eda8c8e99d.tar.gz
focaccia-f007f43dfd8129a51e8c02df80a6b7eda8c8e99d.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 9520807..9a9b9f8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -55,6 +55,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;
 
@@ -255,14 +279,8 @@
 			src = ./rr;
 		});
 
-		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
@@ -418,7 +436,7 @@
 					pkgs.capnproto
 					musl-pkgs.gcc
 					musl-pkgs.pkg-config
-					musl-redis-nocheck
+					musl-minimal-redis-nocheck
 				];
 
 				hardeningDisable = [ "pie" ];