--- /dev/null
+# Overview
+
+GNU Guix configuration for a single machine, split across two files:
+
+- system.scm - Operating system configuration.
+- home.scm - Home directory configuration.
+
+# Directories
+
+- conf/common/ — Shared definitions (service types, package constructors).
+- conf/home/ — Home directory services.
+- conf/system/ — Operating system services.
+- <program>/ — Dotfile tree for a <program>.
+- scripts/ — Shell scripts packaged as Guix packages.
+
+GUIX_PACKAGE_PATH is set to the repo root during reconfigure, so modules under
+conf/ are importable by their file path — e.g. conf/home/bash.scm is imported as
+(conf home bash).
+
+# System Profiles
+
+PROFILE selects between libre and nonfree setups at build time:
+
+- PROFILE=libre — Free software only (e.g. linux-libre).
+- PROFILE=nonfree — Allows nonfree firmware (e.g. nonfree firmware blobs).
+ Requires the nonguix channel.
+
+# Home Directory
+
+Programs in the home configuration have dotfiles, which are installed alongside
+the program and respect the XDG base directory specification. Each program's
+dotfiles live in a <program>/ directory whose internal structure mirrors $HOME,
+e.g. emacs/.config/emacs/init.el → ~/.config/emacs/init.el.
+
+Core service types:
+
+- home-program-service-type (conf/home/program.scm) — primary building block
+ which installs the program and dotfiles. See home-program-configuration.
+- home-symlink-service-type (conf/home/symlink.scm) — symlinks files into the
+ home directory. Strips the first path component of each dotfile to derive its
+ $HOME-relative target.