depot/third_party/home-manager/docs/manual/faq/override-package-module.md
Default email c6444ecc3c Project import generated by Copybara.
GitOrigin-RevId: 51e44a13acea71b36245e8bd8c7db53e0a3e61ee
2024-01-05 12:06:15 +01:00

1.1 KiB

How do I override the package used by a module?

By default Home Manager will install the package provided by your chosen nixpkgs channel but occasionally you might end up needing to change this package. This can typically be done in two ways.

  1. If the module provides a package option, such as programs.beets.package, then this is the recommended way to perform the override. For example,

    programs.beets.package = pkgs.beets.override { enableCheck = true; };
    
  2. If no package option is available then you can typically override the relevant package using an overlay.

    For example, if you want to use the programs.skim module but use the skim package from Nixpkgs unstable, then a configuration like

    { pkgs, config, ... }:
    
    let
    
      pkgsUnstable = import <nixpkgs-unstable> {};
    
    in
    
    {
      programs.skim.enable = true;
    
      nixpkgs.overlays = [
        (self: super: {
          skim = pkgsUnstable.skim;
        })
      ];
    
      # …
    }
    

    should work OK.