dotfiles of Collin Doering.
Go to file
Collin J. Doering 32b8ebec9a
Initial commit
2022-01-31 12:07:29 -05:00
.guix Initial commit 2022-01-31 12:07:29 -05:00
user-config Initial commit 2022-01-31 12:07:29 -05:00
user-config-unused Initial commit 2022-01-31 12:07:29 -05:00
.envrc Initial commit 2022-01-31 12:07:29 -05:00
.gitignore Initial commit 2022-01-31 12:07:29 -05:00
.guix-authorizations Initial commit 2022-01-31 12:07:29 -05:00
.guix-channel Initial commit 2022-01-31 12:07:29 -05:00
Makefile Initial commit 2022-01-31 12:07:29 -05:00
README.org Initial commit 2022-01-31 12:07:29 -05:00
channels.scm Initial commit 2022-01-31 12:07:29 -05:00

README.org

RekahSoft Dotfiles

These are the dotfiles of Collin Doering.

Quickstart

Clone this repository.

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

Dependencies are managed using [guix](https://guix.gnu.org) and can be installed with the following.

  guix pull -C ~/.dotfiles/channels.scm
  guix package -m ~/.dotfiles/user-manifest.scm

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.

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

  # Install/link all configurations
  make

Makefile Usage

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.

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

  # Build a environment using the provided user-manifest.scm off the tip of master (useful to test the new environment)
  guix time-machine -- environment -m ~/.dotfiles/user-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-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