Skip to content

Latest commit

 

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Public chezmoi source for Windows, WSL Ubuntu, macOS, and NixOS dotfiles and agent workflows.

Fresh NixOS

NixOS provides git, curl, and mise as system packages and enables programs.nix-ld so mise's prebuilt Node binary can run. Clone this repository over HTTPS, then run the NixOS-only bootstrap from the checkout:

mkdir -p ~/repos
git clone https://github.com/kisepichu/dotfiles.git ~/repos/dotfiles
cd ~/repos/dotfiles
./scripts/bootstrap-nixos.sh

The bootstrap applies this chezmoi source non-interactively, installs the declared mise tools, and installs Codex and Claude Code under ~/.local/bin. Re-running it restores chezmoi-managed files to the repository state, so commit intentional local edits first. It does not perform any login or create credentials.

Create a dedicated GitHub key on the NixOS machine after the bootstrap:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github_glaceon
cat ~/.ssh/id_ed25519_github_glaceon.pub

Register only the displayed public key in GitHub, then add this host entry to ~/.ssh/config:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github_glaceon
  IdentitiesOnly yes
chmod 600 ~/.ssh/config
ssh -T git@github.com

Complete the agent authentication manually on that machine:

codex login
claude login

Fresh macOS

This path is for a Windows/WSL-first workflow on a new Mac. It is separate from the WSL bootstrap.

xcode-select --install
mkdir -p ~/repos
git clone https://github.com/kisepichu/dotfiles.git ~/repos/dotfiles
cd ~/repos/dotfiles
./scripts/bootstrap-macos.sh

After the script completes, open Karabiner-Elements once and grant the permissions requested by macOS.

Detailed notes: docs/macos-initial-setup.md

Fresh WSL Ubuntu

  1. Install WSL and Ubuntu from Windows.

    wsl --install -d Ubuntu
  2. Update WSL, then open the Ubuntu shell.

    wsl --update
  3. Clone this repository in WSL.

    sudo apt-get update
    sudo apt-get install -y git
    mkdir -p ~/repos
    git clone https://github.com/kisepichu/dotfiles.git ~/repos/dotfiles
    cd ~/repos/dotfiles
  4. Run the WSL bootstrap.

    ./scripts/bootstrap-wsl-ubuntu.sh
  5. Restart the shell after the bootstrap changes the default shell to fish.

    exec fish -l

Docker Engine On WSL

Install Docker Engine directly inside WSL Ubuntu when container-based project work is needed.

Docker Engine expects systemd in WSL. Current Ubuntu installs through wsl --install should use systemd by default; verify it when needed:

cat /proc/1/comm

If the output is not systemd, enable it inside the distro and restart WSL:

sudoedit /etc/wsl.conf

Add or update this section while preserving any existing settings:

[boot]
systemd=true
wsl --terminate Ubuntu

Replace Ubuntu with the distro name when it differs.

cd ~/repos/dotfiles
./scripts/install-docker-engine-wsl.sh

The script prompts before adding your user to the docker group. Accept only if you want to run Docker without sudo; Docker daemon access is effectively root-equivalent inside the WSL distro.

Then close and reopen the WSL session if you accepted the group change. Verify the install:

docker run --rm hello-world
docker compose version

If you declined the group change, use sudo for daemon access:

sudo docker run --rm hello-world
docker compose version

The script follows Docker's official Ubuntu apt repository flow and installs docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, and docker-compose-plugin.

Nix (optional)

Nix is not part of the core bootstrap. Install it explicitly when a reproducible nix develop shell or optional Nix-managed tooling is wanted. The script uses the Determinate Nix Installer and supports macOS and WSL Ubuntu.

cd ~/repos/dotfiles
./scripts/install-nix.sh

On WSL, the script detects whether systemd is PID 1. If it is not (no systemd=true in /etc/wsl.conf), it installs with --init none so the install does not depend on a systemd-managed nix-daemon. For a systemd-managed daemon, enable systemd in WSL first (see the Docker section above).

Options:

  • NIX_INSTALL_NO_CONFIRM=1 runs the installer non-interactively.
  • NIX_INSTALL_DETERMINATE=1 installs Determinate Nix instead of upstream Nix.

Open a new shell after installing; conf.d/nix.fish sources the nix profile automatically. To uninstall a Determinate install:

/nix/nix-installer uninstall

Rust

Rust is managed by mise (declared in ~/.config/mise/config.toml). After chezmoi apply, mise install installs the toolchain and run_onchange_after_45-rust-components.sh.tmpl adds the rust-analyzer and rust-src components that neovim (rustaceanvim) needs. No manual step is required; open neovim in a Rust project and the LSP starts.

Validation

Before committing, run:

prek run --all-files

If prek is not available, run:

pre-commit run --all-files

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages