This is my home-manager configuration. There are many like it, but this one is mine. This is now spun into its own flake such that I can use it on other non NixOS machines.
Files are organized like this:
home
├─── README.md
╰─── <user>
├─── default.nix
├─── cli
│ ├─── default.nix
│ ╰─── <cli modules>
╰─── gui
├─── default.nix
╰─── <gui modules>
CLI modules are enabled for all machines. It provides a basic set of CLI tools that are useful to have on any system.
GUI modules are only enabled on machines with GUIs enabled in their host configuration. This is done with a boolean defined in flake.nix.
{ lib, enableGui, ... }:
{
imports = [
./cli
] ++ (lib.optionals enableGui [ ./gui ]);
}
HERE BE DRAGONS!
Use at your own peril. If you want to use on a non NixOS system, you should probably not use most of the GUI modules.