This repository contains my dotfiles and Guix System literate configurations (with Guix Home configured via guix-home-service-type
).
I’m also managing Guix channels manually, which makes it easier to maintain a temporary Guix fork and avoids recompiling all Guix modules for trivial updates. See Usage
below and take a look at .envrc and Makefile if you are interested in my approach.
- config: Guix System configurations.
- external: External dependencies (Guix channels) saved as Git submodules.
- modules: Scheme modules.
- files/blobs: Private files.
- files/dotfiles: Dotfiles for
home-dotfiles-service-type
. - files/plain: Files to be referenced in Guix configurations.
- .envrc: direnv configuration to manage environment variables.
- .sops.yaml -> files/plain/sops.yaml: SOPS configuration for secrets management.
This section is for demonstration purpose only, as some submodules are private.
Dependencies:
- direnv
- emacs
- guix
- sops (invoked by
get-sops-secret
in ~(testament common)~)
- Clone repository and set up direnv, external channels (except
guix
, which will be compiled later) will be available to systemguix
command.git clone --recursive https://git.boiledscript.com/hako/Testament.git cd Testament direnv allow
- Authenticate commits.
make authenticate
- Compile Guix and reload direnv,
guix
command and channel will be replaced to ours.make compile-guix direnv reload
- See Makefile for all available phony targets.
- In case of ABI incompatibility from updates, remove compiled object files and follow step 3 to compile Guix again.
make clean direnv reload
- A Scheme Primer: Nice short guide to get you started with Scheme.
- GNU Guix Reference Manual: See Getting Started if you want an entry point.
- GNU Guix Cookbook: Tutorials and detailed examples. Some entries may be outdated, contribution is welcome ;)
- Contact — GNU Guix: Official communication channels.
- Packages — GNU Guix: Official package index,
guix
channel only (see Channels in GNU Guix Reference Manual). - Toys / Webring for GNU Guix channels: Unofficial package index, including most known Guix channels.