+66
-2
README.md
+66
-2
README.md
···+My personal Nix and NixOS configuration for reproducible, declarative systems and environments across multiple hosts.+This is a personal configuration with limited applicability to others, though some patterns may be useful for reference.+Common self-hosting services have been extracted to a separate project, [Eilean](https://github.com/RyanGibb/eilean-nix).+See the [NixOS manual](https://nixos.org/manual/nixos/stable/#ch-installation) for how to install NixOS.+[`deploy-rs`](https://github.com/serokell/deploy-rs) can be used to update remote hosts via SSH with `deploy .#hostname`.+1. Install [Nix](https://nixos.org/download/) and [enable flakes](https://nixos.wiki/wiki/flakes#Other_Distros.2C_without_Home-Manager).+2. Clone this repository and follow the [Home Manager manual](https://nix-community.github.io/home-manager/index.xhtml#sec-install-standalone).+- [`flake.nix`](./flake.nix) - Entry point where inputs, outputs, and [overlays](https://nixos.org/manual/nixpkgs/stable/#chap-overlays) are defined.+- [`hosts/`](./hosts/) - Host-specific configurations where each subdirectory represents a separate machine.+- Servers are even-toed ungulates ([Artiodactyls](https://en.wikipedia.org/wiki/Artiodactyl)), e.g. the [Network-Attached Storage (NAS) server](https://ryan.freumh.org/nas.html) [`elephant`](./hosts/elephant).+- SBCs are small mammals ([Eulipotyphla](https://en.wikipedia.org/wiki/Eulipotyphla)), e.g. the [Home Assistant](https://www.home-assistant.io/) server and [Zigbee](https://en.wikipedia.org/wiki/Zigbee) bridge [`shrew`](./hosts/shrew).+- Desktops are carnivores ([Carnivora](https://en.wikipedia.org/wiki/Carnivora)), e.g. the tower PC [`vulpine`](./hosts/vulpine).+- [`barnacle`](./hosts/barnacle/default.nix) builds an ISO image that can be written to media like a USB flash drive to create a read-only live USB that can be booted to provide the custom environment on all my other hosts and used to, for example, install an operating system, with the [`install.sh`](./hosts/barnacle/install.sh) script.+- `hardware-configuration.nix` - Hardware-specific configuration generated by `nixos-generate-config`.+- `minimal.nix` - A minimal configuration that can be useful when updating with insuffient disk space.+The minimal configuration can be build, the `default.nix` system garbage collected, and then the updated configuration built.+- [`modules/`](./modules/) - NixOS modules of common functionality extracted into modular components which can be enabled by host configurations.+- [`pkgs/`](./pkgs/) - Custom package definitions for packages not available in nixpkgs or requiring modifications.+To add a new secret, update [secrets.nix](./secrets/secrets.nix) and run `cd secrets && agenix -e <secret-name>.age`.
-5
flake.nix
-5
flake.nix
-43
templates/host/default.nix
-43
templates/host/default.nix
···
···