Skip to content

ferdinandyb/dotfiles

Repository files navigation

.files

My dotfiles and explanations/documentation for myself.

dotfile management

I use yadm because it is essentially a bare git repo, with some nice additional features.

getting started

Requirements (just approximate):

  • git >= 2.34.1
  • zsh >= 5.1
  • vim >= 8.2 (much newer for everything)

minimal quickstart

bash <(curl -sS https://raw.githubusercontent.com/ferdinandyb/dotfiles/master/.config/yadm/minimalbootstrap)

manual

Install yadm:

curl -fLo ~/.local/bin/yadm https://github.com/TheLocehiliosan/yadm/raw/master/yadm && chmod a+x ~/.local/bin/yadm

Clone the repo:

yadm clone https://github.com/ferdinandyb/dotfiles.git

Or if you have a key on the machine:

yadm clone git@github.com:ferdinandyb/dotfiles.git

sparse-checkout and alternates

Way to set the classes (currently all alternates are based on this):

yadm config --add local.class imap

Current existing classes:

  • imap: set aerc to use imap instead of maildir
  • minimal: sparse-checkout
  • org: sparse-checkout

To use sparse-checkout after cloning set the appropriate classes then run:

yadm sparse-checkout reapply

See sparse-checkout template.

usage

The below function sets up vim so that fugitive works properly with yadm and my editing history is preserved.

function confed(){
  env GIT_DIR=$HOME/.local/share/yadm/repo.git GIT_WORK_TREE=$HOME \
  vim -c "cd ~" \
      -c "let g:rooter_change_directory_for_non_project_files = 'home'" \
      -c "silent AutoSaveToggle" \
      -S ~/.local/share/yadm/Session.vim
}

And the below vim setup allows for fzf search among my dotfiles.

command! -bang -nargs=? -complete=dir FYadm
            \ call fzf#run(fzf#wrap('yadm',
            \ fzf#vim#with_preview(
            \ { 'dir': <q-args>,
            \ 'source': 'yadm list -a' }), <bang>0))

nmap <leader>y :FYadm!<CR>

Desktop

Regolith 3. Most notable customizations from base Regolith:

  • switched back to rofi from ilia as it is more generic, with more community support;
  • flameshot instead of gnome-screenshot with more useful bindings than Ubuntu/Regolith defaults
  • ranger set up as default filebrowser: makes more sense for me to use the same as I would in the terminal

Terminal stuff

  • kitty although now looking at contour and wezterm
  • zsh: took a long time to switch from bash, but the fast powerlevel10k prompt (vs starship.rs which lagged) was the final nail in the coffin, although I still have bash set up with ble.sh, which is pretty great (probably a bit better than what zsh provides through the vim-mode and syntax highlight plugins)
  • tmux
  • fzf, fd-find, ripgrep, and ugrep wherever they make sense
  • zoxide for navigation: also integrates with ranger

airline themes for tmux

If you change the airline theme in vim, to have matching themes in tmux, open vim inside a tmux session and execute:

:Tmuxline airline full
:TmuxlineSnapshot ~/.tmux/tmuxline_theme.sh

Email

I wrote a tutorial which basically covers my setup.

Deduplication of emails:

for i in {2007..2022}; do mdedup $i -i maildir -s discard-all-but-one -a delete-discarded; done

WSL

See here.