aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore8
-rw-r--r--README4
-rw-r--r--arch-system/.SRCINFO68
-rw-r--r--arch-system/90-modprobe-d.hook11
-rw-r--r--arch-system/PKGBUILD82
-rwxr-xr-xarch-system/backup-sudo40
-rw-r--r--arch-system/base-system.install16
-rw-r--r--arch-system/borg-backup.service15
-rw-r--r--arch-system/borg-backup.timer11
-rwxr-xr-xarch-system/borgbackup86
-rw-r--r--arch-system/etc-locale.gen26
-rw-r--r--arch-system/etc-nsswitch.conf18
-rw-r--r--arch-system/etc-pacman.conf100
-rw-r--r--arch-system/etc-vconsole.conf1
-rw-r--r--arch-system/etc-yubikey.rules13
-rw-r--r--arch-system/intel-undervolt.conf52
-rw-r--r--arch-system/mirrorupgrade.hook10
-rw-r--r--arch-system/sudoers-borgbackup4
-rw-r--r--arch-system/sudoers-wheel4
-rw-r--r--arch-system/xps13-i915.conf1
-rw-r--r--arch-system/xps13-pci_pm.rules16
-rw-r--r--grokmirror/.SRCINFO (renamed from .SRCINFO)0
-rw-r--r--grokmirror/PKGBUILD (renamed from PKGBUILD)0
-rw-r--r--st-custom/.SRCINFO23
-rw-r--r--st-custom/.gitignore1
-rw-r--r--st-custom/PKGBUILD41
-rw-r--r--st-custom/st-terminal.desktop11
27 files changed, 662 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5747533
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+src
+pkg
+*.zip
+*.tar
+*.xz
+*.gz
+*.zst
+*.log
diff --git a/README b/README
new file mode 100644
index 0000000..3293a10
--- /dev/null
+++ b/README
@@ -0,0 +1,4 @@
+This is my personal collection of Arch Linux PKGBUILDs, including packages I
+maintain.
+
+What is dead may never die.
diff --git a/arch-system/.SRCINFO b/arch-system/.SRCINFO
new file mode 100644
index 0000000..1daa4d8
--- /dev/null
+++ b/arch-system/.SRCINFO
@@ -0,0 +1,68 @@
+pkgbase = arch-system
+ pkgdesc = Arch Linux system configuration
+ pkgver = 2023.04.14
+ pkgrel = 1
+ arch = any
+ license = custom
+ source = etc-pacman.conf
+ source = etc-locale.gen
+ source = etc-vconsole.conf
+ source = mirrorupgrade.hook
+ source = sudoers-wheel
+ source = etc-nsswitch.conf
+ source = 90-modprobe-d.hook
+ source = etc-yubikey.rules
+ source = sudoers-borgbackup
+ source = backup-sudo
+ source = borg-backup.service
+ source = borg-backup.timer
+ source = borgbackup
+ source = intel-undervolt.conf
+ source = xps13-i915.conf
+ source = xps13-pci_pm.rules
+ sha256sums = 271d6a7ac30da0d2ba055067d4ebbab76812c1735e4c2b45c619e004edc1fbba
+ sha256sums = b11ab0ea3d5c300afa0fb877d1f367993425a3fda0382f50f0e122625154f566
+ sha256sums = 978271534da06356159eb24c0cee32b0024029d41df836ab76a964dfd7d36447
+ sha256sums = 79ba5fdf0c69686ea0f2770c9b49b58ca26ebcce15e346d5bd56a442e684896e
+ sha256sums = 62c1a085f7a9d1c5d57b40516fea5d7e8dfb3593d5c0a713cd571c8e5bae2584
+ sha256sums = 9c1648e1e9219efbe1e4098952f7595f1ebb0eca629d2c8957079186c56d1822
+ sha256sums = 7467bb40e7d404ed249b34a0e410b8d452ebc4b90588d7e210bfa47011b5981d
+ sha256sums = dd84877b7f6f4330da489fa33f843c9a7c862562a3d78dc2feea5116ac846a79
+ sha256sums = 483a7d9350653c2cf22f36f67f1a83cc5c95232dfc10642a20d76e3c32c9e2e3
+ sha256sums = d39732bec90036020ad94d52cb34b6215801a82595f7fb30f8c5e0a7f1eb9b1e
+ sha256sums = 94c06cbf7304996b0503cace9394c2dbc0150bc045fd30cc402e3d943a8c8abd
+ sha256sums = e1bf3dc5978a7641f86975b7ee770a6914b30a8e4b7e3be2f1b07eaa7098591d
+ sha256sums = 276a79a04359ffae6ddf597d060278f6f58890ce2d5f6c185948b31c7a5c8927
+ sha256sums = 895305808aa91be3294dbaeb7840e38497fb8dbcd6309cc95c417e1a0379e596
+ sha256sums = 5613c98d32e513a973e8a0e250ab0b267882a73615f507b6208d4a5f21487fe6
+ sha256sums = 4aa61e0833083d0d90e1b732374bfa5da6aa8e86aa291ab1299fc4e87e70f4e0
+
+pkgname = base-system
+ install = base-system.install
+ depends = gvim
+ depends = zsh
+ depends = tmux
+ depends = htop
+ depends = git
+ depends = reflector
+ depends = sudo
+ depends = avahi
+ depends = nss-mdns
+ depends = ttf-dejavu
+ depends = chromium
+ depends = ttf-liberation
+
+pkgname = backup-system
+ depends = libnotify
+ depends = bash
+ depends = borg
+ depends = sudo
+
+pkgname = xps13
+ depends = mesa
+ depends = lib32-mesa
+ depends = vulkan-intel
+ depends = libva-intel-driver
+ depends = lib32-libva-intel-driver
+ depends = libvdpau-va-gl
+ depends = intel-undervolt
diff --git a/arch-system/90-modprobe-d.hook b/arch-system/90-modprobe-d.hook
new file mode 100644
index 0000000..90a035f
--- /dev/null
+++ b/arch-system/90-modprobe-d.hook
@@ -0,0 +1,11 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = etc/modprobe.d/*
+
+[Action]
+Description = Rebuilding initcpios
+When = PostTransaction
+Exec = /usr/bin/mkinitcpio -P
diff --git a/arch-system/PKGBUILD b/arch-system/PKGBUILD
new file mode 100644
index 0000000..9098788
--- /dev/null
+++ b/arch-system/PKGBUILD
@@ -0,0 +1,82 @@
+# Maintainer: Tharre <tharre3@gmail.com>
+
+pkgbase=arch-system
+pkgname=('base-system' 'backup-system' 'xps13')
+pkgver=$(printf '%(%Y.%m.%d)T')
+pkgrel=1
+pkgdesc="Arch Linux system configuration"
+arch=("any")
+url=""
+license=('custom')
+source=('etc-pacman.conf' 'etc-locale.gen' 'etc-vconsole.conf'
+ 'mirrorupgrade.hook' 'sudoers-wheel' 'etc-nsswitch.conf'
+ '90-modprobe-d.hook' 'etc-yubikey.rules'
+
+ 'sudoers-borgbackup' 'backup-sudo' 'borg-backup.service'
+ 'borg-backup.timer' 'borgbackup'
+
+ 'intel-undervolt.conf' 'xps13-i915.conf' 'xps13-pci_pm.rules')
+sha256sums=('271d6a7ac30da0d2ba055067d4ebbab76812c1735e4c2b45c619e004edc1fbba'
+ 'b11ab0ea3d5c300afa0fb877d1f367993425a3fda0382f50f0e122625154f566'
+ '978271534da06356159eb24c0cee32b0024029d41df836ab76a964dfd7d36447'
+ '79ba5fdf0c69686ea0f2770c9b49b58ca26ebcce15e346d5bd56a442e684896e'
+ '62c1a085f7a9d1c5d57b40516fea5d7e8dfb3593d5c0a713cd571c8e5bae2584'
+ '9c1648e1e9219efbe1e4098952f7595f1ebb0eca629d2c8957079186c56d1822'
+ '7467bb40e7d404ed249b34a0e410b8d452ebc4b90588d7e210bfa47011b5981d'
+ 'dd84877b7f6f4330da489fa33f843c9a7c862562a3d78dc2feea5116ac846a79'
+ '483a7d9350653c2cf22f36f67f1a83cc5c95232dfc10642a20d76e3c32c9e2e3'
+ 'd39732bec90036020ad94d52cb34b6215801a82595f7fb30f8c5e0a7f1eb9b1e'
+ '94c06cbf7304996b0503cace9394c2dbc0150bc045fd30cc402e3d943a8c8abd'
+ 'e1bf3dc5978a7641f86975b7ee770a6914b30a8e4b7e3be2f1b07eaa7098591d'
+ '276a79a04359ffae6ddf597d060278f6f58890ce2d5f6c185948b31c7a5c8927'
+ '895305808aa91be3294dbaeb7840e38497fb8dbcd6309cc95c417e1a0379e596'
+ '5613c98d32e513a973e8a0e250ab0b267882a73615f507b6208d4a5f21487fe6'
+ '4aa61e0833083d0d90e1b732374bfa5da6aa8e86aa291ab1299fc4e87e70f4e0')
+
+package_base-system() {
+ depends=('gvim' 'zsh' 'tmux' 'htop' 'git' 'reflector' 'sudo' 'avahi'
+ 'nss-mdns' 'ttf-dejavu' 'chromium' 'ttf-liberation')
+ install="$pkgname.install"
+
+ install -Dm0644 etc-pacman.conf "$pkgdir"/etc/pacman.conf
+ install -Dm0644 /dev/stdin "$pkgdir"/etc/locale.conf <<EOF
+LANG=en_GB.UTF-8
+LC_TIME=de_DE.UTF-8
+LC_COLLATE="C"
+EOF
+ install -Dm0644 etc-locale.gen "$pkgdir"/etc/locale.gen
+ install -Dm0644 etc-vconsole.conf "$pkgdir"/etc/vconsole.conf
+ install -Dm0644 mirrorupgrade.hook -t "$pkgdir"/usr/share/libalpm/hooks/
+ install -dm0750 "$pkgdir"/etc/sudoers.d/
+ install -Dm0644 sudoers-wheel "$pkgdir"/etc/sudoers.d/00_wheel
+ install -Dm0644 etc-nsswitch.conf "$pkgdir"/etc/nsswitch.conf
+ install -Dm0644 /dev/stdin "$pkgdir"/usr/lib/sysctl.d/99-sysctl.conf <<EOF
+kernel.sysrq = 1
+EOF
+ install -Dm0644 90-modprobe-d.hook -t "$pkgdir"/usr/share/libalpm/hooks/
+ install -Dm0644 etc-yubikey.rules -t "$pkgdir"/usr/lib/udev/rules.d
+
+ ln -s /usr/share/zoneinfo/Europe/Berlin "$pkgdir"/etc/localtime
+}
+
+package_backup-system() {
+ depends=('libnotify' 'bash' 'borg' 'sudo')
+
+ install -dm0750 "$pkgdir"/etc/sudoers.d/
+ install -Dm0644 sudoers-borgbackup "$pkgdir"/etc/sudoers.d/70_borgbackup
+ install -Dm0644 borg-backup.service -t "$pkgdir"/usr/lib/systemd/user/
+ install -Dm0644 borg-backup.timer -t "$pkgdir"/usr/lib/systemd/user/
+ install -Dm0755 borgbackup backup-sudo -t "$pkgdir"/usr/bin/
+}
+
+package_xps13() {
+ depends=('mesa' 'lib32-mesa' 'vulkan-intel' 'libva-intel-driver'
+ 'lib32-libva-intel-driver' 'libvdpau-va-gl' 'intel-undervolt')
+
+ install -Dm0644 xps13-i915.conf "$pkgdir"/etc/modprobe.d/i915.conf
+ install -Dm0644 intel-undervolt.conf -t "$pkgdir"/etc/
+ install -Dm0644 xps13-pci_pm.rules \
+ "$pkgdir"/usr/lib/udev/rules.d/99-pci_pm.rules
+}
+
+# TODO: docker, vagrant, devtools
diff --git a/arch-system/backup-sudo b/arch-system/backup-sudo
new file mode 100755
index 0000000..90590e0
--- /dev/null
+++ b/arch-system/backup-sudo
@@ -0,0 +1,40 @@
+#!/bin/bash -e
+
+validate_path() {
+ # validate path
+ targetpath="$(realpath -m -- "$1")"
+ if [[ "$targetpath" != /.snapshots/* ]]; then
+ echo "Invalid path given." >&2
+ exit 2
+ fi
+}
+
+case "$1" in
+ snapshot)
+ validate_path "$2"
+ # small race, but shouldn't matter
+ if ! btrfs subvolume show "$3" > /dev/null 2>&1; then
+ echo "Not a btrfs subvolume." >&2
+ exit 3
+ fi
+ touch -c -- "$3"
+ btrfs subvolume snapshot -r -- "$3" "$2"
+ ;;
+ delete_snapshot)
+ validate_path "$2"
+ btrfs subvolume delete -- "$2"
+ ;;
+ mount)
+ validate_path "$2"
+ mkdir -p /backup
+ mount --bind -- "$2" /backup
+ ;;
+ cleanup)
+ umount /backup 2> /dev/null || true
+ rm -df /backup
+ ;;
+ *)
+ echo "No command specified." >&2
+ exit 1
+ ;;
+esac
diff --git a/arch-system/base-system.install b/arch-system/base-system.install
new file mode 100644
index 0000000..ee56a6e
--- /dev/null
+++ b/arch-system/base-system.install
@@ -0,0 +1,16 @@
+post_upgrade() {
+ # in case it wasn't already run by glibc
+ locale-gen
+
+ systemctl enable --now avahi-daemon.service
+ mount | grep -q "on / type btrfs" && systemctl enable --now btrfs-scrub@-.timer
+}
+
+post_install() {
+ post_upgrade
+}
+
+pre_remove() {
+ systemctl disable avahi-daemon.service
+ systemctl disable btrfs-scrub@-.timer
+}
diff --git a/arch-system/borg-backup.service b/arch-system/borg-backup.service
new file mode 100644
index 0000000..b5a4a52
--- /dev/null
+++ b/arch-system/borg-backup.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Borg backup service for /home (BTRFS)
+Wants=network-online.target
+After=network-online.target
+
+[Service]
+RuntimeMaxSec=1800
+Nice=19
+IOSchedulingClass=3
+IOSchedulingPriority=7
+ExecStart=/usr/bin/borgbackup
+Type=simple
+
+[Install]
+WantedBy=multi-user.target
diff --git a/arch-system/borg-backup.timer b/arch-system/borg-backup.timer
new file mode 100644
index 0000000..0ac9096
--- /dev/null
+++ b/arch-system/borg-backup.timer
@@ -0,0 +1,11 @@
+[Unit]
+Description=Runs backups every hour
+
+[Timer]
+OnCalendar=hourly
+OnBootSec=5min
+RandomizedDelaySec=5min
+Unit=borg-backup.service
+
+[Install]
+WantedBy=timers.target
diff --git a/arch-system/borgbackup b/arch-system/borgbackup
new file mode 100755
index 0000000..c813fcc
--- /dev/null
+++ b/arch-system/borgbackup
@@ -0,0 +1,86 @@
+#!/bin/bash
+
+set -o errexit -o errtrace
+
+source /etc/borg_env.sh
+
+export BORG_RSH="$BORG_RSH -o ConnectionAttempts=20 -o ServerAliveInterval=30"
+export LC_COLLATE=C
+
+SNAPSHOT_TARGET="/.snapshots/$SNAPSHOT_PREFIX-$(date "+%Y-%m-%dT%H:%M:%S")"
+
+cleanup() {
+ cd /
+ sudo -n /usr/bin/backup-sudo cleanup
+}
+
+handle_failure() {
+ notify_user -u critical "Backup failed!"
+
+ echo "Backup failed!" >&2
+ exit 2
+}
+
+trap cleanup EXIT
+trap handle_failure INT TERM ERR
+
+backup() {
+ # borg's caching of 'known' files is really dumb - it takes the full
+ # canonical path to check if it has already seen a file. This means that the
+ # path of files must never change if you want fast backups.
+ # As symlinks won't work, we use mount(8) to ensure the paths stay the same.
+ sudo -n backup-sudo mount "$1"
+
+ if [ -t 1 ]; then
+ borg_progress="--progress"
+ fi
+
+ cd /backup
+
+ BACKUP_TARGET="$SNAPSHOT_PREFIX"-"$(date -r . "+%Y-%m-%dT%H:%M:%S")"
+ borg create --stats $borg_progress \
+ --patterns-from ~/.borg_pattern \
+ --timestamp . \
+ --show-rc \
+ ::"$BACKUP_TARGET" . && rc=$? || rc=$?
+ if [ $rc -eq 1 ]; then
+ # borg defines return code 1 as warning, usually permission stuff
+ notify_user "Warning: borgbackup returned 1. Check logs"
+ elif [ $rc -gt 1 ]; then
+ borg list --short | grep -q "$BACKUP_TARGET" || false
+ fi
+
+ cleanup
+ sudo -n backup-sudo delete_snapshot "$1"
+}
+
+if [ ! -d "$SNAPSHOT_TARGET" ]; then
+ sudo -n backup-sudo snapshot "$SNAPSHOT_TARGET" "$SNAPSHOT_MOUNTPOINT"
+fi
+
+cleanup
+
+$BORG_RSH "$BORG_HOST" -f -N || rc=$?
+if [ ${rc-0} -eq 255 ]; then
+ notify_user "Backup: upload skipped"
+ echo "SSH server not reachable, skipping upload" >&2
+ exit 0
+elif [ ${rc-0} -ne 0 ]; then
+ false
+fi
+
+for d in /.snapshots/*/ ; do
+ echo "Now working on: $d"
+ backup "$d"
+done
+
+echo "Pruning repository."
+
+borg prune --show-rc --list \
+ --keep-last 20 \
+ --keep-hourly 72 \
+ --keep-daily 7 \
+ --keep-weekly 4 \
+ --keep-monthly 6
+
+echo "Backup finished."
diff --git a/arch-system/etc-locale.gen b/arch-system/etc-locale.gen
new file mode 100644
index 0000000..a68f87c
--- /dev/null
+++ b/arch-system/etc-locale.gen
@@ -0,0 +1,26 @@
+# Configuration file for locale-gen
+#
+# lists of locales that are to be generated by the locale-gen command.
+#
+# Each line is of the form:
+#
+# <locale> <charset>
+#
+# where <locale> is one of the locales given in /usr/share/i18n/locales
+# and <charset> is one of the character sets listed in /usr/share/i18n/charmaps
+#
+# Examples:
+# en_US ISO-8859-1
+# en_US.UTF-8 UTF-8
+# de_DE ISO-8859-1
+# de_DE@euro ISO-8859-15
+#
+# The locale-gen command will generate all the locales,
+# placing them in /usr/lib/locale.
+#
+# A list of supported locales is included in this file.
+# Uncomment the ones you need.
+#
+en_US.UTF-8 UTF-8
+en_GB.UTF-8 UTF-8
+de_DE.UTF-8 UTF-8
diff --git a/arch-system/etc-nsswitch.conf b/arch-system/etc-nsswitch.conf
new file mode 100644
index 0000000..007d207
--- /dev/null
+++ b/arch-system/etc-nsswitch.conf
@@ -0,0 +1,18 @@
+# Name Service Switch configuration file.
+# See nsswitch.conf(5) for details.
+
+passwd: files mymachines systemd
+group: files mymachines systemd
+shadow: files
+
+publickey: files
+
+hosts: files mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname
+networks: files
+
+protocols: files
+services: files
+ethers: files
+rpc: files
+
+netgroup: files
diff --git a/arch-system/etc-pacman.conf b/arch-system/etc-pacman.conf
new file mode 100644
index 0000000..f649764
--- /dev/null
+++ b/arch-system/etc-pacman.conf
@@ -0,0 +1,100 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir = /
+#DBPath = /var/lib/pacman/
+#CacheDir = /var/cache/pacman/pkg/
+#LogFile = /var/log/pacman.log
+#GPGDir = /etc/pacman.d/gnupg/
+#HookDir = /etc/pacman.d/hooks/
+HoldPkg = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+IgnorePkg = linux linux-headers linux-lts linux-lts-headers
+#IgnoreGroup =
+
+#NoUpgrade =
+#NoExtract =
+
+# Misc options
+#UseSyslog
+Color
+#NoProgressBar
+CheckSpace
+#VerbosePkgLists
+#ParallelDownloads = 5
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+# - can be defined here or included from another file
+# - pacman will search repositories in the order defined here
+# - local/custom mirrors can be added here or in separate files
+# - repositories listed first will take precedence when packages
+# have identical names, regardless of version number
+# - URLs will have $repo replaced by the name of the current repo
+# - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+# [repo-name]
+# Server = ServerName
+# Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# The testing repositories are disabled by default. To enable, uncomment the
+# repo name header and Include lines. You can add preferred servers immediately
+# after the header, and they will be used before the default mirrors.
+
+#[testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[core]
+Include = /etc/pacman.d/mirrorlist
+
+[extra]
+Include = /etc/pacman.d/mirrorlist
+
+#[community-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[community]
+Include = /etc/pacman.d/mirrorlist
+
+# If you want to run 32 bit applications on your x86_64 system,
+# enable the multilib repositories as required here.
+
+#[multilib-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[multilib]
+Include = /etc/pacman.d/mirrorlist
+
+# An example of a custom package repository. See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs
diff --git a/arch-system/etc-vconsole.conf b/arch-system/etc-vconsole.conf
new file mode 100644
index 0000000..c1e444e
--- /dev/null
+++ b/arch-system/etc-vconsole.conf
@@ -0,0 +1 @@
+KEYMAP=de-latin1
diff --git a/arch-system/etc-yubikey.rules b/arch-system/etc-yubikey.rules
new file mode 100644
index 0000000..6d8238b
--- /dev/null
+++ b/arch-system/etc-yubikey.rules
@@ -0,0 +1,13 @@
+# Yubico Yubikey
+#
+# This is a ugly hack to prevent scdaemon from locking up after suspend.
+# Note that more civil methods, like gpgconf --kill scdaemon or just sending a
+# normal TERM doesn't work.
+# see https://wiki.gnupg.org/SmartCard#Known_problem_of_Yubikey
+ATTRS{idVendor}=="1050", \
+ATTRS{idProduct}=="0010|0405|0110|0111|0116", \
+ENV{ID_SECURITY_TOKEN}="1", \
+RUN+="/usr/bin/killall -9 scdaemon", \
+TAG+="uaccess"
+
+LABEL="yubico_end"
diff --git a/arch-system/intel-undervolt.conf b/arch-system/intel-undervolt.conf
new file mode 100644
index 0000000..2070f66
--- /dev/null
+++ b/arch-system/intel-undervolt.conf
@@ -0,0 +1,52 @@
+# Enable or Disable Triggers (elogind)
+# Usage: enable [yes/no]
+
+enable no
+
+# CPU Undervolting
+# Usage: undervolt ${index} ${display_name} ${undervolt_value}
+# Example: undervolt 2 'CPU Cache' -25.84
+
+undervolt 0 'CPU' -95
+undervolt 1 'GPU' 0
+undervolt 2 'CPU Cache' -95
+undervolt 3 'System Agent' 0
+undervolt 4 'Analog I/O' 0
+
+# Power Limits Alteration
+# Usage: power ${domain} ${short_power_value} ${long_power_value}
+# Power value: ${power}[/${time_window}][:enabled][:disabled]
+# Domains: package
+# Example: power package 45 35
+# Example: power package 45/0.002 35/28
+# Example: power package 45/0.002:disabled 35/28:enabled
+
+# Critical Temperature Offset Alteration
+# Usage: tjoffset ${temperature_offset}
+# Example: tjoffset -20
+
+# Energy Versus Performance Preference Switch
+# Usage: hwphint ${mode} ${algorithm} ${load_hint} ${normal_hint}
+# Hints: see energy_performance_available_preferences
+# Modes: switch, force
+# Load algorithm: load:${capture}:${threshold}
+# Power algorithm: power[:${domain}:[gt/lt]:${value}[:[and/or]]...]
+# Capture: single, multi
+# Threshold: CPU usage threshold
+# Domain: RAPL power domain, check with `intel-undervolt measure`
+# Example: hwphint force load:single:0.8 performance balance_performance
+# Example: hwphint switch power:core:gt:8 performance balance_performance
+
+# Daemon Update Interval
+# Usage: interval ${interval_in_milliseconds}
+
+interval 5000
+
+# Daemon Actions
+# Usage: daemon action[:option...]
+# Actions: undervolt, power, tjoffset
+# Options: once
+
+daemon undervolt:once
+daemon power
+daemon tjoffset
diff --git a/arch-system/mirrorupgrade.hook b/arch-system/mirrorupgrade.hook
new file mode 100644
index 0000000..7adfe8d
--- /dev/null
+++ b/arch-system/mirrorupgrade.hook
@@ -0,0 +1,10 @@
+[Trigger]
+Operation = Upgrade
+Type = Package
+Target = pacman-mirrorlist
+
+[Action]
+Description = Updating pacman-mirrorlist with reflector and removing pacnew...
+When = PostTransaction
+Depends = reflector
+Exec = /usr/bin/reflector -p https -l 30 -f 10 -a 24 --score 100 --save /etc/pacman.d/mirrorlist
diff --git a/arch-system/sudoers-borgbackup b/arch-system/sudoers-borgbackup
new file mode 100644
index 0000000..a6f40b0
--- /dev/null
+++ b/arch-system/sudoers-borgbackup
@@ -0,0 +1,4 @@
+# /etc/sudoers.d/borgbackup
+
+# allow systemd service files to call backup-sudo
+%wheel ALL=(root) NOPASSWD: /usr/bin/backup-sudo
diff --git a/arch-system/sudoers-wheel b/arch-system/sudoers-wheel
new file mode 100644
index 0000000..8912b8c
--- /dev/null
+++ b/arch-system/sudoers-wheel
@@ -0,0 +1,4 @@
+# /etc/sudoers.d/wheel
+
+# Allow members of group wheel to execute any command
+%wheel ALL=(ALL) ALL
diff --git a/arch-system/xps13-i915.conf b/arch-system/xps13-i915.conf
new file mode 100644
index 0000000..6bbe131
--- /dev/null
+++ b/arch-system/xps13-i915.conf
@@ -0,0 +1 @@
+options i915 enable_guc=3 enable_psr=2
diff --git a/arch-system/xps13-pci_pm.rules b/arch-system/xps13-pci_pm.rules
new file mode 100644
index 0000000..8a59bbf
--- /dev/null
+++ b/arch-system/xps13-pci_pm.rules
@@ -0,0 +1,16 @@
+# whitelist for pci autosuspend
+
+# Intel Sunrise PCI Express Port #1
+SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x9d10", ATTR{power/control}="auto"
+
+# Intel Xeon E3-1200 v6/7th Gen
+SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x5914", ATTR{power/control}="auto"
+
+# Intel Sunrise Point LPC Controller/eSPI Controller
+SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x9d4e", ATTR{power/control}="auto"
+
+# SK hynix PC300 NVMe SSD
+SUBSYSTEM=="pci", ATTR{vendor}=="0x1c5c", ATTR{device}=="0x1283", ATTR{power/control}="auto"
+
+# Qualcomm Atheros QCA6174 802.11ac Wireless Adapter
+SUBSYSTEM=="pci", ATTR{vendor}=="0x168c", ATTR{device}=="0x003e", ATTR{power/control}="auto"
diff --git a/.SRCINFO b/grokmirror/.SRCINFO
index 07aa9e8..07aa9e8 100644
--- a/.SRCINFO
+++ b/grokmirror/.SRCINFO
diff --git a/PKGBUILD b/grokmirror/PKGBUILD
index b547964..b547964 100644
--- a/PKGBUILD
+++ b/grokmirror/PKGBUILD
diff --git a/st-custom/.SRCINFO b/st-custom/.SRCINFO
new file mode 100644
index 0000000..9a083d1
--- /dev/null
+++ b/st-custom/.SRCINFO
@@ -0,0 +1,23 @@
+pkgbase = st-custom
+ pkgdesc = Simple virtual terminal emulator for X
+ pkgver = 0.7.r93.g97418a4
+ pkgrel = 1
+ url = http://git.suckless.org/st/
+ arch = i686
+ arch = x86_64
+ arch = armv7h
+ license = MIT
+ makedepends = ncurses
+ makedepends = libxext
+ makedepends = git
+ depends = libxft
+ depends = adobe-source-code-pro-fonts
+ depends = ttf-dejavu
+ provides = st
+ conflicts = st
+ source = st::git+https://github.com/Tharre/st-transparency.git#branch=custom_config
+ source = st-terminal.desktop
+ sha256sums = SKIP
+ sha256sums = ec9f8e5505f13b450ef180edf3596de4d528fe507fbd1aed7fa715221e64770f
+
+pkgname = st-custom
diff --git a/st-custom/.gitignore b/st-custom/.gitignore
new file mode 100644
index 0000000..5979724
--- /dev/null
+++ b/st-custom/.gitignore
@@ -0,0 +1 @@
+st/
diff --git a/st-custom/PKGBUILD b/st-custom/PKGBUILD
new file mode 100644
index 0000000..2752371
--- /dev/null
+++ b/st-custom/PKGBUILD
@@ -0,0 +1,41 @@
+# Maintainer: Tharre <tharre3@gmail.com>
+
+pkgname=st-custom
+_pkgname=st
+pkgver=0.7.r93.g97418a4
+pkgrel=1
+pkgdesc='Simple virtual terminal emulator for X'
+url='http://git.suckless.org/st/'
+arch=('i686' 'x86_64' 'armv7h')
+license=('MIT')
+depends=('libxft' 'adobe-source-code-pro-fonts' 'ttf-dejavu')
+makedepends=('ncurses' 'libxext' 'git')
+provides=("${_pkgname}")
+conflicts=("${_pkgname}")
+source=('st::git+https://github.com/Tharre/st-transparency.git#branch=custom_config'
+ 'st-terminal.desktop')
+sha256sums=('SKIP'
+ 'ec9f8e5505f13b450ef180edf3596de4d528fe507fbd1aed7fa715221e64770f')
+
+pkgver() {
+ cd "${_pkgname}"
+ git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
+}
+
+prepare() {
+ cd "${_pkgname}"
+ ln -sf config.def.h config.h
+}
+
+build() {
+ cd "${_pkgname}"
+ make
+}
+
+package() {
+ cd "${_pkgname}"
+ make PREFIX=/usr DESTDIR="${pkgdir}" install
+ install -Dm644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -Dm644 README FAQ -t "${pkgdir}/usr/share/doc/${pkgname}"
+ install -Dm644 "${srcdir}/st-terminal.desktop" -t "${pkgdir}/usr/share/applications"
+}
diff --git a/st-custom/st-terminal.desktop b/st-custom/st-terminal.desktop
new file mode 100644
index 0000000..c1910b1
--- /dev/null
+++ b/st-custom/st-terminal.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Version=1.0
+Name=st
+Comment=A simple virtual terminal emulator for X.
+GenericName=Terminal Emulator
+Exec=st
+Icon=utilities-terminal
+Terminal=false
+Type=Application
+Categories=System;TerminalEmulator;
+StartupNotify=true