.guix | ||
user-config | ||
user-config-unused | ||
.envrc | ||
.gitignore | ||
.guix-authorizations | ||
.guix-channel | ||
channels.scm | ||
Makefile | ||
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