mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
.. | ||
themes | ||
agenix.nix | ||
archiving.nix | ||
desktop.nix | ||
dev.nix | ||
editors.nix | ||
README.adoc | ||
users.nix |
Table of Contents
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…
modules/
├── 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
…should have the following 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/
.