mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-02-07 12:19:07 +00:00
docs: update project README
This commit is contained in:
parent
802f78cea5
commit
8ed302a883
46
README.adoc
46
README.adoc
@ -6,27 +6,43 @@
|
|||||||
:canonical_flake_url_tarball_master: https://github.com/foo-dogsquared/nixos-config/archive/master.tar.gz
|
: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
|
: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:
|
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.
|
* 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].
|
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.
|
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.
|
* 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.].
|
** We have NixVim where we can include link:./configs/nixvim[those same NixVim configs] into home-manager configs and NixOS systems.
|
||||||
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 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].
|
||||||
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).
|
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/`].
|
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
|
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).
|
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.
|
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
|
== 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]
|
[source, nix]
|
||||||
----
|
----
|
||||||
@ -98,7 +114,8 @@ The FlakeHub flake follows a rolling release model so all of the releases are un
|
|||||||
|
|
||||||
== Stability promise
|
== 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):
|
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.
|
* 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
|
== Copyright
|
||||||
|
|
||||||
This project is licensed under MIT license.
|
This project is licensed under MIT license.
|
||||||
|
Loading…
Reference in New Issue
Block a user