53c2b15454
There's not much use for it since custom keyboard shortcuts are not possible to set as a system-wide config. This could easily be added into the list of packages so RIP... :( |
||
---|---|---|
.. | ||
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/
.