dotfiles/README.org

4.3 KiB

RekahSoft Dotfiles

These are the dotfiles of Collin Doering.

Quickstart

Clone this repository.

  git clone <repo> ~/.dotfiles
  cd ~/.dotfiles

Home configuration, including startup services (via userland shepherd), configuration files and installed packages are all managed using guix/guix-home and can be installed with the following.

  guix pull -C ~/.dotfiles/channels.scm
  guix home reconfigure ~/.dotfiles/home-configuration.scm

TODO Legacy Configuration

Configurations for a variety of programs are available to be 'installed' by symbolically linking them into $HOME using stow. This process is simplified by the provided Makefile, however is expected to be deprecated by the switch to Guix home, which is not yet fully completed. Currently guix home only manages bash configuration, and all other configuration is still managed using the 'legacy' stow method described here.

  # See what will be installed/linked by stow
  make DRY=true

  # Install/link all configurations
  make

TODO Makefile Usage

Makefile is expected to be become unnecessary after this configuration is managed by Guix home instead of using stow.

make [packages] [DRY=true] [RESTOW=true] [DELETE=true]

Where: <DRY> must be undfined or 'true' <RESTOW> must be undfined or 'true' <DELETE> must be undfined or 'true'

Notes: If no [packages] are listed, all packages are actioned upon via the all target

Examples

  # Install a subset of the entire configuration
  make zsh xorg

  # Relink configuration
  make RESTOW=true

  # Relink configuration for a subset of packages
  make RESTOW=true bash zsh

  # Uninstall/unlink configuration
  make DELETE=true

  # Uninstall/unlink configuration for a subset of packages
  make DELETE=true bash

* Development

This section details some useful tips regarding development.

** Guix

Here are some useful commands for working with package upgrades on guix.

#+begin_src shell
  # Check for binary substitute availability on the tip of master
  guix time-machine -- weather -m ~/.dotfiles/home-manifest.scm

  # Build a environment using the provided home-manifest.scm off the tip of master (useful to test the new environment)
  guix time-machine -- environment -m ~/.dotfiles/home-manifest.scm -- exit

Updates that modify zsh site-functions (completions)

These updates require additional manual effort, otherwise completions don't show up.

  # Set fpath in ~/.zprofile (this is already done in the zsh configuration)
  #fpath=(~/.guix-home/profile/share/zsh/site-functions $fpath)

  rm -r ~/.zcompdump && compinit

Try out any packaged window manager

The included xorg configuration provides a script that is used to startx, located in ~/.bin/startx.sh after installing/linking the xorg configuration. This script is required as the startx that comes with the xinit package on guix does not work when Xorg is installed in a user profile. Like the original startx command, this script passes through arguments to ~/.xinitrc. The included ~/.xinitrc takes two optional arguments, SESSION_WM and SESSION_TYPE, the window manager to run and the session type to use. The session type can be one of full (default), min, or new.

Start the default window manager (exwm) with the default session type (full).

  startx

Note: if using the configuration zsh or bash, all *.sh scripts linked into ~/.bin are aliased to exclude the .sh suffix.

  guix environment --ad-hoc ratpoison -- startx.sh ratpoison new

Note: The script startx.sh must be used directly here, and not by the startx alias mentioned above.

This works very well for simple window managers, however for more complicated environments, many times there are numerous packages that will be required. Here is an example of starting xfce using this mechanism.

  guix environment --ad-hoc xfce xfce4-session xfconf -- startx.sh startxfce4 new