Modules #
Modules for my nix configurations.
The structure is the following:
-
configurations: One module per program or concern, kind of likeprograms.foobarexcept configured to my liking. These are the modules the bundles use, but theoretically could be imported standalone. If a configuration needs to set up home for a specific user, it contributeshome-manager.sharedModulesand gates its options on the user's own config. Every.nixfile in the directory is imported automatically (reaper.nixis skipped). -
bundles: Opinionated groups of software (development,creative,games,productivity,social). A host opts in per user withcustom.bundles.<user>.<bundle>.enable, and each bundle expands that into the user's home-manager config.bundles/desktop-environment.nixis separate: it's the always-on GUI layer, applied to every host withgui = true, and it splits the rest of its contents onisLinux/isDarwin. -
derivations: Custom packages. Everyfoo.nixis auto-discovered bypackage-set.nixand exposed as.#foo. A file that returns an attrset of derivations has to be listed in that file'spackageSets. -
services: System services, currently the Immich album downloader. -
polyfill: Polyfills to be able to declare options on nix-darwin that don't exist in NixOS or viceversa. In other words,homebrewis not a valid option on NixOS so if you have a configuration that uses it it will throw an error and refuse to build, even if you have alib.mkIf isDarwinguard. This happens the other way around withsystem.defaults, which exists in nix-darwin but not in NixOS. The polyfill declares the foreign options withfill(inutil.nix), so the configuration evaluates and only throws while building if the options are actually used (i.e., if NixOS ends up usinghomebrew). Each platform file is imported per machine type; seepolyfill/README.md. -
staging: Home-manager modules for programs that don't have an upstream module yet (karabiner,linkLive,mcsr,theme-switch), and therefore candidates for upstreaming.