To install most of what follows, simply run ./bootstrap-home-manager.sh.
Run the following commands to create a local etc directory:
$ mkdir --parents "$HOME/.local/etc"
Run the following commands to create local configuration files for bash, Neovim, Git, inputrc, and Vim:
$ touch "$HOME/.local/etc/.bash_profile"
$ touch "$HOME/.local/etc/.bashrc"
$ mkdir --parents "$HOME/.local/etc/.config/nvim"
$ touch "$HOME/.local/etc/.config/nvim/init.vim"
$ touch "$HOME/.local/etc/.gitconfig"
$ touch "$HOME/.local/etc/.inputrc"
$ touch "$HOME/.local/etc/.vimrc"
These local configuration files will be sourced automatically by the respective configuration files in this repository.
Run the following commands to migrate local configuration files for bash, Neovim, Git, inputrc, and Vim to the local etc directory:
$ mv "$HOME/.bash_profile.local" "$HOME/.local/etc/.bash_profile"
$ mv "$HOME/.bashrc.local" "$HOME/.local/etc/.bashrc"
$ mv "$HOME/.config/nvim/local.init.vim" "$HOME/.local/etc/.config/nvim/init.vim"
$ mv "$HOME/.gitconfig.local" "$HOME/.local/etc/.gitconfig"
$ mv "$HOME/.inputrc.local" "$HOME/.local/etc/.inputrc"
$ mv "$HOME/.vimrc.local" "$HOME/.local/etc/.vimrc"
Run the following commands to create a local bin directory and add it to the PATH:
$ mkdir --parents "$HOME/.local/bin"
$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.local/etc/.bash_profile"
- curl
- ctags
- fdfind
- fish
- fzf
- git
- lsof
- neovim
- python3-virtualenv
- ripgrep
- stow
- unzip
Run the following commands from the root directory of this repository to create symbolic links in the home directory to the various configuration files contained in this repository:
$ stow --adopt alacritty bash config git inputrc local tmux vim
$ git stash save "stow"
Install a clipboard manager and define yeet-impl, yoink, and yedit commands.
$ cat << 'HEREDOC' > "$HOME/.local/bin/yedit"
> #!/usr/bin/env bash
>
> yoink | vipe | yeet
> HEREDOC
$ chmod u+x "$HOME/.local/bin/yedit"
Run the following commands to define the yeet-impl and yoink commands for Windows Subsystem for Linux:
$ cat << 'HEREDOC' > "$HOME/.local/bin/yeet-impl"
> #!/usr/bin/env bash
>
> cat - | win32yank.exe -i
> HEREDOC
$ chmod u+x "$HOME/.local/bin/yeet-impl"
$ cat << 'HEREDOC' > "$HOME/.local/bin/yoink"
> #!/usr/bin/env bash
>
> win32yank.exe -o --lf
> HEREDOC
$ chmod u+x "$HOME/.local/bin/yoink"
Run the following commands to set up a clipboard manager for Windows Subsystem for Linux:
$ curl --location --output-dir "$HOME/.local/bin" --remote-name https://github.com/equalsraf/win32yank/releases/latest/download/win32yank-x64.zip
$ yes | unzip -d "$HOME/.local/bin" "$HOME/.local/bin/win32yank-x64.zip"
$ chmod u+x "$HOME/.local/bin/win32yank.exe"
Run the following commands to define the yeet-impl and yoink commands for xterm:
$ cat << 'HEREDOC' > "$HOME/.local/bin/yeet-impl"
> #!/usr/bin/env bash
>
> cat - | nohup xclip -in > /dev/null 2>&1
> HEREDOC
$ chmod u+x "$HOME/.local/bin/yeet-impl"
$ cat << 'HEREDOC' > "$HOME/.local/bin/yoink"
> #!/usr/bin/env bash
>
> xclip -out 2> /dev/null
> HEREDOC
$ chmod u+x "$HOME/.local/bin/yoink"
Run the following commands to set up bash completion and key-bindings for fzf:
$ echo "source '/usr/share/bash-completion/completions/fzf'" >> "$HOME/.local/etc/.bashrc"
$ echo "source '/usr/share/doc/fzf/examples/key-bindings.bash'" >> "$HOME/.local/etc/.bashrc"
Run the following commands to install key-bindings for fzf-git:
$ git clone --depth 1 https://github.com/junegunn/fzf-git.sh.git "$HOME/.local/etc/fzf-git.sh"
$ echo 'source "$HOME/.local/etc/fzf-git.sh/fzf-git.sh"' >> "$HOME/.local/etc/.bashrc"
$ git clone --depth 1 https://gist.github.com/9685cc9eeacdcc8254bff2a5ad6b35d4.git "$HOME/.local/etc/fzf-git"
$ echo 'source "$HOME/.local/etc/fzf-git/fzf-git.bash"' >> "$HOME/.local/etc/.bashrc"
$ echo '$include ~/.local/etc/fzf-git/fzf-git.inputrc' >> "$HOME/.local/etc/.inputrc"
Run the following commands to install key-bindings for fzf-tmux:
$ git clone --depth 1 https://gist.github.com/6b246a154e6392c1637fd763c1ada8ab.git "$HOME/.local/etc/fzf-tmux"
$ echo 'source "$HOME/.local/etc/fzf-tmux/fzf-tmux.bash"' >> "$HOME/.local/etc/.bashrc"
$ echo '$include ~/.local/etc/fzf-tmux/fzf-tmux.inputrc' >> "$HOME/.local/etc/.inputrc"
Run the following commands to install diff-so-fancy:
$ git clone --depth 1 https://github.com/so-fancy/diff-so-fancy.git "$HOME/.local/bin/diff-so-fancy.git"
$ ln --symbolic "$HOME/.local/bin/diff-so-fancy.git/diff-so-fancy" "$HOME/.local/bin/"
Run the following command to copy .alacritty.toml to where Alacritty expects it to be on Windows:
$ cp 'alacritty/.alacritty.toml' "/mnt/c/Users/$(cmd.exe /c "echo %USERNAME%" 2> /dev/null |
> sed 's/\r$//')/AppData/Roaming/alacritty/alacritty.toml"
Run the following commands to allow a new bash login shell to activate a Python virtualenv:
$ virtualenv --download "$HOME/.virtualenv"
$ echo 'VIRTUAL_ENV_DISABLE_PROMPT=1' >> "$HOME/.local/etc/.bash_profile"
$ echo 'source "$HOME/.virtualenv/bin/activate"' >> "$HOME/.local/etc/.bash_profile"