This repository contains my personal dotfiles for an immutable workstation setup, including yadm + Ansible bootstrap configuration and devcontainer support for Chromebook and AVF environments.
- Manages shell, editor, and terminal configuration with version-controlled dotfiles.
- Uses
yadmto clone and bootstrap the repository, keeping the working tree and home directory synced. - Runs an Ansible-based bootstrap to install essential packages, configure third-party repos, and enable automated system services.
- Includes local reusable utilities and a small service automation setup for user-level
systemdtimers.
-
.zshrc- Enables
zshcompletions and command correction. - Uses a clean colored prompt with a cyan right prompt showing the current directory.
- Configures history settings,
lsalias, andvimas the default editor. - Adds helpful functions:
retryretries a command until it succeeds.funnyprints a random fortune withcowthinkandlolcat.
- Exports Wayland-friendly environment flags for Chrome/Electron applications.
- Automatically starts
tmuxfor interactive shells.
- Enables
-
.tmux.conf- Uses
Ctrl+aas the tmux prefix instead of the defaultCtrl+b. - Enables mouse support and
vicopy mode. - Adds Vim-style pane movement and resize bindings.
- Loads a custom
powerline-double-cyantheme.
- Uses
-
.vimrc- Loads Vim plugin manager configuration from
.config/vimplug. - Enables syntax highlighting, 256-color support, and a dark color theme.
- Sets sane tab, indent, clipboard, and search settings.
- Defines convenient mappings for window movement, NERDTree, and Vimux operations.
- Loads Vim plugin manager configuration from
.gitconfig- Sets user name and email.
- Configures push behavior, rebase on branch setup, and color UI.
- Uses GitHub CLI credential helper for GitHub and Gist access.
-
.config/ansible/site.ymlandtasks/- Bootstraps workstation packages using Ansible.
- Installs
git,zsh,tmux,vim,yadm,curl,wget,gh,code, Docker packages, and more. - Configures unattended upgrades and APT daily timers.
- Adds the current user to the
dockergroup.
-
.config/yadm/bootstrap- Runs the Ansible site playbook after clone.
- Boots Vim plugin sync when
vimis installed.
-
.config/systemd/user/yadm-sync.timer/yadm-sync.servicekeeps the dotfiles repo synced hourly.git-clean.timer/git-clean.serviceruns weekly Git cleanup.docker-clean.timer/docker-clean.serviceruns weekly Docker cleanup.
-
.local/bin/- Includes helper scripts such as
git-cleananddocker-cleanused by the user-level timers.
- Includes helper scripts such as
yadm-managed dotfiles deployment with a bootstrap hook.yadmhook support that hidesREADME.mdfrom the home directory after clone.- Ansible automation for installing packages and configuring repos.
- GitHub Actions coverage that validates
yadmclone, README hiding, Ansible bootstrap, and devcontainer builds. - User-level
systemdtimers for repo sync and cleanup tasks. - Custom
zsh,tmux, andvimworkflows built for terminal productivity. - Wayland-friendly environment flags for Chromium and Electron apps.
Run the following commands on a Debian/Ubuntu-based machine:
sudo apt update
sudo apt install yadm ansible
yadm clone https://github.com/jckimble/dotfiles.git --bootstrapAfter cloning, the bootstrap will execute Ansible and install the configured packages. If vim is present, it also syncs Vim plugins automatically.
- The repo expects files and service definitions to be installed into the home directory via
yadm. - If your environment uses Wayland, the
.zshrcexports flags to help Chrome and VS Code run in a Wayland-compatible mode. - The
post_clonehook rewrites.config/weston.inifor AVF-specific configuration and removes the repository copy ofREADME.mdfrom tracking.