nixVersions: move buildNix functionality into common.nix

main
Bernardo Meurer 2 years ago
parent c1d240ffcb
commit 421abd6e8a
No known key found for this signature in database
GPG Key ID: F4C0D53B8D14C246
  1. 36
      pkgs/tools/package-management/nix/common.nix
  2. 58
      pkgs/tools/package-management/nix/default.nix

@ -1,3 +1,15 @@
{ lib, fetchFromGitHub
, version
, suffix ? ""
, sha256 ? null
, src ? fetchFromGitHub { owner = "NixOS"; repo = "nix"; rev = version; inherit sha256; }
, patches ? [ ]
}:
assert (sha256 == null) -> (src != null);
let
atLeast24 = lib.versionAtLeast version "2.4pre";
atLeast25 = lib.versionAtLeast version "2.5pre";
in
{ stdenv
, autoconf-archive
, autoreconfHook
@ -32,7 +44,7 @@
, util-linuxMinimal
, xz
, enableDocumentation ? lib.versionOlder version "2.4pre" || stdenv.hostPlatform == stdenv.buildPlatform
, enableDocumentation ? atLeast24 || stdenv.hostPlatform == stdenv.buildPlatform
, enableStatic ? stdenv.hostPlatform.isStatic
, withAWS ? !enableStatic && (stdenv.isLinux || stdenv.isDarwin), aws-sdk-cpp
, withLibseccomp ? lib.meta.availableOn stdenv.hostPlatform libseccomp, libseccomp
@ -40,32 +52,18 @@
, confDir
, stateDir
, storeDir
, version
, src
, suffix ? ""
, patches ? [ ]
}:
let
sh = busybox-sandbox-shell;
atLeast24 = lib.versionAtLeast version "2.4pre";
atLeast25 = lib.versionAtLeast version "2.5pre";
nix-aws-sdk = (aws-sdk-cpp.override {
apis = [ "s3" "transfer" ];
customMemoryManagement = false;
}).overrideDerivation (args: {
patches = (args.patches or [ ]) ++ [ ./patches/aws-sdk-cpp-TransferManager-ContentEncoding.patch ];
});
in
stdenv.mkDerivation {
pname = "nix";
inherit src patches;
version = "${version}${suffix}";
VERSION_SUFFIX = suffix;
inherit src patches;
outputs =
[ "out" "dev" ]
++ lib.optionals enableDocumentation [ "man" "doc" ];
@ -108,7 +106,7 @@ stdenv.mkDerivation {
] ++ lib.optionals withLibseccomp [
libseccomp
] ++ lib.optionals withAWS [
nix-aws-sdk
aws-sdk-cpp
];
propagatedBuildInputs = [ boehmgc ];
@ -208,6 +206,6 @@ stdenv.mkDerivation {
passthru = {
inherit boehmgc;
perl-bindings = perl.pkgs.toPerlModule (callPackage ./nix-perl.nix { inherit version src; });
perl-bindings = perl.pkgs.toPerlModule (callPackage ./nix-perl.nix { inherit src version; });
};
}

@ -1,8 +1,10 @@
{ lib
, aws-sdk-cpp
, boehmgc
, callPackage
, fetchFromGitHub
, fetchurl
, fetchpatch
, Security
, storeDir ? "/nix/store"
@ -10,64 +12,52 @@
, confDir ? "/etc"
}:
let
boehmgc_nix_2_3 = boehmgc.override { enableLargeConfig = true; };
boehmgc-nix_2_3 = boehmgc.override { enableLargeConfig = true; };
boehmgc_nix = boehmgc_nix_2_3.overrideAttrs (drv: {
boehmgc-nix = boehmgc-nix_2_3.overrideAttrs (drv: {
# Part of the GC solution in https://github.com/NixOS/nix/pull/4944
patches = (drv.patches or [ ]) ++ [ ./patches/boehmgc-coroutine-sp-fallback.patch ];
});
buildNix =
{ version
, suffix ? ""
, src ? null
, sha256 ? null
, boehmgc ? boehmgc_nix
, patches ? [ ]
}:
assert (src == null) -> (sha256 != null);
assert (sha256 == null) -> (src != null);
callPackage ./common.nix {
inherit version suffix;
src =
if src != null
then src
else fetchFromGitHub {
owner = "NixOS";
repo = "nix";
rev = version;
inherit sha256;
};
aws-sdk-cpp-nix = (aws-sdk-cpp.override {
apis = [ "s3" "transfer" ];
customMemoryManagement = false;
}).overrideDerivation (args: {
patches = (args.patches or [ ]) ++ [ ./patches/aws-sdk-cpp-TransferManager-ContentEncoding.patch ];
});
inherit boehmgc patches Security;
inherit storeDir stateDir confDir;
};
common = args:
callPackage
(import ./common.nix ({ inherit lib fetchFromGitHub; } // args))
{
inherit Security storeDir stateDir confDir;
boehmgc = boehmgc-nix;
aws-sdk-cpp = aws-sdk-cpp-nix;
};
in rec {
nix_2_3 = buildNix rec {
nix_2_3 = (common rec {
version = "2.3.16";
src = fetchurl {
url = "https://nixos.org/releases/nix/nix-${version}/nix-${version}.tar.xz";
sha256 = "sha256-fuaBtp8FtSVJLSAsO+3Nne4ZYLuBj2JpD2xEk7fCqrw=";
};
boehmgc = boehmgc_nix_2_3;
};
}).override { boehmgc = boehmgc-nix_2_3; };
nix_2_4 = buildNix {
nix_2_4 = common {
version = "2.4";
sha256 = "sha256-op48CCDgLHK0qV1Batz4Ln5FqBiRjlE6qHTiZgt3b6k=";
# https://github.com/NixOS/nix/pull/5537
patches = [ ./patches/install-nlohmann_json-headers.patch ];
};
nix_2_5 = buildNix {
nix_2_5 = common {
version = "2.5.1";
sha256 = "sha256-GOsiqy9EaTwDn2PLZ4eFj1VkXcBUbqrqHehRE9GuGdU=";
# https://github.com/NixOS/nix/pull/5536
patches = [ ./patches/install-nlohmann_json-headers.patch ];
};
nix_2_6 = buildNix {
nix_2_6 = common {
version = "2.6.0";
sha256 = "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=";
};
@ -75,7 +65,7 @@ in rec {
# FIXME: nix_2_6 is broken on aarch64-darwin for now.
stable = nix_2_5;
unstable = lib.lowPrio (buildNix rec {
unstable = lib.lowPrio (common rec {
version = "2.7";
suffix = "pre20220124_${lib.substring 0 7 src.rev}";
src = fetchFromGitHub {

Loading…
Cancel
Save