diff --git a/debian/.zshrc b/.zshrc similarity index 96% rename from debian/.zshrc rename to .zshrc index d4313ad..649eb0b 100644 --- a/debian/.zshrc +++ b/.zshrc @@ -2,7 +2,7 @@ ### sourcing ### ################ -ZSH_SCRIPTS_DIR="$HOME/.dotfiles/debian/zsh" +ZSH_SCRIPTS_DIR="$HOME/.dotfiles/zsh" source "$ZSH_SCRIPTS_DIR/aliases.zsh" source "$ZSH_SCRIPTS_DIR/functions.zsh" diff --git a/README.md b/README.md index 43ce547..2fc70c5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ -My personal dotfiles + ZSH config. +My personal dotfiles and ZSH config. -If you've stumbled upon this, don't blindly copy and paste. This just serves as a backup and ideas repo. It's far better to carefully build your own personal setup! +If you've stumbled upon this, kindly don't blindly copy and paste. +This just serves as a backup and ideas repo. It's far better to carefully build your own personal setup! -Andrew diff --git a/debian/scripts/backup/neptunemc.sh b/bin/backup/neptunemc.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/backup/neptunemc.sh rename to bin/backup/neptunemc.sh diff --git a/debian/scripts/backup/restic-music-b2.sh b/bin/backup/restic-music-b2.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/backup/restic-music-b2.sh rename to bin/backup/restic-music-b2.sh diff --git a/debian/scripts/backup/restic-music-fs.sh b/bin/backup/restic-music-fs.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/backup/restic-music-fs.sh rename to bin/backup/restic-music-fs.sh diff --git a/debian/scripts/discord-chromium.sh b/bin/discord-chromium.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/discord-chromium.sh rename to bin/discord-chromium.sh diff --git a/bin/displayman b/bin/displayman new file mode 100644 index 0000000..73cf1cf --- /dev/null +++ b/bin/displayman @@ -0,0 +1,53 @@ +#!/bin/sh + +# original: taken from https://git.sr.ht/~charles/dotfiles/tree/master/item/overlay.full/bin/displayman +# license: https://git.sr.ht/~charles/dotfiles/tree/master/item/LICENSE +# see also: http://cdaniels.net/posts/sigusr.html + +trigger_reconfigure () { + echo "($(date)) re-configuring displays... " + ls -1 "$HOME/.screenlayout"/*.sh | sort | while read -r f ; do + + echo "considering screenlayout $f" + if [ ! -x "$f" ] ; then + echo "ignoring $f, it is not executable" + continue + fi + + if "$f" ; then + echo "configuration successful" + break + else + echo "configuration failed" + fi + done + + # do some sanity checking + $HOME/.dotfiles/debian/bin/x-fix-keymaps + + xrdb "$HOME/.Xresources" + #numlockx on + #xkbset nullify lock + + #if [ -e /dev/wsmouse ] ; then + # xinput set-prop /dev/wsmouse "WS Pointer Wheel Emulation" 1 + # xinput set-prop /dev/wsmouse "WS Pointer Wheel Emulation Button" 2 + #fi +} + + +if pgrep displayman | grep -qv $$ ; then + echo "displayman is already running" 1>&2 + pkill -USR1 displayman + exit 1 +fi + +trap trigger_reconfigure USR1 + +trigger_reconfigure + +while true ; do + sleep 1 +done + +# vim: set syntax=sh: diff --git a/debian/scripts/fixes/cgroup-docker b/bin/fix-docker-cgroup old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/fixes/cgroup-docker rename to bin/fix-docker-cgroup diff --git a/debian/scripts/fix-origin.sh b/bin/fix-origin.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/fix-origin.sh rename to bin/fix-origin.sh diff --git a/bin/fix-x-keymaps b/bin/fix-x-keymaps new file mode 100644 index 0000000..af535ab --- /dev/null +++ b/bin/fix-x-keymaps @@ -0,0 +1,10 @@ +#!/bin/sh + +layout=$(xmodmap -pm) + +# don't run xmodmap if the keys are already remapped... +if ! echo "$layout" | grep -q "Caps_Lock (0x25)"; then + xmodmap ~/.Xmodmap +fi + +# vim: set syntax=sh: diff --git a/debian/scripts/gen-testing-cert.sh b/bin/generate-selfsigned-cert old mode 100755 new mode 100644 similarity index 82% rename from debian/scripts/gen-testing-cert.sh rename to bin/generate-selfsigned-cert index d7183cb..b228de2 --- a/debian/scripts/gen-testing-cert.sh +++ b/bin/generate-selfsigned-cert @@ -2,7 +2,7 @@ set -exo pipefail -FQDN="${1:-test.local}" +FQDN="${1:?Please specify a FQDN.}" openssl req \ -x509 \ diff --git a/debian/scripts/fixes/fuck-teams.sh b/bin/kill-teams old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/fixes/fuck-teams.sh rename to bin/kill-teams diff --git a/bin/layouts/000-xps-docked.sh b/bin/layouts/000-xps-docked.sh new file mode 100644 index 0000000..b54f183 --- /dev/null +++ b/bin/layouts/000-xps-docked.sh @@ -0,0 +1,2 @@ +#!/bin/sh +xrandr --output DP-4 --off --output DP-3 --mode 2560x1440 --pos 1920x0 --rotate normal --output DP-1 --off --output eDP-1 --primary --mode 1920x1200 --pos 0x80 --rotate normal --output DP-2 --off diff --git a/bin/layouts/001-xps-undocked.sh b/bin/layouts/001-xps-undocked.sh new file mode 100644 index 0000000..74aeb6f --- /dev/null +++ b/bin/layouts/001-xps-undocked.sh @@ -0,0 +1,2 @@ +#!/bin/sh +xrandr --output DP-4 --off --output DP-3 --off --output DP-1 --off --output eDP-1 --primary --mode 1920x1200 --pos 0x0 --rotate normal --output DP-2 --off diff --git a/debian/scripts/lock b/bin/lock old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/lock rename to bin/lock diff --git a/debian/scripts/pipes2.sh b/bin/lockscreens/pipes2 old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/pipes2.sh rename to bin/lockscreens/pipes2 diff --git a/debian/scripts/pipewire-setup.sh b/bin/pipewire-setup.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/pipewire-setup.sh rename to bin/pipewire-setup.sh diff --git a/debian/scripts/pulse-scarlett.sh b/bin/pulse/scarlett2i2 old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/pulse-scarlett.sh rename to bin/pulse/scarlett2i2 diff --git a/debian/scripts/screen-layout.sh b/bin/screen-layout.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/screen-layout.sh rename to bin/screen-layout.sh diff --git a/debian/scripts/whipper-debug.sh b/bin/whipper.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/scripts/whipper-debug.sh rename to bin/whipper.sh diff --git a/debian/doas-setup.sh b/debian/doas-setup.sh deleted file mode 100755 index 5ee4eda..0000000 --- a/debian/doas-setup.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -set -exo pipefail - -#### doas -apt install \ - build-essential \ - make \ - bison \ - flex \ - libpam0g-dev - -[ -d /tmp/doas ] && rm -r /tmp/doas -git clone "https://github.com/slicer69/doas.git" /tmp/doas -cd /tmp/doas -make -make install - -rm /usr/local/etc/doas.conf -echo "permit andrew as root" | tee -a /usr/local/etc/doas.conf diff --git a/debian/scripts/fan-rpm.sh b/debian/scripts/fan-rpm.sh deleted file mode 100755 index bb2ed7b..0000000 --- a/debian/scripts/fan-rpm.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -speed1=$(sensors | grep "fan1" | awk '{printf $2}') -speed2=$(sensors | grep "fan3" | awk '{printf $2}') - -echo "${speed1} | ${speed2} RPM" diff --git a/debian/scripts/jack-post-stop.sh b/debian/scripts/jack-post-stop.sh deleted file mode 100755 index 93739c0..0000000 --- a/debian/scripts/jack-post-stop.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -pacmd suspend false -killall jackd diff --git a/debian/scripts/jack-pre-startup.sh b/debian/scripts/jack-pre-startup.sh deleted file mode 100755 index 12e4eb3..0000000 --- a/debian/scripts/jack-pre-startup.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source channels=2; pacmd set-default-sink jack_out diff --git a/debian/scripts/jack-pre-stop.sh b/debian/scripts/jack-pre-stop.sh deleted file mode 100755 index f9d55d2..0000000 --- a/debian/scripts/jack-pre-stop.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -pactl unload-module module-jack-sink -pactl unload-module module-jack-source - -sleep 3 diff --git a/debian/scripts/jack-shutdown.sh b/debian/scripts/jack-shutdown.sh deleted file mode 100755 index 4820abd..0000000 --- a/debian/scripts/jack-shutdown.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -SINK='alsa_input.usb-Focusrite_Scarlett_2i2_USB_Y84Q6XE0693B8F-00.analog-stereo' -SOURCE='alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y84Q6XE0693B8F-00.analog-stereo.monitor' - -jack_control stop - -pacmd set-default-source "$SOURCE" -pacmd set-default-sink "$SINK" - -pulseaudio -k diff --git a/debian/scripts/jack-start.sh b/debian/scripts/jack-start.sh deleted file mode 100755 index a6c1c5a..0000000 --- a/debian/scripts/jack-start.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -set -ex - -a2jmidid -e & - -SINK='alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y84Q6XE0693B8F-00.analog-stereo' -SOURCE='alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y84Q6XE0693B8F-00.analog-stereo' - -#pacmd suspend-sink $SINK true -#pacmd suspend-sink $SOURCE true - -pacmd load-module module-jack-sink channels=2 -pacmd load-module module-jack-source channels=2 - -### Make some devices default -pacmd set-default-sink jack_out -pacmd set-default-source jack_in - -pacmd load-module module-loopback source=jack_in sink=alsa_output.usb-Schiit_Audio_Modi_Multibit-00.analog-stereo channels=2 diff --git a/debian/scripts/layout.sh b/debian/scripts/layout.sh deleted file mode 100755 index 259fc80..0000000 --- a/debian/scripts/layout.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -xrandr --output USB-C-0 --off --output HDMI-0 --mode 2560x1440 --pos 0x0 --rotate right --output DP-5 --off --output DP-4 --primary --mode 2560x1440 --pos 1440x560 --rotate normal --output DP-3 --off --output DP-2 --off --output DP-1 --off --output DP-0 --off diff --git a/debian/scripts/mailrun.sh b/debian/scripts/mailrun.sh deleted file mode 100755 index abe1db9..0000000 --- a/debian/scripts/mailrun.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -# Check every ten seconds if the process identified as $1 is still -# running. After 5 checks (~60 seconds), kill it. Return non-zero to -# indicate something was killed. -monitor() { - local pid=$1 i=0 - - while ps $pid &>/dev/null; do - if (( i++ > 5 )); then - echo "Max checks reached. Sending SIGKILL to ${pid}..." >&2 - kill -9 $pid; return 1 - fi - - sleep 10 - done - - return 0 -} - -read -r pid < ~/.offlineimap/pid - -if ps $pid &>/dev/null; then - echo "Process $pid already running. Exiting..." >&2 - exit 1 -fi - -offlineimap -c /config/.offlineimaprc -o -u quiet & monitor $! diff --git a/debian/scripts/patchbay1.xml b/debian/scripts/patchbay1.xml deleted file mode 100644 index 6ccd804..0000000 --- a/debian/scripts/patchbay1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - front-left - front-right - - - - - playback_1 - playback_2 - - - - - - diff --git a/debian/scripts/whipper.sh b/debian/scripts/whipper.sh deleted file mode 100755 index 35ab544..0000000 --- a/debian/scripts/whipper.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -set -euxo pipefail - -docker run \ - -ti \ - --rm \ - --device=/dev/cdrom \ - --mount "type=bind,source=${HOME}/.config/whipper,target=/home/worker/.config/whipper" \ - --mount "type=bind,source=${HOME}/rips/output,target=/output" \ - whipperteam/whipper "$@" diff --git a/debian/.Xmodmap b/linux/.Xmodmap similarity index 100% rename from debian/.Xmodmap rename to linux/.Xmodmap diff --git a/debian/.Xresources b/linux/.Xresources similarity index 100% rename from debian/.Xresources rename to linux/.Xresources diff --git a/debian/.fonts.conf b/linux/.fonts.conf similarity index 100% rename from debian/.fonts.conf rename to linux/.fonts.conf diff --git a/debian/.gemrc b/linux/.gemrc similarity index 100% rename from debian/.gemrc rename to linux/.gemrc diff --git a/debian/.gitconfig b/linux/.gitconfig similarity index 100% rename from debian/.gitconfig rename to linux/.gitconfig diff --git a/debian/.gitignore b/linux/.gitignore similarity index 100% rename from debian/.gitignore rename to linux/.gitignore diff --git a/debian/.xinitrc b/linux/.xinitrc similarity index 80% rename from debian/.xinitrc rename to linux/.xinitrc index 526abd2..56410dc 100644 --- a/debian/.xinitrc +++ b/linux/.xinitrc @@ -13,7 +13,7 @@ fcitx ### locking ### ############### -sh "$HOME/.screenlayout/layout.sh" +sh "$HOME/.screenlayout/001-xps-undocked.sh" xautolock -time 15 -locker "lock" 2>&1 & ############# @@ -31,4 +31,7 @@ dunst > /dev/null & blueman-applet > /dev/null & dbus-launch --sh-syntax --exit-with-session > /dev/null +# for caldigit dock +$HOME/.dotfiles/debian/bin/displayman > /tmp/displayman.txt & + exec i3 diff --git a/debian/Xorg.conf b/linux/Xorg.conf similarity index 100% rename from debian/Xorg.conf rename to linux/Xorg.conf diff --git a/debian/config/dunst/dunstrc b/linux/config/dunst/dunstrc similarity index 100% rename from debian/config/dunst/dunstrc rename to linux/config/dunst/dunstrc diff --git a/debian/config/i3/config b/linux/config/i3/config similarity index 100% rename from debian/config/i3/config rename to linux/config/i3/config diff --git a/debian/config/i3/polybar.sh b/linux/config/i3/polybar.sh old mode 100755 new mode 100644 similarity index 100% rename from debian/config/i3/polybar.sh rename to linux/config/i3/polybar.sh diff --git a/debian/config/less/termcap b/linux/config/less/termcap similarity index 100% rename from debian/config/less/termcap rename to linux/config/less/termcap diff --git a/debian/config/mpd/mpd.conf b/linux/config/mpd/mpd.conf similarity index 100% rename from debian/config/mpd/mpd.conf rename to linux/config/mpd/mpd.conf diff --git a/debian/config/ncmpcpp/config.sample b/linux/config/ncmpcpp/config.sample similarity index 100% rename from debian/config/ncmpcpp/config.sample rename to linux/config/ncmpcpp/config.sample diff --git a/debian/config/nvim/.netrwhist b/linux/config/nvim/.netrwhist similarity index 100% rename from debian/config/nvim/.netrwhist rename to linux/config/nvim/.netrwhist diff --git a/debian/config/nvim/init.vim b/linux/config/nvim/init.vim similarity index 100% rename from debian/config/nvim/init.vim rename to linux/config/nvim/init.vim diff --git a/debian/config/polybar/laptop-config b/linux/config/polybar/laptop-config similarity index 100% rename from debian/config/polybar/laptop-config rename to linux/config/polybar/laptop-config diff --git a/debian/config/rofi/config b/linux/config/rofi/config similarity index 100% rename from debian/config/rofi/config rename to linux/config/rofi/config diff --git a/debian/pulse-audio-mods b/linux/pulse-audio-mods similarity index 100% rename from debian/pulse-audio-mods rename to linux/pulse-audio-mods diff --git a/debian/pulse-default.pa.bak b/linux/pulse-default.pa.bak similarity index 100% rename from debian/pulse-default.pa.bak rename to linux/pulse-default.pa.bak diff --git a/debian/setup.sh b/linux/setup.sh old mode 100755 new mode 100644 similarity index 88% rename from debian/setup.sh rename to linux/setup.sh index 03f4495..c605ed1 --- a/debian/setup.sh +++ b/linux/setup.sh @@ -2,6 +2,20 @@ set -exo pipefail +##################### +### FUNCTION DEFS ### +##################### + +get_latest_release() { +curl --silent "https://api.github.com/repos/$1/releases/latest" \ + | grep '"tag_name":' \ + | sed -E 's/.*"([^"]+)".*/\1/' +} + +############ +### OPTS ### +############ + DIST='' case "$1" in "debian") @@ -23,6 +37,10 @@ while getopts "F" opt; do esac done +############ +### VARS ### +############ + BASE_DOTFILES_DIR="$HOME/.dotfiles" DOTFILES_DIR="$BASE_DOTFILES_DIR/$DIST" CONFIG_DIR="$HOME/.config" @@ -38,6 +56,10 @@ CONFIG_DIR="$HOME/.config" # * libdvdcss - see ffmpeg website for download # * teams - see microsoft website (ugh) +#################### +### APPLICATIONS ### +#################### + sudo apt update -y sudo apt install -y \ @@ -159,6 +181,10 @@ if [ ! -z "$FULL_INSTALL" ]; then zsh fi +################################### +### Symlink files + create dirs ### +################################### + mkdir -p "$HOME/programming" mkdir -p "$HOME/work" @@ -218,9 +244,9 @@ ln -s "$DOTFILES_DIR/config/i3/config" "$CONFIG_DIR/i3/config" if [ ! -f "$CONFIG_DIR/i3/polybar.sh" ]; then ln -s "$DOTFILES_DIR/config/i3/polybar.sh" "$CONFIG_DIR/i3/polybar.sh" - echo "Don't forget to symlink which polybar-config you want to use..." fi + if [ ! -f "$CONFIG_DIR/nvim/init.vim" ]; then ln -s "$DOTFILES_DIR/config/nvim/init.vim" "$CONFIG_DIR/nvim/init.vim" sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ @@ -228,7 +254,9 @@ if [ ! -f "$CONFIG_DIR/nvim/init.vim" ]; then nvim -c ":Silent ':PlugInstall'" fi -###### install programs +######################### +### Install utilities ### +######################### if [ ! -f "/usr/local/bin/lock" ]; then sudo ln -s "$DOTFILES_DIR/scripts/lock" "/usr/local/bin/lock" @@ -318,9 +346,16 @@ if [ ! -f "$HOME/.cargo/bin/fd" ]; then cargo install -f fd-find fi - -if [ ! -f "$CONFIG_DIR/polybar/config" ]; then - echo "Don't forget to copy/paste a polybar config." +if [ ! -f "/usr/local/bin/hadolint" ]; then + ver=$(get_latest_release hadolint/hadolint) + url="https://github.com/hadolint/hadolint/releases/download/$ver/hadolint-Linux-x86_64" + sudo curl -L "$url" -o /usr/local/bin/hadolint + sudo chmod +x /usr/local/bin/hadolint fi +############## +### FINISH ### +############## + echo "complete!" +echo "Don't forget to symlink which polybar-config you want to use..." diff --git a/linux/udevadm/85-caldigit-dock.rules b/linux/udevadm/85-caldigit-dock.rules new file mode 100644 index 0000000..4dec8e2 --- /dev/null +++ b/linux/udevadm/85-caldigit-dock.rules @@ -0,0 +1 @@ +SUBSYSTEM=="input", ACTION=="remove|add", ENV{ID_VENDOR_ID}=="2188" RUN+="/usr/bin/pkill -USR1 displayman" diff --git a/debian/x-no-turnoff-time b/linux/x-no-turnoff-time similarity index 100% rename from debian/x-no-turnoff-time rename to linux/x-no-turnoff-time diff --git a/debian/services/org.freedesktop.Notifications.service b/systemd/org.freedesktop.Notifications.service similarity index 100% rename from debian/services/org.freedesktop.Notifications.service rename to systemd/org.freedesktop.Notifications.service diff --git a/debian/services/syncthing-resume.service b/systemd/syncthing-resume.service similarity index 100% rename from debian/services/syncthing-resume.service rename to systemd/syncthing-resume.service diff --git a/debian/services/syncthing@.service b/systemd/syncthing@.service similarity index 100% rename from debian/services/syncthing@.service rename to systemd/syncthing@.service diff --git a/debian/zsh/aliases.zsh b/zsh/aliases.zsh similarity index 100% rename from debian/zsh/aliases.zsh rename to zsh/aliases.zsh diff --git a/debian/zsh/config.zsh b/zsh/config.zsh similarity index 100% rename from debian/zsh/config.zsh rename to zsh/config.zsh diff --git a/debian/zsh/functions.zsh b/zsh/functions.zsh similarity index 100% rename from debian/zsh/functions.zsh rename to zsh/functions.zsh diff --git a/debian/zsh/path-exports-options.zsh b/zsh/path-exports-options.zsh similarity index 96% rename from debian/zsh/path-exports-options.zsh rename to zsh/path-exports-options.zsh index 9eaeb52..3d45e3e 100644 --- a/debian/zsh/path-exports-options.zsh +++ b/zsh/path-exports-options.zsh @@ -2,8 +2,8 @@ ### GENERAL SYSTEM CONFIG ### ############################# -export LANG='en_US.UTF-8'; -export LC_ALL='en_US.UTF-8'; +export LANG='en_US.UTF-8' +export LC_ALL='en_US.UTF-8' export EDITOR='nvim' export VISUAL="$EDITOR" @@ -41,6 +41,7 @@ export FZF_DEFAULT_OPTS="--ansi" # currently: joplin, bitwarden, carla, cubiomes-viewer, # jetbrains, sauerbraten, slippi, winbox export PATH="$HOME/opt/bin:$PATH" +export PATH="$HOME/.dotfiles/bin:$PATH" # python binaries ? export PATH="$HOME/.local/bin:$PATH" diff --git a/zsh/secret-exports.zsh b/zsh/secret-exports.zsh new file mode 100644 index 0000000..e69de29 diff --git a/debian/zsh/theme.zsh b/zsh/theme.zsh similarity index 100% rename from debian/zsh/theme.zsh rename to zsh/theme.zsh diff --git a/debian/zsh/zsh-configuration.zsh b/zsh/zsh-configuration.zsh similarity index 100% rename from debian/zsh/zsh-configuration.zsh rename to zsh/zsh-configuration.zsh