Skip to content

eduarbo/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My homies ese! 😎

A tidy $HOME is a tidy mind.

Kitty and Emacs - Jul-2023 Screenshot of macOS Ventura

Doom Emacs - Jul-2023 Screenshot of macOS Ventura

These are my dotfiles, designed primarily for macOS (Apple silicon) and Debian 12, heavily inspired by hlissner/dotfiles. They are my specific breed of madness, split into 2-level topics (e.g. shell/zsh) that strive for minimum $HOME presence (adhering to XDG standards where possible).

Quick start

git clone https://github.com/eduarbo/dotfiles.git ~/.config/dotfiles

Dependencies

What does it include?

The following are the categories and topics available to install:

  • macos/ - macOS compatible utilities

    • apps - collection of macOS apps that I use on a daily basis
    • defaults - bare essentials for macOS
    • hammerspoon - a bunch of lua scripts to boost my productivity
      • Window manager
      • Quick app launcher
      • Push-to-talk Mic
      • Audio output switcher
    • karabiner - powerful keyboard customizer
  • editor/ - Configuration for my text editors

    • emacs - the best of Emacs and Vim in one place
    • nvim - for quick file editing
    • coding-style - Tools to enforce coding style because consistency is king
  • shell/ - Shell utilities

    • git - nice aliases and zsh plugins
    • tmux - window manager within the terminal + nice plugins
    • zsh - my shell of choice, fast, powerful and with a nice prompt
    • kitty - A purr-fectly powerful and feature-rich terminal
  • dev/ - Relevant to software development & programming in general

    • lua - manage lua environments with luaenv
    • node - setup nodenv, a lightweight alternative to nvm
    • python - setup pyenv, a simple Python version management

Dotfile management

Usage: deploy [-acdlLit] [TOPIC...]

  -a   Target all enabled topics (ignores TOPIC args)
  -c   Afterwards, remove dead symlinks & empty dot-directories in $HOME.
       Can be used alone.
  -d   Unlink and run `./_init clean` for topic(s)
  -l   Only relink topic(s) (implies -i)
  -L   List enabled topics
  -i   Inhibit install/update/clean init scripts
  -t   Do a test run; do not actually do anything

e.g.

  • deploy misc/kitty shell/{zsh,tmux}: enables misc/kitty, shell/zsh & shell/tmux
  • deploy -d shell/zsh: disables shell/zsh & cleans up after it
  • deploy -l shell/zsh: refresh links for shell/zsh (inhibits init script)
  • deploy -l: relink all enabled topics
  • deploy -L: list all enabled topics

Here's a breakdown of what the script does:

cd $topic
if [[ -L $DOTFILES_DATA/${topic/\//.}.topic ]]; then
    ./_init update
else
    ln -sfv $DOTFILES/$topic $DOTFILES_DATA/${topic/\//.}.topic

    ./_init install
    ./_init link
fi

Best practices

  • Generate one key per client device with ssh-keygen -t ed25519 -C "[email protected]" and protect it with a strong passphrase

Troubleshooting

Signing Git commit with GPG ask passphrase everytime

Make sure the GPG key ID is correct. You can get a list of GPG keys with gpg --list-secret-keys --keyid-format LONG and then set it in Git with git config --global user.signingkey [GPG-key-ID].

More details in Telling Git about your GPG key.

[email protected]: Permission denied (publickey)

Just add your SSH Key to your GitHub account

Relevant projects/resources