ark/doc/concepts/extern.md

46 lines
990 B
Markdown
Raw Normal View History

2021-02-14 05:38:20 +03:00
# 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, [extern][extern] is where you do it.
Modules and overlays are self explanatory, and the `specialArgs` attribute is
used to extend the arguments passed to all NixOS modules, allowing for
arbitrary values to be passed from flake inputs to the rest of your
configuration.
2021-02-22 00:44:57 +03:00
## Home Manager
2021-02-20 22:42:36 +03:00
There is also an `hmModules` attribute set for pulling home-manager modules in
from the outside world:
2021-02-22 00:44:57 +03:00
### Declare:
flake.nix:
```nix
{
inputs.doom-emacs.url = "github:vlaci/nix-doom-emacs";
}
```
extern/default.nix:
2021-02-20 22:42:36 +03:00
```nix
2021-02-22 00:51:19 +03:00
with inputs;
2021-02-20 22:42:36 +03:00
{
hmModules = {
2021-02-22 00:51:19 +03:00
doom-emacs = doom-emacs.hmModule;
2021-02-22 00:44:57 +03:00
};
}
```
### Use:
users/nixos/default.nix:
```nix
{ hmModules, ... }:
{
home-manager.users.nixos = {
2021-02-22 00:51:19 +03:00
imports = [ hmModules.doom-emacs ] ;
2021-02-22 00:44:57 +03:00
programs.doom-emacs.enable = true;
2021-02-20 22:42:36 +03:00
};
}
```
2021-02-18 04:31:33 +03:00
[extern]: https://github.com/divnix/devos/tree/core/extern/default.nix