Skip to content

Instantly share code, notes, and snippets.

@srghma
Last active December 29, 2021 19:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save srghma/f1ff5cd10722ee8218cfdbae1ad49645 to your computer and use it in GitHub Desktop.
Save srghma/f1ff5cd10722ee8218cfdbae1ad49645 to your computer and use it in GitHub Desktop.
nix override

pkgs.package.override - res of lib.makeOverridable (used by callPackage),

overrides arguments of callPackage

https://nixos.org/nixos/nix-pills/override-design-pattern.html

pkgs.foo.override { arg1 = val1; arg2 = val2; ... }

pkgs.package.overrideAttrs

overrides arguments of mkDerivation (after callPackage)

helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec {
    separateDebugInfo = true;
  });

pkgs.package.overrideScope - to override dependency completely and prevent unvanted dependency sneak

overrides = super: self: rec {
  haskell-mode = self.melpaPackages.haskell-mode;
  ...
};
((emacsPackagesNgGen emacs).overrideScope overrides).emacsWithPackages (p: with p; [
  # here both these package will use haskell-mode of our own choice
  ghc-mod
  dante
])

pkgs.haskell.lib.overrideCabal - combination of overrideScope and override

pkgs.lib.overrideDerivation - ?


Dont use

pkgs.package.overrideDerivation - use overrideAttrs instead

mySed = pkgs.gnused.overrideDerivation (oldAttrs: {
    name = "sed-4.2.2-pre";
    src = fetchurl {
      url = ftp://alpha.gnu.org/gnu/sed/sed-4.2.2-pre.tar.bz2;
      sha256 = "11nq06d131y4wmf3drm0yk502d2xc6n5qy82cg88rb9nqd2lj41k";
    };
    patches = [];
  });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment