From 2f05b9e600e4a38b5f37f8e90a5a78c81bff597a Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 25 Oct 2025 19:45:06 -0400 Subject: [PATCH] Add support for specifying a build arch. --- nix/configuration/hosts/odo/default.nix | 1 + nix/configuration/hosts/quark/default.nix | 1 + .../roles/optimized_build/default.nix | 27 +++++++++++++------ nix/configuration/roles/waybar/default.nix | 2 +- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/nix/configuration/hosts/odo/default.nix b/nix/configuration/hosts/odo/default.nix index 67774dd..2cabb7d 100644 --- a/nix/configuration/hosts/odo/default.nix +++ b/nix/configuration/hosts/odo/default.nix @@ -30,6 +30,7 @@ me.optimizations = { enable = true; arch = "znver4"; + # build_arch = "x86-64-v3"; system_features = [ "gccarch-znver4" "gccarch-skylake" diff --git a/nix/configuration/hosts/quark/default.nix b/nix/configuration/hosts/quark/default.nix index 5a9ca1e..34cf8bb 100644 --- a/nix/configuration/hosts/quark/default.nix +++ b/nix/configuration/hosts/quark/default.nix @@ -28,6 +28,7 @@ me.optimizations = { enable = true; arch = "znver4"; + # build_arch = "x86-64-v3"; system_features = [ "gccarch-znver4" "gccarch-znver5" diff --git a/nix/configuration/roles/optimized_build/default.nix b/nix/configuration/roles/optimized_build/default.nix index 27ed12b..7788174 100644 --- a/nix/configuration/roles/optimized_build/default.nix +++ b/nix/configuration/roles/optimized_build/default.nix @@ -24,6 +24,13 @@ description = "The CPU arch for which programs should be optimized."; }; + optimizations.build_arch = lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + example = "znver4"; + description = "The CPU arch for which programs should be optimized."; + }; + optimizations.system_features = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; @@ -61,14 +68,6 @@ system = "x86_64-linux"; }; - # Uncomment on of these to enable cross compiling: - # nixpkgs.buildPlatform = builtins.currentSystem; - # nixpkgs.buildPlatform = { - # gcc.arch = "znver4"; - # gcc.tune = "znver4"; - # system = "x86_64-linux"; - # }; - nixpkgs.overlays = [ ( final: prev: @@ -108,6 +107,18 @@ } ] )) + (lib.mkIf (config.me.optimizations.build_arch != null) ( + lib.mkMerge [ + { + # Enable cross-compiling + nixpkgs.buildPlatform = { + gcc.arch = config.me.optimizations.build_arch; + gcc.tune = "generic"; + system = "x86_64-linux"; + }; + } + ] + )) (lib.mkIf (config.me.optimizations.system_features != [ ]) ( lib.mkMerge [ { diff --git a/nix/configuration/roles/waybar/default.nix b/nix/configuration/roles/waybar/default.nix index 705e0fe..94300dd 100644 --- a/nix/configuration/roles/waybar/default.nix +++ b/nix/configuration/roles/waybar/default.nix @@ -171,7 +171,7 @@ in waybar = pkgs.symlinkJoin { name = prev.waybar.name; paths = [ prev.waybar ]; - buildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/waybar --prefix PATH : ${ lib.makeBinPath [