This repository contains a set of configuration files for bash
and fish
shells, KDE Plasma Desktop and programs that I use most regularly.
My favorite OS is Arch Linux, so package names and config paths are relevant for it and may a bit differ for other distros.
In addition, I use two workstations (PC and a laptop), which have slightly differences in the configs. So some configs are separated for use on different devices.
The installation itself requires GNU Stow - awesome tool as a symlink manager.
- GNU Stow - A symlink manager
- alsa-utils - (used in
sb_output_switcher.sh
script) - bat - A
cat
clone with syntax highlighting and Git integration - gist - A GitHub gists tool (used in
out
alias) - git - A most popular source distributed version control system
- gnupg - An OpenPGP standard implementation
- Google Chrome Beta - A beta version of Google Chrome Browser
- fish-shell - A smart and user-friendly new-generation command line shell
- fisher - A plugin manager for
fish
- fzy - A fast, simple fuzzy text selector for the terminal with an advanced scoring algorithm
- kitty - A cross-platform, fast, feature-rich, GPU based terminal
- kubectx - An util to manage and switch between clusters and namespaces (used for abbr:
kx
andkns
) - neofetch - A command-line system information tool
- profile-sync-daemon - A tiny daemon designed to keep your browser profile in tempfs
- parallel - A shell tool for executing jobs in parallel (used in
kubectl
function) - pastebinit - A multi pastebin service (used in
pb
alias) - pinentry-qt - A GUI application used to enter passphrases
- pwgen - A password generation tool (used in
pwgen
alias) - starship - A minimal, blazing-fast and infinitely customizable prompt
- VSCode - A popular code editor (used in
c
alias)
# Install yay as AUR helper
pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git /tmp/yay
cd /tmp/yay
makepkg -si
# Install deps
yay -S \
alsa-utils \
bat \
gistit \
gnupg \
google-chrome-beta \
imagemagick \
kubectx \
fish \
fisher \
fzy \
kitty \
neofetch \
openssh \
pastebinit \
pinentry \
profile-sync-daemon \
pwgen \
starship \
stow \
visual-studio-code-bin
# Add stow default settings
cat << EOF > ~/.stowrc
--target=~
--verbose
EOF
# Starship requires the Nerd font package for your terminal to display icons.
# You can choose any of these. I prefer nerd-fonts-ubuntu-mono
yay -S \
otf-nerd-fonts-fira-code \
nerd-fonts-dejavu-complete \
nerd-fonts-fantasque-sans-mono \
nerd-fonts-iosevka \
nerd-fonts-jetbrains-mono \
nerd-fonts-mononoki \
nerd-fonts-roboto-mono \
nerd-fonts-ubuntu-mono
It is assumed that there are no configuration files for what you are installing. If the destination config files exist, an error will appear and you will need to manually resolve the conflict by deleting the existing files if you go to use mine.
# Just cd to repo_path/dotfiles
# Simple run stow [package]. E.g.:
cd repo_path/dotfiles
stow bash inputrc kitty
# Or install all of it at once
stow *
# Enable ssh-agent service
systemctl --user daemon-reload
systemctl --user enable --now ssh-agent.service
NOTE: If for some reason you decide to disable ssh-agent.service
,
then the symlink to the source file in stow project will be deleted.
To bring it back, you can run from repo_path/dotfiles
command stow ssh-agent
# Create API Token for gist
# https://github.com/settings/tokens
shopt -ou history
echo YOUR_TOKEN_HERE > ~/.gist && \
chmod go-rwx ~/.gist
shopt -os history
# After install fonts update the cache
fc-cache -fr
# Show fonts list
fc-list
# Change the amount of available memory for tmpfs, where chrome will store
# its cache (see chrome-beta-flags.conf) and for storing the profile using psd
# 25% - Change the percentage of total memory for your own reasons.
sudo sed -i "s/.*RuntimeDirectorySize=.*/RuntimeDirectorySize=25%/g" /etc/systemd/logind.conf
# Add psd-overlay-helper binary to execute the sudo in passwordless way
echo "$USER ALL=(ALL) NOPASSWD: $(type -P psd-overlay-helper)" | sudo EDITOR='tee -a' visudo
# enable psd service
systemctl --user enable psd
# You can create a file ~/.kube/config_list, in which you can
# list the full paths to the separate cluster configs. E.g.:
cat << EOF > ~/.kube/config_list
/home/user/.kube/cluster1
/home/user/.kube/cluster2
/home/user/.kube/config
EOF
# Note: shortening ~ for home directory does't work
- Add installation info about git submodules
- Add link to fish repo
README.md
- Add infromation about migration from bash to fish
- Replace bash aliases with fish functions and abbreviations
- Add stow modules and configs for:
- htop
- fzf
- latte-dock
- exa
- ranger