Make copy_dotfiles POSIX, simplify zsh files, minor nvim changes

This commit is contained in:
2025-11-15 00:09:26 -06:00
parent f1700e1d3d
commit 7ef1d2f391
8 changed files with 63 additions and 61 deletions

View File

@@ -1,36 +1,37 @@
#!/bin/zsh
#!/bin/sh
echo_and_execute() { echo "executing: $@" && "$@" }
echo_and_execute() {
echo "executing: $@" && "$@"
}
copy_file() {
local from=$1
local to=$2
local filename=$(basename $from)
[[ -e $to/$filename ]] && rm $to/$filename
echo_and_execute cp -RPp $from $to/$filename
from=$1
to=$2
filename=$(basename "$from")
[ -e "$to/$filename" ] && rm "$to/$filename"
echo_and_execute cp -RPp "$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 ]] && rm -rf $to/$dir
echo_and_execute cp -RPp $dir $to/$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
local files=(`find . -mindepth 1 -maxdepth 1 -type f`)
for file in $files; do
copy_file $file $to
find . -mindepth 1 -maxdepth 1 -type f | while read -r file; do
copy_file "$file" "$to"
done
popd > /dev/null
cd "$prev_dir" || return 1
}
sym_link() {
[[ ! -e "$1" ]] && echo "skipping link, target does not exist: $1" && return
[[ -h "$2" ]] && rm $2
[[ -f "$2" || -d "$2" ]] && rm -rf $2
echo_and_execute ln -s $1 $2
! [ -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 ------------------"
@@ -47,12 +48,12 @@ copy_dir src_files/.local/bin $DIR_BIN
copy_dir src_files/.local/scripts $DIR_SCRIPTS
# macOS overrides as needed
[[ "$OSTYPE" = *"darwin"* ]] && copy_dir src_files/bin_overrides_macos $DIR_BIN
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
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"
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

View File

@@ -5,8 +5,8 @@
- shell
- check user's shell using `echo $SHELL` or otherwise
- if not the desired shell:
- `chsh -l` to see options; if target shell isn't listed, then add it
to `/etc/shells`
- `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

View File

@@ -22,13 +22,13 @@ vim.keymap.set("n", "N", "Nzv")
-- maintain cursor position after paragraph formatting
vim.keymap.set("n", "=ap", "mF=ap'F")
-- shortcuts for deleting into the void register
vim.keymap.set({ "n", "v" }, "<leader>d", [["_d]])
vim.keymap.set("x", "<leader>P", [["_dP]]) -- replace selected text, keep main register
-- replace selected text, keep main register
vim.keymap.set("x", "<leader>P", [["_dP]])
-- shortcuts for using + register (system clipboard)
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]])
vim.keymap.set("n", "<leader>Y", [["+Y]])
vim.keymap.set({ "n", "v" }, "<leader>d", [["+d]])
vim.keymap.set("n", "<leader>D", [["+D]])
vim.keymap.set("n", "<leader>p", [["+p]])

View File

@@ -80,6 +80,7 @@ function ToggleWritingMode()
vim.opt_local.relativenumber = true
vim.opt_local.signcolumn = "yes"
vim.opt_local.cursorline = true
vim.api.nvim_set_hl(0, 'SpellCap', vim.g.wrmode_prev_hl_spellcap or {})
vim.opt_local.spell = false
-- vim.opt_local.wrap = true -- TODO: needed?
vim.opt_local.textwidth = 0
@@ -98,6 +99,8 @@ function ToggleWritingMode()
local writing_pane = vim.api.nvim_get_current_win()
EnableWritingModeUiForCurrentWindow()
vim.opt_local.spell = true
vim.g.wrmode_prev_hl_spellcap = vim.api.nvim_get_hl(0, { name = 'SpellCap' })
vim.api.nvim_set_hl(0, 'SpellCap', {})
vim.opt_local.textwidth = window_width
vim.opt_local.scrolloff = 14
vim.opt_local.formatoptions:append('t')

View File

@@ -5,6 +5,9 @@ set -o vi
export PATH=$DIR_BIN:$DIR_SCRIPTS:$PATH:$XDG_DATA_HOME
export PATH=$PATH:/opt/homebrew/opt/ccache/libexec:/opt/homebrew/bin
# set env vars specific to this box, if any
[ -r "$HOME/.local-box-vars" ] && . $HOME/.local-box-vars
# shortcuts for common commands
alias 3e='echo;echo;echo'
alias 12e='3e;3e;3e;3e'
@@ -28,15 +31,36 @@ alias note="cd $DIR_NOTES/inbox; $EDITOR"
alias todo="cd $DIR_NOTES/rhythm; $EDITOR todo.md"
alias budget="open $DIR_HOME_BOX/finance/budget/.current"
# login shortcuts
alias assume="source assume"
alias login-aws='aws sso login --profile'
alias login-aws-id-list="grep sso_account_id $HOME/.aws/config"
# git stuff
alias gfo='git fetch origin'
alias gfl='git fetch origin; git log'
alias gpo='git pull origin'
alias gppo='git push origin'
alias gst='git status'
alias git-push-to-temp='git branch -D temp; git checkout -b temp; git push origin temp -uf; git checkout -'
alias gptemp='git-push-to-temp'
# code/test/linter run and build commands
alias bel='bundle exec standardrb'
alias bet='bundle exec rspec'
alias lintjs='npx prettier --write'
alias prl='poetry run black'
alias prt='poetry run pytest'
# containerization
alias docker=podman
# misc commands
alias pdt='ping -c 2 drinkingtea.net'
alias ppw='ping -c 2 pinewoods.xyz'
alias weather='curl "wttr.in/dfw?2&F"'
alias shrug='echo "¯\\_(ツ)_/¯"'
# source extensions and system-specific files
[[ -a "$ZDOTDIR/zsh-general-dev" ]] && . "$ZDOTDIR/zsh-general-dev"
# programming and language setup
[[ -n $(command -v mise) ]] && eval "$(mise activate zsh)"
export DEVKITARM=/opt/devkitpro/devkitARM

View File

@@ -1,26 +0,0 @@
# set env vars, path updates, etc
[[ -a $HOME/.local-box-vars ]] && . $HOME/.local-box-vars
# login shortcuts
alias assume="source assume"
alias login-aws='aws sso login --profile'
alias login-aws-id-list="grep sso_account_id $HOME/.aws/config"
# git stuff
alias gfo='git fetch origin'
alias gfl='git fetch origin; git log'
alias gpo='git pull origin'
alias gppo='git push origin'
alias gst='git status'
alias git-push-to-temp='git branch -D temp; git checkout -b temp; git push origin temp -uf; git checkout -'
alias gptemp='git-push-to-temp'
# code/test/linter run and build commands
alias bel='bundle exec standardrb'
alias bet='bundle exec rspec'
alias lintjs='npx prettier --write'
alias prl='poetry run black'
alias prt='poetry run pytest'
# containerization
alias docker=podman

View File

@@ -39,7 +39,7 @@ export ZDOTDIR="$XDG_CONFIG_HOME/zsh" # may already be set, set anyway
export GIT_EDITOR="$EDITOR"
# obsidian
export OBSIDIAN_WORKSPACES_TO_CONFIGURE=("$DIR_NOTES")
export OBSIDIAN_WORKSPACES_TO_CONFIGURE="$DIR_NOTES," # ,-delimitted list of dirs
# reaper
export DIR_REAPER_PORTABLE_SHARED="$DIR_USER_OPT/reaper-portable/shared"