summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/stdenv/meta.chapter.md13
-rw-r--r--doc/stdenv/stdenv.chapter.md20
-rw-r--r--pkgs/applications/misc/hello/default.nix8
3 files changed, 22 insertions, 19 deletions
diff --git a/doc/stdenv/meta.chapter.md b/doc/stdenv/meta.chapter.md
index e57669e261b31..ca8dd1d824fe7 100644
--- a/doc/stdenv/meta.chapter.md
+++ b/doc/stdenv/meta.chapter.md
@@ -176,18 +176,21 @@ The NixOS tests are available as `nixosTests` in parameters of derivations. For
 NixOS tests run in a VM, so they are slower than regular package tests. For more information see [NixOS module tests](https://nixos.org/manual/nixos/stable/#sec-nixos-tests).
 
 Alternatively, you can specify other derivations as tests. You can make use of
-the optional parameter (here: `self`) to inject the correct package without
-relying on non-local definitions, even in the presence of `overrideAttrs`. This
-means `(mypkg.overrideAttrs f).passthru.tests` will be as expected, as long as the
+the optional parameter to inject the correct package without
+relying on non-local definitions, even in the presence of `overrideAttrs`.
+Here that's `finalAttrs.public`, but you could choose a different name if
+`finalAttrs` already exists in your scope.
+
+`(mypkg.overrideAttrs f).passthru.tests` will be as expected, as long as the
 definition of `tests` does not rely on the original `mypkg` or overrides it in
 all places.
 
 ```nix
 # my-package/default.nix
 { stdenv, callPackage }:
-stdenv.mkDerivation (self: {
+stdenv.mkDerivation (finalAttrs: {
   # ...
-  passthru.tests.example = callPackage ./example.nix { my-package = self.public; }
+  passthru.tests.example = callPackage ./example.nix { my-package = finalAttrs.public; }
 })
 ```
 
diff --git a/doc/stdenv/stdenv.chapter.md b/doc/stdenv/stdenv.chapter.md
index b54d68cb5ddd0..26f242dbae435 100644
--- a/doc/stdenv/stdenv.chapter.md
+++ b/doc/stdenv/stdenv.chapter.md
@@ -322,21 +322,21 @@ For information about how to run the updates, execute `nix-shell maintainers/scr
 If you pass a function to `mkDerivation`, it will receive as its argument the final arguments, considering use of `overrideAttrs`. For example:
 
 ```nix
-mkDerivation (self: {
+mkDerivation (finalAttrs: {
   pname = "hello";
   withFeature = true;
   configureFlags =
-    lib.optionals self.withFeature ["--with-feature"];
+    lib.optionals finalAttrs.withFeature ["--with-feature"];
 })
 ```
 
 Note that this does not use the `rec` keyword to reuse `withFeature` in `configureFlags`.
 The `rec` keyword works at the syntax level and is unaware of overriding.
 
-Instead, the definition references `self`, allowing users to change `withFeature`
+Instead, the definition references `finalAttrs`, allowing users to change `withFeature`
 consistently with `overrideAttrs`.
 
-`self` also contains the attribute `public`, which represents the final package,
+`finalAttrs` also contains the attribute `public`, which represents the final package,
 including the output paths, etc.
 
 Let's look at a more elaborate example to understand the differences between
@@ -345,30 +345,30 @@ various bindings:
 ```nix
 # `pkg` is the _original_ definition (for illustration purposes)
 let pkg =
-  mkDerivation (self: {   # self is the final package
+  mkDerivation (finalAttrs: {
     # ...
 
     # An example attribute
     packages = [];
 
     # `passthru.tests` is a commonly defined attribute.
-    passthru.tests.simple = f self.public;
+    passthru.tests.simple = f finalAttrs.public;
 
     # An example of an attribute containing a function
     passthru.appendPackages = packages':
-      self.public.overrideAttrs (newSelf: super: {
+      finalAttrs.public.overrideAttrs (newSelf: super: {
         packages = super.packages ++ packages';
       });
 
     # For illustration purposes; referenced as
-    # `(pkg.overrideAttrs(x)).self` etc in the text below.
-    passthru.self = self;
+    # `(pkg.overrideAttrs(x)).finalAttrs` etc in the text below.
+    passthru.finalAttrs = finalAttrs;
     passthru.original = pkg;
   });
 in pkg
 ```
 
-Unlike the `pkg` binding in the above example, the `self` parameter always references the final attributes. For instance `(pkg.overrideAttrs(x)).self.public` is identical to `pkg.overrideAttrs(x)`, whereas `(pkg.overrideAttrs(x)).original` is the same as `pkg`.
+Unlike the `pkg` binding in the above example, the `finalAttrs` parameter always references the final attributes. For instance `(pkg.overrideAttrs(x)).finalAttrs.public` is identical to `pkg.overrideAttrs(x)`, whereas `(pkg.overrideAttrs(x)).original` is the same as the original `pkg`.
 
 See also the section about [`passthru.tests`](#var-meta-tests).
 
diff --git a/pkgs/applications/misc/hello/default.nix b/pkgs/applications/misc/hello/default.nix
index 75887348730f1..bd7bcd8a3b060 100644
--- a/pkgs/applications/misc/hello/default.nix
+++ b/pkgs/applications/misc/hello/default.nix
@@ -7,12 +7,12 @@
 , hello
 }:
 
-stdenv.mkDerivation (self: {
+stdenv.mkDerivation (finalAttrs: {
   pname = "hello";
   version = "2.12";
 
   src = fetchurl {
-    url = "mirror://gnu/hello/${self.pname}-${self.version}.tar.gz";
+    url = "mirror://gnu/hello/${finalAttrs.pname}-${finalAttrs.version}.tar.gz";
     sha256 = "1ayhp9v4m4rdhjmnl2bq3cibrbqqkgjbl3s7yk2nhlh8vj3ay16g";
   };
 
@@ -28,7 +28,7 @@ stdenv.mkDerivation (self: {
         (nixos { environment.noXlibs = true; }).pkgs.hello;
   };
 
-  passthru.tests.run = callPackage ./test.nix { hello = self.public; };
+  passthru.tests.run = callPackage ./test.nix { hello = finalAttrs.public; };
 
   meta = with lib; {
     description = "A program that produces a familiar, friendly greeting";
@@ -37,7 +37,7 @@ stdenv.mkDerivation (self: {
       It is fully customizable.
     '';
     homepage = "https://www.gnu.org/software/hello/manual/";
-    changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v${self.version}";
+    changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v${finalAttrs.version}";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.eelco ];
     platforms = platforms.all;