There are upcoming options to set up something like Distant or Wezterm mux server and it is pretty redundant now. It is preferred to set this into a separate module or just a part of the host. |
||
---|---|---|
.. | ||
home-manager | ||
nixos | ||
README.adoc |
These are various modules ranging from NixOS modules and home-manager modules.
The modules are imported usually through lib.filesToAttr
, allowing for easier structuring without modifying the index file of each module (i.e., default.nix
).
(See the implementation for more details.)
For example, take the following module folder structure of the custom NixOS modules…
nixos/
├── themes/
│ ├── a-happy-gnome/
│ │ ├── default.nix
│ │ └── README.adoc
│ ├── a-sad-gnome/
│ │ ├── default.nix
│ │ └── README.adoc
│ └── default.nix
├── specific/
│ ├── borg.nix
│ └── prometheus.nix
├── agenix.nix
├── archiving.nix
├── desktop.nix
├── dev.nix
├── editors.nix
└── users.nix
…where it should have the equivalent attribute set.
{
agenix = path/to/agenix.nix;
archiving = path/to/archiving.nix;
desktop = path/to/desktop.nix;
dev = path/to/dev.nix;
editors = path/to/editors.nix;
specific = {
borg = path/to/specific/borg.nix;
prometheus = path/to/specific/prometheus.nix;
};
themes = path/to/themes; # Since it has a 'default.nix' detected, we're using it instead.
users = path/to/users.nix;
}
The resulting attribute set can be easily be used for importing. Here’s an example of a NixOS system created with the modules which can used for shared configuration between hosts.
lib.nixosSystem {
system = "x86_64-linux";
modules = lib.mapAttrsToList (name: path: import path) (lib.filesToAttr ./modules);
}
Flake outputs
Various modules are then exported to the project flake as the following output:
-
nixosModules
exports modules from./nixos/
. -
homeManagerModules
exports modules from./home-manager/
.