Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 21 additions & 8 deletions lib/customisation.nix
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,24 @@ rec {
};
in self;

/* backward compatibility with old uncurried form; deprecated */
makeScopeWithSplicing =
splicePackages: newScope: otherSplices: keep: extra: f:
makeScopeWithSplicing' {
inherit splicePackages newScope otherSplices keep extra f;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This calls makeScopeWithSplicing' incorrectly:

       error: function 'makeScopeWithSplicing'' called with unexpected argument 'f'

       at /nix/store/n9fsxf3g69lp3rhkbb6biqpc18lp2gr8-source/lib/customisation.nix:291:5:

          290|   makeScopeWithSplicing' =
          291|     { splicePackages
             |     ^
          292|     , newScope

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

};

/* Like the above, but aims to support cross compilation. It's still ugly, but
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, this comment is a bit confusing now; it should probably explicitly say "Like makeScope...".

hopefully it helps a little bit. */
makeScopeWithSplicing = splicePackages: newScope: otherSplices: keep: extra: f:
makeScopeWithSplicing' =
{ splicePackages
, newScope
}:
{ otherSplices
, keep ? (_self: {})
, extra ? (_spliced0: {})
, f
}:
let
spliced0 = splicePackages {
pkgsBuildBuild = otherSplices.selfBuildBuild;
Expand All @@ -295,13 +310,11 @@ rec {
callPackage = newScope spliced; # == self.newScope {};
# N.B. the other stages of the package set spliced in are *not*
# overridden.
overrideScope = g: makeScopeWithSplicing
splicePackages
newScope
otherSplices
keep
extra
(lib.fixedPoints.extends g f);
overrideScope = g: (makeScopeWithSplicing'
{ inherit splicePackages newScope; }
{ inherit otherSplices keep extra;
f = lib.fixedPoints.extends g f;
});
packages = f;
};
in self;
Expand Down
2 changes: 1 addition & 1 deletion lib/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ let
noDepEntry fullDepEntry packEntry stringAfter;
inherit (self.customisation) overrideDerivation makeOverridable
callPackageWith callPackagesWith extendDerivation hydraJob
makeScope makeScopeWithSplicing;
makeScope makeScopeWithSplicing makeScopeWithSplicing';
inherit (self.derivations) lazyDerivation;
inherit (self.meta) addMetaAttrs dontDistribute setName updateName
appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio
Expand Down
18 changes: 6 additions & 12 deletions pkgs/desktops/xfce/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,12 @@
, lib
, pkgs
, generateSplicesForMkScope
, makeScopeWithSplicing
, makeScopeWithSplicing'
}:

let
keep = _self: { };
extra = _spliced0: { };

in
makeScopeWithSplicing
(generateSplicesForMkScope "xfce")
keep
extra
(self:
makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "xfce";
f = (self:
let
inherit (self) callPackage;
in
Expand Down Expand Up @@ -177,4 +170,5 @@ makeScopeWithSplicing
thunar-bare = self.thunar.override { thunarPlugins = [ ]; }; # added 2019-11-04

xfce4-hardware-monitor-plugin = throw "xfce.xfce4-hardware-monitor-plugin has been removed: abandoned by upstream and does not build"; # added 2023-01-15
})
});
}
13 changes: 5 additions & 8 deletions pkgs/development/interpreters/lua-5/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ let
# - imports lua-packages.nix
# - adds spliced package sets to the package set
# - applies overrides from `packageOverrides`
({ lua, overrides, callPackage, makeScopeWithSplicing }: let
({ lua, overrides, callPackage, makeScopeWithSplicing' }: let
luaPackagesFun = callPackage ../../../top-level/lua-packages.nix {
lua = self;
};
Expand All @@ -39,18 +39,15 @@ let
selfHostHost = luaOnHostForHost.pkgs;
selfTargetTarget = luaOnTargetForTarget.pkgs or {};
};
keep = self: { };
extra = spliced0: {};
extensions = lib.composeManyExtensions [
generatedPackages
overriddenPackages
overrides
];
in makeScopeWithSplicing
otherSplices
keep
extra
(lib.extends extensions luaPackagesFun))
in makeScopeWithSplicing' {
inherit otherSplices;
f = lib.extends extensions luaPackagesFun;
})
{
overrides = packageOverrides;
lua = self;
Expand Down
13 changes: 5 additions & 8 deletions pkgs/development/interpreters/perl/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ let
# Function that when called
# - imports perl-packages.nix
# - adds spliced package sets to the package set
({ stdenv, pkgs, perl, callPackage, makeScopeWithSplicing }: let
({ stdenv, pkgs, perl, callPackage, makeScopeWithSplicing' }: let
perlPackagesFun = callPackage ../../../top-level/perl-packages.nix {
# allow 'perlPackages.override { pkgs = pkgs // { imagemagick = imagemagickBig; }; }' like in python3Packages
# most perl packages aren't called with callPackage so it's not possible to override their arguments individually
Expand All @@ -34,13 +34,10 @@ let
selfHostHost = perlOnHostForHost.pkgs;
selfTargetTarget = perlOnTargetForTarget.pkgs or {};
};
keep = self: { };
extra = spliced0: {};
in makeScopeWithSplicing
otherSplices
keep
extra
perlPackagesFun)
in makeScopeWithSplicing' {
inherit otherSplices;
f = perlPackagesFun;
})
{
perl = self;
};
Expand Down
2 changes: 1 addition & 1 deletion pkgs/development/interpreters/python/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
, db
, lib
, libffiBoot
, makeScopeWithSplicing
, makeScopeWithSplicing'
, pythonPackagesExtensions
, stdenv
}@args:
Expand Down
13 changes: 5 additions & 8 deletions pkgs/development/interpreters/python/passthrufun.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ lib, stdenv, callPackage, pythonPackagesExtensions, config, makeScopeWithSplicing, ... }:
{ lib, stdenv, callPackage, pythonPackagesExtensions, config, makeScopeWithSplicing', ... }:

{ implementation
, libPrefix
Expand Down Expand Up @@ -48,7 +48,6 @@
};
hooks = import ./hooks/default.nix;
keep = lib.extends hooks pythonPackagesFun;
extra = _: {};
optionalExtensions = cond: as: lib.optionals cond as;
pythonExtension = import ../../../top-level/python-packages.nix;
python2Extension = import ../../../top-level/python2-packages.nix;
Expand All @@ -60,12 +59,10 @@
overrides
]);
aliases = self: super: lib.optionalAttrs config.allowAliases (import ../../../top-level/python-aliases.nix lib self super);
in makeScopeWithSplicing
otherSplices
keep
extra
(lib.extends (lib.composeExtensions aliases extensions) keep))
{
in makeScopeWithSplicing' {
inherit otherSplices keep;
f = lib.extends (lib.composeExtensions aliases extensions) keep;
}) {
overrides = packageOverrides;
python = self;
});
Expand Down
7 changes: 5 additions & 2 deletions pkgs/development/libraries/qt-5/5.15/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Check for any minor version changes.

*/

{ makeScopeWithSplicing, generateSplicesForMkScope
{ makeScopeWithSplicing', generateSplicesForMkScope
, lib, stdenv, fetchurl, fetchgit, fetchpatch, fetchFromGitHub, makeSetupHook, makeWrapper
, bison, cups ? null, harfbuzz, libGL, perl, python3
, gstreamer, gst-plugins-base, gtk3, dconf
Expand Down Expand Up @@ -331,4 +331,7 @@ let
} ../hooks/wrap-qt-apps-hook.sh;
};

in makeScopeWithSplicing (generateSplicesForMkScope "qt5") (_: {}) (_: {}) addPackages
in makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "qt5";
f = addPackages;
}
2 changes: 1 addition & 1 deletion pkgs/development/libraries/qt-6/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ let
} ./hooks/qmake-hook.sh;
};

# TODO(@Artturin): convert to makeScopeWithSplicing
# TODO(@Artturin): convert to makeScopeWithSplicing'
# simple example of how to do that in 5568a4d25ca406809530420996d57e0876ca1a01
self = lib.makeScope newScope addPackages;
in
Expand Down
9 changes: 5 additions & 4 deletions pkgs/games/steam/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ makeScopeWithSplicing, generateSplicesForMkScope
{ makeScopeWithSplicing', generateSplicesForMkScope
, stdenv, buildFHSEnv, pkgsi686Linux, glxinfo
}:

Expand Down Expand Up @@ -32,6 +32,7 @@ let

steamcmd = callPackage ./steamcmd.nix { };
};
keep = self: { };
extra = spliced0: { };
in makeScopeWithSplicing (generateSplicesForMkScope "steamPackages") keep extra steamPackagesFun
in makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "steamPackages";
f = steamPackagesFun;
}
13 changes: 6 additions & 7 deletions pkgs/os-specific/bsd/freebsd/default.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{ stdenv, lib, stdenvNoCC
, makeScopeWithSplicing, generateSplicesForMkScope
, makeScopeWithSplicing', generateSplicesForMkScope
, buildPackages
, bsdSetupHook, makeSetupHook
, fetchgit, fetchzip, coreutils, groff, mandoc, byacc, flex, which, m4, gawk, substituteAll, runtimeShell
Expand Down Expand Up @@ -66,11 +66,9 @@ let
done
'';

in makeScopeWithSplicing
(generateSplicesForMkScope "freebsd")
(_: {})
(_: {})
(self: let
in makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "freebsd";
f = (self: let
inherit (self) mkDerivation;
in {
inherit freebsdSrc;
Expand Down Expand Up @@ -898,4 +896,5 @@ in makeScopeWithSplicing
'';
});

})
});
}
15 changes: 7 additions & 8 deletions pkgs/os-specific/bsd/netbsd/default.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{ stdenv, lib, stdenvNoCC
, makeScopeWithSplicing, generateSplicesForMkScope
, makeScopeWithSplicing', generateSplicesForMkScope
, buildPackages
, bsdSetupHook, makeSetupHook, fetchcvs, groff, mandoc, byacc, flex
, zlib
Expand All @@ -26,17 +26,15 @@ let
else "no"}"
];

in makeScopeWithSplicing
(generateSplicesForMkScope "netbsd")
(_: {})
(_: {})
(self: let
in makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "netbsd";
f = (self: let
inherit (self) mkDerivation;
in {

# Why do we have splicing and yet do `nativeBuildInputs = with self; ...`?
#
# We use `makeScopeWithSplicing` because this should be used for all
# We use `makeScopeWithSplicing'` because this should be used for all
# nested package sets which support cross, so the inner `callPackage` works
# correctly. But for the inline packages we don't bother to use
# `callPackage`.
Expand Down Expand Up @@ -1011,4 +1009,5 @@ in makeScopeWithSplicing
# END MISCELLANEOUS
#

})
});
}
14 changes: 5 additions & 9 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -24479,7 +24479,7 @@ with pkgs;
qt5 = recurseIntoAttrs (makeOverridable
(import ../development/libraries/qt-5/5.15) {
inherit (__splicedPackages)
makeScopeWithSplicing generateSplicesForMkScope lib fetchurl fetchpatch fetchgit fetchFromGitHub makeSetupHook makeWrapper
makeScopeWithSplicing' generateSplicesForMkScope lib fetchurl fetchpatch fetchgit fetchFromGitHub makeSetupHook makeWrapper
bison cups dconf harfbuzz libGL perl gtk3 python3
darwin buildPackages;
inherit (__splicedPackages.gst_all_1) gstreamer gst-plugins-base;
Expand Down Expand Up @@ -27317,9 +27317,6 @@ with pkgs;
};

xorg = let
keep = _self: { };
extra = _spliced0: { };

# Use `lib.callPackageWith __splicedPackages` rather than plain `callPackage`
# so as not to have the newly bound xorg items already in scope, which would
# have created a cycle.
Expand All @@ -27334,11 +27331,10 @@ with pkgs;

generatedPackages = lib.callPackageWith __splicedPackages ../servers/x11/xorg/default.nix { };

xorgPackages = makeScopeWithSplicing
(generateSplicesForMkScope "xorg")
keep
extra
(lib.extends overrides generatedPackages);
xorgPackages = makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "xorg";
f = lib.extends overrides generatedPackages;
};

in recurseIntoAttrs xorgPackages;

Expand Down
10 changes: 7 additions & 3 deletions pkgs/top-level/darwin-packages.nix
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{ lib
, buildPackages, pkgs, targetPackages
, generateSplicesForMkScope, makeScopeWithSplicing
, generateSplicesForMkScope, makeScopeWithSplicing'
, stdenv
, preLibcCrossHeaders
, config
Expand All @@ -15,7 +15,10 @@ let
(stdenv.targetPlatform.config + "-");
in

makeScopeWithSplicing (generateSplicesForMkScope "darwin") (_: {}) (spliced: spliced.apple_sdk.frameworks) (self: let
makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "darwin";
extra = spliced: spliced.apple_sdk.frameworks;
f = (self: let
inherit (self) mkDerivation callPackage;

# Must use pkgs.callPackage to avoid infinite recursion.
Expand Down Expand Up @@ -251,4 +254,5 @@ impure-cmds // appleSourcePackages // chooseLibs // {

} // lib.optionalAttrs config.allowAliases {
builder = throw "'darwin.builder' has been changed and renamed to 'darwin.linux-builder'. The default ssh port is now 31022. Please update your configuration or override the port back to 22. See https://nixos.org/manual/nixpkgs/unstable/#sec-darwin-builder"; # added 2023-07-06
})
});
}
1 change: 1 addition & 0 deletions pkgs/top-level/splice.nix
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ in

# prefill 2 fields of the function for convenience
makeScopeWithSplicing = lib.makeScopeWithSplicing splicePackages pkgs.newScope;
makeScopeWithSplicing' = lib.makeScopeWithSplicing' { inherit splicePackages; inherit (pkgs) newScope; };

# generate 'otherSplices' for 'makeScopeWithSplicing'
generateSplicesForMkScope = attr:
Expand Down