Skip to content

Repository files navigation

Dotfiles

Configuration for my development environment, on macOS and Ubuntu.

CI License Top Language

demo

Managed with sennit, written for this repository. Three files describe the whole thing:

packages.toml every package, and what it provides
theme.toml the colour scheme, once
sennit.toml what gets linked, generated, and run afterwards

CI installs the whole thing into a fresh Ubuntu container on every push, then checks that nothing any config references is missing from packages.toml. A pull request that adds a declaration is tested by removing it again and seeing whether the install still succeeds; edits inside an existing declaration and outright deletions only get the unmutated build.

🛠 Features

This repository manages configurations for:

  • Shell & Prompt:
  • Editors:
  • Terminal & Multiplexers:
  • System & Tools:
    • Mise - Runtime executor & version manager (Node, Python, etc.).
    • Hammerspoon - macOS automation.
    • LazyGit - Simple terminal UI for git commands.

🚀 Installation

Prerequisites

  • macOS or Linux (Ubuntu/Debian)
  • curl, git

Quick Start

To install and set up everything, simply run the following command:

curl -fsSL -o /tmp/dotfiles-install.sh \
  https://github.com/ghraw/ken109/dotfiles/main/script/install.sh \
  && bash /tmp/dotfiles-install.sh

Two steps joined with && rather than bash -c "$(curl …)" on purpose. A command substitution throws away curl's exit status, so a 404 or a connection dropped mid-body would feed bash a truncated script — which, since this one is all function definitions with a single call on the last line, exits 0 having done nothing. -f catches the 404 and the && catches the truncation, which curl reports as exit 18.

It clones the repository to ~/.dotfiles, installs Homebrew and enough to run sennit, and hands the rest over: sennit sync installs what packages.toml declares, and sennit apply renders the templates and places the symlinks.

📦 Usage

After installation, the following commands and aliases are available:

Management

  • dotfiles update: Pull, then re-apply.
  • dotfiles list: Show every managed path and where it points.

Or use sennit directly, from anywhere inside the repository:

sennit diff      # what an apply would change
sennit apply     # place it
sennit sync      # install anything declared but missing
sennit check     # is everything the configs need declared?
sennit verify    # is everything declared actually here?

Utilities

  • cdg: Quickly navigate to ghq managed repositories using fzf.
  • git-branch-prune: Delete local branches that have been removed from the remote.

📂 Directory Structure

.dotfiles
├── packages.toml    # every package, per OS and package manager
├── theme.toml       # the colour scheme
├── sennit.toml      # what to link, what to generate, what to run after
├── .config/         # XDG configuration (nvim, zsh, tmux, alacritty, ...)
├── .hammerspoon/    # macOS automation
├── .local/          # GNOME Shell extensions (Linux)
└── script/          # bootstrap and setup; everything else is sennit's job

Files ending in .tmpl are generated from theme.toml; their output is not committed.

📜 License

MIT © Kensuke Kubo

About

Reproducible dev environment for macOS & Ubuntu — shell, editor, and tooling configs with automated setup

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages