My personal dotfiles. I do not recommend to anyone seeking inspiration to blindly copy-paste my configs; they WILL introduce problems for you. The contents of each rc file, especially the .bashrc file, have been sourced by a variety of sources, including my personal experience & particularly my preferences.
There is no particular philosophy to these configuration files, it's all personal taste, and adhere to the latest versions of applications I use between platforms, which are, for the most part, running the same OS.
The common $XDG_CONFIG_HOME directory setup is semi-emulated, with exceptions for convenience.
.shell-requirementsis a requirements-style file for dependencies that are required for these dotfiles to work correctly..stowconfigis a configuration file for thepstow.pyutility under./scripts/utils/. The file format should be self-explanatory, however documentation should exist somewhere.scripts/contain scripts as well as some configuration files. The filenames should be a hint to their usage..configcontains generic configuration files. The most common$XDG_CONFIG_HOMEdirectory setup is emulated, however with exceptions for convenience.
After running a setup script in dotfiles/scripts/setup/... I just need to install my dotfiles & my themes.
- To deploy my dotfiles I use pstow; check the command below.
- To install my compatibility layers for gaming, I use
update-compat-layers, which is a utility located underscripts/utils/ - To set CTRL+Tab / CTRL+Shift+Tab as a shortcut in chrome, I use the following snippet from superuser
document.body.onclick = function (e) {
gCT = !window.gCT;
const p = e.composedPath(),
cn = p[0].textContent,
s = p.filter((p) => p.className == "shortcut-card")[0],
n = s?.children[0].children[1].textContent;
if (n)
chrome.management.getAll((es) => {
const ext = es.filter((e) => e.name == n)[0],
{ id } = ext;
chrome.developerPrivate.getExtensionInfo(id, (i) => {
const c = i.commands.filter((c) => c.description == cn)[0];
if (c)
chrome.developerPrivate.updateExtensionCommand({
extensionId: id,
commandName: c.name,
keybinding: `Ctrl+${gCT ? "" : "Shift+"}Tab`,
});
});
});
};To automatically deploy the default profile: Warning! This is a DESTRUCTIVE command, and it WILL overwrite files!
cd ~ && git clone https://github.com/gerelef/dotfiles && ~/dotfiles/scripts/functionz/pstow --source ~/dotfiles --target ~ --profile default --force --yes- to remove old kernels in case /boot fills up
rpm -q kernel-core # list all installed kernels
sudo dnf remove kernel-core-M.mm.v # remove the kernel afterwards- spotify backup playlists
foreach spotify-dump-playlist < $(spotify-dump-public-playlist-uris-from-profile 'YOUR_PROFILE_URI_HERE')- initramfs blew up, regenerate:
sudo dracut --force --regenerate-all --verbose && sudo grub2-mkconfig -o /boot/grub2/grub.cfg- notifications using
notify-send
notify-send --transient --action "idiot" --action "moron" --action "doofus" Test 'hello world!'- string (.) split('|') equivalent
IFS='|' read -r var1 var2 var3 <<< $(echo $line)- view stacktrace of what a command is actually doing
strace -s 2000 -o unlink.log unlink file1Additionally to the services in the ./units/*, I also sometimes host the following services:
- ollama
- open-webui
IMPORTANT: You should copy the service files to the appropriate directory as specified below
# make sure you replace $1 with the file name
sudo cp ./$1 "/etc/systemd/system/" # this will automatically be owned by root# make sure you replace $1 with the file name
# you can also softlink or hardlink this, but for consistency purposes it is
# not recommended.
cp ./$1 "~/.config/systemd/user/"- Drivers (requires
dkmspkg), courtesy of scarburato: https://github.com/scarburato/t150_drive
git clone '[email protected]:scarburato/t150_driver.git' && cd t150_driver/ && sudo dnf install -y dkms
# we will continue with configuring dkms signing of modules with the secure boot key
sudo ./install.sh && mokutil --import /var/lib/dkms/mok.pub
# RESTART AND IMPORT THE PUBLIC KEY with the same password you entered- Oversteer: https://github.com/berarma/oversteer
sudo dnf install python3 python3-distutils-extra python3-gobject \
python3-pyudev python3-pyxdg python3-evdev \
gettext meson appstream desktop-file-utils python3-matplotlib-gtk3 \
python3-scipy
git clone https://github.com/berarma/oversteer && cd oversteer
meson setup build
cd ./build/
sudo ninja install
sudo udevadm control --reload-rules && sudo udevadm trigger- Calibrate flatness value; will NOT persist!
sudo dnf install -y linuxconsoletools && sudo evdev-joystick --evdev /dev/input/by-id/usb-Thrustmaster_Thrustmaster_T150RS-event-joystick --d 0# create pod with passt (pasta) for network
# a debian-based LTS distro is prefered, for stable & reproducible environments
podman run --replace --name compiler-container --network pasta -it ubuntu:20.04 /bin/bash
# some of these packages should exist everywhere
apt update && apt install -y libglib2.0-dev \
build-essential git meson ninja-build \
gcc pkg-config libudev-dev libevdev-dev \
libjson-glib-dev libunistring-dev libsystemd-dev \
check python3-dev valgrind swig
git clone https://github.com/libratbag/libratbag.git && cd libratbag
meson builddir && ninja -C builddir
ninja -C builddir install
exit... after exiting, to copy a specific directory:
# ... get the container id via `podman ps --all`
podman cp 2781d27699f5:/libratbag ./libratbag
podman stop 2781d27699f5 # probably unnecessary, but for good measure
podman rm 2781d27699f5 # delete it!