Merge branch 'main' of ssh://git.scalene.net:22023/jswank/dotfiles

This commit is contained in:
Jason Swank 2025-10-20 02:24:31 +00:00
commit 8fe8be5ad7
No known key found for this signature in database
20 changed files with 2644 additions and 15 deletions

3
.gitmodules vendored
View File

@ -10,3 +10,6 @@
[submodule "nvim/.config/nvim/pack/github/start/copilot.vim"]
path = nvim/.config/nvim/pack/github/start/copilot.vim
url = https://github.com/github/copilot.vim
[submodule "nvim/.config/nvim/pack/bundle/start/vim-go"]
path = nvim/.config/nvim/pack/bundle/start/vim-go
url = https://github.com/fatih/vim-go.git

View File

@ -0,0 +1 @@
CLAUDE_API_KEY=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

View File

@ -3,8 +3,9 @@
# set API keys via environment variables, like CLAUDE_API_KEY
# environment variables for aichat can be set at ~/.config/aichat/.env
model: claude
model: claude:claude-sonnet-4-5-20250929
keybindings: vi
prelude: role:cloudops
repl_prelude: role:cloudops
clients:
- type: claude
- type: gemini

14
aichat/.config/aichat/foo Normal file
View File

@ -0,0 +1,14 @@
I have a google spreadsheet with personal contact information (name, phone
number, address, etc) for a group or people. The columns are:
```
name first last mobile email street1 street2 city state zip hphone oemail children member exclude inactive
```
The last three columns are checkboxes.
I wish to construct a new tab in the spreadsheet that lists all the contacts who are:
- not inactive
- not excluded
How can I accomplish this?

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,12 @@
I want you to act as a UNIX shell expert and senior software engineer.
You are working in an environment with services using Amazon Web Services (AWS), including EKS, ALB, VPC, Transit Gateways.
Tools you are currently using include Terraform, git (Github), the AWS CLI, kubectl, `jq`, `yy`.
You are working in an environment with services using Amazon Web Services
(AWS), including EKS, ALB, VPC, Transit Gateways. Tools you are currently
using include Terraform, git (Github), the AWS CLI, kubectl, `jq`, `yy`.
You are a Go program language expert.
Explanations should be terse.
Explanations should be terse. Do not include emojis in responses.
If relevant, include fenced code blocks as part of your response.
Please include relevant fenced code blocks as part of your response.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -5,7 +5,7 @@
STOW=$(which stow || echo -n "")
if [ -z "$STOW" ]; then
STOW=./stow.sh
STOW="./stow.sh -s"
fi
git submodule update --init --recursive
@ -34,7 +34,8 @@ for dir in \
sh \
ssh \
tmux \
zsh
zsh \
aichat
do
$STOW -t $HOME $dir
done

1
npm/.npmrc Normal file
View File

@ -0,0 +1 @@
prefix=~/.local

View File

@ -63,8 +63,9 @@ let g:netrw_banner=0 " disable annoying banner
let g:netrw_browse_split=0 " open in prior window
let g:netrw_altv=1 " open splits to the right
let g:netrw_liststyle=3 " tree view
let g:netrw_list_hide=netrw_gitignore#Hide()
let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
" hide files in .gitignore - broken w/ neovim 0.11?
" let g:netrw_list_hide=netrw_gitignore#Hide()
let g:netrw_list_hide=',\(^\|\s\s\)\zs\.\S\+'
" NOW WE CAN:
" - :edit a folder to open a file browser

@ -0,0 +1 @@
Subproject commit 6adc82bfef7f9a4b0db78065ae51b8ebb145c355

3
ssh/.ssh/known_hosts Normal file
View File

@ -0,0 +1,3 @@
192.168.101.110 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJb5kemGOPwXoNr09PqIEZbHjZprJUrEtHOKk4jvxAlH
192.168.101.110 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD3MkIlJXiY/CF1Q9l+C1b5jKj05cIzr7AMTHXLnkvrGZD/n2XwkYKTVIwgiGm4de2MKs1tcFJU4l5y6ARWu2Iit7UHC7Zk9aAydg59przJV/aj9pkLfOYKvWu6f7VGWEMTzy+FZ+7C+ulzIhhV6fN6sDO6Ywa5Pkl/LyXlSWHlfWO7xVYFQwRaACdhdnjl+tygXWISHErtCUXX8qR+c7+yyb/tNKF67yhDX+U55PkMDoHqtQDVAYotUukvHZ4SbE//rTt/xRQAb/GnRV2f4p+Zl65UGBNr7Wh8oRWAdRx/CjU8ujgEZgs99lKLkAUdNz/52eAvoIxccoOdIkbk0snv
192.168.101.110 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHZCtwh3lEIVtg/rm4p2Lws2zjXbvB8K8hk4ymagckaRdYq/16TqB8A2ki28fkGh7+DmitaCEC+iW/4lcQtEvsQ=

1
ssh/.ssh/known_hosts.old Normal file
View File

@ -0,0 +1 @@
192.168.101.110 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJb5kemGOPwXoNr09PqIEZbHjZprJUrEtHOKk4jvxAlH

View File

@ -0,0 +1 @@
_task

View File

@ -0,0 +1,71 @@
#compdef task
compdef _task task
typeset -A opt_args
_GO_TASK_COMPLETION_LIST_OPTION="${GO_TASK_COMPLETION_LIST_OPTION:---list-all}"
# Listing commands from Taskfile.yml
function __task_list() {
local -a scripts cmd
local -i enabled=0
local taskfile item task desc
cmd=(task)
taskfile=${(Qv)opt_args[(i)-t|--taskfile]}
taskfile=${taskfile//\~/$HOME}
if [[ -n "$taskfile" && -f "$taskfile" ]]; then
enabled=1
cmd+=(--taskfile "$taskfile")
else
for taskfile in {T,t}askfile{,.dist}.{yaml,yml}; do
if [[ -f "$taskfile" ]]; then
enabled=1
break
fi
done
fi
(( enabled )) || return 0
scripts=()
for item in "${(@)${(f)$("${cmd[@]}" $_GO_TASK_COMPLETION_LIST_OPTION)}[2,-1]#\* }"; do
task="${item%%:[[:space:]]*}"
desc="${item##[^[:space:]]##[[:space:]]##}"
scripts+=( "${task//:/\\:}:$desc" )
done
_describe 'Task to run' scripts
}
_task() {
_arguments \
'(-C --concurrency)'{-C,--concurrency}'[limit number of concurrent tasks]: ' \
'(-p --parallel)'{-p,--parallel}'[run command-line tasks in parallel]' \
'(-f --force)'{-f,--force}'[run even if task is up-to-date]' \
'(-c --color)'{-c,--color}'[colored output]' \
'(-d --dir)'{-d,--dir}'[dir to run in]:execution dir:_dirs' \
'(--dry)--dry[dry-run mode, compile and print tasks only]' \
'(-o --output)'{-o,--output}'[set output style]:style:(interleaved group prefixed)' \
'(--output-group-begin)--output-group-begin[message template before grouped output]:template text: ' \
'(--output-group-end)--output-group-end[message template after grouped output]:template text: ' \
'(-s --silent)'{-s,--silent}'[disable echoing]' \
'(--status)--status[exit non-zero if supplied tasks not up-to-date]' \
'(--summary)--summary[show summary\: field from tasks instead of running them]' \
'(-t --taskfile)'{-t,--taskfile}'[specify a different taskfile]:taskfile:_files' \
'(-v --verbose)'{-v,--verbose}'[verbose mode]' \
'(-w --watch)'{-w,--watch}'[watch-mode for given tasks, re-run when inputs change]' \
+ '(operation)' \
{-l,--list}'[list describable tasks]' \
{-a,--list-all}'[list all tasks]' \
{-i,--init}'[create new Taskfile.yml]' \
'(-*)'{-h,--help}'[show help]' \
'(-*)--version[show version and exit]' \
'*: :__task_list'
}
# don't run the completion function when being source-ed or eval-ed
if [ "$funcstack[1]" = "_task" ]; then
_task "$@"
fi

View File

@ -0,0 +1,6 @@
aws-ec2-instances() {
aws ec2 describe-instances --output json \
| jq -r '.Reservations[].Instances[] |
[.InstanceId, .State.Name, .PrivateIpAddress, (.PublicIpAddress // "N/A")] |
@tsv'
}

View File

@ -0,0 +1,10 @@
aws-publish-ssh-key() {
local key_name="${1:-jswank-$(hostname)}"
local key_file="${2:-$HOME/.ssh/id_ed25519.pub}"
[[ -f "$key_file" ]] || { echo "Key file not found: $key_file" >&2; return 1; }
aws ec2 import-key-pair \
--key-name "$key_name" \
--public-key-material "fileb://$key_file"
}

View File

@ -0,0 +1,3 @@
aws-set-prompt() {
export AWS_ENVIRONMENT=$(aws iam list-account-aliases | jq -r '.AccountAliases[0]')
}

View File

@ -1,8 +1,8 @@
alias ls='ls --color=auto'
alias grep='grep --color'
alias vim='nvim'
alias vi='nvim'
alias w3='w3m -T text/html'
fpath+=~/.local/share/zsh/functions
path+=(~/bin)
path+=(~/.local/bin)
@ -12,8 +12,6 @@ export PATH
# allow for # to be interpreted as a comment on the command line
setopt interactivecomments
# cd tricks
alias -- -='cd -'
setopt auto_cd # there is no binary by that name in your $PATH, your shell will cd into it that directory
# use vi-style keymap
@ -23,6 +21,9 @@ if [ "${TERM}" = "xterm" ]; then
TERM=xterm-256color
fi
# setup my personal functions
autoload -Uz ~/.local/share/zsh/functions/*(.:t)
#
# Prompt setup
#
@ -87,7 +88,7 @@ if [ -e $HOME/cfa-work/.zshrc ]; then
. $HOME/cfa-work/.zshrc
fi
for env in $HOME/.okta/.env $HOME/.aws/.env $HOME/.config/git/.env; do
for env in $HOME/.okta/.env $HOME/.config/aws/.env $HOME/.config/github/.env $HOME/.config/aichat/.env; do
if [ -r $env ]; then
export $(xargs < $env)
fi
@ -105,6 +106,9 @@ if command -v aws_completer > /dev/null; then
complete -C aws_completer aws
fi
if command -v tofu > /dev/null; then
complete -o nospace -C $(command -v tofu) tofu
fi
# Highlight the current autocomplete option
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
@ -127,3 +131,5 @@ zstyle :compinstall filename '~/.zshrc'
#zstyle :compinstall filename '~/.zshrc'
#compinit
complete -o nospace -C /home/cli/dotfiles/zsh/.local/bin/tofu tofu