
By replacing upstream's pg_config binary with a shell script, we: - gain the ability to run pg_config easily when cross-compiling, - can remove the fake pg_config in the default output, - can remove the pg_config wrapper script dealing with special cases. Some 20 years ago, pg_config *was* a shell script upstream, too. It was changed to a binary, when it was made "relocatable", so it would return paths depending on the location of the "postgres" binary. However, this is exactly the thing that just hurts us in nixpkgs - we don't want those paths to change, we want them to always point at the right outputs. By writing the script ourselves, this becomes a lot less painful. This approach means more lines of codes, but all of them are dead simple and we have a lot less complexity overall. Additionally, pg_config is now made a separate derivation, only exposed as "postgresql.pg_config". This has the nice side-effect, that all users of postgresql and libpq in nixpkgs must be very *explicit* about their dependency on pg_config. This gives a lot more visibility into the state of affairs regarding pkg-config support for libpq, which ultimately is the much better solution.
6.6 KiB
Nixpkgs 25.05 (2025.05/??)
Backward Incompatibilities
-
services.rippled
has been removed, asrippled
was broken and had not been updated since 2022. -
services.rippleDataApi
has been removed, asripple-data-api
was broken and had not been updated since 2022. -
squid
has been updated to version 7, this release includes multiple breaking changes, like ESI removal. For more information, check the release notes. -
postgresql
andlibpq
don't providepg_config
by default anymore. Instead,pg_config
is available viapostgresql.pg_config
orlibpq.pg_config
. This allowed implementing it as a shell script, which can be build for both the build and host systems when cross-compiling. If your build fails to findpg_config
, addpostgresql.pg_config
orlibpq.pg_config
tonativeBuildInputs
. -
The
no-broken-symlinks
hook was added to catch builds containing dangling or reflexive symlinks, as these are indicative of problems with packaging. The hook can be disabled by providingdontCheckForBrokenSymlinks = true;
as an argument tomkDerivation
. For more information, check the docs or see this PR. -
The hand written
perlPackages.SearchXapian
bindings have been dropped in favor of the (mostly compatible)perlPackages.Xapian
. -
testers.shellcheck now warns when
name
is not provided. Thename
argument will become mandatory in a future release. -
The
nixLog*
family of functions made available through the standard environment have been rewritten to prefix messages with both the debug level and the function name of the caller. ThenixLog
function, which logs unconditionally, was also re-introduced and modified to prefix messages with the function name of the caller. For more information, see this PR. -
The
rustPlatform.fetchCargoTarball
function is deprecated, because it relied oncargo vendor
not changing its output format to keep fixed-output derivation hashes the same, which is a Nix invariant, and Cargo 1.84.0 changedcargo vendor
's output format. It should generally be replaced withrustPlatform.fetchCargoVendor
, butrustPlatform.importCargoLock
may also be appropriate in some circumstances.rustPlatform.buildRustPackage
users must setuseFetchCargoVendor
totrue
and regenerate thecargoHash
. -
NetBox was updated to
>= 4.2.0
. Have a look at the breaking changes of the 4.1 release and the 4.2 release, make the required changes to your database, if needed, then upgrade by settingservices.netbox.package = pkgs.netbox_4_2;
in your configuration. -
NetBox version 4.0.X available as
netbox_4_0
was removed. Please upgrade to4.2
. -
i3status-rust
-package no longer enablesnotmuch
by default. It can be enabled viawithNotmuch
. -
Default ICU version updated from 74 to 76
Titanium removed
titaniumenv
,titanium
, andtitanium-alloy
have been removed due to lack of maintenance in Nixpkgs.
NexusMods.App upgraded
-
nexusmods-app
has been upgraded from version 0.6.3 to 0.8.2.-
Before upgrading, you must reset all app state (mods, games, settings, etc). NexusMods.App will crash if any state from a version older than 0.7.0 is still present.
-
Typically, you can can reset to a clean state by running
NexusMods.App uninstall-app
. See Nexus Mod's how to uninstall the app documentation for more detail and alternative methods. -
This should not be necessary going forward, because loading app state from 0.7.0 or newer is now supported. This is documented in the 0.7.1 changelog.
-
Nixpkgs Library
Breaking changes
-
Structure of the
functor
of some types has changed.functor
is an implementation detail and should not be relied upon. If you did rely on it let us know in this PR.lib.types.enum
: Previously thefunctor.payload
was the list of enum values directly. Now it is an attribute set containing the values in thevalues
attribute.lib.types.separatedString
: Previously thefunctor.payload
was the separator directly. Now it is an attribute set containing the separator in thesep
attribute.
-
The
tinycc
package now has thedev
,doc
andlib
outputs, thus,tinycc.out
may now only provide the tcc and cross compilers binaries. -
The
virtualisation.hypervGuest.videoMode
option has been removed. Standard tooling can now be used to configure display modes for Hyper-V VMs.
Deprecations
-
functor
is an implementation detail and should not be relied upon, but since its status wasn't clear and it has had some use cases without alternatives, changes are being handled as gracefully as possible. Deprecations within functor:functor.wrapped
is now deprecated for some types and using it will give a warning with migration instructions. It is deprecated for these types:lib.types.attrsWith
lib.types.listOf
lib.types.unique
andlib.types.uniq
lib.types.nullOr
lib.types.functionTo
lib.types.coercedTo
lib.types.either
-
Plasma 5 and Qt 5 based versions of associated software are deprecated in NixOS 25.05, and will be removed in NixOS 25.11. Users are encouraged to upgrade to Plasma 6.
-
rustPlatform.buildRustPackage
stops handling the deprecated argumentcargoSha256
. Out-of-tree packages that haven't migrated fromcargoSha256
tocargoHash
now receive errors.