This is my NixOS and Home Manager configuration, which I use on my personal computer. NixOS is a Linux distribution that uses the Nix package manager, and Home Manager is a Nix-based configuration management tool for configuring the user environment. This configuration uses the new Flakes feature in Nix to provide a more modular and flexible way of managing the configuration.
This project uses Nix Flakes to manage the configurations. You can read more about Flakes here.
The Flake has outputs for my Hosts (as NixOS or Nix Darwin) configurations and my Home Manager configurations. The hosts
directory contains the NixOS and Nix Darwin configurations, and the home
directory contains the Home Manager configurations.
For reproducibility, I'm using modules defined in the modules
directory for my hosts and home/modules
for my Home Manager configuration.
To automatically inject the modules into the configuration, I'm using custom functions defined in lib
.
This repository contains my literate emacs config.
To check whether the configuration is correct and evaluates during build, this project uses Garnix.
This project uses Github Actions to automatically build the configurations (on linux_x86 and darwin_aarch64) and uses Cachix to store them in a binary cache. This means once my configuration is pushed, I don't have to re-build packages on systems that use it.