yutkat/dotfiles

website github github
archlinuxdotfilesdunstrcfedorahyprland-confignixnixosnvimrcubuntuvscode-neovimwezterm-configzinitzshrc
stars 1,000
issues 0
subscribers 11
forks 47
CREATED

UPDATED


dotfiles

total lines GitHub code size in bytes GitHub repo size Created

GitHub commit week activity GitHub commit month activity GitHub commit year activity

Overview

My home dotfiles

overview

Supported OS

GUI

  • NixOS (recommend)
  • Arch Linux (You must install various GUI apps yourself)

CLI

  • NixOS
  • Arch Linux
  • Other Linux distributions (Nix or mise only; not tested in CI)

Install (NixOS)

  1. Download

    git clone https://github.com/yutkat/dotfiles.git
    cd dotfiles
    
  2. Edit Configuration

    vi flake.nix
    # myHosts = {
    
  3. Install nix (+flake)

    ./install.sh
    
  4. Setup (installing tools)

    sudo nixos-rebuild switch --flake .#<hostname>
    
  5. Link dotfiles (managed by [dotfiles] in mise.toml)

    mise trust
    mise bootstrap dotfiles apply
    
  6. zsh plugin install

    exec zsh
    
  7. Install mise tools and run setup tasks

    mise run setup
    
  8. neovim plugin install

    vi --headless -c 'Lazy! sync' -c 'qall'
    
  9. Enjoy!

Install (Other OS)

  1. Download

    git clone https://github.com/yutkat/dotfiles.git
    cd dotfiles
    
  2. Edit Configuration

    vi flake.nix
    # myHosts = {
    
  3. Install nix (+flake)

    ./install.sh
    
  4. Setup (installing tools)

    The first run uses the locked Home Manager; afterwards home-manager switch is available.

    # Default user and hostname
    nix run --inputs-from . home-manager -- switch --flake .#<hostname>
    
    # If you override NIX_USERNAME
    NIX_USERNAME=your_username nix run --inputs-from . home-manager -- switch --impure --flake .#<hostname>
    
  5. Link dotfiles (managed by [dotfiles] in mise.toml)

    mise trust
    mise bootstrap dotfiles apply
    

    Link sources are relative to the repository root, so any clone location works without extra configuration.

  6. zsh plugin install

    exec zsh
    
  7. Install mise tools and run setup tasks

    mise run setup
    
  8. neovim plugin install

    vi --headless -c 'Lazy! sync' -c 'qall'
    

Install (without Nix)

CLI-only setup with mise and the OS package manager. Nix-managed extras such as the Neovim egress sandbox are not available. This path is not tested in CI.

  1. Install prerequisites with the OS package manager

    git, zsh, curl, gcc, make, unzip, node (22+), and bun (mise installs npm-based tools with bun)

    # Arch Linux
    sudo pacman -S --needed git zsh curl gcc make unzip nodejs-lts-jod bun
    

    Distribution Node.js packages can be too old (e.g. Ubuntu); use the official installer in that case.

  2. Install mise

    curl https://mise.run | sh
    export PATH="$HOME/.local/bin:$PATH" # .zshenv adds this after linking
    
  3. Download

    git clone https://github.com/yutkat/dotfiles.git
    cd dotfiles
    
  4. Link dotfiles (managed by [dotfiles] in mise.toml)

    mise trust
    mise bootstrap dotfiles apply
    
  5. zsh plugin install

    exec zsh
    
  6. Install mise tools and run setup tasks

    mise run setup
    
  7. neovim plugin install

    vi --headless -c 'Lazy! sync' -c 'qall'
    

Temporary Install

If you do not want to dirty your home directory

  1. Setup the container

    docker run -it --rm archlinux:latest /bin/bash
    
  2. Setup the environment

    pacman -Sy --noconfirm sudo git
    useradd -m -s /bin/bash test
    echo 'test ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
    su - test
    
  3. Download

    git clone https://github.com/yutkat/dotfiles.git
    cd dotfiles
    
  4. Install

    ./install.sh --single
     exec bash
    
  5. Setup (installing tools)

    nix run --inputs-from . home-manager -- switch --flake .#test
    
  6. Link dotfiles (managed by [dotfiles] in mise.toml)

    mise trust
    mise bootstrap dotfiles apply
    
  7. zsh plugin install

    exec zsh
    
  8. Install mise tools and run setup tasks

    mise run setup
    
  9. neovim plugin install

    vi --headless -c 'Lazy! sync' -c 'qall'
    

Components

  • zsh
  • neovim
  • wezterm
  • (optional) Hyprland

Usage

Frequently used shortcuts

wezterm

key action
Alt-h/j/k/l switch window
Alt-j close window
Alt-k create window
S-Up/Down/Left/Right switch pane

Hyprland

key action
Mod-h/j/k/l switch window
Mod-S-h/j/k/l move window
Mod-C-S-h/j/k/l move workspace

Insight

Activity

Changes

Star History