Compare commits

..

4 Commits

Author SHA1 Message Date
david
625d1053aa Add partial config for music streaming player (ncspot) 2025-08-15 17:05:18 -05:00
david
f7a98ed51c Fix some asdf issues 2025-08-15 17:05:18 -05:00
david
f727f4ac0f small settings/keybindings updates for tmux, vim, zsh 2025-08-15 17:05:12 -05:00
david
3bdad1352c Remove job-rs things, make zsh-general-dev file 2025-08-04 09:08:46 +02:00
211 changed files with 805 additions and 3675 deletions

View File

@@ -1,45 +1,53 @@
# dotfiles, plus installation and related scripts
# repo containing configs and scripts to set up a box
This repo contains a collection of scripts and files related to:
- configuration (i.e. this serves as my dotfiles repo)
- installation of programs
- scripts/executables for my local systems
- anything else related to getting my boxes (computers) set up as desired
This repo grew into more than I originally intended, but it turned into a fun little
excursion into the realm of shell scripting (and an intro to Lua for the neovim
portions).
## prereqs
- programs installed: git, sed, zsh
### script run
- [prerequisites below are fulfilled]
- git clone this repo
- from the repo's root directory, run `./box_setup`
### specific prereqs, linux distros
### prerequisites
- package manager is configured (i.e. source repos, mirrors, etc. configured)
- zsh is installed (scripts are written for zsh)
- sudo access is configured for current user (2025-01-27, not needed on macos)
- export the env var `BOX_SETUP_OS` to indicate the operating system
- options defined in `set_script_env_vars` file
- system-specific items below are fulfilled
- sudo access is configured for current user
### specific prereqs, macos
##### prereqs, os specific, linux-placeholder
- (currently none)
##### prereqs, os specific, macos
- install the package manager, [homebrew](https://brew.sh/)
- for aerospace window manager, have only 1 workspace/desktop
- manual settings, refer to [docs/macos-system-settings](docs/macos-system-settings.md)
## script run
- to do the full setup, from the repo's root dir, run: `./box_setup.sh`
- to copy dotfiles only, from the repo's root dir, run: `./copy_dotfiles.sh`
## after script run
- complete manual actions specified in [docs/post-run](docs/post-run.md)
## todo items
see [docs/todo.md](docs/todo.md)
## attribution
see [docs/attribution.md](docs/attribution.md)
- for yabai window manager (so as to not mess with SIP settings)
- create 9 spaces/desktops
- system settings > keyboard shortcuts: set keys to switch between spaces/desktops
- system settings > desktop/dock/mission-control:
- `click wallpaper to reveal desktop`: set to "only in stage manager"
- all `drag windows to corner/edge/place` types of options: disabled
- `rearrange spaces based on recent use`: disabled
- `when switch to app... switch to space with open windows of app`: disabled
- `displays have separate spaces`: enabled
- `show files on desktop`: enabled
### todo items
- add logic to the main run script to handle cloning of this repo
- add logic to the main run script to set `BOX_SETUP_OS` var, either input param or detect
- config for nvim
- config for mpd, mpc, ncmpcpp
- config for ghostty
- config for mpv
- also, on macos, get it to open within terminal or just don't install it
- config for gimp, `src_files/.config/GIMP` (dir)
- set things in gtkrc only? still need to nest that within a sub dir?
- or maybe just configure in gimp's gui, copy the whole resulting dir into
`src_files/.config/GIMP` (edit out and delete what i don't need) and call it a day
- for whatever is causing it, editor/terminal/other, git rid of ligatures/name?
- for example, `>=` is two chars (`>` then `=`), not one char/symbol
- decide on window manager for linux, then do config
- look into xquartz for macos (x/xorg emulation or something?)
- build in flags/logic for skipping certain installs/builds (and maybe configs?) on a
given system (i.e. don't install on a company box, on a server, etc.)
- decide on and implement approach for languages and versioning
- docker? or alternatives like podman? any license concerns?
- asdf, or language-specific version managers?
- hybrid of the above?

9
box_setup Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/zsh
source set_script_env_vars
source ./src_files/.config/zsh/.zshenv
./make_config_dirs
./copy_configs
source $ZDOTDIR/.zshenv ; source $ZDOTDIR/.zshrc
./make_org_structure_dirs
./install_programs # TODO: moved this to after config copy, but does this work?

View File

@@ -1,69 +0,0 @@
#!/bin/zsh
[[ $1 = "--help" ]] && {
echo "\nusage: ./box_setup.sh [system-type]"
echo "\nsystem-type options: music_studio, programming"
echo "\nexamples:\n ./box_setup.sh\n ./box_setup.sh music_studio\n"
exit 0
}
echo "---- settings vars for system type -----"
# determine OS and distro
case "$OSTYPE" in
(*linux*)
setup_os="linux"
[[ -f /etc/os-release ]] && . /etc/os-release
setup_distro=$(echo "${NAME%% *}" | tr '[:upper:]' '[:lower:]')
;;
(*darwin*)
setup_os="macos"
setup_distro="macos" # just repeat macos, but maybe there is some better value
;;
esac
# ensure OS and distro are set before proceeding
[[ -z "$setup_os" ]] && echo "setup OS not detected" && exit 1
[[ -z "$setup_distro" ]] && echo "setup distro not detected" && exit 1
# set package manager commands for installs
case "$setup_os" in
(linux)
case $setup_distro in
(arch | artix)
install_cmd="sudo pacman -S --noconfirm"
update_pkg_manager_and_defs_cmd='' # don't; update system instead
update_pkgs_cmd='sudo pacman -Syu'
;;
(debian)
install_cmd="sudo apt install"
update_pkg_manager_and_defs_cmd='sudo apt update'
update_pkgs_cmd='sudo apt upgrade'
;;
esac
;;
(macos)
install_cmd="brew install"
update_pkg_manager_and_defs_cmd='brew update'
update_pkgs_cmd='brew upgrade'
;;
esac
# export vars for scripts
export BOX_SETUP_OS="$setup_os"
export BOX_SETUP_DISTRO="$setup_distro"
export BOX_SETUP_INSTALL_COMMAND="$install_cmd"
export BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD="$update_pkg_manager_and_defs_cmd"
export BOX_SETUP_UPDATE_PKGS_CMD="$update_pkgs_cmd"
# make dirs and copy configs/dotfiles
. ./src_files/shell/profile
./make_dirs.sh
./copy_dotfiles.sh "--skip-theme-config"
# install programs
. $ZDOTDIR/.zshrc
./install_programs.sh $1
# configure themes
./theme_config.sh

52
copy_configs Executable file
View File

@@ -0,0 +1,52 @@
#!/bin/zsh
execute() { log "execute $@" && "$@" }
log() { echo "$@" }
copy_file() {
local from=$1
local to=$2
local filename=$(basename $from)
[[ -e $to/$filename ]] && execute rm $to/$filename
execute cp -p $from $to/$filename
}
copy_dir() {
local from=$1
local to=$2
pushd $from > /dev/null
local directories=(`find . -mindepth 1 -maxdepth 1 -type d`)
for dir in $directories; do
[[ -d $to/$dir ]] && execute rm -rf $to/$dir
execute cp -rp $dir $to/$dir
done
local files=(`find . -mindepth 1 -maxdepth 1 -type f`)
for file in $files; do
copy_file $file $to
done
popd > /dev/null
}
link_dir() {
local src_dir=$1
local link_dir=$2
log "deleting existing link/dir: $link_dir"
[[ -h "$link_dir" ]] && rm $link_dir
[[ -d "$link_dir" ]] && rm -rf $link_dir
log "sym-linking $link_dir -> $src_dir"
ln -s $src_dir $link_dir
}
log "---------------- dotfiles ----------------"
copy_file src_files/.config/zsh/.zshenv $HOME # duplicate, copy anyway, ensures $ZDOTDIR
copy_dir src_files/.config $XDG_CONFIG_HOME
copy_dir src_files/.local/bin $DIR_BIN
copy_dir src_files/.local/scripts $DIR_SCRIPTS
# on macos, gimp defaults to app-support, so sym-link to actual config
[[ "$BOX_SETUP_OS" = "macos" ]] &&
link_dir "$XDG_CONFIG_HOME/GIMP" "$HOME/Library/Application Support/GIMP"
link_dir "$XDG_CONFIG_HOME/vim" "$HOME/.vim" # TODO: use vim wrapper or similar instead

View File

@@ -1,84 +0,0 @@
#!/bin/sh
echo_and_execute() {
echo "executing: $@" && "$@"
}
copy_file() {
from=$1
to=$2
filename=$(basename "$from")
[ "$3" = "--sudo" ] &&
echo_and_execute sudo cp -RPp "$from" "$to/$filename" ||
{
[ -e "$to/$filename" ] && rm "$to/$filename"
echo_and_execute cp -RPp "$from" "$to/$filename"
}
}
copy_dir() {
from=$1
to=$2
prev_dir=$(pwd)
cd "$from" || return 1
find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
[ -d "$to/$dir" ] && rm -rf "$to/$dir"
echo_and_execute cp -RPp "$dir" "$to/$dir"
done
find . -mindepth 1 -maxdepth 1 -type f | while read -r file; do
copy_file "$file" "$to"
done
cd "$prev_dir" || return 1
}
sym_link() {
! [ -e "$1" ] && echo "skipping link, target does not exist: $1" && return
[ -h "$2" ] && rm "$2"
test -f "$2" -o -d "$2" && rm -rf "$2"
echo_and_execute ln -s "$1" "$2"
}
echo "---- copying dotfiles ------------------"
. ./src_files/shell/profile
# copy over env/profile files used by shell(s)
copy_file src_files/shell/.profile $HOME
copy_file src_files/shell/profile $XDG_CONFIG_HOME
copy_file src_files/shell/rc $XDG_CONFIG_HOME
copy_file src_files/.config/zsh/.zshenv $HOME
# TODO: move this into xdg type dir if possible
copy_file src_files/.config/X11/xinit/.xinitrc $HOME
# copy over configs, executables, and scripts
copy_dir src_files/.config $XDG_CONFIG_HOME
copy_dir src_files/.local/bin $DIR_BIN
copy_dir src_files/.local/scripts $DIR_SCRIPTS
# macOS overrides as needed
case "$OSTYPE" in *darwin*) copy_dir src_files/bin_overrides_macos $DIR_BIN;; esac
# obsidian uses a per-vault config model, so copy to all target vaults/dirs
IFS=","; for obs_dir in $OBSIDIAN_WORKSPACES_TO_CONFIGURE; do
! [ -d "$obs_dir/.obsidian" ] && mkdir "$obs_dir/.obsidian"
copy_dir "$XDG_CONFIG_HOME/obsidian" "$obs_dir/.obsidian"
done
# TODO: get reaper config set up
# case "$OSTYPE" in
# (*darwin*)
# sym_link "$XDG_CONFIG_HOME/REAPER" "$HOME/Library/Application Support/REAPER"
# ;;
# esac
# copy settings/configs to /etc locations
case "$OSTYPE" in
(*darwin*)
;;
(*)
copy_file src_files/etc/47-elogind.conf /etc/elogind/logind.conf.d --sudo
;;
esac
# set up themes and theme-switcher
! [ "$1" = "--skip-theme-config" ] && ./theme_config.sh

View File

@@ -1,38 +0,0 @@
# Attribution
## Original pattern/approach and some core config logic
The original idea and approach for this project, including the original versions of my
program-installation script, the copy-configs-and-files script, the "tmux sessionizer"
(tmux session init logic), my initial neovim and tmux configs, and (though not code)
my general workflow/workspace strategy, were derived from several of ThePrimeagen's
(aka Michael Paulson's) projects and videos, including a FrontEnd Masters course which
he taught (each are listed below). I could not locate any required licenses or copyrights
for the code contained within these sources, but I wanted to give attribution nonetheless.
- [dev/setup/config repo](https://github.com/ThePrimeagen/dev)
- [neovim config](https://github.com/ThePrimeagen/init.lua)
- [tmux sessionizer](https://github.com/ThePrimeagen/tmux-sessionizer)
- [YouTube video - neovim config video](https://www.youtube.com/watch?v=w7i4amO_zaE)
- [FrontEnd Masters course - dev productivity v2](https://frontendmasters.com/courses/developer-productivity-v2/)
## Theme-swtiching/setting logic and some themes
Much of the "theme-switching" or "theme-setting" logic and scripts are derived from
[Omarchy](https://github.com/basecamp/omarchy), and some theme configuration files
in this repository under
[src_files/imports/themes-omarchy-core](../src_files/imports/themes-omarchy-core)
are copied from [Omarchy](https://github.com/basecamp/omarchy), which is licensed
under the [MIT License](https://github.com/basecamp/omarchy/blob/master/LICENSE).
Copyright (c) David Heinemeier Hansson
## Additional/extra themes (Omarchy extra themes)
Additional theme configuration files in this repository under
[src_files/imports/themes-omarchy-extra](../src_files/imports/themes-omarchy-extra)
are copied or derived from projects of additional conrtibutors to the Omarchy community.
For information about authors/licenses/copyrights for each, refer to any LICENSE and/or
ATTRIBUTION.md files in each theme's respective directory under
[src_files/imports/themes-omarchy-extra](../src_files/imports/themes-omarchy-extra).

View File

@@ -1,242 +0,0 @@
# Artix Linux - Install and System Config
**Attribution:**
Most or much of this was generated by or derived from Grok, or else from Artix docs, Arch docs/wiki, or else the docs for the particular programs or packages used. I'm not claiming any of this is mine, just putting it here in one file for future convenience/reference.
I used this approach in December of 2025 to install Artix Linux on a Framework 13in laptop from 2023 q4.
- OS and distro: Artix Linux
- init system: dinit
- partitioning, GUID Partition Table:
- unencrypted boot partition (size: 512M), UEFI
- LUKS-encrypted LVM:
- swap partition (size: amount of memory + 4G)
- root/default partition (size: remaining space)
For reference, doc page from Artix for installation:
https://wiki.artixlinux.org/Main/Installation
---
## install steps
- [ ] if not already done, download artix ISO (dinit version) and dd it onto a usb drive
- [ ] boot the live usb and select the install option (whatever it may look like)
- [ ] connect to the internet
```bash
connmanctl
//// within connmanctl
enable wifi
scan wifi
agent on
services
connect <wifi_XXXXXXXXXXXXXXXX_managed_psk>
quit
```
- [ ] verify connection using `ping`
- [ ] update live system keys/mirrors
```bash
pacman -Sy artix-keyring
```
- [ ] run lsblk and identify the storage drive on which to install
- note: when i ran this in 2025 dec on my framework laptop, it was `/dev/nvme0n1`
- [ ] partition the drive
```bash
cfdisk <target storage drive>
# use GPT (guid partition table)
# new partition, size 512M, type 'EFI System'
# new partition, size (remaining), type 'Linux LVM'
# write changes
# quit cfdisk
```
- [ ] set up LVM volumes
```bash
cryptsetup luksFormat --type luks2 /dev/<LVM partition>
cryptsetup open /dev/<LVM partition> artixlvm
pvcreate /dev/mapper/artixlvm
vgcreate artixvg /dev/mapper/artixlvm
lvcreate -L <size of memory + 4G, e.g. 36G> artixvg -n swap
lvcreate -l 100%FREE artixvg -n root
```
- [ ] set filesystems for partitions/volumes
```bash
mkfs.vfat -F32 /dev/<boot partition>
mkfs.ext4 /dev/artixvg/root
mkswap /dev/artixvg/swap
```
- [ ] mount the partitions/volumes
```bash
mount /dev/artixvg/root /mnt
mkdir /mnt/boot
mount /dev/<boot partition> /mnt/boot
swapon /dev/artixvg/swap
```
- [ ] install base system and needed packages
```bash
basestrap /mnt base base-devel linux \
linux-firmware \
dinit elogind-dinit \
lvm2 cryptsetup grub efibootmgr mkinitcpio \
connman connman-dinit wpa_supplicant \
git less neovim zsh
```
- [ ] generate fstab
```bash
fstabgen -U /mnt >> /mnt/etc/fstab
# verify (add noatime to ext4 line if desired)
vi /mnt/etc/fstab
```
- [ ] chroot into installed system
```bash
artix-chroot /mnt
```
- [ ] set timezone, hardware clock, locale
```bash
ln -sf /usr/share/zoneinfo/<path to target zone> /etc/localtime
hwclock --systohc
nvim /etc/locale.gen
# uncomment en_US.UTF-8 UTF-8; add others if desired
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
```
- [ ] set hostname and /etc/hosts
```bash
echo "<computer name>" > /etc/hostname
nvim /etc/hosts
# ensure /etc/hosts includes the following:
127.0.0.1 localhost
::1 localhost
127.0.1.1 <computer name>.localdomain <computer name>"
```
- [ ] mkinitcpio with hooks
```bash
nvim /etc/mkinitcpio.conf
# go to HOOKS and set it thus:
HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 resume filesystems fsck)
mkinitcpio -P
```
- [ ] grub config and install
```bash
blkid
# note the UUID of the LVM/LUKS partition
nvim /etc/default/grub
# ensure the following is set:
GRUB_CMDLINE_LINUX="cryptdevice=UUID=<UUID from blkid above>:artixlvm root=/dev/mapper/artixvg-root resume=/dev/mapper/artixvg-swap quiet rw"
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Artix
grub-mkconfig -o /boot/grub/grub.cfg
```
- [ ] set up connman for installed system
```bash
mkdir -p /etc/dinit.d/boot.d
ln -s ../connmand /etc/dinit.d/boot.d/connmand
```
- [ ] set root password, set up user
```bash
passwd
useradd -m -G wheel,audio,video,optical,storage <username>
passwd <username>
pacman -S sudo
EDITOR=nvim visudo
# uncomment the line in /etc/sudoers which looks something like the below:
echo "%wheel ALL=(ALL) ALL"
```
- [ ] close stuff out and reboot
```bash
exit
umount -R /mnt
swapoff -a
cryptsetup close cryptlvm # may not work, just ignore and reboot
reboot
```
---
## system config (post install)
_NOTE: don't put anything here which should be in my dotfiles-and-setup scripts instead_
- [ ] set up chrony (for syncing system time with ntp servers)
- _NOTE: edit defaults in `/etc/chrony/chrony.conf` if desired_
```bash
sudo pacman -S chrony chrony-dinit
# Fallback if dinitctl enable fails (symlink method)
sudo mkdir -p /etc/dinit.d/boot.d
sudo ln -s ../chronyd /etc/dinit.d/boot.d/chronyd
# alt: sudo dinitctl enable chronyd
/etc/dinit.d/chronyd start
# alt: sudo dinitctl start chronyd
```
---
## troubleshooting
if i need to try something again and reopen the LVM, the below should work:
```bash
cryptsetup open /dev/<target device> artixlvm
# enter existing password
vgchange -ay artixvg
# or, if only one VG exists:
vgchange -ay
```
if date/time get messed up (such as due to battery running out), fix with:
```bash
# can manually adjust to local time; grok said "date is UTC if hardware is set that way"
sudo date -s "2025-12-17 12:47:00"
# or, if chrony, ntp, or similar is set up, can trigger sync
chronyd -q
# can check after with `date` or `chronyc tracking`
sudo hwclock -w --utc
```

View File

@@ -1,18 +0,0 @@
# xlibre/x11 - adding xrandr modes
## 2026-01-16, artix linux, framework 13in laptop
### to add 1920x1280 resolution option:
```sh
dispmanage_modeline=$(cvt 1920 1280 60 | sed -n '2p' | sed -E "s/^Modeline //g")
dispmanage_mode_id=$(printf "%s" "$dispmanage_modeline" | sed -E "s/^([^ ]+)\s.*$/\1/g")
printf "%s" "$modeline" | xargs xrandr --newmode
printf "%s" "$mode_id" | xargs xrandr --addmode eDP
# NOTE: the lines above have been added to .xinitrc, just leaving here for reference
# then, add the $mode_id value to my display-manage script as the target mode:
DISPMANAGE_LAPTOP_MODE='"1920x1280_60.00"'
```

View File

@@ -1,36 +0,0 @@
# macOS system settings
settings for manual configuration in macOS system settings app
**NOTE:** some of these could be scripted, but for now i'm okay with this manual list
- desktop & dock
- `click wallpaper to reveal desktop`: set to "only in stage manager"
- all `drag windows to corner/edge/place` types of options: disabled
- `rearrange spaces based on recent use`: disabled
- `when switch to app... switch to space with open windows of app`: disabled
- `displays have separate spaces`: disabled
- `show files on desktop`: enabled
- `group windows by application`: enabled
- smallest possible dock size
- dock on right side of screen
- automatically hide and show the dock: enabled
- accessibility
- display
- reduce motion: enabled
- reduce transparency: enabled
- keyboard
- keyboard shortcuts
- screenshots
- save picture of selected area -> `cmd+shft+s`
- copy (clipboard) picture of selected area -> `ctrl+cmd+shft+s`
- modifier keys
- caps lock key -> `escape`
- command -> `control`
- alt/option -> `command`
- control -> `alt/option`
- spotlight
- show spotlight search -> `alt+r`
and in general, just go through most pages/options and set them as desired

View File

@@ -1,21 +0,0 @@
# Manual steps needed after dotfile copy and/or installs
## all systems
- shell
- check user's shell using `echo $SHELL` or otherwise
- if not the desired shell:
- `cat /etc/shells` (or `chsh -l` if supported) to see options
- if target shell isn't listed, add it to `/etc/shells`
- then change the shell with `chsh -s <path to target shell>`
## macOS
- aerospace
- grant aerospace permission in accessibility settings
- likely need system reboot before aerospace works
- skhd
- run `skhd --start-service`
- grant skhd permission in accessibility settings
- run `skhd --restart-service`

View File

@@ -1,32 +0,0 @@
# TODO items
## pending to call setup work initially done
- finished dwm config and installation on linux
- add dmenu
- add st
- xresources working? use from/within theme-changing logic?
- finished artix/dinit setup
- remapped ctrl, alt, and super keys as needed
- adjusted keyrepeat speed, trackpad/mouse speed, etc
- did any normal/recommended stuff, refer to wiki
- include screen locking and sleep/hibernate
- figured out wiregaurd/vpn stuff
- finish xlibre setup, including installing any needed packages and doing config
- web browsers:
- primary, qutebrowser: config and install
- secondary, tor and either brave or librewolf: install only (no config)
## optional
- configured neomutt
- config for mpd, and client(s), (mpd clients to consider: mpc, ncmpcpp, ncmpc, inori)
- get find, xargs, and awk (use nawk) as unified as i can across system types
- seems mpv install (maybe others?) bring in wayland, see if i can remove it
- switched to macports (replace homebrew) before september 2026
- adjusted tmux so that n goes next/down and N goes prev/up in search results
- figured out nvim debug options for linux and macos, then update nvim's dap.lua
- picked and configured rss reader
- newsboat? others? option with inbox and separate queues?
- make all these scripts POSIX-compliant (or at least usable in ksh/oksh)

View File

@@ -1,53 +0,0 @@
# notes regarding my workflow and system use
## workspaces layout
idea from the ThePrimeagen: designated workspace/tags/desktop per app/purpose
### current layout
| key | app/focus
|-----|-----------
| 1. | ideas/drawing (gimp)
| 2. | music makeing - misc
| 3. | music making - daw
| 4. | listening/wathcing (any music, audio, or video)
| 5. | games
| 6. | comms (emails, chats, av/calls)
| 7. | web browser
| 8. | primary terminal (with tmux)
| 9. | general - misc (catch-all)
| 0. | system monitor (htop)
- note: programs which i'm likely to use with peripherals (i.e. trackpad, mouse, stylus,
etc) should be where i can navigate those screens with one hand
- for me, my left hand would still be on the keyboard, so: workspaces 1 through 5
### usage notes
- mental model for navigating windows:
- each window is in a stack
- keybinds: mod + j/k, to move down/up the stack
- each tab is in a circular list (imagine it is horizontal)
- keybinds: mod + h/l, to move left/right in this list
- note: in primary terminal, i'm running tmux, which has its own navigation approach,
refer to the tmux.conf and tmux-session-init scripts
- my default approach is to run windows in fullscreen
- note: on macOS, this is not mac's notion of fullscreen with windows essentially
moved to a new desktop; instead, i just want the windows taking up all of the
normal screen space (excluding any menu bar at the top of the screen)
- for the workspaces where i keep multiple apps, i try to maintain consistent order of
those apps within the stack of each respective workspace
## theme usage
| theme name | focus / use context
|-------------|--------------------
| gruvbox | admin/productivity work (default theme)
| tokyodark | music
| pina | programming/coding
| mars | night (within 2+ hours of sleep)
| lanterns | (tbd?)
| lighthouse | (tbd?)
| jade | (tbd?)

31
install_programs Executable file
View File

@@ -0,0 +1,31 @@
#!/bin/zsh
local single_script_filter=""
local dry="0"
execute() {
log "execute $@"
[[ $dry != "1" ]] && "$@"
}
log() {
[[ $dry != "1" ]] && echo "$@" || echo "[DRY RUN]: $@"
}
while [[ $# > 0 ]]; do
[[ $1 == "--dry" ]] && dry="1" || single_script_filter="$1"
shift
done
log "install_programs // single_script_filter: $single_script_filter"
local scripts=$(find ./installs_and_builds -maxdepth 1 -mindepth 1 -type f | sort)
for script in ${=scripts}; do
if [[ -x $script ]]; then
if echo "$script" | grep -qv "$single_script_filter"; then
log "filter is $single_script_filter // ignoring: $script"
continue
fi
execute ./$script
fi
done

View File

@@ -1,43 +0,0 @@
#!/bin/zsh
build_install() {
echo "-- installing $1"
target=$(echo "custom-$1-$BOX_SETUP_OS-$BOX_SETUP_DISTRO" | tr '-' '_')
[[ ! -e ./installs_and_builds/$target ]] &&
target=$(echo "custom-$1-$BOX_SETUP_OS-default" | tr '-' '_')
[[ ! -e ./installs_and_builds/$target ]] &&
target=$(echo "custom-$1-default" | tr '-' '_')
[[ ! -e ./installs_and_builds/$target ]] &&
${=BOX_SETUP_INSTALL_COMMAND} "$1" &&
return
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/$1.XXXXXXXX") || {
echo "could not create temp dir for $1 build" && return
}
custom_script_path=$(pwd)/installs_and_builds/$target
pushd $tmpdir > /dev/null
$custom_script_path
popd > /dev/null
}
echo "---- updating package manager / packages"
[[ -n "$BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD" ]] &&
${=BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD}
[[ -n "$BOX_SETUP_UPDATE_PKGS_CMD" ]] && ${=BOX_SETUP_UPDATE_PKGS_CMD}
echo "---- installing programs ---------------"
[[ -z $1 ]] && system_types_list="base" || system_types_list="base,$1"
echo "$system_types_list" |
sed -E "s/,/\n/g" |
while IFS= read -r system_type; do
echo "-------- install for system type: $system_type"
cat "installs_and_builds/programs_$system_type.txt" |
while IFS= read -r program_name; do
build_install "$program_name"
done
done

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "program not applicable for this OS or distro, skipping build/installation"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# use normal package manager for macos install, since default is noop for other OSs
${=BOX_SETUP_INSTALL_COMMAND} --cask nikitabobko/tap/aerospace

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "TODO: custom script for bitwig not yet implemented; may just want manual install"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "TODO: custom script for bitwig not yet implemented; may just want manual install"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "program not applicable for this OS or distro, skipping build/installation"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# use normal package manager for macos install, since default is noop for other OSs
${=BOX_SETUP_INSTALL_COMMAND} coreutils

View File

@@ -1,8 +0,0 @@
#!/bin/sh
# for now, use luke's build; i can make my own fork later if desired
git clone https://github.com/LukeSmithxyz/dmenu.git
pushd dmenu > /dev/null
sudo make clean install
popd > /dev/null

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,7 +0,0 @@
#!/bin/sh
git clone https://git.drinkingtea.net/david/dwm.git
pushd dwm > /dev/null
sudo make clean install
popd > /dev/null

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "program not applicable for this OS or distro, skipping build/installation"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# use normal package manager for macos install, since default is noop for other OSs
${=BOX_SETUP_INSTALL_COMMAND} findutils

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# adjust prefix for package manager before install
${=BOX_SETUP_INSTALL_COMMAND} --cask gimp

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# adjust prefix for package manager before install
${=BOX_SETUP_INSTALL_COMMAND} --cask kitty

View File

@@ -1,8 +0,0 @@
#!/bin/zsh
git clone https://github.com/ibara/oksh.git
pushd oksh > /dev/null
./configure
make && sudo make install
popd > /dev/null

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo 'TODO: custom script for mise is not yet implemented'

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# for debian, use package name `openssh-server` instead of `openssh`
${=BOX_SETUP_INSTALL_COMMAND} openssh-server

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# change package name; on arch it is 'pandoc-cli'
${=BOX_SETUP_INSTALL_COMMAND} pandoc-cli

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# change package name; on artix it is 'pandoc-bin'
${=BOX_SETUP_INSTALL_COMMAND} pandoc-bin

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "program not applicable for this OS or distro, skipping build/installation"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# use normal package manager for macos install, since default is noop for other OSs
${=BOX_SETUP_INSTALL_COMMAND} koekeishiya/formulae/skhd

View File

@@ -1,9 +0,0 @@
#!/bin/sh
# git clone https://git.drinkingtea.net/david/st.git
# pushd st > /dev/null
# sudo make clean install
# popd > /dev/null
echo "TODO: st build not yet done, skipping this install for now"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,4 +0,0 @@
#!/bin/zsh
# tenacity is not readily available on macos, so just use audacity for now
${=BOX_SETUP_INSTALL_COMMAND} --cask audacity

View File

@@ -1,17 +0,0 @@
#!/bin/zsh
# change package name; on artix it is 'pandoc-bin'
${=BOX_SETUP_INSTALL_COMMAND} \
xlibre-xserver \
xlibre-video-amdgpu \
xlibre-input-libinput \
libx11 \
libxft \
libxinerama
# `xlibre-video-amdgpu` depends on system gpu; ref lspci; maybe use `xlibre-drivers` instead
# if `xlibre-input-libinput` doesn't work, try `xlibre-input-evdev` (generic module) if libinput does not work
${=BOX_SETUP_INSTALL_COMMAND} \
xorg-xinit \
xorg-xrandr

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -1,3 +0,0 @@
#!/bin/sh
echo "intentionally skipping build/installation for macos"

View File

@@ -0,0 +1,25 @@
#!/bin/zsh
local neovim_dir=$HOME/.local/build/neovim
local neovim_version="v0.10.3"
[ ! -z $NVIM_VERSION ] && neovim_version="$NVIM_VERSION"
echo "neovim_version: \"$neovim_version\""
[ ! -d $neovim_dir ] && git clone https://github.com/neovim/neovim.git $neovim_dir
git -C $neovim_dir fetch --all
git -C $neovim_dir checkout $neovim_version
make -C $neovim_dir clean
make -C $neovim_dir CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make -C $neovim_dir install
# from primeagen's dev repo, uncomment/edit as needed
# git clone https://github.com/ThePrimeagen/harpoon.git $HOME/personal/harpoon
# cd $HOME/personal/harpoon
# git fetch
# git checkout harpoon2
# git clone https://github.com/ThePrimeagen/vim-apm.git $HOME/personal/vim-apm
# git clone https://github.com/ThePrimeagen/caleb.git $HOME/personal/caleb
# git clone https://github.com/nvim-lua/plenary.nvim.git $HOME/personal/plenary

View File

@@ -1,37 +0,0 @@
gcc
musl
coreutils
findutils
xlibre
make
mpv
kitty
st
dmenu
zsh
ksh
tmux
neovim
neomutt
curl
grep
ripgrep
sed
less
openssh
fzf
jq
parallel
gettext
htop
ffmpeg
mpd
ncmpcpp
git
calcurse
zathura
gimp
dwm
qutebrowser
aerospace
skhd

View File

@@ -1,2 +0,0 @@
tenacity
bitwig-studio

View File

@@ -1,5 +0,0 @@
clang
cmake
mise
podman
pandoc

View File

@@ -0,0 +1,8 @@
#!/bin/zsh
[[ -n "$BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD" ]] &&
${=BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD}
[[ -n "$BOX_SETUP_UPDATE_PKGS_CMD" ]] &&
${=BOX_SETUP_UPDATE_PKGS_CMD}

3
installs_and_builds/s01_libs Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/zsh
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv_placeholder

14
installs_and_builds/s02_utils Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/zsh
# likely on unix systems already: find xargs grep sed awk
${=BOX_SETUP_INSTALL_COMMAND} \
curl \
jq \
parallel \
fzf \
make \
cmake \
gettext
[[ "$BOX_SETUP_OS" = "macos" ]] &&
${=BOX_SETUP_INSTALL_COMMAND} coreutils

3
installs_and_builds/s03_shell Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} zsh

View File

@@ -0,0 +1,6 @@
#!/bin/zsh
local option_prefix=''
[[ "$BOX_SETUP_OS" = "macos" ]] && option_prefix='--cask'
# NOTE: ghostty not currently in debian repos, maybe build from source
${=BOX_SETUP_INSTALL_COMMAND} "$option_prefix" ghostty

View File

@@ -0,0 +1,3 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} tmux

View File

@@ -0,0 +1,18 @@
#!/bin/zsh
local linux_wm_and_utils() {
# TODO: pick wm for linux; options: dwm, i3, others?
echo "linux_wm_and_utils not yet implemented"
}
local macos_wm_and_utils() {
brew install koekeishiya/formulae/yabai
brew install koekeishiya/formulae/skhd
skhd --start-service
yabai --start-service
sleep 14 # time to give permission in accessibility settings
skhd --restart-service
yabai --restart-service
}
[[ "$BOX_SETUP_OS" = "macos" ]] && macos_wm_and_utils || linux_wm_and_utils

View File

@@ -0,0 +1,3 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} neovim

View File

@@ -0,0 +1,3 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} mutt

View File

@@ -0,0 +1,3 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} khal

View File

@@ -0,0 +1,7 @@
#!/bin/zsh
local option_prefix=''
[[ "$BOX_SETUP_OS" = "macos" ]] && option_prefix='--cask'
local firefox_package_name='firefox'
[[ "$BOX_SETUP_OS" = "debian" ]] && firefox_package_name='firefox-esr'
${=BOX_SETUP_INSTALL_COMMAND} "$option_prefix" "$firefox_package_name"

4
installs_and_builds/s13_rss Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/zsh
# TODO: pick rss reader; newsboat? others? option with inbox and separate queues?
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder

View File

@@ -0,0 +1,9 @@
#!/bin/zsh
# local music
${=BOX_SETUP_INSTALL_COMMAND} mpd mpc ncmpcpp
# possible mpd clients to consider: ncmpc, inori
# spotify
# TODO: decide if i want to use the package-manager install below, or build from source
# ${=BOX_SETUP_INSTALL_COMMAND} ncspot

View File

@@ -0,0 +1,3 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} mpv

View File

@@ -0,0 +1,4 @@
#!/bin/zsh
[[ "$BOX_SETUP_OS" = "macos" ]] && exit 0 # TODO: maybe find an option for macos
${=BOX_SETUP_INSTALL_COMMAND} nsxiv

View File

@@ -0,0 +1,4 @@
#!/bin/zsh
[[ "$BOX_SETUP_OS" = "macos" ]] && exit 0 # TODO: maybe find an option for macos
${=BOX_SETUP_INSTALL_COMMAND} zathura

View File

@@ -0,0 +1,4 @@
#!/bin/zsh
# TODO: pick filemanager; consider: lf, ranger, others?
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder

View File

@@ -0,0 +1,6 @@
#!/bin/zsh
# only audio editor(s) in this file; daws are handled separately
local option_prefix=''
[[ "$BOX_SETUP_OS" = "macos" ]] && option_prefix='--cask'
${=BOX_SETUP_INSTALL_COMMAND} "$option_prefix" audacity

View File

@@ -0,0 +1,4 @@
#!/bin/zsh
# TODO: set this up; likely using ffmpeg (work on macos?), maybe others
# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder

View File

@@ -0,0 +1,7 @@
#!/bin/zsh
local option_prefix=''
[[ "$BOX_SETUP_OS" = "macos" ]] && option_prefix='--cask'
${=BOX_SETUP_INSTALL_COMMAND} "$option_prefix" gimp
# ${=BOX_SETUP_INSTALL_COMMAND} imagemagick # TODO: consider this program too

3
installs_and_builds/s30_git Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/zsh
${=BOX_SETUP_INSTALL_COMMAND} git

21
installs_and_builds/s31_docker Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/zsh
setup_docker_on_debian() {
# refer to https://docs.docker.com/engine/install/debian/
# build this function based on that
# in that, could use BOX_SETUP_INSTALL_COMMAND or just apt install
echo "setup_docker_on_debian function not implemented"
}
# TODO: decide on docker vs others; below is included just for reference
# case $BOX_SETUP_OS in
# (arch | artix)
# ${=BOX_SETUP_INSTALL_COMMAND} docker
# ;;
# (debian)
# setup_docker_on_debian
# ;;
# (macos)
# ${=BOX_SETUP_INSTALL_COMMAND} docker
# ;;
# esac

View File

@@ -0,0 +1,10 @@
#!/bin/zsh
# TODO: review and decide if the things below are needed
#local lua_package="lua5.1"
#[[ "$BOX_SETUP_OS" = "macos" ]] && lua_package="lua@5.1"
#${=BOX_SETUP_INSTALL_COMMAND} "$lua_package" liblua5.1-0-dev
#luarocks install luacheck

14
make_config_dirs Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/zsh
source ./src_files/.config/zsh/.zshenv # source these vars for use below
[[ ! -d "$DIR_LOCAL" ]] && mkdir "$DIR_LOCAL"
[[ ! -d "$DIR_BIN" ]] && mkdir "$DIR_BIN"
[[ ! -d "$DIR_BUILD" ]] && mkdir "$DIR_BUILD"
[[ ! -d "$DIR_SCRIPTS" ]] && mkdir "$DIR_SCRIPTS"
[[ ! -d "$DIR_TMP" ]] && mkdir "$DIR_TMP"
[[ ! -d "$XDG_CONFIG_HOME" ]] && mkdir "$XDG_CONFIG_HOME"
[[ ! -d "$XDG_CACHE_HOME" ]] && mkdir "$XDG_CACHE_HOME"
[[ ! -d "$XDG_DATA_HOME" ]] && mkdir "$XDG_DATA_HOME"
[[ ! -d "$XDG_STATE_HOME" ]] && mkdir "$XDG_STATE_HOME"

View File

@@ -1,41 +0,0 @@
#!/bin/sh
. ./src_files/shell/profile # ensure env vars set for use below
echo "---- making system dirs ----------------"
# some standard/common directories, some overlap/use in XDG directories
! [ -d "$DIR_LOCAL" ] && mkdir -p "$DIR_LOCAL"
! [ -d "$DIR_BIN" ] && mkdir -p "$DIR_BIN"
! [ -d "$DIR_SCRIPTS" ] && mkdir -p "$DIR_SCRIPTS"
! [ -d "$DIR_USER_OPT" ] && mkdir -p "$DIR_USER_OPT"
! [ -d "$DIR_USER_LIB" ] && mkdir -p "$DIR_USER_LIB"
# directories related to XDG Base Directory specification
! [ -d "$XDG_CONFIG_HOME" ] && mkdir -p "$XDG_CONFIG_HOME"
! [ -d "$XDG_CACHE_HOME" ] && mkdir -p "$XDG_CACHE_HOME"
! [ -d "$XDG_DATA_HOME" ] && mkdir -p "$XDG_DATA_HOME"
! [ -d "$XDG_STATE_HOME" ] && mkdir -p "$XDG_STATE_HOME"
# additional directories for how i'm organizing my system
! [ -d "$DIR_HOME_BOX" ] && mkdir -p "$DIR_HOME_BOX"
! [ -d "$DIR_INBOX" ] && mkdir -p "$DIR_INBOX"
! [ -d "$DIR_NOTES" ] && mkdir -p "$DIR_NOTES"
! [ -d "$DIR_MUSIC" ] && mkdir -p "$DIR_MUSIC"
! [ -d "$DIR_DEV" ] && mkdir -p "$DIR_DEV"
! [ -d "$DIR_GIT_PROJECTS" ] && mkdir -p "$DIR_GIT_PROJECTS"
! [ -d "$DIR_GIT_PROJECTS/me" ] && mkdir -p "$DIR_GIT_PROJECTS/me"
! [ -d "$DIR_GIT_PROJECTS/forks" ] && mkdir -p "$DIR_GIT_PROJECTS/forks"
! [ -d "$DIR_GIT_PROJECTS/learning" ] && mkdir -p "$DIR_GIT_PROJECTS/learning"
! [ -d "$DIR_GIT_PROJECTS/other" ] && mkdir -p "$DIR_GIT_PROJECTS/other"
# directories for music/audio production
! [ -d "$DIR_REAPER_PORTABLE_SHARED" ] && mkdir -p "$DIR_REAPER_PORTABLE_SHARED"
! [ -d "$DIR_REAPER_PORTABLE_LINUX" ] && mkdir -p "$DIR_REAPER_PORTABLE_LINUX"
! [ -d "$DIR_REAPER_PORTABLE_MACOS" ] && mkdir -p "$DIR_REAPER_PORTABLE_MACOS"
# xdg spec and/or clean-up of home dir
echo "---- making xdg-spec/home-clean-up files"
! [ -d "$XDG_CONFIG_HOME/cups" ] && mkdir -p "$XDG_CONFIG_HOME/cups"
! [ -d "$XDG_DATA_HOME/irb" ] && mkdir -p "$XDG_DATA_HOME/irb"
! [ -d "$XDG_DATA_HOME/ncmpcpp" ] && mkdir -p "$XDG_DATA_HOME/ncmpcpp"
! [ -d "$XDG_CACHE_HOME/maven/repository" ] && mkdir -p "$XDG_CACHE_HOME/maven/repository"

8
make_org_structure_dirs Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/zsh
[[ ! -d "$DIR_HOME_BOX" ]] && mkdir $DIR_HOME_BOX
[[ ! -d "$DIR_DEV" ]] && mkdir $DIR_DEV
[[ ! -d "$DIR_DEV/git" ]] && mkdir $DIR_DEV/git
[[ ! -d "$DIR_DEV/git/me" ]] && mkdir $DIR_DEV/git/me
[[ ! -d "$DIR_DEV/git/other" ]] && mkdir $DIR_DEV/git/other

28
set_script_env_vars Normal file
View File

@@ -0,0 +1,28 @@
[[ -z $BOX_SETUP_OS ]] &&
echo "BOX_SETUP_OS must be set; options: arch, artix, debian, macos" &&
exit 1
local install_cmd=''
local update_pkg_manager_and_defs_cmd=''
local update_pkgs_cmd=''
case $BOX_SETUP_OS in
(arch | artix)
install_cmd="sudo pacman -S"
update_pkg_manager_and_defs_cmd='' # don't; update system instead?
update_pkgs_cmd='sudo pacman -Syu'
;;
(debian)
install_cmd="sudo apt install"
update_pkg_manager_and_defs_cmd='sudo apt update'
update_pkgs_cmd='sudo apt upgrade'
;;
(macos)
install_cmd="brew install"
update_pkg_manager_and_defs_cmd='brew update'
update_pkgs_cmd='brew upgrade'
;;
esac
export BOX_SETUP_INSTALL_COMMAND="$install_cmd"
export BOX_SETUP_UPDATE_PKG_MANAGER_AND_DEFS_CMD="$update_pkg_manager_and_defs_cmd"
export BOX_SETUP_UPDATE_PKGS_CMD="$update_pkgs_cmd"

View File

@@ -1,38 +0,0 @@
#!/bin/sh
prefix="/usr"
exec_prefix="${prefix}"
xrdb="xrdb"
xinitdir="/etc/X11/xinit"
xmodmap="xmodmap"
userresources="$HOME/.Xresources"
usermodmap="$HOME/.Xmodmap"
sysresources="$xinitdir/.Xresources"
sysmodmap="$xinitdir/.Xmodmap"
# merge in defaults and keymaps
[ -x /usr/bin/cpp ] && xinit_nocpp_opt="" || xinit_nocpp_opt="-nocpp"
[ -f "$sysresources" ] && "$xrdb" "$xinit_nocpp_opt" -merge "$sysresources"
[ -f "$sysmodmap" ] && "$xmodmap" "$sysmodmap"
[ -f "$userresources" ] && "$xrdb" -nocpp -merge "$userresources"
[ -f "$usermodmap" ] && "$xmodmap" "$usermodmap"
# source xinitdrc.d script files
[ -d "$xinitdir"/xinitrc.d ] && {
for f in "$xinitdir/xinitrc.d"/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
}
# xrandr mode for laptop display (framework 13in), target 1920x1280 resolution
dispmanage_modeline=$(cvt 1920 1280 60 | sed -n '2p' | sed -E "s/^Modeline //g")
dispmanage_mode_id=$(printf "%s" "$dispmanage_modeline" | sed -E "s/^([^ ]+)\s.*$/\1/g")
printf "%s" "$dispmanage_modeline" | xargs xrandr --newmode
printf "%s" "$dispmanage_mode_id" | xargs xrandr --addmode eDP
xrandr --output eDP --mode "1920x1280_60.00"
# start window manager
exec dwm

View File

@@ -1,64 +0,0 @@
# ref: https://nikitabobko.github.io/AeroSpace/commands
# ref: https://nikitabobko.github.io/AeroSpace/guide
after-startup-command = []
start-at-login = true
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
automatically-unhide-macos-hidden-apps = true
accordion-padding = 0
default-root-container-layout = 'accordion' # opts: tiles accordion
default-root-container-orientation = 'vertical' # opts: horizontal vertical auto
[key-mapping]
preset = 'qwerty' # opts: qwerty dvorak colemak
[gaps]
inner.horizontal = 0 # inner* - between windows and other windows
inner.vertical = 0
outer.left = 0 # outer* - between windows and monitor edges
outer.bottom = 0
outer.top = 0
outer.right = 0
[mode.main.binding]
# layouts
cmd-comma = 'layout v_accordion'
cmd-period = 'layout h_tiles'
cmd-slash = 'layout floating'
# window resizing
alt-minus = 'resize smart -50'
alt-equal = 'resize smart +50'
# window focus/view
cmd-j = 'focus up' # new windows are added "below" current, so swap up and down
cmd-k = 'focus down'
cmd-1 = 'workspace 1'
cmd-2 = 'workspace 2'
cmd-3 = 'workspace 3'
cmd-4 = 'workspace 4'
cmd-5 = 'workspace 5'
cmd-6 = 'workspace 6'
cmd-7 = 'workspace 7'
cmd-8 = 'workspace 8'
cmd-9 = 'workspace 9'
cmd-0 = 'workspace 10'
# window movement
cmd-shift-j = 'move up' # new windows are added "below" current, so swap up and down
cmd-shift-k = 'move down'
cmd-shift-1 = 'move-node-to-workspace 1'
cmd-shift-2 = 'move-node-to-workspace 2'
cmd-shift-3 = 'move-node-to-workspace 3'
cmd-shift-4 = 'move-node-to-workspace 4'
cmd-shift-5 = 'move-node-to-workspace 5'
cmd-shift-6 = 'move-node-to-workspace 6'
cmd-shift-7 = 'move-node-to-workspace 7'
cmd-shift-8 = 'move-node-to-workspace 8'
cmd-shift-9 = 'move-node-to-workspace 9'
cmd-shift-0 = 'move-node-to-workspace 10'

View File

View File

@@ -1,17 +1 @@
# font stuff
font-style = Regular
font-feature = -calt, -liga, -dlig
# window stuff
macos-titlebar-proxy-icon = hidden
title = " "
window-decoration = none
# cursor stuff
cursor-style = "block"
cursor-style-blink = false
shell-integration-features = no-cursor
# theme stuff
config-file = ?"~/.config/zz-this-box/themes/.current-theme/ghostty"

View File

@@ -1,29 +0,0 @@
# primary
background = #1a1b26
foreground = #c0caf5
cursor-color = #c0caf5
cursor-text = #1a1b26
# normal colors
palette = 0=#15161e
palette = 1=#f7768e
palette = 2=#9ece6a
palette = 3=#e0af68
palette = 4=#7aa2f7
palette = 5=#bb9af7
palette = 6=#7dcfff
palette = 7=#a9b1d6
# bright colors
palette = 8=#414868
palette = 9=#f7768e
palette = 10=#9ece6a
palette = 11=#e0af68
palette = 12=#7aa2f7
palette = 13=#bb9af7
palette = 14=#7dcfff
palette = 15=#c0caf5
# selection-background
selection-background = #283457
selection-foreground = #c0caf5

View File

@@ -1,9 +0,0 @@
# GIMP colorrc
#
# This file holds a list of recently used colors.
(color-history
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0)
(color "R'G'B'A float" 16 "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200\77" 0))
# end of colorrc

View File

@@ -1,18 +0,0 @@
# GIMP user context
(tool "gimp-pencil-tool")
(paint-info "gimp-pencil")
(foreground
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
(background
(color "R'G'B'A float" 16 "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200\77" 0))
(brush "2. Hardness 050")
(dynamics "Pressure Opacity")
(mybrush "100% Opaque")
(pattern "Pine")
(gradient "FG to BG (RGB)")
(palette "Color History")
(font "Sans-serif")
(tool-preset "Core Pointer")
# end of user context

View File

@@ -1,94 +0,0 @@
# GIMP gimprc
#
# personal gimprc file, takes precedence over values in system-wide gimprc
# if changing within gimp, make sure i copy those settings into my dotfiles src_files
(prev-language "en-US")
(config-version "3.0.6")
(default-image
(width 2480)
(height 1748)
(unit pixels)
(xresolution 300)
(yresolution 300)
(resolution-unit inches)
(image-type rgb)
(precision u8-non-linear)
(color-profile NULL)
(simulation-profile NULL)
(simulation-bpc no)
(simulation-intent relative-colorimetric)
(fill-type background)
(comment ""))
(import-raw-plug-in "${gimp_plug_in_dir}/plug-ins/file-raw-placeholder/file-raw-placeholder")
(check-updates no)
(check-update-timestamp 1759871981)
(monitor-xresolution 129)
(monitor-yresolution 129)
(show-welcome-dialog no)
(fill-options
(style fg-color)
(custom-style solid-color)
(antialias yes)
(feather no)
(feather-radius 10))
(stroke-options
(style fg-color)
(custom-style solid-color)
(antialias yes)
(feather no)
(feather-radius 10)
(method line)
(width 6)
(unit pixels)
(cap-style butt)
(join-style miter)
(miter-limit 10)
(dash-offset 0)
(dash-info 0)
(emulate-brush-dynamics no))
(default-view
(show-menubar yes)
(show-statusbar no)
(show-rulers yes)
(show-scrollbars yes)
(show-selection no)
(show-layer-boundary no)
(show-canvas-boundary yes)
(show-guides yes)
(show-grid no)
(show-sample-points yes)
(snap-to-guides yes)
(snap-to-grid no)
(snap-to-canvas no)
(snap-to-path no)
(snap-to-bbox no)
(snap-to-equidistance no)
(padding-mode default)
(padding-color
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
(padding-in-show-all no))
(default-fullscreen-view
(show-menubar yes)
(show-statusbar no)
(show-rulers yes)
(show-scrollbars yes)
(show-selection no)
(show-layer-boundary no)
(show-canvas-boundary yes)
(show-guides yes)
(show-grid no)
(show-sample-points yes)
(snap-to-guides yes)
(snap-to-grid no)
(snap-to-canvas no)
(snap-to-path no)
(snap-to-bbox no)
(snap-to-equidistance no)
(padding-mode default)
(padding-color
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
(padding-in-show-all no))
# end of gimprc

View File

@@ -1,4 +0,0 @@
(file-version 1)
(action "view-show-rulers" "<Shift><Control>r")
(action "view-zoom-fit-in" "<Shift><Control>f")
(action "windows-hide-docks" "<Shift><Control>d")

View File

@@ -1,13 +0,0 @@
# GIMP gimp-paintbrush-tool options
(background
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
(brush "2. Hardness 050")
(dynamics "Pressure Opacity")
(pattern "Pine")
(gradient "FG to BG (RGB)")
(palette "Color History")
(brush-size 2.0)
(brush-hardness 0.5)
# end of gimp-paintbrush-tool options

View File

@@ -1,13 +0,0 @@
# GIMP gimp-pencil-tool options
(background
(color "R'G'B'A float" 16 "\1\0\200\77\1\0\200\77\1\0\200\77\0\0\200\77" 0))
(brush "2. Hardness 050")
(dynamics "Pressure Opacity")
(pattern "Pine")
(gradient "FG to BG (RGB)")
(palette "Color History")
(brush-size 2.0)
(brush-hardness 0.5)
# end of gimp-pencil-tool options

View File

@@ -2,8 +2,4 @@
defaultBranch = master
[user]
name = david
email = david@pinewoods.xyz
[push]
autoSetupRemote = true
[pull]
rebase = true
email = david@silverwolf.studio

View File

@@ -1,28 +1,7 @@
# my own stuff/conventions
.tmux-session-hydrate
zxcv*
# compilation/debug/cache/build/etc
**/build/
**/__pycache__/
*.o
*.pch
*.dSYM
# lang/package
mise*.toml
.npmrc
# opencode/agents/etc
.opencode/
opencode.json
AGENTS.md
# vim files
.tool-versions
*.swp
*.swo
# miscellaneous
.npmrc
.tmux-session-hydrate
zxcv*
.DS_Store
.liccor*

View File

@@ -1,54 +0,0 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
htop_version=3.4.1
config_reader_min_version=3
fields=0 48 17 18 38 39 2 46 47 49 1
hide_kernel_threads=1
hide_userland_threads=0
hide_running_in_container=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=0
highlight_deleted_exe=1
shadow_distribution_path_prefix=0
highlight_megabytes=1
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=0
header_margin=1
screen_tabs=1
detailed_cpu_time=0
cpu_count_from_one=0
show_cpu_usage=1
show_cpu_frequency=0
show_cached_memory=1
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=6
enable_mouse=1
delay=40
hide_function_bar=0
header_layout=two_50_50
column_meters_0=LeftCPUs2 LeftCPUs8 Blank MemorySwap MemorySwap Blank NetworkIO NetworkIO
column_meter_modes_0=1 3 2 1 3 2 2 3
column_meters_1=RightCPUs2 RightCPUs8 Blank LoadAverage Tasks Blank DiskIO FileDescriptors Blank Hostname System Uptime DateTime Battery
column_meter_modes_1=1 3 2 2 2 2 2 2 2 2 2 2 2 1
tree_view=0
sort_key=47
tree_sort_key=0
sort_direction=-1
tree_sort_direction=1
tree_view_always_by_pid=0
all_branches_collapsed=0
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT STATE PERCENT_CPU PERCENT_MEM TIME Command
.sort_key=PERCENT_MEM
.tree_sort_key=PID
.tree_view_always_by_pid=0
.tree_view=0
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=0

View File

@@ -1,20 +0,0 @@
input {
kb_options = caps:escape, \
ctrl:swap_lalt_lctl, \
ctrl:swap_ralt_rctl, \
altwin:swap_ralt_rwin # this one seems to not work, but leaving here for now
repeat_rate = 70
repeat_delay = 250
touchpad {
clickfinger_behavior = true # 2-finger click is right-click
scroll_factor = 0.3
natural_scroll = false # natural is a bad name for this
}
}
# custom window rules per app
windowrulev2 = float, class:REAPER, title:^(REAPER).*$
windowrulev2 = size 1120 744, class:REAPER, title:^(REAPER).*$
windowrulev2 = center, class:REAPER, title:^(REAPER).*$

View File

@@ -1 +0,0 @@
IRB.conf[:HISTORY_FILE] ||= File.join(ENV["XDG_DATA_HOME"], "irb", "history")

View File

@@ -1,27 +0,0 @@
# font stuff
# font_family Regular # Average Mono, maybe?
font_size 16
disable_ligatures always # no ligatures
symbol_map U+E000-U+F8FF none # no ligatures
# window stuff
hide_window_decorations yes
macos_hide_window_titlebar yes
window_title_format " "
window_margin_width 0
confirm_os_window_close 0
show_window_resize_notification no
# cursor stuff
cursor_shape block
cursor_blink_interval 0
macos_custom_beam_cursor yes
# theme stuff
# NOTE: on linux, may want background_opacity at 1.0 and let hyprland handle transparency
include ~/.config/kitty/theme.conf
background_opacity 0.94
# etc
enable_audio_bell no

View File

@@ -1,2 +0,0 @@
[ -r "$XDG_CONFIG_HOME/profile" ] && . "$XDG_CONFIG_HOME/profile"
[ -r "$XDG_CONFIG_HOME/rc" ] && . "$XDG_CONFIG_HOME/rc"

View File

@@ -1 +0,0 @@
<localRepository>${env.XDG_CACHE_HOME}/maven/repository</localRepository>

View File

@@ -1,8 +0,0 @@
[tools]
go = "1"
python = "3"
ruby = "3"
[settings]
idiomatic_version_file_enable_tools = ["ruby"]

View File

@@ -1,4 +0,0 @@
h seek -5
l seek 5
H seek -30
L seek 30

View File

@@ -1,3 +0,0 @@
screenshot-format=png
screenshot-dir="~/dbox/inbox"
screenshot-template="%F-%p-%n"

View File

@@ -1,3 +0,0 @@
ncmcpp_directory = "$XDG_DATA_HOME/ncmpcpp"
lyrics_directory = "$DIR_MUSIC/.lyrics"
mpd_music_dir = "$DIR_MUSIC"

View File

@@ -0,0 +1,57 @@
# [theme] # from eltoncezar, similar to official spotify colors
# background = "#191414"
# primary = "#FFFFFF"
# secondary = "light black"
# title = "#1DB954"
# playing = "#1DB954"
# playing_selected = "#1ED760"
# playing_bg = "#191414"
# highlight = "#FFFFFF"
# highlight_bg = "#484848"
# error = "#FFFFFF"
# error_bg = "red"
# statusbar = "#191414"
# statusbar_progress = "#1DB954"
# statusbar_bg = "#1DB954"
# cmdline = "#FFFFFF"
# cmdline_bg = "#191414"
# search_match = "light red"
[theme] # from wojciech-zurek, tokyonight
background = "#1a1b26"
primary = "#9aa5ce"
secondary = "#414868"
title = "#9ece6a"
playing = "#7aa2f7"
playing_selected = "#bb9af7"
playing_bg = "#24283b"
highlight = "#c0caf5"
highlight_bg = "#24283b"
error = "#414868"
error_bg = "#f7768e"
statusbar = "#ff9e64"
statusbar_progress = "#7aa2f7"
statusbar_bg = "#1a1b26"
cmdline = "#c0caf5"
cmdline_bg = "#24283b"
search_match = "#f7768e"
# [theme] # from clooles, uses defaults/primary, supports transparency, for dynamic themes
# background = "default"
# primary = "foreground"
# secondary = "light black"
# title = "primary"
# playing = "primary"
# playing_selected = "primary"
# playing_bg = "primary"
# highlight = "#FFFFFF"
# highlight_bg = "#484848"
# error = "#FF0000"
# error_bg = "red"
# statusbar = "primary"
# statusbar_progress = "primary"
# statusbar_bg = "primary"
# cmdline = "default"
# cmdline_bg = "primary"
# search_match = "light red"

Some files were not shown because too many files have changed in this diff Show More