# 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. ## Home Manager There is also an `hmModules` attribute set for pulling home-manager modules in from the outside world: ### Declare: flake.nix: ```nix { inputs.doom-emacs.url = "github:vlaci/nix-doom-emacs"; } ``` extern/default.nix: ```nix with inputs; { hmModules = { doom-emacs = doom-emacs.hmModule; }; } ``` ### Use: users/nixos/default.nix: ```nix { hmModules, ... }: { home-manager.users.nixos = { imports = [ hmModules.doom-emacs ] ; programs.doom-emacs.enable = true; }; } ``` [extern]: https://github.com/divnix/devos/tree/core/extern/default.nix