mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 04:58:01 +00:00
docs: update project README
This commit is contained in:
parent
8e7a3e6277
commit
546caa6e69
43
README.adoc
43
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:
|
This configuration setup can be described with a list of features:
|
||||||
|
|
||||||
* Contain EVERYTHING!
|
* 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.
|
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.
|
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.].
|
* 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.
|
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).
|
* 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?
|
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.]
|
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.
|
* It has its own https://foo-dogsquared.github.io/nixos-config[website] fully managed as a separate subproject.
|
||||||
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].
|
|
||||||
Which means that it's cool (or over-the-top, whichever you prefer).
|
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.].
|
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.].
|
||||||
|
Loading…
Reference in New Issue
Block a user