diff --git a/lib/tests/release.nix b/lib/tests/release.nix index 5b2a9df1635c..1447e8817091 100644 --- a/lib/tests/release.nix +++ b/lib/tests/release.nix @@ -2,7 +2,7 @@ # Don't test properties of pkgs.lib, but rather the lib in the parent directory pkgs ? import ../.. {} // { lib = throw "pkgs.lib accessed, but the lib tests should use nixpkgs' lib path directly!"; }, nix ? pkgs-nixVersions.stable, - nixVersions ? [ pkgs-nixVersions.minimum nix pkgs-nixVersions.unstable ], + nixVersions ? [ pkgs-nixVersions.minimum nix pkgs-nixVersions.latest ], pkgs-nixVersions ? import ./nix-for-tests.nix { inherit pkgs; }, }: diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 16e9604722f8..3ceae898fbae 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -30,6 +30,10 @@ In addition to numerous new and upgraded packages, this release has the followin To disable this, set [nixpkgs.flake.setNixPath](#opt-nixpkgs.flake.setNixPath) and [nixpkgs.flake.setFlakeRegistry](#opt-nixpkgs.flake.setFlakeRegistry) to false. +- `nixVersions.unstable` was removed. Instead the following attributes are provided: + - `nixVersions.git` which tracks the latest Nix master and is roughly updated once a week. This is intended to enable people to easily test unreleased changes of Nix to catch regressions earlier. + - `nixVersions.latest` which points to the latest Nix version packaged in nixpkgs. + - Julia environments can now be built with arbitrary packages from the ecosystem using the `.withPackages` function. For example: `julia.withPackages ["Plots"]`. - The PipeWire and WirePlumber modules have removed support for using diff --git a/pkgs/development/tools/language-servers/nil/default.nix b/pkgs/development/tools/language-servers/nil/default.nix index 19822d2977fc..88d4a6fd3668 100644 --- a/pkgs/development/tools/language-servers/nil/default.nix +++ b/pkgs/development/tools/language-servers/nil/default.nix @@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec { cargoHash = "sha256-lyKPmzuZB9rCBI9JxhxlyDtNHLia8FXGnSgV+D/dwgo="; nativeBuildInputs = [ - (lib.getBin nixVersions.unstable) + (lib.getBin nixVersions.latest) ]; env.CFG_RELEASE = version; diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 3eb49fb62b3d..f36497cda34d 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -179,6 +179,19 @@ in lib.makeExtensible (self: ({ hash = "sha256-Ugcc+lSq8nJP+mddMlGFnoG4Ix1lRFHWOal3299bqR8="; }; + git = common rec { + version = "2.23.0"; + suffix = "pre20240426_${lib.substring 0 8 src.rev}"; + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + rev = "2f678331d59451dd6f1d9512cb6d92e4ecb9750f"; + hash = "sha256-4AwaLB/gTRgvZG4FmFY6OY52yeLAnj0a6rtJCz7TRXA="; + }; + }; + + latest = self.nix_2_21; + # The minimum Nix version supported by Nixpkgs # Note that some functionality *might* have been backported into this Nix version, # making this package an inaccurate representation of what features are available @@ -197,8 +210,6 @@ in lib.makeExtensible (self: ({ nix; stable = addFallbackPathsCheck self.nix_2_18; - - unstable = self.nix_2_22; } // lib.optionalAttrs config.allowAliases ( lib.listToAttrs (map ( minor: @@ -207,4 +218,7 @@ in lib.makeExtensible (self: ({ in lib.nameValuePair attr (throw "${attr} has been removed") ) (lib.range 4 17)) + // { + unstable = throw "nixVersions.unstable has been removed. For bleeding edge (Nix master, roughly weekly updated) use nixVersions.git, otherwise use nixVersions.latest."; + } ))) diff --git a/pkgs/tools/package-management/nix/nix-perl.nix b/pkgs/tools/package-management/nix/nix-perl.nix index 0796a0914f1f..8fc2657657af 100644 --- a/pkgs/tools/package-management/nix/nix-perl.nix +++ b/pkgs/tools/package-management/nix/nix-perl.nix @@ -9,35 +9,75 @@ , autoreconfHook , autoconf-archive , nlohmann_json +, xz , Security +, meson +, ninja +, bzip2 }: -stdenv.mkDerivation { +let + atLeast223 = lib.versionAtLeast nix.version "2.23"; + + mkConfigureOption = { mesonOption, autoconfOption, value }: + let + setFlagTo = if atLeast223 + then lib.mesonOption mesonOption + else lib.withFeatureAs true autoconfOption; + in + setFlagTo value; +in stdenv.mkDerivation (finalAttrs: { pname = "nix-perl"; inherit (nix) version src; postUnpack = "sourceRoot=$sourceRoot/perl"; - buildInputs = lib.optional (stdenv.isDarwin) Security; - - # This is not cross-compile safe, don't have time to fix right now - # but noting for future travellers. - nativeBuildInputs = [ - autoconf-archive - autoreconfHook + buildInputs = [ boost + bzip2 curl libsodium nix - nlohmann_json perl + xz + ] ++ lib.optional (stdenv.isDarwin) Security; + + # Not cross-safe since Nix checks for curl/perl via + # NEED_PROG/find_program, but both seem to be needed at runtime + # as well. + nativeBuildInputs = [ pkg-config + perl + curl + ] ++ (if atLeast223 then [ + meson + ninja + ] else [ + autoconf-archive + autoreconfHook + ]); + + # `perlPackages.Test2Harness` is marked broken for Darwin + doCheck = !stdenv.isDarwin; + + nativeCheckInputs = [ + perl.pkgs.Test2Harness ]; - configureFlags = [ - "--with-dbi=${perl.pkgs.DBI}/${perl.libPrefix}" - "--with-dbd-sqlite=${perl.pkgs.DBDSQLite}/${perl.libPrefix}" + ${if atLeast223 then "mesonFlags" else "configureFlags"} = [ + (mkConfigureOption { + mesonOption = "dbi_path"; + autoconfOption = "dbi"; + value = "${perl.pkgs.DBI}/${perl.libPrefix}"; + }) + (mkConfigureOption { + mesonOption = "dbd_sqlite_path"; + autoconfOption = "dbd-sqlite"; + value = "${perl.pkgs.DBDSQLite}/${perl.libPrefix}"; + }) + ] ++ lib.optionals atLeast223 [ + (lib.mesonEnable "tests" finalAttrs.doCheck) ]; preConfigure = "export NIX_STATE_DIR=$TMPDIR"; -} +})