nix-dotfiles/README.md

3.0 KiB

built with nix

Nix Dotfiles

These are my dotfiles for several nix machines. Here are some of the interesting files and dirs:

Path Purpose
/home home-manager configuration.
/hosts Machine specific NixOS configurations.
/hosts/common.nix Configuration that is equal for all hosts.
/lib Custom lib functions that has not been upstreamed (or should not be) to nixpkgs. I'm trying to phase these out as much as possible.
/modules Custom nixos modules that I use in my own configuration. If you see options that does not appear in NixOS Search, they might be defined here.
/package-overrides Updated or pinned versions of packages that have not been upstreamed to nixpkgs (yet).
/secrets Encrypted sops-nix secrets.
flake.nix The root of everyting. Defines the inputs and outputs of the project. Also applies misc overlays and adds config-wide modules. See Nix Flakes for more information.

Hosts

Host Machine type Purpose
Tsuki Dell Poweredge r710 server Data storage / Build server / Selfhosted services. This server hosts a wide variety of services, including websites, matrix server, git repos, CI/CD and more. This is probably the most interesting machine to pick config from
Kasei AMD Zen 2 CPU / Nvidia GPU - desktop computer Semi-daily driver. This is my main computer at home. Most of the configuration written in /home is made specifically for this computer, since Eisei is out of service at the moment.
Eisei HP Laptop At the moment, this laptop is not in use. I've found that I'm not able to use NixOS quickly enough in a university environment where I need to rapidly install software and maintain project configurations (Makefile, Maven, django, npm, etc...) for several subjects. In addition to the configurations, some of the software is not available on NixOS. As a result, I would the be forced to package or FHS a lot of stuff in order to do anything productive. I might return to using NixOS on my laptop in the future.

home-manager configuration

Path Purpose
/home/config Configuration for everything that is not a program, nor a service, and are big enough to warrant their own file or directory.
/home/modules Custom home-manager modules.
/home/packages.nix A list of packages that should be included in the environment.
/home/programs Configuration for programs that have their own home-manager modules.
/home/services Configuration for services/daemons that are user-specific.
/home/shell.nix Shell-agnostic configuration. This includes aliases, envvars, functions, etc.