2021-02-14 03:38:20 +01:00
|
|
|
# Overrides
|
2021-04-27 03:29:05 +02:00
|
|
|
Each NixOS host follows one channel. But many times it is useful to get packages
|
|
|
|
or modules from different channels.
|
2021-02-14 03:38:20 +01:00
|
|
|
|
2021-04-27 18:38:20 +02:00
|
|
|
## Packages
|
|
|
|
You can make use of `overlays/overrides.nix` to override specific packages in the
|
|
|
|
default channel to be pulled from other channels. That file is simply an example
|
|
|
|
of how any overlay can get `channels` as their first argument.
|
2021-02-14 03:38:20 +01:00
|
|
|
|
2021-04-27 18:38:20 +02:00
|
|
|
You can add overlays to any channel to override packages from other channels.
|
2021-02-14 03:38:20 +01:00
|
|
|
|
2021-04-27 18:38:20 +02:00
|
|
|
Pulling the manix package from the `latest` channel:
|
2021-02-14 03:38:20 +01:00
|
|
|
```nix
|
2021-04-27 03:29:05 +02:00
|
|
|
channels: final: prev: {
|
2021-04-29 20:53:45 +02:00
|
|
|
__dontExport = true;
|
2021-04-27 03:29:05 +02:00
|
|
|
inherit (pkgs.latest) manix;
|
2021-02-14 03:38:20 +01:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2021-04-29 20:53:45 +02:00
|
|
|
It is recommended to set the `__dontExport` property for override specific
|
|
|
|
overlays. `overlays/overrides.nix` is the best place to consolidate all package
|
|
|
|
overrides and the property is already set for you.
|
|
|
|
|
2021-04-27 18:38:20 +02:00
|
|
|
## Modules
|
2021-02-14 03:38:20 +01:00
|
|
|
|
2021-04-27 03:29:05 +02:00
|
|
|
You can also pull modules from other channels. All modules have access to the
|
|
|
|
`modulesPath` for each channel as `<channelName>ModulesPath`. And you can use
|
|
|
|
`disabledModules` to remove modules from the current channel.
|
2021-02-14 03:38:20 +01:00
|
|
|
|
2021-04-27 18:38:20 +02:00
|
|
|
Pulling the zsh module from the `latest` channel:
|
2021-02-14 03:38:20 +01:00
|
|
|
```nix
|
2021-04-27 03:29:05 +02:00
|
|
|
{ latestModulesPath }: {
|
|
|
|
modules = [ "${latestModulesPath}/programs/zsh/zsh.nix" ];
|
|
|
|
disabledModules = [ "programs/zsh/zsh.nix" ];
|
2021-02-14 03:38:20 +01:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
> ##### _Note:_
|
2021-04-27 03:29:05 +02:00
|
|
|
> Sometimes a modules name will change from one branch to another.
|
2021-02-14 03:38:20 +01:00
|
|
|
|
|
|
|
[nixpkgs-modules]: https://github.com/NixOS/nixpkgs/tree/master/nixos/modules
|