dotfiles/README.md

139 lines
6.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# brethil's dotfiles
A set of zsh dotfiles based on antibody and oh-my-zsh
## Description
├── README.md
├──────── Main files ────────
│ ├── aliases.sh
│ │     └── aliases definitions (sources `~/.dotfiles_aliases`)
│ ├── colors.sh
│ │     └── ANSI color escapes
│ ├── functions.sh
│ │     └── contains function definitions (sources `~/.dotfiles_functions`)
│ ├── ansible
│ │     └── ansible playboooks/config
│ └── brethil_dotfile.sh:
      └── This file should be sourced by your `.zshrc`
├──────── antibody plugins ────────
│ ├── antibody_plugins_arch.txt
│ └── antibody_plugins.txt
├──────── oh-my-zsh themes ────────
│ ├── brethil.zsh-theme
│ └── brethil-minimal.zsh-theme
├──────── Misc rc files────────
│ ├── gitconfig
│ │     └── git configuration
│ ├── ipython
│ │     ├── profile_default
│ │     ├── ipython_config.py
│ │     ├── startup
│ │     ├── 11-autoreload.py
│ │     └── README
│ ├── vim
│ │    ├── vimrc
│ │    │ └── main vim rc
│ │    ├── plugs.vim
│ │    │ └── plugins to be installed with vim-plug
│ │    ├── plugins_config.vim
│ │    │ └── plugins configuration
│ │    ├── shortcuts.vim
│ │    │ └── vim shortcuts definitions
│ │    ├── functions.vim
│ │    │ └── miscellaneous vim function
│ │    └── twilight256.vim
│ │      └── an old colorscheme
│ └── pdbrc.py
     └── pdb++ rc (a drop-in replacement for pdb)
├──────── Other ─────────────
├── check_for_update.sh
     └── selfupdate script
└── useful_commands
## Installation
- With ansible:
```bash
bash dev/add_community.general.sh # only if community.general is not installed
ansible-playbook -v -i <hosts file> ansible/playbooks/setup.yml
```
This playbook can be tested [with a docker container](dev/README.md)
Use `-e fix_annoyances=true` to fix some small annoyances (only run once)
- Manually (this only installs the zsh configuration):
```bash
git clone https://git.decapod.one/brethil/dotfiles ~/.dotfiles
echo 'DOTFILES=~/.dotfiles' >> ~/.zshrc
echo 'source $DOTFILES/brethil_dotfile.sh'
```
A self-update mechanism is included. It asks for confirmation to pull the latest changes
from the git repo every two weeks. This also updates the git-sourced repositories installed
by the install script. The self-update routine can be called manually by calling
dotfiles_selfupdate
If you do not want to run the installer script, you can just add source `brethil_dotfile.sh`
in your `.zshrc`. This requires antibody installed.
### Available Functions
0. `cheat`: show cheat sheet for commands using cheat.sh (`cheat <commandname>`)
1. Quickly edit/reload profile (`esource`/`resource`)
2. `dockertags` list all tags for a given docker image
3. `color` to print colored text (see 3. in the Misc section):
color $Red "This will be printed in red"
color $Yellow "This will be printed in red"
4. `mecp` to copy files back to the machine from wich you are ssh-ing.
For this to work an ssh tunnel with `Remoteforward` is needed:
ssh -R 22:localhost:2222 YOURHOSTNAMEHERE
or specify this in `~/.ssh/config` for a persistent configuration:
Host YOURHOSTNAMEHERE
Remoteforward 2222 localhost:22
This can be enabled in `~/.ssh/config` globally for all hosts by uncommenting the relevant `Host * Remoteforward`.
You might have to manually edit the username in the `mecp` definition in `functions.sh` if this is
different between the two machines. `mecp` copies by default on the local machine on `~/Desktop/`
5. Many more. Use `list_functions` to list defined functions and a small description
### Files/Folders
1. `~/bin`, `~/git`, `~/projects` folders
2. ssh config (`~/.ssh/config`):
- Create ssh keys if not defined already
- Keep connections alive by increasing timeout time
- Include multiplexer to allow quick multiple connections to the same host
- (Optional: Compression, this should allow more responsive shells with slow connections,
but will slow things down when copying large files. My suggestion is to have compression enabled
on a by-host basis in `~/.ssh/config`)
3. `brethil.zsh-theme`, `brethil-minimal.zsh-themes`, themes for oh-my-zsh.
4. `~/.dotfiles_functions`, `~/.dotfiles_aliases` are sourced by this dotfiles, allowing for custom functions/aliases
5. useful_commands contains a list of useful commands (the first rule of the tautology club...)
### Misc
1. Colored output (via `grc`) for several commands.
2. Easy names for ANSI color escapes (Black, Red, Green, Yellow, Blue, Cyan, Purple, White, CLEAR), for example:
echo -e "${Green}This text will be green${CLEAR}"
will result in green text. Use `$CLEAR` to clear previous escape sequences add B before the variable (check `colors.sh`)
name to use **bold** and U to underline (examples: `$BRed`, `$UBlack` for bold red and underlined black)
3. Autoupdate script running every two weeks, autoupdate function: `dotfiles_selfupdate` (or `git pull` from `$DOTFILES`folder)
4. Automatic fix of the`SSH_AUTH_SOCK`environment variable:`~/.ssh/rc` is installed run on every ssh login,
and updates a symlink pointing (`~/.ssh/ssh_auth_sock`). `SSH_AUTH_SOCK`points to this (set in`brethil_dotfile.sh`).
The idea is that if the user is logging in using `ssh -A`, and using tmux, it will be possible to use
the remote socket over different sessions by always using the symlink.