1
0
mirror of https://github.com/nix-community/home-manager synced 2024-07-02 03:18:32 +02:00
home-manager/docs/manual/faq/change-package-module.md
nbelakovski 35536fc6d6
docs: update beets and description of overriding packages
The beets package no longer has the "enableCheck" option so this was
confusing. Also the word override was used to mean two different
things so I modified the FAQ to use the word "change" and linked to
documentation regarding package overrides.
2024-03-14 21:20:04 +01:00

1.6 KiB

How do I change 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 change. For example,

    programs.beets.package = pkgs.beets.override { pluginOverrides = { beatport.enable = false; }; };
    

    See Nix pill 17 for more information on package overrides. Alternatively, if you want to use the beets package from Nixpkgs unstable, then a configuration like

    { pkgs, config, ... }:
    
    let
    
      pkgsUnstable = import <nixpkgs-unstable> {};
    
    in
    
    {
      programs.beets.package = pkgsUnstable.beets;
    
      # …
    }
    

    should work OK.

  2. If no package option is available then you can typically change 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.