~freakingpenguin/rsent

Guix Configuration
emacs: project: Only save buffers in current project when compiling.
emacs: project: Add more project root marker files.
emacs: magit: Set magit-clone-default-directory.

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~freakingpenguin/rsent
read/write
git@git.sr.ht:~freakingpenguin/rsent

You can also use your local clone with git send-email.

Table of Contents

builds.sr.ht status

1. Introduction

This is a custom channel containing my Guix configuration for operating systems, home environments, and the like. Secrets are stored out of band for obvious reasons.

The channel directory structure looks like this:

rsent
├── configs
├── home
│   ├── configs
│   ├── manifests
│   └── services
├── machines
├── services
├── system
├── transformations
└── utils
  • configs contains global variables used within system, home, and machines directories.
    • This may include services, Xorg configuration blocks, etc.
  • home contains home environments and their configurations
    • The configs and services subdirectories are the home-specific equivalent of the top-level configs and services.
    • manifests contains loosely organized packages
  • machines contains operating systems and machine lists used by $ guix deploy
  • services contains custom service types
  • systems contains generic operating systems. These are primarily inherited by other systems to share behavior.
  • transformations contains functions that use record inheritance to add arbitrary configuration data to operating systems that may be difficult to express with service extensions.
  • utils contains helper functions that don't fit elsewhere.

2. Usage

Save the following to a file.

(cons*
 (channel
  (name 'rsent)
  (url "https://git.sr.ht/~freakingpenguin/rsent")
  (branch "master")
  (introduction
   (make-channel-introduction
    ;; Use commit after .guix-authorizations appeared because I merged a
    ;; branch the wrong direction.
    "fa6011e23debd768ccb8135d0cfb25d964ecc6c5"
    (openpgp-fingerprint
     "0BC0 5236 B0DA D691 2F6E  1993 A2D2 1FA4 2A90 8978"))))
 %default-channels)

Then run

$ guix pull -C <file-name>

Alternatively, you can use the channels.scm file stored in the init branch. To do that:

$ git checkout init
$ guix pull -C channels.scm

For temporary use and testing unpushed/pulled changes, you can use

$ guix <command> -L . <args>

3. Emacs

In theory my Emacs configuration can be used without Guix by simply copying rsent/home/configs/aux-files/emacs to ~/.emacs, assuming the various packages are installed and available. However, Guix generates and loads various *.autoloads.el files for my installed packages. Not every use-package form has manual autoloads defined (e.g. via :commands).

As such, if you want to use my config and are not already using a package manager that handles autoloads for you, you will need to add your own manual autoloads. Use the -Q flag to test how Emacs works without autoloads on Guix. This disables site-start.el file, which also disables loading the guix-emacs.el file.

Additionally there are various integrations between Emacs and my home environment, such as environment variables and activation scripts. Nothing here should be critical, but don't be surprised if some functionality is, well, nonfunctional.

4. StumpWM

StumpWM is currently split into two parts; a system-level package and a home-level configuration. If odd behavior is detected (e.g. SBCL attempting to place .fasl in /gnu/store), ensure that:

  1. Builds are done with --no-grafts
    1. https://issues.guix.gnu.org/62890
    2. As of Guix a46908620fa this should no longer be necessary.
  2. System and Home are reconfigured with the same version
    1. Outside of SBCL version mismatches (which at least print helpful error messages), changes to Mesa/Xorg/similar may cause SBCL to attempt to recompile files in /gnu/store when the System is reconfigured and Home is stagnant.

5. YubiKey

To set up a Yubikey after initial system installation, run the following commands with the YubiKey connected:

$ gpg --card-edit
fetch
quit

$ gpg --card-status
Do not follow this link