My personal dotfiles.
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
.
These instructions will get you a copy of my dotfiles up and running on your local machine.
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
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 |
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
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 |
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
To unstow the dotfiles.
make home-uninstall
This will not delete any files, it will just remove the symlinks.
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
- stow - symbolic link farmer
- Arch Wiki Dotfiles
- GitHub does dotfiles
- @kylelobo - Documentation template