Loading lib/customisation.nix +5 −2 Original line number Diff line number Diff line Loading @@ -631,9 +631,12 @@ rec { makeScope = newScope: f: let self = f self // { newScope = scope: newScope (self // scope); self = { callPackage = self.newScope { }; } // f self // { newScope = scope: newScope (self // scope); overrideScope = g: makeScope newScope (extends g f); packages = f; }; Loading lib/tests/misc.nix +52 −0 Original line number Diff line number Diff line Loading @@ -4789,6 +4789,58 @@ runTests { }; }; # Check that makeScope provides a default callPackage testMakeScopeDefaultCallPackage = let scope = lib.makeScope lib.callPackageWith (self: { foo = self.callPackage ({ }: "foo-value") { }; }); in { expr = scope.foo; expected = "foo-value"; }; # Check that callPackage can be overridden by the scope function testMakeScopeOverrideCallPackage = let customCallPackage = _self: fn: args: (fn args) + "-custom"; scope = lib.makeScope lib.callPackageWith (self: { callPackage = customCallPackage self; foo = self.callPackage ({ }: "foo-value") { }; }); in { expr = scope.foo; expected = "foo-value-custom"; }; # Check that overriding callPackage persists through overrideScope testMakeScopeOverrideCallPackagePersistsThroughOverrideScope = let customCallPackage = _self: fn: args: (fn args) + "-custom"; scope = lib.makeScope lib.callPackageWith (self: { callPackage = customCallPackage self; foo = self.callPackage ({ }: "foo-value") { }; }); overridden = scope.overrideScope ( _final: _prev: { bar = scope.callPackage ({ }: "bar-value") { }; } ); in { expr = { inherit (overridden) foo bar; }; expected = { foo = "foo-value-custom"; bar = "bar-value-custom"; }; }; testFilesystemResolveDefaultNixFile1 = { expr = lib.filesystem.resolveDefaultNix ./foo.nix; expected = ./foo.nix; Loading pkgs/top-level/octave-packages.nix +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ makeScope newScope ( in { inherit callPackage buildOctavePackage computeRequiredOctavePackages; inherit buildOctavePackage computeRequiredOctavePackages; inherit (callPackage ../development/interpreters/octave/hooks { }) writeRequiredOctavePackagesHook Loading Loading
lib/customisation.nix +5 −2 Original line number Diff line number Diff line Loading @@ -631,9 +631,12 @@ rec { makeScope = newScope: f: let self = f self // { newScope = scope: newScope (self // scope); self = { callPackage = self.newScope { }; } // f self // { newScope = scope: newScope (self // scope); overrideScope = g: makeScope newScope (extends g f); packages = f; }; Loading
lib/tests/misc.nix +52 −0 Original line number Diff line number Diff line Loading @@ -4789,6 +4789,58 @@ runTests { }; }; # Check that makeScope provides a default callPackage testMakeScopeDefaultCallPackage = let scope = lib.makeScope lib.callPackageWith (self: { foo = self.callPackage ({ }: "foo-value") { }; }); in { expr = scope.foo; expected = "foo-value"; }; # Check that callPackage can be overridden by the scope function testMakeScopeOverrideCallPackage = let customCallPackage = _self: fn: args: (fn args) + "-custom"; scope = lib.makeScope lib.callPackageWith (self: { callPackage = customCallPackage self; foo = self.callPackage ({ }: "foo-value") { }; }); in { expr = scope.foo; expected = "foo-value-custom"; }; # Check that overriding callPackage persists through overrideScope testMakeScopeOverrideCallPackagePersistsThroughOverrideScope = let customCallPackage = _self: fn: args: (fn args) + "-custom"; scope = lib.makeScope lib.callPackageWith (self: { callPackage = customCallPackage self; foo = self.callPackage ({ }: "foo-value") { }; }); overridden = scope.overrideScope ( _final: _prev: { bar = scope.callPackage ({ }: "bar-value") { }; } ); in { expr = { inherit (overridden) foo bar; }; expected = { foo = "foo-value-custom"; bar = "bar-value-custom"; }; }; testFilesystemResolveDefaultNixFile1 = { expr = lib.filesystem.resolveDefaultNix ./foo.nix; expected = ./foo.nix; Loading
pkgs/top-level/octave-packages.nix +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ makeScope newScope ( in { inherit callPackage buildOctavePackage computeRequiredOctavePackages; inherit buildOctavePackage computeRequiredOctavePackages; inherit (callPackage ../development/interpreters/octave/hooks { }) writeRequiredOctavePackagesHook Loading