docs: update project README

This commit is contained in:
Gabriel Arazas 2024-03-08 22:06:04 +08:00
parent 802f78cea5
commit 8ed302a883
No known key found for this signature in database
GPG Key ID: ADE0C41DAB221FCC

View File

@ -6,27 +6,43 @@
:canonical_flake_url_tarball_master: https://github.com/foo-dogsquared/nixos-config/archive/master.tar.gz
:canonical_flake_url_tarball_specific: https://github.com/foo-dogsquared/nixos-config/archive/35c27749c55077727529f412dade862e4deb2ae8.tar.gz
This is my NixOS config as a link:https://www.tweag.io/blog/2020-05-25-flakes/[Nix flake] eventually containing my (almost) complete setup from a desktop, to a server, to a personalized installer, almost everything.
This is my NixOS config as a https://www.tweag.io/blog/2020-05-25-flakes/[Nix flake] eventually containing my (almost) complete setup from a desktop, to a server, to a personalized installer, to your mom, almost everything.
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.
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.
* 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.
* 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.
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.
* 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.
* 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...
* 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.
** 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).
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).
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.].
By virtue of being a monorepo AND a personal project, this is basically a platform for me to experiment ANY Nix-related shtick whether be it designing a new NixOS module to be upstreamed at some point or developing an entirely new experimental Nix app for generating a custom lockfile because Nix flakes is a bit of an ass.
Anyways, this project also has a dedicated website at {doc_site} which I recommend to take a gander on how this project structures its configuration (and much of the information is not covered in this README anyways).
Anyways, this project also has a dedicated website at {docs_site} which I recommend to take a gander on how this project structures its configuration (and much of the information is not covered in this README anyways).
If you want the local documentation and has angst against online documentation, you can view the source code of the book at link:./docs/[`./docs/`].
@ -71,7 +87,7 @@ disko --mode disko [--arg disk "/dev/nvme0n1"] --flake {canonical_flake_url}#ni-
nixos-install --flake {canonical_flake_url}#ni-x86_64-linux
----
And voila!
And voilà!
You should have my desktop configuration installed perfectly working (assuming no interruptions or crashes went while installing my desktop config).
However, it should also be barely usable since there are a couple of missing components that are needed such as the private keys for the desktop which is required for certain tasks such as backup task with Borg among other things.
@ -81,7 +97,7 @@ However, it should also be barely usable since there are a couple of missing com
== Using the flake
If you want to use the flake as part of the flake inputs, you can simply include it in `flake.nix`.
If you want to use the flake as part of the flake inputs for some reason, you can simply include it in your `flake.nix`.
[source, nix]
----
@ -98,7 +114,8 @@ The FlakeHub flake follows a rolling release model so all of the releases are un
== Stability promise
If you're one of the unfortunate users for whatever reason, sorry but there's no stability promise here.
THERE'S NO STABILITY PROMISE HERE!
If you're one of the unfortunate users for whatever reason, sorry but I'm afraid there's no such word as "stability" in this project's dictionary (or most Nix projects, really ;p).
Not every commit successfully builds because of the way how the project is managed (which is very very badly):
* All of the included changes are pushed in one fell swoop over time instead of carefully testing each of them.
@ -153,6 +170,15 @@ Sudden changes can happen at any point.
== Acknowledgments
This has been moved into its own dedicated page at the website.
But still, we'll list it here.
include::./docs/content/en-US/08-acknowledgement/index.adoc[tag=acknowledgement]
== Copyright
This project is licensed under MIT license.