os/extern
Timothy DeHerrera 44623b5979
nix: don't use nix flake
I originally wanted to use the nix flake to allow users to take
advantage of the latest changes. Just so happened that nixpkgs was
recently updated with a new version around the same time, and this
just adds complexity for no real gain.
2021-03-22 23:29:31 -06:00
..
default.nix nix: don't use nix flake 2021-03-22 23:29:31 -06:00
README.md doc: improve demonstration 2021-02-21 14:51:19 -07: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 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:

{
  inputs.doom-emacs.url = "github:vlaci/nix-doom-emacs";
}

extern/default.nix:

with inputs;
{
  hmModules = {
    doom-emacs = doom-emacs.hmModule;
  };
}

Use:

users/nixos/default.nix:

{ hmModules, ... }:
{
  home-manager.users.nixos = {
    imports = [ hmModules.doom-emacs ] ;

    programs.doom-emacs.enable = true;
  };
}