nixos-config/modules/nixos
Gabriel Arazas efc578e961 Update modules
- Add `modules.desktop.cleanup` for the usual cleanup activties in
  NixOS.
- Update to proper descriptions for module options added with
  `lib.mkEnableOption`.
- Additional packages for various modules.
- Deleted `modules/home-manager/alacritty`. It is pretty useless though.
  :(
2021-12-11 13:16:45 +08:00
..
themes Update modules 2021-12-11 13:16:45 +08:00
agenix.nix Update modules 2021-12-11 13:16:45 +08:00
archiving.nix Update modules 2021-12-11 13:16:45 +08:00
desktop.nix Update modules 2021-12-11 13:16:45 +08:00
dev.nix Update modules 2021-12-11 13:16:45 +08:00
editors.nix Update modules 2021-12-11 13:16:45 +08:00
README.adoc Basic restructuring fix 2021-12-06 18:24:27 +08:00
users.nix Basic restructuring fix 2021-12-06 18:24:27 +08:00

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. Heres 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: