nixos-config/README.adoc
Gabriel Arazas 04dd949324
docs: update project README
I've been using less and less Flatpak and more Nix-built packages. The
advantages of copying the Flatpak runtime is pretty nice but it faces
similar problems to simply migrating your home directory from one
installation to another such as version config mismatches and different
cache that might affect newer installations in a subtle way. It is often
better to have a new runtime directory and selectively back up all of
the required apps that you want to migrate.
2023-09-17 13:59:06 +08:00

4.5 KiB
Raw Blame History

This is my NixOS config as a Nix flake eventually containing my (almost) complete setup from a desktop, to a server, to a personalized installer, almost everything. Who knows it might contain another server just for the infrastructure for my custom non-NixOS distro just to flex how flexible NixOS can be. [1]

Anyways, this project also has a dedicated website at https://foo-dogsquared.github.io/nixos-config 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 ./docs/.

Getting started

This is an overencumbered set of NixOS configurations for different systems. For this section though, well assume youre only interested in installing the desktop configuration.

To start, youll have to download a NixOS installer image. While you can download the latest revisions from the official website, you can get my personalized installer from the releases page of this project. Next, boot into the installer image. Then as root, install the desktop with the following commands.

bash $(nix build --no-link --print-out-paths github:foo-dogsquared/nixos-config#nixosConfigurations.ni.config.system.build.diskoScript)
nixos-install --flake github:foo-dogsquared/nixos-config#ni

The above command will automate everything for you including the partitioning steps.

Voila! You should have my desktop configuration installed.

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. There are also some additional prerequisites such as partitioning which is already handled with disko.

TODO

In order of priority:

  • ✓ Create custom modules.

  • ✓ Create a themes system similar to this NixOS config.

  • ✓ Create a good workflow for creating ISOs.

  • ✓ Create development shells.

  • ✓ Manage secrets with agenix.

  • ❏ Create a good workflow for tests.

  • ✓ Automate backups with NixOS config.

  • ✓ Create custom packages and export it to flakes. (Maybe consider making it to upstream)

  • ✓ Create cluser-wide configs.

  • ✓ Create host-wide configs.

  • ✓ Create user-specific configs with home-manager.

  • Steal Get some ideas from this overengineered template.

  • ✓ Make use of other established utilities such as digga, flake-utils-plus, and home-manager once Im familiar to create my own Nix programs.

Out of scope:

  • Set most program configurations with Nix. This is especially applicable to programs I always use such as my text editor configs.

    • The reason: managing them can be chaotic when applied with Nix. The potential for it is pretty nice especially when seen with similar implementations such as Guix home environment. However, I dont want to rebuild it every time I change it.

  • Migration of my dotfiles. I still use it on other non-NixOS systems.

  • To be a configuration framework. This is my personal configuration which means experimentation will always be here. Sudden changes can happen at any point.

This project is licensed under MIT license. I just chose it to make it easier to upstream parts of this project to nixpkgs and to make it easier to copy it without much problems (just dont forget to add attribution as indicated from the license). Please see ./LICENSE for the full text.


1. This is how Garuda Linux is set up, btw.