diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc index a0a0d78b7..74b861281 100644 --- a/src/libstore/derivations.cc +++ b/src/libstore/derivations.cc @@ -57,16 +57,8 @@ bool BasicDerivation::isBuiltin() const bool BasicDerivation::canBuildLocally() const { return platform == settings.thisSystem - || isBuiltin() -#if __linux__ - || (platform == "i686-linux" && settings.thisSystem == "x86_64-linux") - || (platform == "armv6l-linux" && settings.thisSystem == "armv7l-linux") - || (platform == "armv5tel-linux" && (settings.thisSystem == "armv7l-linux" || settings.thisSystem == "armv6l-linux")) -#elif __FreeBSD__ - || (platform == "i686-linux" && settings.thisSystem == "x86_64-freebsd") - || (platform == "i686-linux" && settings.thisSystem == "i686-freebsd") -#endif - ; + || settings.extraPlatforms.get().count(platform) > 0 + || isBuiltin(); } diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh index dd01f832d..b382da01e 100644 --- a/src/libstore/globals.hh +++ b/src/libstore/globals.hh @@ -295,6 +295,9 @@ public: "Nix store has a valid signature (that is, one signed using a key " "listed in 'trusted-public-keys'."}; + Setting extraPlatforms{this, StringSet{}, "build-extra-platforms", + "Additional platforms that can be built on the local system, e.g. using qemu-user."}; + Setting substituters{this, nixStore == "/nix/store" ? Strings{"https://cache.nixos.org/"} : Strings(), "substituters",