add aconfmgr

This commit is contained in:
starr-dusT 2022-01-15 01:07:21 -08:00
parent 4781dbeea7
commit cc42782dff
26 changed files with 1750 additions and 864 deletions

View File

@ -0,0 +1,60 @@
# Fail if not in Windows Subsystem for Linux
function DetectWSL() {
grep -i -q microsoft /proc/version &>/dev/null
return $?
}
# Fail if not in a container / virtual machine / WSL
function DetectVM() {
# https://www.freedesktop.org/software/systemd/man/systemd-detect-virt.html
systemd-detect-virt --quiet &>/dev/null
return $?
}
# Fail if not in VirtualBox
function DetectVirtualBox() {
systemd-detect-virt | grep -i -q oracle
return $?
}
# Fail if not on an AMD processor
function DetectAMD() {
grep -i -q AMD /proc/cpuinfo &>/dev/null
return $?
}
# Fail if not on an Intel processor
function DetectIntel() {
grep -i -q Intel /proc/cpuinfo &>/dev/null
return $?
}
# Fail if no NVME drives are found
function DetectNVME() {
find /dev -maxdepth 1 -name '*nvme*' | grep -i -q nvme &>/dev/null
return $?
}
# Fail if no AMD GPU is found
function DetectAMDGPU() {
lspci -v | grep -i 'amd/ati' | grep -i -q 'vga' &>/dev/null
return $?
}
# Fail if no Intel GPU is found
function DetectIntelGPU() {
lspci -v | grep -i 'intel' | grep -i -q 'vga' &>/dev/null
return $?
}
# Fail if no Nvidia GPU is found
function DetectNvidia() {
lspci -v | grep -i -q nvidia &>/dev/null
return $?
}
# Fail if no encrypted devices are listed in /etc/fstab
function DetectCrypt() {
grep -q '/dev/mapper/' /etc/fstab
return $?
}

36
.config/aconfmgr/00-ignore.sh Executable file
View File

@ -0,0 +1,36 @@
# Boot binaries
IgnorePath '/boot/*.img'
IgnorePath '/boot/*/*.EFI'
IgnorePath '/boot/*/*.efi'
IgnorePath '/boot/vmlin*'
# Certificate databases
IgnorePath '/etc/ca-certificates/extracted/*'
IgnorePath '/etc/ssl/certs/*'
IgnorePath '/etc/pacman.d/gnupg/*'
# Cache and generated files
IgnorePath '/etc/*.cache'
IgnorePath '/etc/*.gen'
# Password files
IgnorePath '/etc/*shadow*'
IgnorePath '/usr/share/*'
# Configuration database
IgnorePath '/etc/dconf'
# Mount files
IgnorePath '*/.updated'
IgnorePath '*/lost+found/*'
# Opt packages (check that they don't include config)
IgnorePath '/opt/*'
# Binary libraries
IgnorePath '/usr/lib/*'
# Local binaries
IgnorePath '/usr/local/include/*'
IgnorePath '/usr/local/lib/*'
IgnorePath '/usr/local/share/applications/mimeinfo.cache'
# Var databases, logs, swap and temp files
IgnorePath '/var/db/sudo'
IgnorePath '/var/lib/*'
IgnorePath '/var/log/*'
IgnorePath '/var/swap*'
IgnorePath '/var/tmp/*'
# BTRFS snapshots
IgnorePath '/.snapshots/*'

View File

@ -0,0 +1,94 @@
# Minimal system
AddPackage archlinux-keyring # Arch Linux PGP keyring
AddPackage base # Minimal package set to define a basic Arch Linux installation
CreateFile /etc/ld.so.preload >/dev/null
CopyFile /etc/locale.conf
CopyFile /etc/locale.gen
CreateLink /etc/localtime /usr/share/zoneinfo/America/Los_Angeles
# Package management
AddPackageGroup base-devel # Required for building AUR packages
AddPackage --foreign aconfmgr-git # A configuration manager for Arch Linux
AddPackage pacman-contrib # Contributed scripts and tools for pacman systems
AddPackage --foreign paru # Feature packed AUR helper
AddPackage pkgfile # a pacman .files metadata explorer
AddPackage reflector # A Python 3 module and script to retrieve and filter the latest Pacman mirror list.
CopyFile /etc/makepkg.conf
CopyFile /etc/pacman.conf
# Default kernel
AddPackage linux # The Linux kernel and modules
AddPackage linux-headers # Headers and scripts for building modules for the Linux kernel
# Zen kernel
AddPackage linux-zen # The Linux kernel and modules
AddPackage linux-zen-headers # Headers and scripts for building modules for the Linux kernel
# Backup kernel
AddPackage linux-lts # The LTS Linux kernel and modules
AddPackage linux-lts-headers # Headers and scripts for building modules for the LTS Linux kernel
# Boot
AddPackage --foreign systemd-boot-pacman-hook # Pacman hook to upgrade systemd-boot after systemd upgrade.
# Firmware
AddPackage linux-firmware # Firmware files for Linux
# EFI filesystem support
AddPackage exfat-utils # Utilities for exFAT file system
# Main filesystem support
AddPackage e2fsprogs # Ext2/3/4 filesystem utilities
if ! DetectVM; then
# Processor support
DetectAMD && AddPackage amd-ucode # Microcode update image for AMD CPUs
DetectIntel && AddPackage intel-ucode # Microcode update files for Intel CPUs
# Hardware support
AddPackage fwupd # Simple daemon to allow session software to update firmware
DetectNVME && AddPackage nvme-cli # NVM-Express user space tooling for Linux
# Extra file system support... just in case
AddPackage afpfs-ng # A client for the Apple Filing Protocol (AFP)
AddPackage btrfs-progs # Btrfs filesystem utilities
AddPackage dosfstools # DOS filesystem utilities
AddPackage f2fs-tools # Tools for Flash-Friendly File System (F2FS)
AddPackage jfsutils # JFS filesystem utilities
AddPackage kbfs # The Keybase filesystem
AddPackage mtools # A collection of utilities to access MS-DOS disks
AddPackage mtpfs # A FUSE filesystem that supports reading and writing from any MTP device
AddPackage nilfs-utils # A log-structured file system supporting continuous snapshotting (userspace utils)
AddPackage ntfs-3g # NTFS filesystem driver and utilities
AddPackage reiserfsprogs # Reiserfs utilities
AddPackage squashfs-tools # Tools for squashfs, a highly compressed read-only filesystem for Linux.
AddPackage sysfsutils # System Utilities Based on Sysfs
AddPackage truecrypt # Free open-source cross-platform disk encryption software
AddPackage xfsprogs # XFS filesystem utilities
# Sensors
AddPackage lm_sensors # Collection of user space tools for general SMBus access and hardware monitoring
CreateLink /etc/systemd/system/multi-user.target.wants/lm_sensors.service /usr/lib/systemd/system/lm_sensors.service
fi
fi
# Reduce timeouts to sane values
cat >>"$(GetPackageOriginalFile systemd /etc/systemd/system.conf)" <<-EOF
RuntimeWatchdogSec=10min
ShutdownWatchdogSec=10min
DefaultTimeoutStartSec=30s
DefaultTimeoutStopSec=30s
EOF
# Arch linux enables these GPG agent systemd user sockets by default
CreateLink /etc/systemd/user/sockets.target.wants/dirmngr.socket /usr/lib/systemd/user/dirmngr.socket
CreateLink /etc/systemd/user/sockets.target.wants/gpg-agent-browser.socket /usr/lib/systemd/user/gpg-agent-browser.socket
CreateLink /etc/systemd/user/sockets.target.wants/gpg-agent-extra.socket /usr/lib/systemd/user/gpg-agent-extra.socket
CreateLink /etc/systemd/user/sockets.target.wants/gpg-agent.socket /usr/lib/systemd/user/gpg-agent.socket
CreateLink /etc/systemd/user/sockets.target.wants/gpg-agent-ssh.socket /usr/lib/systemd/user/gpg-agent-ssh.socket
# Network Time Protocol
CreateLink /etc/systemd/system/dbus-org.freedesktop.timesync1.service /usr/lib/systemd/system/systemd-timesyncd.service
CreateLink /etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service /usr/lib/systemd/system/systemd-timesyncd.service

View File

@ -0,0 +1,34 @@
# Firewall
CreateLink /etc/systemd/system/multi-user.target.wants/iptables.service /usr/lib/systemd/system/iptables.service
# NetworkManager
AddPackage networkmanager # Network connection manager and user applications
CreateLink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service /usr/lib/systemd/system/NetworkManager.service
CreateLink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service /usr/lib/systemd/system/NetworkManager-dispatcher.service
CreateLink /etc/systemd/system/multi-user.target.wants/NetworkManager.service /usr/lib/systemd/system/NetworkManager.service
# Tools
AddPackage iproute2 # IP Routing Utilities
AddPackage zerotier-one # Creates virtual Ethernet networks of almost unlimited size.
AddPackage wireguard-tools # next generation secure network tunnel - tools for configuration
# Hosts file
cat >>"$(GetPackageOriginalFile filesystem /etc/hosts)" <<-EOF
127.0.0.1 localhost $HOSTNAME
::1 localhost $HOSTNAME
EOF
# SSH
AddPackage sshfs # FUSE client based on the SSH File Transfer Protocol
CreateLink /etc/systemd/system/multi-user.target.wants/sshd.service /usr/lib/systemd/system/sshd.service
CreateLink /etc/systemd/user/sockets.target.wants/gcr-ssh-agent.socket /usr/lib/systemd/user/gcr-ssh-agent.socket
## SSH server configuration hardening
sshd_conf="$(GetPackageOriginalFile openssh /etc/ssh/sshd_config)"
sed -i 's/^#LoginGraceTime.*$/LoginGraceTime 30s/g' "$sshd_conf"
sed -i 's/^#PermitRootLogin.*$/PermitRootLogin no/g' "$sshd_conf"
sed -i 's/^MaxAuthTries.*$/MaxAuthTries 3/g' "$sshd_conf"
sed -i 's/^MaxSessions.*$/MaxSessions 5/g' "$sshd_conf"
sed -i 's/^#PasswordAuthentication.*$/PasswordAuthentication no/g' "$sshd_conf"
sed -i 's/^KbdInteractiveAuthentication.*$/KbdInteractiveAuthentication no/g' "$sshd_conf"
sed -i 's/^AllowAgentForwarding.*$/AllowAgentForwarding no/g' "$sshd_conf"

View File

@ -0,0 +1,9 @@
# Nvidia Drivers
AddPackage lib32-nvidia-utils # NVIDIA drivers utilities 32 bit
AddPackage nvidia-dkms # NVIDIA drivers - module sources
AddPackage nvidia-settings # Tool for configuring the NVIDIA graphics driver
AddPackage nvidia-utils # NVIDIA drivers utilities
# Android Phone
AddPackage android-file-transfer # Android MTP client with minimalistic UI
AddPackage kdeconnect # Adds communication between KDE and your smartphone

View File

@ -0,0 +1,23 @@
if ! DetectVM; then
AddPackage libvirt # API for controlling virtualization engines (openvz,kvm,qemu,virtualbox,xen,etc)
AddPackage dmidecode # OPTIONAL DEPENDENCY (libvirt)
AddPackage dnsmasq # OPTIONAL DEPENDENCY (libvirt)
AddPackage --foreign ebtables # OPTIONAL DEPENDENCY (libvirt)
AddPackage gettext # OPTIONAL DEPENDENCY (libvirt)
AddPackage lvm2 # OPTIONAL DEPENDENCY (libvirt)
AddPackage openbsd-netcat # OPTIONAL DEPENDENCY (libvirt)
AddPackage qemu # OPTIONAL DEPENDENCY (libvirt)
AddPackage edk2-ovmf # Firmware for Virtual Machines (x86_64, i686)
AddPackage qemu-arch-extra # QEMU for foreign architectures
AddPackage swtpm # Libtpms-based TPM emulator with socket, character device, and Linux CUSE interface
AddPackage virt-manager # Desktop user interface for managing virtual machines
AddPackage virt-viewer # A lightweight interface for interacting with the graphical display of virtualized guest OS.
AddPackage --foreign virtio-win # virtio drivers for Windows (2000, XP, Vista, 7, 8, 10) guests and floppy images for Windows XP
CreateLink /etc/systemd/system/multi-user.target.wants/libvirtd.service /usr/lib/systemd/system/libvirtd.service
CreateLink /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket /usr/lib/systemd/system/libvirtd-ro.socket
CreateLink /etc/systemd/system/sockets.target.wants/libvirtd.socket /usr/lib/systemd/system/libvirtd.socket
CreateLink /etc/systemd/system/sockets.target.wants/virtlockd.socket /usr/lib/systemd/system/virtlockd.socket
CreateLink /etc/systemd/system/sockets.target.wants/virtlogd.socket /usr/lib/systemd/system/virtlogd.socket
fi

View File

@ -0,0 +1,51 @@
# Terminal Emulators
AddPackage alacritty # A cross-platform, GPU-accelerated terminal emulator
AddPackage screen # Full-screen window manager that multiplexes a physical terminal
AddPackage zsh # A very advanced and programmable command interpreter (shell) for UNIX
# System Monitor
AddPackage bashtop # Linux resource monitor
# Build Tools
AddPackage autoconf # A GNU tool for automatically configuring source code
AddPackage automake # A GNU tool for automatically creating Makefiles
AddPackage binutils # A set of programs to assemble and manipulate binary and object files
AddPackage pkgconf # Package compiler and linker metadata toolkit
# Desktop Tools
AddPackage imwheel # Mouse wheel configuration tool for XFree86/Xorg
# Gaming
AddPackage gamemode # A daemon/lib combo that allows games to request a set of optimisations be temporarily applied to the host OS
# Dev Tools
AddPackage git # the fast distributed version control system
AddPackage --foreign platformio # A cross-platform code builder and library manager
# Archives
AddPackage arj # Free and portable clone of the ARJ archiver
AddPackage cabextract # A program to extract Microsoft cabinet (.CAB) files
AddPackage cpio # A tool to copy files into or out of a cpio or tar archive
AddPackage lhasa # Free LZH/LHA archive tool
AddPackage lrzip # Multi-threaded compression with rzip/lzma, lzo, and zpaq
AddPackage pax # Portable Archive Interchange - the POSIX standard archive tool for cpio and tar formats
AddPackage p7zip # Command-line file archiver with high compression ratio
AddPackage rpmextract # Script to convert or extract RPM archives (contains rpm2cpio)
AddPackage sharutils # Makes so-called shell archives out of many files
AddPackage unace # An extraction tool for the proprietary ace archive format
AddPackage unrar # The RAR uncompression program
AddPackage unzip # For extracting and viewing files in .zip archives
AddPackage zip # Compressor/archiver for creating and modifying zipfiles
# $EDITOR
AddPackage neovim # Fork of Vim aiming to improve user experience, plugins, and GUIs
AddPackage --foreign emacs-native-comp-git-enhanced # GNU Emacs. Development master branch.
# File Management
AddPackage rsync # A fast and versatile file copying tool for remote and local files
AddPackage smbclient # Tools to access a server's filespace and printers via SMB
AddPackage trash-cli # Command line trashcan (recycle bin) interface
AddPackage vifm # A file manager with curses interface, which provides Vi[m]-like environment
# Dotfile Management
AddPackage stow # Manage installation of multiple softwares in the same directory tree

View File

@ -0,0 +1,12 @@
if ! DetectVM; then # No audio needed in VMs
AddPackage alsa-utils # Advanced Linux Sound Architecture - Utilities
AddPackage pipewire # Low-latency audio/video router and processor
AddPackage pipewire-alsa # Low-latency audio/video router and processor - ALSA configuration
AddPackage pipewire-pulse # Low-latency audio/video router and processor - PulseAudio replacement
AddPackage wireplumber # Session / policy manager implementation for PipeWire
CreateLink /etc/systemd/user/pipewire.service.wants/wireplumber.service /usr/lib/systemd/user/wireplumber.service
CreateLink /etc/systemd/user/pipewire-session-manager.service /usr/lib/systemd/user/wireplumber.service
CreateLink /etc/systemd/user/sockets.target.wants/pipewire.socket /usr/lib/systemd/user/pipewire.socket
CreateLink /etc/systemd/user/sockets.target.wants/pipewire-pulse.socket /usr/lib/systemd/user/pipewire-pulse.socket
fi

View File

@ -0,0 +1,17 @@
AddPackage xorg-server # Xorg X server
AddPackage xorg-server-xephyr # A nested X server that runs as an X application
AddPackage xorg-xev # Print contents of X events
AddPackage xorg-xinit # X.Org initialisation program
AddPackage xorg-xsetroot # Classic X utility to set your root window background to a given pattern or color
AddPackage xorg-xwayland # run X clients under wayland
AddPackage picom # X compositor that may fix tearing issues
AddPackage rofi # A window switcher, application launcher and dmenu replacement
AddPackage lxappearance # Feature-rich GTK+ theme switcher of the LXDE Desktop
AddPackage lxsession # Lightweight X11 session manager
AddPackage flameshot # Powerful yet simple to use screenshot software
AddPackage feh # Fast and light imlib2-based image viewer
AddPackage dunst # Customizable and lightweight notification-daemon
AddPackage xarchiver # GTK+ frontend to various command line archivers
AddPackage --foreign xmobar-git # Minimalistic Text Based Status Bar
AddPackage --foreign xmonad-contrib-git # Add-ons for xmonad
AddPackage --foreign xmonad-git # Lightweight X11 tiled window manager written in Haskell

View File

@ -0,0 +1 @@
AddPackage --foreign nerd-fonts-complete # Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts.

View File

@ -0,0 +1,4 @@
# Files
AddPackage syncthing # Open Source Continuous Replication / Cluster Synchronization Thing
CreateLink /etc/systemd/system/multi-user.target.wants/syncthing@tstarr.service /usr/lib/systemd/system/syncthing@.service
AddPackage udiskie # Removable disk automounter using udisks

View File

@ -0,0 +1,13 @@
AddPackage discord # All-in-one voice and text chat for gamers that's free and secure.
AddPackage firefox # Standalone web browser from mozilla.org
AddPackage gparted # A Partition Magic clone, frontend to GNU Parted
AddPackage keepassxc # Cross-platform community-driven port of Keepass password manager
AddPackage lutris # Open Gaming Platform
AddPackage mpv # a free, open source, and cross-platform media player
AddPackage nitrogen # Background browser and setter for X windows
AddPackage openscad # The programmers solid 3D CAD modeller
AddPackage pcmanfm # Extremely fast and lightweight file manager
AddPackage steam # Valve's digital software delivery system
AddPackage wine-staging # A compatibility layer for running Windows programs - Staging branch
AddPackage --foreign brave-bin # Web browser that blocks ads and trackers by default (binary release)
AddPackage --foreign superslicer-prerelease-bin # G-code generator for 3D printers (Creality, RepRap, Makerbot, Ultimaker etc.) (binary AppImage)

View File

@ -0,0 +1 @@
LANG=en_US.UTF-8

View File

@ -0,0 +1 @@
en_US.UTF-8 UTF-8

View File

@ -0,0 +1,158 @@
#!/hint/bash
#
# /etc/makepkg.conf
#
#########################################################################
# SOURCE ACQUISITION
#########################################################################
#
#-- The download utilities that makepkg should use to acquire sources
# Format: 'protocol::agent'
DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o')
# Other common tools:
# /usr/bin/snarf
# /usr/bin/lftpget -c
# /usr/bin/wget
#-- The package required by makepkg to download VCS sources
# Format: 'protocol::package'
VCSCLIENTS=('bzr::bzr'
'fossil::fossil'
'git::git'
'hg::mercurial'
'svn::subversion')
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="x86_64"
CHOST="x86_64-pc-linux-gnu"
#-- Compiler and Linker Flags
#CPPFLAGS=""
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection"
CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
#RUSTFLAGS="-C opt-level=2"
#-- Make Flags: change this for DistCC/SMP systems
MAKEFLAGS="-j8"
#-- Debugging flags
DEBUG_CFLAGS="-g -fvar-tracking-assignments"
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"
#DEBUG_RUSTFLAGS="-C debuginfo=2"
#########################################################################
# BUILD ENVIRONMENT
#########################################################################
#
# Makepkg defaults: BUILDENV=(!distcc !color !ccache check !sign)
# A negated environment option will do the opposite of the comments below.
#
#-- distcc: Use the Distributed C/C++/ObjC compiler
#-- color: Colorize output messages
#-- ccache: Use ccache to cache compilation
#-- check: Run the check() function if present in the PKGBUILD
#-- sign: Generate PGP signature file
#
BUILDENV=(!distcc color !ccache check !sign)
#
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
#-- specify a space-delimited list of hosts running in the DistCC cluster.
#DISTCC_HOSTS=""
#
#-- Specify a directory for package building.
#BUILDDIR=/tmp/makepkg
#########################################################################
# GLOBAL PACKAGE OPTIONS
# These are default values for the options=() settings
#########################################################################
#
# Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto)
# A negated option will do the opposite of the comments below.
#
#-- strip: Strip symbols from binaries/libraries
#-- docs: Save doc directories specified by DOC_DIRS
#-- libtool: Leave libtool (.la) files in packages
#-- staticlibs: Leave static library (.a) files in packages
#-- emptydirs: Leave empty directories in packages
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
#-- purge: Remove files specified by PURGE_TARGETS
#-- debug: Add debugging flags as specified in DEBUG_* variables
#-- lto: Add compile flags for building with link time optimization
#
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug !lto)
#-- File integrity checks to use. Valid: md5, sha1, sha224, sha256, sha384, sha512, b2
INTEGRITY_CHECK=(sha256)
#-- Options to be used when stripping binaries. See `man strip' for details.
STRIP_BINARIES="--strip-all"
#-- Options to be used when stripping shared libraries. See `man strip' for details.
STRIP_SHARED="--strip-unneeded"
#-- Options to be used when stripping static libraries. See `man strip' for details.
STRIP_STATIC="--strip-debug"
#-- Manual (man and info) directories to compress (if zipman is specified)
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
#-- Doc directories to remove (if !docs is specified)
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
#-- Files to be removed from all packages (if purge is specified)
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#-- Directory to store source code in for debug packages
DBGSRCDIR="/usr/src/debug"
#########################################################################
# PACKAGE OUTPUT
#########################################################################
#
# Default: put built package and cached source in build directory
#
#-- Destination: specify a fixed directory where all packages will be placed
#PKGDEST=/home/packages
#-- Source cache: specify a fixed directory where source files will be cached
#SRCDEST=/home/sources
#-- Source packages: specify a fixed directory where all src packages will be placed
#SRCPKGDEST=/home/srcpackages
#-- Log files: specify a fixed directory where all log files will be placed
#LOGDEST=/home/makepkglogs
#-- Packager: name/email of the person or organization building packages
#PACKAGER="John Doe <john@doe.com>"
#-- Specify a key to use for package signing
#GPGKEY=""
#########################################################################
# COMPRESSION DEFAULTS
#########################################################################
#
COMPRESSGZ=(gzip -c -f -n)
COMPRESSBZ2=(bzip2 -c -f)
COMPRESSXZ=(xz -c -z -)
COMPRESSZST=(zstd -c -z -q -)
COMPRESSLRZ=(lrzip -q)
COMPRESSLZO=(lzop -q)
COMPRESSZ=(compress -c -f)
COMPRESSLZ4=(lz4 -q)
COMPRESSLZ=(lzip -c -f)
#########################################################################
# EXTENSION DEFAULTS
#########################################################################
#
PKGEXT='.pkg.tar.zst'
SRCEXT='.src.tar.gz'
#########################################################################
# OTHER
#########################################################################
#
#-- Command used to run pacman as root, instead of trying sudo and su
#PACMAN_AUTH=()

View File

@ -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 =
#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

View File

@ -0,0 +1,2 @@
nameserver 8.8.8.8
nameserver 8.8.4.4

View File

@ -59,6 +59,7 @@
- [[#searching][Searching]] - [[#searching][Searching]]
- [[#end][End]] - [[#end][End]]
- [[#bindings][Bindings]] - [[#bindings][Bindings]]
- [[#roam][Roam]]
- [[#beancount][Beancount]] - [[#beancount][Beancount]]
- [[#avy][Avy]] - [[#avy][Avy]]
- [[#expand-region][Expand Region]] - [[#expand-region][Expand Region]]
@ -105,6 +106,7 @@
- [[#buffer][Buffer]] - [[#buffer][Buffer]]
- [[#dired][Dired]] - [[#dired][Dired]]
- [[#exwm][EXWM]] - [[#exwm][EXWM]]
- [[#roam][Roam]]
- [[#desktop][Desktop]] - [[#desktop][Desktop]]
- [[#exwm-and-system-informationals][EXWM and System Informationals]] - [[#exwm-and-system-informationals][EXWM and System Informationals]]
- [[#exwm-modeline][EXWM Modeline]] - [[#exwm-modeline][EXWM Modeline]]
@ -363,6 +365,7 @@ Add lexical binding tag to top of config file.
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no") #+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
;; -*- lexical-binding: t -*- ;; -*- lexical-binding: t -*-
(setq comp-deferred-compilation t)
#+end_src #+end_src
@ -398,8 +401,8 @@ Setup package management. Some lines can be uncommented for fresh installs.
(package-initialize) (package-initialize)
; Uncomment for fresh install ; Uncomment for fresh install
;(package-refresh-contents) (package-refresh-contents)
;(package-install 'use-package) (package-install 'use-package)
(require 'use-package) (require 'use-package)
(require 'use-package-ensure) (require 'use-package-ensure)
@ -489,11 +492,11 @@ Dial the GC threshold back down so that garbage collection happens more frequent
;; Make gc pauses faster by decreasing the threshold. ;; Make gc pauses faster by decreasing the threshold.
(setq gc-cons-threshold (* 2 1000 1000)) (setq gc-cons-threshold (* 2 1000 1000))
(use-package benchmark-init ;(use-package benchmark-init
:ensure t ; :ensure t
:config ; :config
;; To disable collection of benchmark data after init is done. ; ;; To disable collection of benchmark data after init is done.
(add-hook 'after-init-hook 'benchmark-init/deactivate)) ; (add-hook 'after-init-hook 'benchmark-init/deactivate))
#+end_src #+end_src
@ -860,6 +863,7 @@ based on the prefix keys you entered. Learned about this one from Spacemacs.
:defer 1) :defer 1)
#+end_src #+end_src
* Editing * Editing
** General ** General
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no") #+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
@ -913,7 +917,7 @@ Set up Org Mode with a baseline configuration. The following sections will add
(setq evil-auto-indent nil) (setq evil-auto-indent nil)
(diminish org-indent-mode)) (diminish org-indent-mode))
(use-package org (use-package org-plus-contrib
:defer t :defer t
:hook (org-mode . dw/org-mode-setup) :hook (org-mode . dw/org-mode-setup)
:config :config
@ -1218,6 +1222,41 @@ Use bullet characters instead of asterisks, plus set the header font sizes to so
#+end_src #+end_src
** Roam
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
(use-package org-roam
:straight (:host github :repo "org-roam/org-roam"
:files (:defaults "extensions/*"))
:init
(setq org-roam-v2-ack t) ;; Turn off v2 warning
(add-to-list 'display-buffer-alist
'("\\*org-roam\\*"
(display-buffer-in-direction)
(direction . right)
(window-width . 0.33)
(window-height . fit-window-to-buffer)))
(org-roam-db-autosync-mode)
:custom
(org-roam-directory (file-truename "/home/tstarr/documents/org/roam"))
(org-roam-dailies-directory "daily/")
(org-roam-completion-everywhere t)
:bind
(("C-c r b" . org-roam-buffer-toggle)
("C-c r t" . org-roam-dailies-goto-today)
("C-c r y" . org-roam-dailies-goto-yesterday)
("C-M-n" . org-roam-node-insert)
:map org-mode-map
("C-M-i" . completion-at-point)
("C-M-f" . org-roam-node-find)
("C-M-c" . dl/org-roam-create-id)
("C-<left>" . org-roam-dailies-goto-previous-note)
("C-`" . org-roam-buffer-toggle)
("C-<right>" . org-roam-dailies-goto-next-note)))
#+end_src
** Beancount ** Beancount
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no") #+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
@ -1325,7 +1364,25 @@ Use burly to bookmark layouts and Emacs state.
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no") #+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
(use-package burly) ;(use-package burly)
(use-package perspective
:ensure t ; use `:straight t` if using straight.el!
:bind (("C-x k" . persp-kill-buffer*))
:init
(persp-mode))
(use-package bufler
:straight (bufler :fetcher github :repo "alphapapa/bufler.el"
:files (:defaults (:exclude "helm-bufler.el"))))
#+end_src
** Frames only mode
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
(use-package frames-only-mode)
#+end_src #+end_src
@ -1508,6 +1565,117 @@ https://magit.vc/manual/magit/
#+end_src #+end_src
** Treemacs
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
(use-package treemacs
:ensure t
:defer t
:init
(with-eval-after-load 'winum
(define-key winum-keymap (kbd "M-0") #'treemacs-select-window))
:config
(progn
(setq treemacs-collapse-dirs (if treemacs-python-executable 3 0)
treemacs-deferred-git-apply-delay 0.5
treemacs-directory-name-transformer #'identity
treemacs-display-in-side-window t
treemacs-eldoc-display 'simple
treemacs-file-event-delay 5000
treemacs-file-extension-regex treemacs-last-period-regex-value
treemacs-file-follow-delay 0.2
treemacs-file-name-transformer #'identity
treemacs-follow-after-init t
treemacs-expand-after-init t
treemacs-find-workspace-method 'find-for-file-or-pick-first
treemacs-git-command-pipe ""
treemacs-goto-tag-strategy 'refetch-index
treemacs-indentation 2
treemacs-indentation-string " "
treemacs-is-never-other-window nil
treemacs-max-git-entries 5000
treemacs-missing-project-action 'ask
treemacs-move-forward-on-expand nil
treemacs-no-png-images nil
treemacs-no-delete-other-windows t
treemacs-project-follow-cleanup nil
treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory)
treemacs-position 'left
treemacs-read-string-input 'from-child-frame
treemacs-recenter-distance 0.1
treemacs-recenter-after-file-follow nil
treemacs-recenter-after-tag-follow nil
treemacs-recenter-after-project-jump 'always
treemacs-recenter-after-project-expand 'on-distance
treemacs-litter-directories '("/node_modules" "/.venv" "/.cask")
treemacs-show-cursor nil
treemacs-show-hidden-files t
treemacs-silent-filewatch nil
treemacs-silent-refresh nil
treemacs-sorting 'alphabetic-asc
treemacs-select-when-already-in-treemacs 'move-back
treemacs-space-between-root-nodes t
treemacs-tag-follow-cleanup t
treemacs-tag-follow-delay 1.5
treemacs-text-scale nil
treemacs-user-mode-line-format nil
treemacs-user-header-line-format nil
treemacs-wide-toggle-width 70
treemacs-width 35
treemacs-width-increment 1
treemacs-width-is-initially-locked t
treemacs-workspace-switch-cleanup nil)
;; The default width and height of the icons is 22 pixels. If you are
;; using a Hi-DPI display, uncomment this to double the icon size.
;;(treemacs-resize-icons 44)
(treemacs-follow-mode t)
(treemacs-filewatch-mode t)
(treemacs-fringe-indicator-mode 'always)
(pcase (cons (not (null (executable-find "git")))
(not (null treemacs-python-executable)))
(`(t . t)
(treemacs-git-mode 'deferred))
(`(t . _)
(treemacs-git-mode 'simple)))
(treemacs-hide-gitignored-files-mode nil))
:bind
(:map global-map
("M-0" . treemacs-select-window)
("C-x t 1" . treemacs-delete-other-windows)
("C-x t t" . treemacs)
("C-x t d" . treemacs-select-directory)
("C-x t B" . treemacs-bookmark)
("C-x t C-t" . treemacs-find-file)
("C-x t M-t" . treemacs-find-tag)))
(use-package treemacs-evil
:after (treemacs evil)
:ensure t)
(use-package treemacs-projectile
:after (treemacs projectile)
:ensure t)
(use-package treemacs-icons-dired
:hook (dired-mode . treemacs-icons-dired-enable-once)
:ensure t)
(use-package treemacs-magit
:after (treemacs magit)
:ensure t)
(use-package treemacs-perspective ;;treemacs-perspective if you use perspective.el vs. persp-mode
:after (treemacs perspective) ;;or perspective vs. persp-mode
:ensure t
:config (treemacs-set-scope-type 'Perspectives))
#+end_src
** Languages ** Languages
*** Haskell *** Haskell
@ -2884,6 +3052,20 @@ Define SPC lead bindings for EXWM.
#+end_src #+end_src
** Roam
Define SPC lead bindings for Roam.
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
(dw/leader-key-def
"r" '(:ignore t :which-key "roam")
"rt" '(org-roam-buffer-toggle :which-key "toggle roam buffer")
"rf" '(org-roam-node-find :which-key "find node")
"ri" '(org-roam-node-insert :which-key "insert node"))
#+end_src
* Desktop * Desktop
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no") #+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "~/.emacs.d/init.el" "no")
@ -2894,7 +3076,7 @@ Define SPC lead bindings for EXWM.
(defun ts/update-screen-layout () (defun ts/update-screen-layout ()
(interactive) (interactive)
(let ((layout-script "~/.config/scratch/scripts/update-screens")) (let ((layout-script "~/.config/scratch/scripts/update-screens apt"))
(message "Running screen layout script: %s" layout-script) (message "Running screen layout script: %s" layout-script)
(start-process-shell-command "xrandr" nil layout-script))) (start-process-shell-command "xrandr" nil layout-script)))
@ -2949,7 +3131,7 @@ Define SPC lead bindings for EXWM.
(exwm-randr-enable) (exwm-randr-enable)
;; Set the default number of workspaces ;; Set the default number of workspaces
(setq exwm-workspace-number 2) (setq exwm-workspace-number 6)
(setq exwm-workspace-index-map (setq exwm-workspace-index-map
(lambda (index) (number-to-string (1+ index)))) (lambda (index) (number-to-string (1+ index))))
(setq exwm-layout-show-all-buffers t) (setq exwm-layout-show-all-buffers t)
@ -2990,6 +3172,22 @@ Define SPC lead bindings for EXWM.
;; Ctrl+Q will enable the next key to be sent directly ;; Ctrl+Q will enable the next key to be sent directly
(define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key)
(defun ts/move-float-up ()
(interactive)
(exwm-floating-move 0 1))
(defun ts/move-float-down ()
(interactive)
(exwm-floating-move 0 -1))
(defun ts/move-float-left ()
(interactive)
(exwm-floating-move -1 0))
(defun ts/move-float-right ()
(interactive)
(exwm-floating-move 1 0))
;; Set up global key bindings. These always work, no matter the input state! ;; Set up global key bindings. These always work, no matter the input state!
;; Keep in mind that changing this list after EXWM initializes has no effect. ;; Keep in mind that changing this list after EXWM initializes has no effect.
(setq exwm-input-global-keys (setq exwm-input-global-keys
@ -3008,6 +3206,11 @@ Define SPC lead bindings for EXWM.
([?\s-K] . enlarge-window) ([?\s-K] . enlarge-window)
([?\s-J] . shrink-window) ([?\s-J] . shrink-window)
([?\s-u] . ts/move-float-left)
([?\s-i] . ts/move-float-up)
([?\s-o] . ts/move-float-down)
([?\s-p] . ts/move-float-right)
;; Launch applications via shell command ;; Launch applications via shell command
([?\s-w] . counsel-linux-app) ([?\s-w] . counsel-linux-app)
@ -3024,7 +3227,7 @@ Define SPC lead bindings for EXWM.
(exwm-workspace-switch-create , (1- i))))) (exwm-workspace-switch-create , (1- i)))))
(number-sequence 0 9)))) (number-sequence 0 9))))
(setq exwm-randr-workspace-monitor-plist '(1 "HDMI-0")) (setq exwm-randr-workspace-monitor-plist '(3 "HDMI-0" 4 "HDMI-0" 5 "HDMI-0"))
(use-package exwm-mff (use-package exwm-mff
:straight (:host github :repo "starr-dusT/exwm-mff") :straight (:host github :repo "starr-dusT/exwm-mff")
@ -3041,6 +3244,7 @@ Define SPC lead bindings for EXWM.
(tab-bar-mode) (tab-bar-mode)
;(add-hook 'after-make-frame-functions (lambda (frame) (set-frame-parameter frame 'tab-bar-lines 0))) ;(add-hook 'after-make-frame-functions (lambda (frame) (set-frame-parameter frame 'tab-bar-lines 0)))
#+end_src #+end_src
** EXWM and System Informationals ** EXWM and System Informationals

View File

@ -1,27 +1,21 @@
#!/bin/sh #!/bin/sh
case $1 in
# Get current IP address "home")
addr=$(ip -4 addr show $1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
# The the relevant number (X) 192.168.X.YYY
num=($(echo "$addr" | tr '.' '\n'))
# Based on number set xrandr
case ${num[2]} in
2)
# Primary monitor on left # Primary monitor on left
xrandr --output DP-4 --primary \ xrandr --output DP-4 --primary \
--mode 2560x1440 --rate 144 \ --mode 2560x1440 --rate 144 \
--pos 0x0 --rotate normal \ --pos 0x0 --rotate normal \
--output HDMI-0 \ --output HDMI-0 \
--mode 2560x1440 --rate 144 \ --mode 2560x1440 --rate 144 \
--pos 2660x0 --rotate normal --pos 2560x0 --rotate normal
;; ;;
1) "apt")
# Primary monitor on right # Primary monitor on right
xrandr --output HDMI-0 \ xrandr --output HDMI-0 \
--mode 2560x1440 --rate 144 \ --mode 2560x1440 --rate 144 \
--pos 0x0 --rotate normal \ --pos 0x0 --rotate normal \
--output DP-4 --primary \ --output DP-4 --primary \
--mode 2560x1440 --rate 144 \ --mode 2560x1440 --rate 144 \
--pos 2660x0 --rotate normal --pos 2560x0 --rotate normal
;; ;;
esac esac

View File

@ -0,0 +1,13 @@
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
[Service]
Type=simple
ExecStart=/usr/bin/emacs --fg-daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=on-failure
[Install]
WantedBy=default.target

View File

@ -1,7 +1,7 @@
Config { font = "xft:Mononoki Nerd Font:pixelsize=12:antialias=true:hinting=true" Config { font = "xft:Mononoki Nerd Font:pixelsize=12:antialias=true:hinting=true"
, bgColor = "#282828" , bgColor = "#282828"
, fgColor = "#ebdbb2" , fgColor = "#ebdbb2"
, position = Static {xpos = 2560, ypos = 0, width = 2560, height = 20} , position = Static {xpos = 0, ypos = 0, width = 2560, height = 20}
, iconRoot = "X" , iconRoot = "X"
, allDesktops = True , allDesktops = True
, commands = [ Run Cpu ["-t", " <fc=#fb4934><total></fc>%","-H", "2"] 10 , commands = [ Run Cpu ["-t", " <fc=#fb4934><total></fc>%","-H", "2"] 10

55
.programs/pacman.txt Normal file
View File

@ -0,0 +1,55 @@
base-devel
alacritty
amd-ucode
balena-etcher
bashtop
brave-bin
dhcpcd
discord
dunst
feh
flameshot
gamemode
git
gparted
imwheel
keepassxc
lutris
lxappearance
lxsession
mpv
neovim
nerd-fonts-complete
nitrogen
lib32-nvidia-utils
nvidia-dkms
nvidia-settings
nvidia-utils
openscad
openssh
pcmanfm
picom
platformio
reflector
rofi
rsync
smbclient
steam
stow
superslicer-prerelease-bin
syncthing
trash-cli
udiskie
vifm
wine-staging
wireguard-tools
xarchiver
xorg-server
xorg-server-xephyr
xorg-xev
xorg-xinit
xorg-xsetroot
xorg-xwayland
yay
zsh
herbsluftwm

View File

@ -1,2 +1,4 @@
\.git \.git
readme.md readme.md
\.config/systemd
install.sh

View File

@ -1,6 +1,6 @@
#exec dbus-launch xmonad exec dbus-launch xmonad
#exec qtile start #exec qtile start
#picom & #picom &
exec dbus-launch --exit-with-session emacs -mm --eval "(exwm-enable)" #exec dbus-launch --exit-with-session emacs -mm --eval "(exwm-enable)"
#--debug-init #--debug-init
#exec stumpwm start #exec stumpwm start

View File

@ -145,7 +145,7 @@ myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
t = 0.15 -h t = 0.15 -h
l = 0.55 -w l = 0.55 -w
spawnEmacs = "emacs --eval '(set-frame-name \"scratch-emacs\")'" spawnEmacs = "emacsclient -c -n -e --eval '(set-frame-name \"scratch-emacs\")'"
findEmacs = title =? "scratch-emacs" findEmacs = title =? "scratch-emacs"
manageEmacs = customFloating $ W.RationalRect l t w h manageEmacs = customFloating $ W.RationalRect l t w h
where where
@ -236,7 +236,7 @@ myKeys home =
-- Spawn flameshot -- Spawn flameshot
, ("M-o c" , spawn "flameshot gui") , ("M-o c" , spawn "flameshot gui")
-- Spawn emacs -- Spawn emacs
, ("M-o e" , spawn "emacs") , ("M-o e" , spawn "emacsclient -c -n -e '(switch-to-buffer nil)'")
-------------------------------------------------- --------------------------------------------------
-- System Utils -- System Utils

2
install.sh Normal file
View File

@ -0,0 +1,2 @@
#!/bin/bash