···6464 of the [4.3 release](https://github.com/netbox-community/netbox/releases/tag/v4.2.0),
6565 make the required changes to your database, if needed, then upgrade by setting `services.netbox.package = pkgs.netbox_4_3;` in your configuration.
66666767+- `privatebin` has been updated to `2.0.0`. This release changes configuration defaults including switching the template and removing legacy features. See the [v2.0.0 changelog entry](https://github.com/PrivateBin/PrivateBin/releases/tag/2.0.0) for details on how to upgrade.
6868+6769- `go-mockery` has been updated to v3. For migration instructions see the [upstream documentation](https://vektra.github.io/mockery/latest/v3/). If v2 is still required `go-mockery_v2` has been added but will be removed on or before 2029-12-31 in-line with it's [upstream support lifecycle](https://vektra.github.io/mockery/
68706971- [private-gpt](https://github.com/zylon-ai/private-gpt) service has been removed by lack of maintenance upstream.
···10101111rustPlatform.buildRustPackage (finalAttrs: {
1212 pname = "atuin";
1313- version = "18.7.1";
1313+ version = "18.8.0";
14141515 src = fetchFromGitHub {
1616 owner = "atuinsh";
1717 repo = "atuin";
1818 tag = "v${finalAttrs.version}";
1919- hash = "sha256-KHATm505ysJAIGCd2UvkMEIFhp7huPYW5ly+jq1HLdc=";
1919+ hash = "sha256-FJEXIxdeg6ExXvrQ3dtugMK5xw+NwWyB+ld9rj7okoU=";
2020 };
21212222- cargoHash = "sha256-ZzMNU3FqD4bD96gEXaTphuM7MqRBBSYZTxIJSNtw+EI=";
2222+ cargoHash = "sha256-xJPSMu22Bq9Panrafsd5vUSnEQYuJB19OEZaAq8z0mw=";
23232424 # atuin's default features include 'check-updates', which do not make sense
2525 # for distribution builds. List all other default features.
···11+diff --git a/src/audio.c b/src/audio.c
22+index d1b9762..cb544dd 100644
33+44+This package assumes that there will always be an audio device while testing.
55+If there is not an audio device, it segfaults. So in the Nix sandbox, it
66+unconditionally segfaults without this patch. This patch allows the tests
77+to flow through the normal error handling logic.
88+99+--- a/src/audio.c
1010++++ b/src/audio.c
1111+@@ -637,7 +637,6 @@ int start_portaudio(int device, int *nominal_sample_rate, double *real_sample_ra
1212+ if(testing) {
1313+ *nominal_sample_rate = PA_SAMPLE_RATE;
1414+ *real_sample_rate = PA_SAMPLE_RATE;
1515+- goto end;
1616+ }
1717+ #endif
1818+
···1717buildPythonPackage rec {
1818 pname = "setuptools-git-versioning";
1919 version = "2.1.0";
2020- format = "pyproject";
2020+ pyproject = true;
21212222 src = fetchFromGitHub {
2323 owner = "dolfinus";
···2525 tag = "v${version}";
2626 hash = "sha256-Slf6tq83LajdTnr98SuCiFIdm/6auzftnARLAOBgyng=";
2727 };
2828+2929+ postPatch = ''
3030+ # Because the .git dir is missing, it falls back to using version 0.0.1
3131+ # Instead we use the version specified in the derivation
3232+ substituteInPlace setup.py --replace-fail \
3333+ 'version=version_from_git(root=here, dev_template="{tag}.post{ccount}")' \
3434+ "version='${version}'"
3535+ '';
28362937 build-system = [
3038 setuptools
···2626 isAttrs
2727 isString
2828 mapAttrs
2929- filterAttrs
3029 ;
31303231 inherit (lib.lists)
···576575 let
577576 outputs = attrs.outputs or [ "out" ];
578577 hasOutput = out: builtins.elem out outputs;
578578+ maintainersPosition = builtins.unsafeGetAttrPos "maintainers" (attrs.meta or { });
579579+ teamsPosition = builtins.unsafeGetAttrPos "teams" (attrs.meta or { });
579580 in
580581 {
581582 # `name` derivation attribute includes cross-compilation cruft,
···604605 )
605606 ]
606607 ++ optional (hasOutput "man") "man";
607607- }
608608- // (filterAttrs (_: v: v != null) {
608608+609609 # CI scripts look at these to determine pings. Note that we should filter nulls out of this,
610610 # or nix-env complains: https://github.com/NixOS/nix/blob/2.18.8/src/nix-env/nix-env.cc#L963
611611- maintainersPosition = builtins.unsafeGetAttrPos "maintainers" (attrs.meta or { });
612612- teamsPosition = builtins.unsafeGetAttrPos "teams" (attrs.meta or { });
613613- })
611611+ ${if maintainersPosition == null then null else "maintainersPosition"} = maintainersPosition;
612612+ ${if teamsPosition == null then null else "teamsPosition"} = teamsPosition;
613613+ }
614614 // attrs.meta or { }
615615- # Fill `meta.position` to identify the source location of the package.
616616- // optionalAttrs (pos != null) {
617617- position = pos.file + ":" + toString pos.line;
618618- }
619615 // {
616616+ # Fill `meta.position` to identify the source location of the package.
617617+ ${if pos == null then null else "position"} = pos.file + ":" + toString pos.line;
618618+620619 # Maintainers should be inclusive of teams.
621620 # Note that there may be external consumers of this API (repology, for instance) -
622621 # if you add a new maintainer or team attribute please ensure that this expectation is still met.
623622 maintainers =
624623 attrs.meta.maintainers or [ ] ++ concatMap (team: team.members or [ ]) attrs.meta.teams or [ ];
625625- }
626626- // {
624624+627625 # Expose the result of the checks for everyone to see.
628626 unfree = hasUnfreeLicense attrs;
629627 broken = isMarkedBroken attrs;