/etc/nixos
to configure my NixOS hosts.
Run ./init.py
after cloning to initialize the repository and/or generate
new configuration files.
Typically, this repository will live at ~/nix-config
, and /etc/nixos
will
be a clone of that (sudo git clone ~/nix-config/ /etc/nixos
).
configuration.nix
is a symlink to hosts/$HOSTNAME.nix
, which in turn
imports hosts/$HOSTNAME-hardware-configuration.nix
.
init.py
will generate that symlink and configuration file if it doesn't
already exist.
The hosts/
directory contains $HOSTNAME.nix
and
$HOSTNAME-hardware-configuration.nix
for each host.
$HOSTNAME.nix
contains configuration for specific machines that aren't
shared.
Configuration sets that may be shared between machines to enable/disable specific features.
Most notable is imports/packages.nix
, which lists packages to be installed.
Resources for configuration; may include hashed passwords (hopefully
.gitignore
'd!), SSH keys, that kind of thing.
Extra NixOS modules.
Patterns for using nixpkgs on machines without NixOS installed, such as Pop!_OS or MacOS.
Scripts / files for generating bootable copy-on-write disk images for QEMU.
nixpkgs overlays; overlays/all.nix
is a list of all overlays and
overlays/default.nix
is an attrset of overlays.
A nixpkgs-like repository (in the sense of a package repository, not a git
repository) using the inputs and [callPackage
] design patterns. rebeccapkgs
contains various packages and derivations not in nixpkgs.