It turns out fzf has some niceties with history and file selection which is closer to how I imagine it. PRETTY NICE! But it does override my Atuin configuration which doesn't have its shell integration enabled. It does have some conflict with the Wezterm shell integration. This is a problem for future me to deal with. |
||
---|---|---|
.. | ||
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/
.