Skip to content

connorads/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Use git (and Sublime Merge) to manage dotfiles without using symlinks. Uses nix-darwin (macOS) or home-manager (Linux) and brew (macOS) to setup and install software, and mise to manage runtimes.

Usage

If you've already got your dotfiles setup you can use the following commands to manage your dotfiles.

Updating dotfiles

Track file

dotfiles add -f .somefile

Untrack file

dotfiles rm --cached .somefile

Managing system

macOS (nix-darwin)

Build and activate nix-darwin config. This will make changes to the system and update packages as per flake.nix

darwin-rebuild switch --flake ~/.config/nix
# alias: drs

Update nix packages. This will update your non-homebrew packages and update flake.lock

nix flake update --flake ~/.config/nix
# alias: nfu
# You need to run build and activate after i.e. drs

Update brew packages

brew upgrade

Update mise packages

mise upgrade

Linux (home-manager)

Build and activate home-manager config. This will update packages as per flake.nix

home-manager switch --flake ~/.config/nix
# alias: hms

Update nix packages. This will update your packages and update flake.lock

nix flake update --flake ~/.config/nix
# alias: nfu
# You need to run home-manager switch after i.e. hms

Update mise packages

mise upgrade

Setup

Setup (from this repo)

If you want to (fork and) clone this repo and use it for your own dotfiles, follow these steps.

  1. Clone repo

    DOTFILES_REPO=https://github.com/connorads/dotfiles/
    DOTFILES_DIR=$HOME/git/dotfiles
    git clone --bare $DOTFILES_REPO $DOTFILES_DIR
  2. Change worktree to home directory

    cd $DOTFILES_DIR
    git config --unset core.bare
    git config core.worktree $HOME
  3. Put dotfiles from git into home directory (⚠️ this will overwrite existing dotfiles in home directory)

    cd $HOME
    git --git-dir=$DOTFILES_DIR/ checkout -f
  4. Setup nix, brew and install software (⚠️ skip the option to install Determinate Nix)

    macOS (nix-darwin):

    # Install Homebrew
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    eval "$(/opt/homebrew/bin/brew shellenv)"
    
    # Install Nix
    curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
    . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
    
    # Build and activate nix-darwin configuration
    nix run nix-darwin/master#darwin-rebuild -- switch --flake ~/.config/nix

    Linux (home-manager):

    # Install Nix
    curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
    . ~/.nix-profile/etc/profile.d/nix.sh
    
    # Build and activate home-manager configuration
    nix run home-manager/master -- switch --flake ~/.config/nix
  5. You can now reload your shell and open Sublime Merge

    smerge $DOTFILES_DIR

Setup YubiKey for sudo

macOS let's you use Touch ID for sudo but dem keyboards be expensive. Maybe you gots a YubiKey, this is how you set it up so you can touch your YubiKey instead of typing your password. The sudo/pam config is taken care of in flake.nix.

mkdir ~/.config/Yubico
pamu2fcfg > ~/.config/Yubico/u2f_keys

Add a second key if you like

pamu2fcfg -n >> ~/.config/Yubico/u2f_keys

Setup (from scratch)

Follow these steps to recreate the setup for this repo from scratch.

  1. Create repository to store dotfiles

    DOTFILES_DIR=$HOME/git/dotfiles
    git init --bare $DOTFILES_DIR
  2. Change worktree to home directory

    cd $DOTFILES_DIR
    git config --unset core.bare
    git config core.worktree $HOME
  3. Ignore all files except .gitignore (Sublime merge doesn't support status.showUntrackedFiles=no)

    cd $HOME
    echo "/*" >> .gitignore
    echo "!.gitignore" >> .gitignore
  4. Add alias to .zshrc

    echo "alias dotfiles='git --git-dir=$HOME/git/dotfiles/'" >> $HOME/.zshrc
  5. You can now start tracking files

Credit

Inspired by

About

@connorads dotfiles 🟢

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published