Skip to content
/ dotfiles Public

[Moved to Gitea] Yadm managed Linux configuration including Doom Emacs, Neovim, Zsh and much more

Notifications You must be signed in to change notification settings

xeruf/dotfiles

Repository files navigation

Dotfiles

Welcome to Janek’s dotfiles, thousands of lines of handcrafted shell code to make the live of a linux sysadmin and developer easier!

I mainly use Arch Linux, formerly with the KDE desktop environment with tiling extension, on the move to Manjaro Sway.

This config is opinionated, but currently deployed on multiple machines including some other eager users. Thus I am progressively generalising it.

If you are not one of those, you can safely skip the following section.

Usage

Here are some basic commands to remember:

  • u to upgrade everything (works on arch-based systems with topgrade installed and any debian-based system, with safeguards to ensure upgrade stability even on longtime dormant machines)
yas
interactively install software packages
yar
interactively uninstall software packages
loc
quickly find a file on your system, case-insensitive
loca
do a deep search for a file on the whole system, case-insensitive
loce
find a file/directory on your system with exact name match
moul
mount a device interatively (unmount with umoul)

Mounting Manually

To mount a device, first check ds ([d]isk [s]tats, a prettification of lsblk --fs) and find your device, then call moul with the respective name or label, e.g. moul my-usb or moul sdc2. This will mount the device and enter the mounted directory.

As long as you are in the device directory you can unmount it simply by calling umoul, otherwise provide the argument from above again.

Overview

If you are looking to snag some of my handy tools, focus on .local/bin/scripts and .config/shell. Among daily use are b, edit-*, help, ~yas~ and zoxide-based d / di which in turn use zfz, zf and locz.

ex, m, moul, grpr / rpl, s, sd, tl are also commonly used conveniences.

Below is an overview of the structure.

Home

I try to keep my home clean, but some files unfortunately cannot be moved. Out of these, only .zshenv is of interest, it contains lots of mappings to store files according to XDG and configuration for less and fzf.

.config

shell
shell aliases & functions grouped into a few different areas, focused on zsh but mostly usable with bash
zsh
zsh plugin configuration & custom completions
doom
Doom Emacs configuration with personalized snippets
ideavim, vifm, nvim
vi-related tools
git, yadm
version control

.local

bin/scripts
lots of useful scripts, most have a short documentation header - including many essential git scripts
bin/server-scripts
a few scripts for use on servers

Package Setup (moving to Instalee)

By Size:

LC_ALL=C pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h

Copy list of installed packages:

pacman -Qe | cut -d\  -f1 | xclip -selection clipboard
dotfiles
yadm
yadm clone --bootstrap https://code.ftt.gmbh/janek/dotfiles.git
    

Run yadm bootstrap again after starting ZSH to finish initialization.

Basic required packages for scripts: diffr fzf

Full Personal Setup

Manjaro:

yay -Syu yadm instalee-full-git
yadm clone --bootstrap https://code.ftt.gmbh/janek/dotfiles
yadm remote set-url --push origin [email protected]:janek/dotfiles.git
instalee arch/base
sudo systemctl enable --now syncthing@$USER

Applications

utilities
youtube-dl dos2unix rlwrap
powertools
hexedit hexyl lftp glances zsh-doc pacman-contrib
multitools
ffmpeg imagemagick pandoc
documents
pdftk java-commons-lang
music
mpd mpc ncmpc vlc phonon-qt5-vlc mpdris2
mkdir -p ~/.local/state/mpd && systemctl --user enable --now mpd mpDris2
    
git clone https://aur.archlinux.org/yay.git /tmp/yay
cd /tmp/yay
makepkg -si
aur recommendations
diffr tldr++ sc-im espanso-bin timg audiowaveform python-dictcc dragon-drop
bluetooth
bluez bluez-utils pulseaudio-bluetooth
git tools
git-bug git-lfs git-crypt git-remote-gcrypt github-cli
pass
pass pass-otp pass-extension-tail pass-clip -> interesting: pass-steam, pass-autotype, pass-file, pass-qr, pass-ssh, pass-rotate
ssh
openssh sshfs lemonade-git
sync
syncthing syncthingtray
sudo systemctl enable --now syncthing@$USER
    
productivity
activitywatch-bin jrnl
personal aur utils (only useful with dotfiles)
bat-extras neovim-symlinks stderred-git
needs extra setup
rdictcc-git
experiments
kakoune

Graphical

fonts
fontpreview noto-fonts noto-fonts-emoji ttf-dejavu adobe-source-code-pro-fonts texlive-myriadpro-git
music management
puddletag beets picard ffmpegthumbnailer sox
sudo npm install -g bpm
    
health
stretchly-xeruf-git redshift acpilight light
scu enable --now redshift
    

-> https://www.reddit.com/r/linuxquestions/comments/pm1bxn/setting_brightness_on_amd_ryzen_7_5800h_with

Desktop

xorg
xorg-xserver xorg-xkill xorg-setxkbmap xorg-xinit xterm xclip xprintidle light
wayland
sway azote dex
kde
okular spectacle
kde desktop
plasma-desktop plasma-nm breeze systemsettings ktorrent dolphin kdeplasma-addons kinfocenter partitionmanager kdeconnect kwallet-pam kwalletmanager ksshaskpass bluedevil

Emacs

emacs emacs-pdf-tools-git texlive-core texlive-latexextra texlive-most-doc context-bin

git clone --depth 1 https://github.com/hlissner/doom-emacs ${XDG_CONFIG_HOME:-$HOME/.config}/emacs && ${XDG_CONFIG_HOME:-$HOME/.config}/emacs/bin/doom -y install
mail
offlineimap mu

Essential Firefox Addons

Password management

Pass - the unix password manager

Store all kinds of secrets in plain text https://addons.mozilla.org/firefox/addon/passff

passff-host
MasterPassword - the stateless password manager

> Keep different passwords for every site you log into without having to remember anything but a single master password. > And without the risk of your getting your password list stolen. https://addons.mozilla.org/firefox/addon/masterpassword-firefox