diff --git a/README.adoc b/README.adoc index 44326981..b3ae4658 100644 --- a/README.adoc +++ b/README.adoc @@ -10,33 +10,42 @@ This is my NixOS config as a https://www.tweag.io/blog/2020-05-25-flakes/[Nix fl This configuration setup can be described with a list of features: * Contain EVERYTHING! -Unify https://github.com/nix-community/nixos-generators[home-manager] and NixOS configuration (and maybe other environments such as nix-darwin and system-manager in case I have use cases for those) into one flake. +Unify https://github.com/nix-community/home-manager[home-manager] and NixOS configuration (and maybe other environments such as nix-darwin and system-manager in case I have use cases for those) into one flake. Also throw in some NixVim configs in there, some Disko configurations, and make a sticky note about systems-manager and nix-darwin for the near future. This is basically a monorepo for everything Nix-related needs. +* Fully modular configurations for each of the Nix-configurable environments including my NixOS systems, home-manager configurations, and NixVim builds. +Furthermore, they can be attached to a wider-scoped environment provided there is an integration for it. +For specific examples... ++ +-- +** We can have our link:./configs/home-manager[home-manager configurations] to be attached to multiple NixOS systems smoothly. +They are also available as a standalone configuration to be deployed by `home-manager` tool which is nice. + +** We can include link:./configs/nixvim[NixVim configs] into home-manager configs and NixOS systems. +Similar to home-manager configurations, they are also available as a standalone configuration found in `nixvimConfigurations` attribute in the flake output. + +** We can also include link:./configs/disko/[our Disko configurations] to NixOS systems to quickly include filesystem entries. +Once again, also available as a standalone configuration to be usable for `disko` tool. + +All of these is made possible with https://flake.parts[flake-parts] with flake modules encouraging each of the configuration to be as composable as the functional paradigm that Nix encourages. +-- + +* Deploy the same NixOS configuration for more than one system, in multiple output images generated with https://github.com/nix-community/nixos-generators[nixos-generators], and as part of the deployment cluster with https://github.com/serokell/deploy-rs[deploy-rs]. +You can even configure what nixpkgs branch (and home-manager branch) it will use. + +* Features custom desktop configurations as a fully independent desktop session (aka similar to how typical desktop environments are deployed). +You can even test them quickly in a VM by running `nix run github:foo-dogsquared/nixos-config#run-workflow-with-vm -- $WORKFLOW_NAME`. + * Take full advantage of Nix module system with the cluster-wide custom modules footnote:[Most of them are patterned similarly from nixpkgs which made easy to be upstreamed just in case.]. This design bleeds into configuring the NixOS systems and home-manager users by designing https://foo-dogsquared.github.io/nixos-config/04-nixos-modules/04-host-specific-modules/[host-specific modules] and https://foo-dogsquared.github.io/nixos-config/05-home-manager/#_user_specific_modules[user-specific modules], respectively. * Integrate every single component of the Nix ecosystem under the sun (that I use, anyways). Want to declare a NixOS system with two already existing home-manager users as a separate NixOS configuration (`nixosConfigurations`) and as a buildable ISO in the flake output AND have it deployable with deploy-rs? link:./modules/flake-parts/setups/nixos.nix[I wished for it and I got it.] -This is mainly powered by flakes with https://flake.parts/[Flake Parts] framework allowing me to create bloated abstractions on top. +This is mainly powered by flakes with https://flake.parts/[flake-parts] framework allowing me to create bloated abstractions on top. -* Deploy the same NixOS configuration for more than one system and in multiple output images. -This is configured in link:./configs/flake-parts/nixos.nix[`./configs/flake-parts/nixos.nix`] where not only you can deploy them with https://github.com/serokell/deploy-rs[deploy-rs] but build them as generated by https://github.com/nix-community/nixos-generators[nixos-generators]. -You can even configure what nixpkgs branch (and home-manager branch) it will use. - -* Similarly, deploy the same home-manager configuration for more than one system. -This time, it is configured with the link:./configs/flake-parts/home-manager.nix[`./configs/flake-parts/home-manager.nix`] file which you can configure what nixpkgs branch it will use. -You can even include link:./configs/home-manager[those same home-manager users] in NixOS systems smoothly. - -* OK, OK, deploy EVERYTHING for more than one system with as much customizability and integration with other components as possible (I said this already, right?). -Right now, we will quickly list them like so... - -** We have NixVim where we can include link:./configs/nixvim[those same NixVim configs] into home-manager configs and NixOS systems. -** We can also include link:./configs/disko/[our Disko configurations] to NixOS systems to quickly include filesystem entries while being usable in `disko` CLI. - -* It has its own https://foo-dogsquared.github.io/nixos-config[website]. +* It has its own https://foo-dogsquared.github.io/nixos-config[website] fully managed as a separate subproject. Which means that it's cool (or over-the-top, whichever you prefer). It's basically my personal version of nixpkgs: a monorepo of everything I need for Nix-related things unless it sprung into life as its own project footnote:[Speaking of which, I also have some other Nix-related projects stored in this very repo.].