cross: add a cantBinfmt
option to force a package to be built on a non-binfmt machine
This commit is contained in:
parent
ac3b0b873b
commit
801da9d321
|
@ -1,4 +1,4 @@
|
|||
{ lib, pkgs, ... }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
|
@ -68,6 +68,11 @@
|
|||
HandlePowerKey=ignore
|
||||
'';
|
||||
|
||||
# some packages build only if binfmt *isn't* present
|
||||
nix.settings.system-features = lib.mkIf (config.boot.binfmt.emulatedSystems == []) [
|
||||
"no-binfmt"
|
||||
];
|
||||
|
||||
# services.snapper.configs = {
|
||||
# root = {
|
||||
# subvolume = "/";
|
||||
|
|
|
@ -94,6 +94,7 @@ in
|
|||
speedFactor = 2;
|
||||
supportedFeatures = [
|
||||
# "big-parallel" # it can't reliably build webkitgtk
|
||||
"no-binfmt"
|
||||
];
|
||||
mandatoryFeatures = [ ];
|
||||
sshUser = "nixremote";
|
||||
|
|
|
@ -60,7 +60,8 @@ let
|
|||
pkg
|
||||
);
|
||||
|
||||
needsBinfmt = pkg: pkg.overrideAttrs (upstream: {
|
||||
needsBinfmt = pkg: (pkg.overrideAttrs or (updater: pkg // (updater pkg))) (upstream: {
|
||||
# weird signature to support passing *either* a package, or an ordinary attrset
|
||||
# "kvm" isn't precisely the right feature here.
|
||||
# but the effect is that if you build a `needsBinfmt` package with `-j0`,
|
||||
# then nix will try to find a builder that's been marked with `kvm` feature,
|
||||
|
@ -68,6 +69,9 @@ let
|
|||
# be built on a binfmt-enabled builder (or not built, if no binfmt builders).
|
||||
requiredSystemFeatures = (upstream.requiredSystemFeatures or []) ++ [ "kvm" ];
|
||||
});
|
||||
cantBinfmt = pkg: (pkg.overrideAttrs or (updater: pkg // (updater pkg))) (upstream: {
|
||||
requiredSystemFeatures = (upstream.requiredSystemFeatures or []) ++ [ "no-binfmt" ];
|
||||
});
|
||||
|
||||
# such packages could build with `needsBinfmt` *or* `buildInQemu`.
|
||||
# - the former is [an order of magnitude] faster, but the latter gets me closer to a pure installation.
|
||||
|
|
Loading…
Reference in New Issue
Block a user