External Art
When you need to use a module, overlay, or pass a value from one of your inputs
to the rest of your NixOS configuration, you can make use of a couple arguments.
It is encouraged to add external art directly in your flake.nix
so the file
represents a complete dependency overview of your flake.
Overlays
External overlays can directly be added to a channel's overlays
list.
flake.nix:
{
channels.nixos.overlays = [ inputs.agenix.overlay ];
}
Upon exporting overlays, these overlays will be automatically filtered out by inspecting the inputs
argument.
Modules
There is a dedicated nixos.hostDefaults.externalModules
argument for external
modules.
flake.nix:
{
nixos.hostDefaults.externalModules = [ inputs.agenix.nixosModules.age ];
}
Home Manager
Since there isn't a hosts
concept for home-manager, externalModules is just a
top-level argument in the home
namespace.
flake.nix:
{
home.externalModules = [ doom-emacs = doom-emacs.hmModule ];
}
Note:
To avoid declaring "external" modules separately, which is obvious since they come from
inputs
, the optimal solution would be to automatically export modules that were created in your flake. But this is not possible due to NixOS/nix#4740.