Skip to content

peterzuger/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

~/.*

dotfiles

Status GitHub Issues GitHub Pull Requests License


My personal dotfiles.

πŸ“ Table of Contents

🧐 About

This Repository contains the configuration of all of my computers, this allows me to quickly and painlessly setup a new machine in under 30 minutes.

For each of my machines there is a make target.

At the moment that is home, there is also a common target, that installs all configurations that are common across all my machines.

For headless machines, like servers or raspberrypi's there is also the headless target. The minimal usage of the headless target requires git,stow and zsh, zsh must be enabled with chsh.

🏁 Getting Started

These instructions will get you a copy of my dotfiles up and running on your local machine.

CentOS

On CentOS gnu stow is not in the default repository's, to install it add the epel-release repo.

sudo yum install epel-release
sudo yum install stow

Prerequisites

Following Prerequisites must be installed from here: Arch Packages

Prerequisites Description Arch Packages
acpi Client for battery, power, and thermal readings acpi
alsa-card-profiles Low-latency audio/video router and processor - ALSA card profiles alsa-card-profiles
alsa An alternative implementation of Linux sound support alsa-utils
apparmor Mandatory Access Control (MAC) using Linux Security Module (LSM) apparmor
arch-audit A utility like pkg-audit based on Arch Security Team data arch-audit
atop A system and process level monitor atop
audit Userspace components of the audit framework audit
avahi Service Discovery for Linux using mDNS/DNS-SD -- compatible with Bonjour avahi
base-devel Developer utilities base-devel
bluez-utils Development and debugging utilities for the bluetooth protocol stack bluez-util
bluez Daemons for the bluetooth protocol stack bluez
borg Deduplicating backup program with compression and authenticated encryption borg
btrfs-progs Btrfs filesystem utilities btrfs-progs
ccache compiler cache ccache
clang C language family frontend for LLVM clang
cmus Feature-rich ncurses-based music player cmus
cups The CUPS Printing System - daemon package cups
curl An URL retrieval utility and library curl
dejavu Font family based on the Bitstream Vera Fonts with a wider range of characters ttf-dejavu
dhcpd RFC2131 compliant DHCP client daemon dhcpcd
distcc Distributed compilation service for C, C++ and Objective-C distcc
docker-compose Fast, isolated development environments using Docker docker-compose
docker Pack, ship and run any application as a lightweight container docker
dstat A versatile resource statistics tool dstat
dunst Customizable and lightweight notification-daemon dunst
emacs The extensible, customizable, self-documenting real-time display editor emacs
feh Fast and light imlib2-based image viewer feh
ffmpeg Complete solution to record, convert and stream audio and video ffmpeg
firefox Standalone web browser from mozilla.org firefox
firejail Linux namespaces sandbox program firejail
font-awesome Iconic font designed for Bootstrap ttf-font-awesome/
gdb The GNU Project Debugger gdb
git the fast distributed version control system git
gnuradio-osmosdr Source block for Funcube Dongle, RTL-SDR, USRP, OsmoSDR, BladeRF, HackRF and AirSpy devices gnuradio-osmosdr
grub GNU GRand Unified Bootloader (2) grub
hdparm A shell utility for manipulating Linux IDE drive/driver parameters hdparm
htop Interactive process viewer htop
i3-gaps A fork of i3wm tiling window manager with more features, including gaps i3-gaps
i3lock improved screen locker i3lock-color
i3status Generates status bar to use with i3bar, dzen2 or xmobar i3status
imagemagick An image viewing/manipulation program imagemagick
inetutils A collection of common network programs inetutils
iotop View I/O usage of processes iotop
iwd Internet Wireless Daemon iwd
kicad-library-3d KiCad 3D model libraries kicad-library-3d
kicad-library KiCad symbol, footprint and template libraries kicad-library
libimobiledevice Library that talks the protocols to support iPhone and iPod Touch devices on Linux libimobiledevice
libjaylink Library for accessing SEGGER J-Link and compatible devices libjaylink
llvm Collection of modular and reusable compiler and toolchain technologies llvm
lvm2 Logical Volume Manager 2 utilities lvm2
maim Utility to take a screenshot using imlib2 maim
man A utility for reading man pages man-db man-pages
mlocate A utility for finding files by name quickly mlocate
mpv a free, open source, and cross-platform media player mpv
mu Maildir indexer/searcher and Emacs client (mu4e) mu
multimon-ng An sdr decoder, supports pocsag, ufsk, clipfsk, afsk, hapn, fsk, dtmf, zvei. multimon-ng
nano Pico editor clone with enhancements nano
neofetch A CLI system information tool written in BASH that supports displaying images. neofetch
net-tools Configuration tools for Linux networking net-tools
networkmanager Network connection manager and user applications networkmanager
noto-cjk Google Noto CJK fonts noto-fonts-cjk
noto-emoji Google Noto emoji fonts noto-fonts-emoji
noto Google Noto TTF fonts noto-fonts
openbsd-netcat TCP/IP swiss army knife. OpenBSD variant. openbsd-netcat
openresolv resolv.conf management framework (resolvconf) openresolv
openssh Premier connectivity tool for remote login with the SSH protocol openssh
openvpn An easy-to-use, robust and highly configurable VPN (Virtual Private Network) openvpn
pacman-contrib Contributed scripts and tools for pacman systems pacman-contrib
pass Stores, retrieves, generates, and synchronizes passwords securely pass
pdftk Command-line tool for working with PDFs pdftk
peda-git Python Exploit Development Assistance for GDB peda-git (AUR)
perf Linux kernel performance auditing tool perf
picom X compositor that may fix tearing issues picom
pulseaudio-alsa A featureful, general-purpose sound server pulseaudio-alsa
pv A terminal-based tool for monitoring the progress of data through a pipeline pv
python-kikit Automation tools for KiCAD python-kikit
python-pip The PyPA recommended tool for installing Python packages python-pip
python-virtualenv Virtual Python Environment builder python-virtualenv
python-virtualenvwrapper Extensions to Ian Bicking's virtualenv tool python-virtualenvwrapper
ranger Simple, vim-like file manager ranger
reflector A Python 3 module and script to retrieve and filter the latest Pacman mirror list reflector
rkhunter Checks machines for the presence of rootkits and other unwanted tools. rkhunter
rofi-calc Do live calculations in rofi! rofi-calc
rofi A window switcher, application launcher and dmenu replacement rofi
rsync A fast and versatile file copying tool for remote and local files rsync
rtl_433 is a generic data receiver, mainly for the 433.92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz, and 915 MHz ISM bands rtl_433
rtorrent Ncurses BitTorrent client based on libTorrent rtorrent
rust-analyzer Rust compiler front-end for IDEs rust-analyzer
rust Systems programming language focused on safety, speed and concurrency rust
screen Full-screen window manager that multiplexes a physical terminal screen
sdparm An utility similar to hdparm but for SCSI devices sdparm
server Xorg X server xorg-server
smartmontools Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives smartmontools
soapyplutosdr Soapy SDR plugin for PlutoSDR soapyplutosdr
socat Multipurpose relay socat
source-code-pro Monospaced font family for user interface and coding environments adobe-source-code-pro-fonts
sshfs FUSE client based on the SSH File Transfer Protocol sshfs
stow Manage installation of multiple softwares in the same directory tree stow
strace A diagnostic, debugging and instructional userspace tracer strace
symbola Font for unicode symbols (part of Unicode Fonts for Ancient Scripts). ttf-symbola (AUR)
sysstat a collection of performance monitoring tools (iostat,isag,mpstat,pidstat,sadf,sar) sysstat
tlp Linux Advanced Power Management tlp
torbrowser-launcher Securely and easily download, verify, install, and launch Tor Browser in Linux torbrowser-launcher
torsocks Wrapper to safely torify applications torsocks
udiskie Removable disk automounter using udisks udiskie
ufw Uncomplicated and easy to use CLI tool for managing a netfilter firewall ufw
urxvt Unicode enabled rxvt-clone terminal emulator (urxvt) rxvt-unicode, rxvt-unicode-terminfo
usbguard Software framework for implementing USB device authorization policies usbguard
usbmuxd USB Multiplex Daemon usbmuxd
valgrind Tool to help find memory-management problems in programs valgrind
w3m text-based web browser w3m
wget Network utility to retrieve files from the Web wget
wireguard next generation secure network tunnel - tools for configuration wireguard-tools
wireshark-cli Network traffic and protocol analyzer/sniffer - CLI tools and data files wireshark-cli
xauth X.Org authorization settings program xorg-xauth
xautolock An automatic X screen-locker/screen-saver xautolock
xbacklight RandR-based backlight control application xorg-xbacklight
xclip Command line interface to the X11 clipboard xclip
xdm X Display Manager xorg-xdm
xdotool Command-line X11 automation tool xdotool
xinit X.Org initialisation program xorg-xinit
xinput Small commandline tool to configure devices xorg-xinput
yay Yet another yogurt. Pacman wrapper and AUR helper written in go. yay
zsh-completions Additional completion definitions for Zsh zsh-completions
zsh A very advanced and programmable command interpreter (shell) for UNIX zsh

Following Prerequisites are for my emacs configuration;

Prerequisites Description Arch Packages
aspell-de German dictionary for aspell aspell-de
aspell-en English dictionary for aspell aspell-en
aspell A spell checker designed to eventually replace Ispell aspell
bandit Python security linter from OpenStack Security bandit
cmake A cross-platform open-source make system cmake
ctags Generates an index file of language objects found in source files ctags
flake8 The modular source code checker: pep8, pyflakes and co flake8
global Source code tag system global
go Core compiler tools for the Go programming language go
llvm-libs LLVM runtime libraries llvm-libs
mypy Optional static typing for Python 2 and 3 (PEP484) mypy
offlineimap Synchronizes emails between two repositories offlineimap
python-black Uncompromising Python code formatter python-black
python-pylint Analyzes Python code looking for bugs and signs of poor quality python-pylint
texlive TeX Live core distribution texlive

The following applications are used for various tasks in the embedded development cycle:

Application Description Arch Packages
audacity A program that lets you manipulate digital audio waveforms audacity
blender A fully integrated 3D graphics creation suite blender
freecad Feature based parametric 3D CAD modeler freecad-git
gallery-dl Command-line program to download image-galleries and collections from several image hosting sites gallery-dl
gimp GNU Image Manipulation Program gimp
gnuradio General purpose DSP and SDR toolkit. With drivers for usrp and fcd. gnuradio-companion
gqrx Interactive SDR receiver waterfall for many devices. gqrx
gpredict Real-time satellite tracking and orbit prediction application gpredict
inkscape Professional vector graphics editor inkscape
kicad Electronic schematic and printed circuit board (PCB) design tools kicad
libreoffice LibreOffice maintenance branch libreoffice-still
nmap Utility for network discovery and security auditing nmap
wsjtx Software for Amateur Radio Weak-Signal Communication (JT9 and JT65) wsjtx
yt-dlp A youtube-dl fork with additional features and fixes yt-dlp

Following Prerequisites might need to be changed depending on your hardware configuration:

Prerequisites Description Arch Packages
efibootmgr Linux user-space application to modify the EFI Boot Manager efibootmgr
intel-ucode Microcode update files for Intel CPUs intel-ucode
xf86-video-intel X.org Intel i810/i830/i915/945G/G965+ video drivers xf86-video-intel
xf86-video-nouveau Open Source 3D acceleration driver for nVidia cards xf86-nouveau

For virtualbox use these packages:

Prerequisites Description Arch Packages
virtualbox-guest-modules-arch Virtualbox guest kernel modules for Arch Kernel virtualbox-guest-modules-arch
virtualbox-guest-utils VirtualBox Guest userspace utilities virtualbox-guest-utils
xf86-video-vmware X.org vmware video driver xf86-video-vmware

Optional Prerequisites

Following packages might be installed for convenience:

Prerequisites Description Arch Packages
7z p7zip is a port of 7za.exe for POSIX systems p7zip
lzip A lossless file compressor based on the LZMA algorithm lzip
lzma XZ Utils is free general-purpose data compression software with a high compression ratio. xz
lzop lzop is a file compressor which is very similar to gzip. lzop
perl-libwww The World-Wide Web library for Perl perl-libwww
rar powerful archive manager rar
unzip UnZip is an extraction utility for archives compressed in .zip format unzip
zip compression and file packaging/archive utility zip

Install perl-libwww like this:

sudo pacman -S perl-libwww --asdeps git

Automatic Prerequisites

Following things are installed automatically, via git submodules.

Prerequisites Description
liquidprompt A full-featured & carefully designed adaptive prompt for Bash & Zsh
ssh-connect simple ssh manager based on bash/zsh history

Installing

Before installing the dotfiles, a few things have to be setup manualy.

Create a a user:

useradd -m -G wheel uucp peter

When using docker, wireshark or tor, add the user to the docker, wireshark and tor groups respectively.

For connecting with the internet I use dhcpcd and nmtui(networkmanager).

sudo systemctl enable dhcpcd.service
sudo systemctl enable NetworkManager.service

When using xdm, the xdm service has to be activated. If you are already using a Display Manager, this should not be done.

sudo systemctl enable xdm.service

for CUPS to find .local printers, change the host: line in /etc/nsswitch.conf to:

hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns

this enables .local hostname resolution.

To enable printing with CUPS enable the required services:

sudo systemctl enable avahi-deamon.service
sudo systemctl enable cups.service

To install these dotfiles, just clone the repo, it does not need to be in any special folder, just put it where you like. The --recursive is required, otherwise the sub-repository's wont be downloaded.

git clone --recursive https://github.com/peterzuger/dotfiles.git
cd dotfiles

now that you have all the sources, just make home!

make home

make will deploy all dotfiles with stow. This tool just creates symbolic links for all files, it will not override any files when doing so and just fails if it can't create a link.

Once the files are deployed, the grub config can be regenerated, for this you must first place the breeze grub theme in /boot/grub/themes/breeze.

Then you can regenerate the grub config: (using the correct path if this is not correct)

sudo grub-mkconfig -o /boot/grub/grub.cfg

There are still a few services that can be enabled to provide some additional functionality: To enable them all use:

systemctl --user enable dunst.service picom.service udiskie.service xautolock.service

Uninstalling

To unstow the dotfiles.

make home-uninstall

This will not delete any files, it will just remove the symlinks.

🎈 Usage

screenshot

Global Keybindings

The i3 config configures the "Windows" key as the modifier key.

  • mod + L - lock the screen now
  • mod + d - rofi
  • Print - screenshot of all monitors
  • mod + Print - screenshot of the active window
  • mod + Shift + Print - screenshot of an area (interactive)
  • mod + RET - open urxvt

⛏️ Built Using

  • stow - symbolic link farmer

✍️ Authors

πŸŽ‰ Acknowledgements