diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 2b89b37f7864..74609412782c 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -193,15 +193,21 @@ in rec { "__darwinAllowLocalNetworking" "__impureHostDeps" "__propagatedImpureHostDeps" "sandboxProfile" "propagatedSandboxProfile"]) - // (lib.optionalAttrs (!(attrs ? name) && attrs ? pname && attrs ? version)) { - name = "${attrs.pname}-${attrs.version}"; - } // (lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform && !dontAddHostSuffix && (attrs ? name || (attrs ? pname && attrs ? version)))) { - # Fixed-output derivations like source tarballs shouldn't get a host - # suffix. But we have some weird ones with run-time deps that are - # just used for their side-affects. Those might as well since the - # hash can't be the same. See #32986. - name = "${attrs.name or "${attrs.pname}-${attrs.version}"}-${stdenv.hostPlatform.config}"; - } // { + // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) { + name = + let + staticMarker = lib.optionalString stdenv.hostPlatform.isStatic "-static"; + name' = attrs.name or + "${attrs.pname}${staticMarker}-${attrs.version}"; + # Fixed-output derivations like source tarballs shouldn't get a host + # suffix. But we have some weird ones with run-time deps that are + # just used for their side-affects. Those might as well since the + # hash can't be the same. See #32986. + hostSuffix = lib.optionalString + (stdenv.hostPlatform != stdenv.buildPlatform && !dontAddHostSuffix) + "-${stdenv.hostPlatform.config}"; + in name' + hostSuffix; + }) // { builder = attrs.realBuilder or stdenv.shell; args = attrs.args or ["-e" (attrs.builder or ./default-builder.sh)]; inherit stdenv; diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 2358f6e33505..7eda5ae6f358 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -24,14 +24,13 @@ common = , withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp , withAWS ? !enableStatic && (stdenv.isLinux || stdenv.isDarwin), aws-sdk-cpp , enableStatic ? stdenv.hostPlatform.isStatic - , name, suffix ? "", src + , pname, version, suffix ? "", src , patches ? [ ] }: let sh = busybox-sandbox-shell; nix = stdenv.mkDerivation rec { - inherit name src patches; - version = lib.getVersion name; + inherit pname version src patches; is24 = lib.versionAtLeast version "2.4pre"; @@ -196,9 +195,10 @@ in rec { nix = nixStable; nixStable = callPackage common (rec { - name = "nix-2.3.10"; + pname = "nix"; + version = "2.3.10"; src = fetchurl { - url = "https://nixos.org/releases/nix/${name}/${name}.tar.xz"; + url = "https://nixos.org/releases/nix/${pname}-${version}/${pname}-${version}.tar.xz"; sha256 = "a8a85e55de43d017abbf13036edfb58674ca136691582f17080c1cd12787b7ab"; }; @@ -213,7 +213,8 @@ in rec { }); nixUnstable = lib.lowPrio (callPackage common rec { - name = "nix-2.4${suffix}"; + pname = "nix"; + version = "2.4${suffix}"; suffix = "pre20210326_dd77f71"; src = fetchFromGitHub {