This is a Git repository to backup and track dotfiles for Linux OS (Arch-based at the moment but most should work on Ubuntu). Structured for a better use with GNU Stow. Each top-level directory is created to be a "stow package": a bundle of files which can be symlinked as a group. To create symlinks for a package (for example, 'bash'), run:
stow -t ~ -vS bashNOTE: Neovim package is a Git submodule to my personal Neovim configuration.
A (probably not full) list of (at least once in a while) used tools (in alphabetical order; asterisk indicates crucial ones):
- btop
- dunst
- fzf
- ghostty *
- git *
- gnuPG *
- i3 *
- ipython
- lazygit *
- neovim *
- nnn *
- nushell *
- pass *
- polybar *
- powerlevel10k *
- RStudio
- radian
- rofi *
- stow *
- VS Code
- Vim *
- xfce4-terminal
- Zathura
- Zsh *
- All personal data.
/optdirectories with useful appimages.- GPG key:
- Identify your private key:
gpg --list-secret-keys evgeni.chasnovski@gmail.com. Remember the ID of your key. - Export key:
gpg --export-secret-keys YOUR_ID_HERE > private.key. - Copy the key file to the other machine using a secure transport.
- Identify your private key:
- Firefox data: whole '~/.mozilla/firefox' directory.
- Password store of
pass: whole '~/.password-store'. - (Optional) Transmission config: whole '~/.config/transmission' config.
Approximate guidance steps for Arch-based system:
- Install tools:
sudo pacman -Syu
yay -Syu
sudo pacman -S acpilight btop dunst fd feh fzf ghostty git gnupg i3-wm i3lock imagemagick lazygit maim mupdf nushell openssl pass picom polybar pyenv python-pip r ripgrep rofi stow vim vlc xdotool xfce4-terminal xsel zathura zathura-djvu zathura-pdf-mupdf zsh
yay -S pyenv-virtualenv skypeforlinux-stable-bin visual-studio-code-bin pandoc-bin
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
python -m pip install pipx
# Manually install `nnn` with Nerd font support (see `nnn` section later)
# After pipx is in PATH
pipx install ipython pre-commit radian
pipx install pre-commit
pipx install radian- Clone this repository with its submodules:
git clone --depth 1 https://github.com/echasnovski/dotfiles ~/dotfiles
cd ~/dotfiles
git submodule update --init --recursive --depth 1- Stow dotfiles Run from
~/dotfiles(something may fail due to some files being auto-created during app installation; remove them):
stow -t ~ -vS bash btop dunst fonts fzf ghostty git gpg i3 ipython lazygit neovim nnn nushell picom polybar r radian ripgrep rofi st stylua vim wallpapers xfce4 xorg zathura zsh-
Enable fonts with
fc-cache -fv. -
Restore backup:
- GPG key:
gpg --import /path/to/private.key. - Copy backed up directories: '
/.mozilla/firefox', '/.password-store', '~/.config/transmission'. - Copy
/optsubdirectories and make symbolic links to/usr/local/bin(see later general advices).
- GPG key:
-
Create '~/.profile' with only relevant local environment variables. Like
TERMINAL,EDITOR,PAGER, etc. Example:
export EDITOR=vim
export TERMINAL=st
export DPI=168-
Tweak DPI. For that:
- Update '~/.Xresources' with
Xft.dpi: <value>. Helpful additional configuration:! Adjust DPI with additional rendering instructions Xft.dpi: 168 Xft.autohint: 0 Xft.lcdfilter: lcddefault Xft.hintstyle: hintfull Xft.hinting: 1 Xft.antialias: 1 Xft.rgba: rgb
- Update '~/.Xresources' with
-
Install
stfrom source. Go to~/stand runsudo make install, which will install it system-wide in '/usr/local' directory (configured in 'config.mk'). Building it might require installation of special "building" software. -
Change default shell:
chsh -s $(which zsh)(takes effect after logout). -
Generate wallpaper
pngs. See '~/.wallpapers/tiles/README.md'. -
Tweak polybar sources. See header of '~/.config/polybar/config_template.ini'.
-
Set up Neovim. See '~/.config/nvim/README.md'.
- Three recommended ways of installing applications:
- On Arch-based systems use
pacman(sudo pacman -S ...) oryay(yay -S ...) whenever possible. - For extra control use appimages (like several versions of
Neovim):- Put binary in '/opt//' (like '/opt/neovim/nvim_0.6.0').
- Make it executable with
sudo chmod u+x(likesudo chmod u+x /opt/neovim/nvim_0.6.0). - Make soft link to '/usr/local/bin' (like
sudo ln -s /opt/neovim/nvim_0.6.0 /usr/local/bin/nvim).
- Use pipx instead of
pipto install python-written applications (again, if not on Arch-based systems).
- On Arch-based systems use
Whole source code for "simple terminal" is shipped with these dotfiles in 'st' directory ('~/st' after applying stow). Build and install system-wide from that source.
- To remove border around opened apps, update '~/.config/gtk-3.0/gtk.css' with:
VteTerminal, vte-terminal {
padding: 0px;
}
- Installation:
- On Arch-based systems use
sudo pacman -S polybar. - On other systems installation might require compilation from source (at least on Ubuntu). Using official instructions helped.
- On Arch-based systems use
- To enable nerd font icons: clone, make and move to
/usr/local/bin:
git clone --depth 1 https://github.com/jarun/nnn
sudo mv nnn /opt
cd /opt/nnn
# Needs basic 'make' prerequisites (see github repo for more details)
sudo make O_NERD=1
sudo ln -s /opt/nnn/nnn /usr/local/bin/nnn