docs: use overrideAttrs instead of overrideDerivation

Changed files
+18 -19
nixos
doc
manual
configuration
modules
config
services
editors
+13 -12
nixos/doc/manual/configuration/customizing-packages.xml
···
elements.)</para>
<para>Even greater customisation is possible using the function
-
<varname>overrideDerivation</varname>. While the
+
<varname>overrideAttrs</varname>. While the
<varname>override</varname> mechanism above overrides the arguments of
-
a package function, <varname>overrideDerivation</varname> allows
-
changing the <emphasis>result</emphasis> of the function. This
+
a package function, <varname>overrideAttrs</varname> allows
+
changing the <emphasis>attributes</emphasis> of the function. This
permits changing any aspect of the package, such as the source code.
For instance, if you want to override the source code of Emacs, you
can say:
<programlisting>
-
environment.systemPackages =
-
[ (pkgs.lib.overrideDerivation pkgs.emacs (attrs: {
-
name = "emacs-25.0-pre";
-
src = /path/to/my/emacs/tree;
-
}))
-
];
+
environment.systemPackages = [
+
(pkgs.emacs.overrideAttrs (oldAttrs: {
+
name = "emacs-25.0-pre";
+
src = /path/to/my/emacs/tree;
+
}))
+
];
</programlisting>
-
Here, <varname>overrideDerivation</varname> takes the Nix derivation
+
Here, <varname>overrideAttrs</varname> takes the Nix derivation
specified by <varname>pkgs.emacs</varname> and produces a new
derivation in which the original’s <literal>name</literal> and
<literal>src</literal> attribute have been replaced by the given
-
values. The original attributes are accessible via
-
<varname>attrs</varname>.</para>
+
values by re-calling <literal>stdenv.mkDerivation</literal>.
+
The original attributes are accessible via the function argument,
+
which is conventionally named <varname>oldAttrs</varname>.</para>
<para>The overrides shown above are not global. They do not affect
the original package; other packages in Nixpkgs continue to depend on
+2 -4
nixos/modules/config/debug-info.nix
···
where tools such as <command>gdb</command> can find them.
If you need debug symbols for a package that doesn't
provide them by default, you can enable them as follows:
-
<!-- FIXME: ugly, see #10721 -->
<programlisting>
nixpkgs.config.packageOverrides = pkgs: {
-
hello = pkgs.lib.overrideDerivation pkgs.hello (attrs: {
-
outputs = attrs.outputs or ["out"] ++ ["debug"];
-
buildInputs = attrs.buildInputs ++ [&lt;nixpkgs/pkgs/build-support/setup-hooks/separate-debug-info.sh>];
+
hello = pkgs.hello.overrideAttrs (oldAttrs: {
+
separateDebugInfo = true;
});
};
</programlisting>
+3 -3
nixos/modules/services/editors/emacs.xml
···
<programlisting><![CDATA[
{ pkgs ? import <nixpkgs> {} }:
let
-
myEmacs = pkgs.lib.overrideDerivation (pkgs.emacs.override {
+
myEmacs = (pkgs.emacs.override {
# Use gtk3 instead of the default gtk2
withGTK3 = true;
withGTK2 = false;
-
}) (attrs: {
+
}).overrideAttrs (attrs: {
# I don't want emacs.desktop file because I only use
# emacsclient.
-
postInstall = attrs.postInstall + ''
+
postInstall = (attrs.postInstall or "") + ''
rm $out/share/applications/emacs.desktop
'';
});