This project contains the dotfiles and custom shell scripts that I use on my workstations.
Why keep them at GitHub? It’s a way to share advanced shell tips with other developers, and more practically, a way to back up my configuration. I was tired of having a bunch of configurations across all my machines, especially when trying to keep all up to date. So I got fed up and threw them on GitHub. It's not perfect (yet!), but it's a great starting point for any Linux config.
Each folder is named after a package and contains every configuration file used by that application. Besides some noted exceptions, the files inside the folders are relative to home (e.g. the file vim/.vimrc
goes to ~/.vimrc
).
Every section here explains which settings and (if any) workarounds/fixes are used to obtain the described result.
For further reference, read carefully every section in this file, and copy only the configuration files relative to the parts you are trying to setup.
If none of these helped, feel free to open an issue here. Include your distro informations and the configuration values you are trying.
These scripts will be installed to ~/bin
and added to your $PATH
:
Script | Description |
---|---|
fs-cryptmount.sh |
Mounts a encFS filesystem where I keep personal data. |
myip.sh |
An script to obtain my real IP. |
- oh-my-zsh - framework for managing your zsh configuration. It includes autocompletion, themes, aliases, custom functions...
- powerlevel10k/powerlevel10k theme - emphasizes speed, flexibility and out-of-the-box experience.
- Plugins:
- aws
- colored-man-pages
- extract
- git
- pass
- zsh-autosuggestions - suggest commands as you type, based on command history
$EDITOR
isvim
.umask
is077
.- Configure private tokens from
$HOME/.env_private
.
- Enable Bash-it framework. It includes autocompletion, themes, aliases, custom functions...
- Improved Bash history based on this post.
- Add useful aliases, like
ll
,la
... $EDITOR
isvim
.umask
is077
.- Configure private tokens from
$HOME/.env_private
.
- Enables color output and line-ending checks.
- Shortens common commands:
br
,ci
,co
,df
,lg
.
Remember to configure
user.name
,user.email
anduser.signingkey
on.gitconfig
.
- 4 spaced tabs
- Autocompletion always on
- Case insensitive search
- Global highlighting of search matches
- Numbered lines
- Trailing whitespace highlighting
- Tons of plugins through Vundle:
onedark
,lightline
,vim-ployglot
. - One Dark theme
My personal backup solution for my $HOME
folder (to local and external HD)
- Uses
rsync
to keep snapshots of your$HOME
folder to a local folder or external HD. - You can configure the list of files & folders to exclude from the backup. See
~/.excludes_from_backup
. - You can configure your destination folders. See
DESTINATION
variable in the scripts.
Script | Description |
---|---|
daily.sh |
Do a daily backup (scheduled in the crontab ) into a local folder. See DESTINATION . |
weekly.sh |
Do a weekly backup (scheduled in the crontab ) of the latest folder create by daily.sh into a local folder. See DESTINATION . |
make_snapshot.sh |
Creates the snapshoot of the source folder and keep three older copies (rotated on each backup) |
do_backup.sh |
Do the backup to remote (mounted disk) using make_snapshot.sh . See DESTINATION . |
I've configured my workstation to use DNS Over TLS without any dependency, just systemd
. It uses the AdGuard DNS, a reliable way to block ads on the Internet.
The installation allows you to configure it without any effort and a script to enable/disable it is provided. In order to connect to WiFi with captive portals you should disable DNS Over TLS first.
Script | Description |
---|---|
DNS_Over_TLS.sh |
Enable/disable DNS-Over-TLS. |
Choose a place to store the dotfiles, like ~/.dotfiles
.
git clone https://github.com/pacoorozco/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.sh