๐Ÿ“ฆ justjake / Dotfiles

Feelin' at home

โ˜… 14 stars โ‘‚ 5 forks ๐Ÿ‘ 14 watching
๐Ÿ“ฅ Clone https://github.com/justjake/Dotfiles.git
HTTPS git clone https://github.com/justjake/Dotfiles.git
SSH git clone git@github.com:justjake/Dotfiles.git
CLI gh repo clone justjake/Dotfiles
Jake Teton-Landis Jake Teton-Landis commit atuin config 3d359f9 7 months ago ๐Ÿ“ History
๐Ÿ“‚ new View all commits โ†’
๐Ÿ“ bin
๐Ÿ“ bundles
๐Ÿ“ config
๐Ÿ“ cows
๐Ÿ“ dotfiles-node
๐Ÿ“ fluxbox
๐Ÿ“ fontconfig
๐Ÿ“ fonts
๐Ÿ“ i3
๐Ÿ“ irssi
๐Ÿ“ local
๐Ÿ“ lscolors
๐Ÿ“ meta
๐Ÿ“ public_keys
๐Ÿ“ terminfo
๐Ÿ“ themes
๐Ÿ“ tmux
๐Ÿ“ vim
๐Ÿ“ zsh
๐Ÿ“„ .editorconfig
๐Ÿ“„ .gitignore
๐Ÿ“„ .gitmodules
๐Ÿ“„ editrc
๐Ÿ“„ gitconfig
๐Ÿ“„ hgrc
๐Ÿ“„ mac-setup.sh
๐Ÿ“„ README.md
๐Ÿ“„ screenrc
๐Ÿ“„ signature
๐Ÿ“„ spacemacs
๐Ÿ“„ ssh_config
๐Ÿ“„ tmux.conf
๐Ÿ“„ vimrc
๐Ÿ“„ xmodmap
๐Ÿ“„ Xresources
๐Ÿ“„ zshrc
๐Ÿ“„ README.md

@jitl's Dotfiles

Because I need them somewhere.

Installation

There's a really simple install script in meta/install.sh that links the things in a list into your homedir.

$ git clone https://github.com/justjake/Dotfiles ~/.dotfiles

Print out the list of installable configurations:

$ ~/.dotfiles/meta/install.sh

I usually install like this:

$ zsh ~/.dotfiles/meta/install.sh submodules dotfiles ssh-config

Things to Change

There are a few files that have my usernames and email in them. You should switch them out with your own before you make git commits or something.

  • gitconfig
  • hgrc
  • irssi/config
  • signature
  • ssh_config

Zsh

Getting started

Try using the TAB key lots. ZSH completions are excellent, and will semantically complete most commands. You can use the arrow keys to move around tab-completion menus.

Pressing the up and down arrows after you've typed a partial command will only move to history items that start with that command. Type ^R (control-r) to enter full history search mode.

If you type a bare directory name (eg, ~/.dotfiles) you will cd to it.

Type hostsettings to edit your configuration file for this host. Type globalsettings to edit the global zshrc. Type zshall to edit the ZSH config directory.

Configuration

Zsh configuration is spread across several topical files in zsh/. The global config file ~/.zshrc loads the rest of the configuration, including a host specific configuration file at ~/.zsh/hosts/$(hostname -f).zsh. Here is a list of a few of the files, and the sort of settings they contain:

  • zshrc: basic ZSH configuration. Setup of basic env vars like $EDITOR, and
zsh history config. Sources the rest of the configs and the host config
  • zsh/rc.d/01_completion.zsh: ZSH completion settings. Has SSH host
completion and shows ... while completion is happening.
  • zsh/rc.d/02_bundles.zsh: bundle support, described separately below. Bundles
in $HOME/bundles are loaded by default. This file is SH-compatible, so you can use it from other init scripts.
  • zsh/rc.d/1*: version control status in RPS1, up/down arrows perform history
search
  • zsh/rc.d/20_aliases.zsh: put aliases here. Uses associative arrays to
create short host-aliases that ssh to the complete hostname. For instance, hal is aliased to ssh hal.rescomp.berkeley.edu. We always call ssh with the full hostname instead of an ssh_config host shortname.

Also configures some useful settings files aliases. For instance, typing zshrc will edit ~/.zshrc; typing sshconfig will edit ~/.ssh/config

  • zsh/rc.d/21_rescomp.zsh: settings that are loaded on all ResComp hosts.
  • zsh/rc.d/99_jokes.zsh: try out fractal!

Bundles

"Bundles" are UNIX PREFIXes: directories that contains a partial (or full) UNIX [filesystem hierarchy](fhs: http://en.wikipedia.org/wiki/FilesystemHierarchyStandard)

I find bundles to be useful because they allow me to use non-standard software without having to install it in some sort of centralized, system-wide fashion. For instance, when I compile my own VIM, I do so with --prefix=~/bundles/vim so that when I install it, it is cleanly separate from the rest of my programs.

Many 3rd party Linux software packages (Firefox, Intellij IDEA, Java, etc) are distributed in bundle format. By default zshrc will load all the bundles in ~/bundles. All you have to do is untar them in ~/bundles and they'll be added to your path when you next source your .zshrc.

You can use the function add-bundle-to-path [BUNDLE_PATH] to add the directories in the given bundle to your current environment variables. Here are how various subdirectorys of a bundle are handled:

  • bin: prepended to $PATH, allowing you to run commands in the bundle
  • share/man: prepended to $MANPATH, allowing you to access man pages in
the bundle
  • lib and lib64: prepended to $LD_LIBRARY_PATH, allowing programs to load
shared libraries from the bundle. This can sometimes cause things to go weird when a system program expects version 1.0.0 of a library but ends up loading version 1.5.7a2 from one of your bundles.
  • lib/pkgconfig: prepended to $PKG_CONFIG_PATH, allowing autotools and
./configure to find the libraries and headers in the bundle.
  • include: prepended to $C_INCLUDE_PATH
  • usr: recursed into by a second call to add-bundle-to-path

Vim

Vim uses Vundle for plugin management.

Vim will complain loudly if you don't have Vundle.vim going. Make sure you git submodule upate --init or install with submodules (meta/install.sh submodules) before trying to use it, or download and extract an archive of Vundle.vim to ~/.vim/bundle/Vundle.

Once you launch Vim for the first time, type :PluginInstall to get all the nifty vim plugins.