search input

Function of the day

  • overrideDerivation drv f takes a derivation (i.e., the result of a call to the builtin function derivation) and returns a new derivation in which the attributes of the original are overridden according to the function f. The function f is called with the original derivation attributes.

    overrideDerivation allows certain "ad-hoc" customisation scenarios (e.g. in ~/.config/nixpkgs/config.nix). For instance, if you want to "patch" the derivation returned by a package function in Nixpkgs to build another version than what the function itself provides.

    For another application, see build-support/vm, where this function is used to build arbitrary derivations inside a QEMU virtual machine.

    Note that in order to preserve evaluation errors, the new derivation's outPath depends on the old one's, which means that this function cannot be used in circular situations when the old derivation also depends on the new one.

    You should in general prefer drv.overrideAttrs over this function; see the nixpkgs manual for more information on overriding.



    1. Function argument


    2. Function argument


    overrideDerivation :: Derivation -> ( Derivation -> AttrSet ) -> Derivation


    lib.customisation.overrideDerivation usage example

    mySed = overrideDerivation pkgs.gnused (oldAttrs: {
      name = "sed-4.2.2-pre";
      src = fetchurl {
        url =;
        hash = "sha256-MxBJRcM2rYzQYwJ5XKxhXTQByvSg5jZc5cSHEZoB2IY=";
      patches = [];