Compare commits

...
Sign in to create a new pull request.

207 commits

Author SHA1 Message Date
1b094d08b5 misc work updates 2025-04-08 21:03:57 -04:00
4a52da48e1 cmus catppuccin theme 2025-04-07 21:28:18 -04:00
f0c26bb305 work updates 2025-04-07 21:27:56 -04:00
f28238e2fa adding presenterm to tooling 2025-04-07 11:33:30 -04:00
a90c758e87 move jj config to XDG_CONFIG_HOME 2025-04-07 11:27:20 -04:00
88b5f0af95 disable audible bell in kitty 2025-04-07 11:17:47 -04:00
67eddb7ae7 dropping zk for marksman 2025-04-07 11:11:40 -04:00
4fe9b63d42 bug: typo in work encrypted name 2025-04-07 11:02:47 -04:00
f9b46a6ae3 typo in mingw dependency name 2025-04-06 18:42:20 -04:00
65ffb03b68 jj config prevent editing rev already pushed (closes #4) 2025-04-06 17:18:03 -04:00
b3773ae801 refactor mac configs (closes #2) 2025-04-06 17:16:40 -04:00
6040cac5f8 drop wsl and devterm (closes #1) 2025-04-05 16:42:18 -04:00
fc831dbc7f forgejo updates 2025-03-29 14:42:28 -04:00
2fe1980518 ollama config zsh 2025-03-23 11:58:14 -04:00
e6fc9c6773 misc aider config tweaks 2025-03-19 09:25:10 -04:00
506ef00045 nb config 2025-03-17 10:05:24 -04:00
9014e226ca k9s config 2025-03-17 10:04:05 -04:00
f1d2679354 additional work config 2025-03-17 10:00:44 -04:00
e53e8efb68 jj: ignore octopus merge commits 2025-03-17 10:00:44 -04:00
b6e88a7dd5 consolidate custom helix actions 2025-03-12 12:29:32 -04:00
5b9f0fd465 maint: stop including month in jj prefix 2025-03-12 12:12:02 -04:00
21effb58f9 new: glow 2025-03-11 22:04:53 -04:00
d72d5fe7d8 misc work qol improvements 2025-03-06 09:47:08 -05:00
b705eec0b0 roll back inline helix alerts - these are super annoying 2025-03-03 16:10:46 -05:00
04590d9bfc work-related edits 2025-03-03 16:10:22 -05:00
18c2db7e4b maint: aider config 2025-03-03 09:13:24 -05:00
f8756dae22 misc helix tweaks 2025-03-03 08:13:20 -05:00
92beb62be2 bootstrapping aider 2025-03-03 08:03:37 -05:00
5d7846756e new: yazi keymap 2025-03-03 06:26:08 -05:00
b27081aa84 done with nvim experiment. keeping configs for now but i miss helix. 2025-03-02 21:33:16 -05:00
14f6531071 misc nvim lsp tweaks 2025-03-02 21:30:45 -05:00
68213db5e0 nvim keymap cleanup 2025-02-16 15:27:51 -05:00
4db7bcac3b editor: setting up neovim again
been using helix for a few years now, but wanted to test the neovim
waters again. mostly just ripped off "neovim for newbs"
https://www.youtube.com/watch?v=zHTeCSVAFNY&list=PLsz00TDipIffreIaUNk64KxTIkQaGguqn
2025-02-16 15:17:09 -05:00
25e22570c8 repo: mini-lsm course 2025-02-14 08:11:44 -05:00
cb39600f6f lint: toml formatter 2025-02-14 08:11:18 -05:00
ebc736f780 zed: install some extensions 2025-02-14 08:10:14 -05:00
2e5e8fbc4f zed: enable new prediction features 2025-02-14 08:09:49 -05:00
e8cfaf2eae maint: tweaking zed config 2025-02-13 16:39:22 -05:00
5ddaf90681 new: zed config 2025-02-07 06:58:54 -05:00
bd0a601a9b work-related changes 2025-02-04 08:45:42 -05:00
3d9120c762 new project repo 2025-02-03 18:44:05 -05:00
481f1e7b04 feat: strip jira-style ids utility 2025-01-08 07:42:24 -05:00
34031bddec chore: adding work-specific jj keys
note: this partial passwordless ssh support in jujutsu is annoying
2025-01-07 09:56:50 -05:00
720163c791 chore: re-add devlog to bookmarks 2025-01-07 07:24:16 -05:00
99ac0b1820 bug: kitty breaks ssh 2025-01-05 16:17:31 -05:00
01aecec99e chore: renaming keys 2025-01-02 15:06:15 -05:00
68d22d416d chore: cleanup copypasta 2025-01-02 14:56:47 -05:00
e2378b0737 feat: bifurcating profiles 2025-01-02 14:54:03 -05:00
d97474bff6 maint: bump branch prefix 2025-01-02 14:40:16 -05:00
e731821c3a chore: december branch name 2024-12-17 13:42:47 -05:00
2cd087b7c2 feat: roc editor support 2024-12-01 19:28:37 -05:00
e5accddcba feat: drop macports for home mac 2024-12-01 19:28:12 -05:00
7996b27bcf feat: in-editor diff view 2024-12-01 16:59:26 -05:00
32a7187214 feat: yazi support 2024-11-14 11:28:30 +08:00
119613ee58 feat: ignore per-project direnv configs 2024-11-13 16:34:42 +08:00
624d525b89 feat: ide-like test-running 2024-11-12 16:05:01 +08:00
809bda01e7 feat: promote zellij room to non-prefixed command 2024-11-12 16:05:01 +08:00
efd7cb5b0e feat: missed zellij theme update 2024-11-04 06:24:59 -05:00
ae4ca58450 feat: base16->catppuccin
this is an experiment. ive been using base16_ashes since ~2012
2024-11-04 06:11:49 -05:00
b3b352dd64 feat: split view with tasks when loading zk daily 2024-11-04 06:06:29 -05:00
2af78f2234 feat: jj tab-complete 2024-11-04 06:05:56 -05:00
8d6580fd6c chore: misc work-related updates 2024-11-04 06:05:36 -05:00
79eb32a3f8 feat: clean up unused zellij config 2024-10-27 10:33:54 -04:00
2a11d78908 feat: convenience function for relative date 2024-10-24 13:14:49 -04:00
4b6e98709e feat: new helix theme 2024-10-23 21:26:09 -04:00
dc3aa66274 chore: little bit of a hack here, will circle back later 2024-10-23 21:25:39 -04:00
61b12ab87e feat: new work packages 2024-10-23 21:25:21 -04:00
818b91c9ad feat: misc work-related tweaks 2024-10-21 15:51:34 -04:00
ffbdffa6be feat: templatify language config 2024-10-21 07:17:54 -04:00
8174b07865 hack: stuffing python lsp config into editor
will circle back and convert to a template
2024-10-21 07:14:40 -04:00
802098e257 chore: misc work cleanup 2024-10-21 07:12:54 -04:00
769865358c feat: add github handle 2024-10-17 09:09:18 -04:00
f94d4c38d4 chore: misc refactorings 2024-10-16 19:06:33 -04:00
de6066b187 chore: new jj api 2024-10-16 09:05:04 -04:00
b639b23a84 chore: work-specific display config (non-hidpi) 2024-10-16 09:04:13 -04:00
4b37136a70 feat: moving package management into encrypted 2024-10-15 14:25:31 -04:00
9e11acc2ca chore: refactoring bootstrapped env for faster shell load time 2024-10-15 13:30:10 -04:00
db8c403acf chore: ignore log files 2024-10-15 13:29:45 -04:00
d29006be1c feat(work) misc env tweaks to support new work setup 2024-10-14 21:40:31 -04:00
cfd7c6c13e misc updates 2024-10-10 15:42:10 -04:00
66e493f7fa feat: work vs personal rsa keys 2024-10-10 13:00:52 -04:00
2b215fd788 feat: some work-related packages 2024-10-10 11:53:48 -04:00
f094b97ad5 chore: update time tracking for new job 2024-10-10 11:36:59 -04:00
ccea083389 pixi config 2024-10-06 19:52:51 -04:00
bd71859cd3 chore(jj): new release 2024-10-06 19:52:00 -04:00
7cde70aed5 chore: saving misc ssh key 2024-10-03 12:04:08 -04:00
9cae55e1f1 chore: removing emulate energy config 2024-10-03 12:00:59 -04:00
cc26673603 chore: removing unused elements 2024-10-03 11:49:32 -04:00
15d78d24ed feat: template in name and email 2024-10-03 11:48:27 -04:00
642e0958e0 feat: adding prompt for hosttype, rather than relying on hostname 2024-10-03 11:27:20 -04:00
d667822e3e chore: removing some personal repos from bootstrapper 2024-10-03 11:26:50 -04:00
dd99ddbe61 feat(zellij): set up tabnav plugin and fix some keybinds 2024-09-24 06:35:16 -04:00
bec1233fcc feat(klog): set default notebook 2024-09-24 06:34:21 -04:00
625df6155f feat: adding content param to default template 2024-09-17 11:08:39 -04:00
f7ecff3786 fix: temporarily disabling zellij ctrl n keybinding 2024-09-17 11:08:02 -04:00
90c1956471 fix: missing changes to klog work path 2024-09-17 11:07:38 -04:00
5b251e56f4 feat(zk): sync alias 2024-09-17 06:27:09 -04:00
c33ac05b4d fix(klog): permissions and new work log path 2024-09-17 06:27:09 -04:00
f3ca93e7e8 fix(zsh): add missing xdg confg env var 2024-09-17 06:24:30 -04:00
8f63a2f5b8 feat(klog): import klog config 2024-09-16 15:53:44 -04:00
28c4208cd2 feat(zk): support for zk notebook 2024-09-16 15:50:28 -04:00
554cfa9a26 feat(jj): useful alias 2024-09-16 15:49:35 -04:00
f19cbc439c chore: sync rattusrattus packages 2024-09-16 15:15:22 -04:00
45ec90f2ff new: zellij return to previous tab
creature-comfort
2024-08-07 10:58:18 -04:00
89bfaebc4e new: disable zellij window chrome 2024-08-07 10:57:53 -04:00
f36577c93c new: trying out zellij (instead of tmux) 2024-08-06 15:43:10 -04:00
022ace80f1 new: trying out kitty tty 2024-08-06 15:30:49 -04:00
73ba4b0062 new: hx reload all buffers shortcut 2024-08-02 12:11:36 -04:00
40f1e1a290 new: jj diff/delta conf 2024-08-01 09:17:12 -04:00
f63607cb52 new: personal project 2024-08-01 09:16:58 -04:00
4dd487a08e new: jj config 2024-07-29 17:37:48 -04:00
1c55dba40b misc tweaks 2024-02-19 12:52:15 -05:00
95975c4e7d updating work config 2024-01-12 14:15:14 -05:00
678469a557 readd devlog alias using helix 2024-01-10 15:13:17 -05:00
e01e420f4d s/miniconda/miniforge/g 2024-01-03 10:15:57 -05:00
171c727754 orbstack 2024-01-02 10:55:00 -05:00
36584c7a4b helix: no insert final newline 2023-12-26 14:57:53 -05:00
f1d046dbbb git-delta 2023-12-26 14:57:37 -05:00
06e1032586 new: zimfw (replaed prezto) 2023-10-24 13:52:23 -04:00
5a8bd47acd clean up some packages
- prefer docker desktop
- i haven't really had time to play with zellij
2023-10-23 10:01:45 +02:00
23c328657f colima tweaks 2023-10-15 14:35:38 +02:00
844a14110b sweet 2023-09-25 12:53:07 -04:00
261c424494 force colima dns servers (for resolving npm packages) 2023-09-25 12:46:57 -04:00
af13398206 force true color helix and correctly link runtime assets 2023-09-05 07:30:27 -04:00
87907088e2 clarify steps 2023-09-04 16:08:07 -04:00
a74b00a947 belt and suspenders 2023-09-04 12:29:01 -04:00
3a90d4d62d no markdown list, fix shell sourcing 2023-09-04 12:25:44 -04:00
2892dc35cd tweaking rust installation 2023-09-03 23:15:10 -04:00
651c566ae9 fixing up bootstrappign scripts 2023-09-03 13:55:53 -04:00
12dabf43e9 colima base memory bump 2023-08-18 06:55:39 -04:00
b70757dfba remove wsl debugging leftovers 2023-08-14 07:27:03 -04:00
d1dfddf9ac fixing hostname typos 2023-08-14 07:26:21 -04:00
cb39989568 cleaning up hostname handling 2023-08-14 07:20:09 -04:00
25931051a8 misc wsl edits 2023-08-14 06:48:26 -04:00
a5ff4922ed ironing out some hx install
still not perfect but itll do for the moment
2023-08-10 22:13:41 -04:00
58ac026ff2 setting up a new wsl vm 2023-08-10 21:16:10 -04:00
779cc9e007 work updates 2023-07-30 14:45:35 -04:00
d1cd3f21ef fix tmux on macos 2023-07-04 16:44:53 -04:00
04e6025af8 work config 2023-06-15 15:14:14 -04:00
7d30a52114 set up work-related stuff 2023-06-08 11:44:48 -04:00
78ff896f48 changed my mind on trailing newline 2023-06-06 21:36:46 -04:00
5fd9702ddc readme and trailing newline 2023-06-06 21:35:27 -04:00
c3f37a1518 set up age encryption 2023-06-06 21:30:50 -04:00
653d660cd2 helix rust env 2023-06-06 18:41:50 -04:00
7aa7c432e3 colima is mac-only 2023-05-27 17:42:47 -04:00
60550d0313 hx conf typo 2023-05-19 14:39:08 -04:00
af8e15c410 helix theme tweak && helix hidden files 2023-05-19 10:44:45 -04:00
e189eba393 clear out npmrc && add colima helper 2023-05-18 19:11:04 -04:00
bea4766f48 colima 2023-05-16 16:34:38 -04:00
97e4e3989e maint: gwar && PEMDAS 2023-05-14 17:01:11 -04:00
6f0ea914e3 misc readme edits 2023-05-14 14:11:43 -04:00
852667f366 readme updates 2023-05-13 22:33:14 -04:00
4a504a334b clean up readme 2023-05-13 18:21:10 -04:00
2680f60cbd trigger mirror sync 2023-04-30 16:22:34 -05:00
0c983c9893 typo 2023-04-30 16:19:25 -05:00
5caff09ee5 macos prep 2023-04-30 16:09:55 -05:00
d20996f16a misc qol 2023-01-31 16:57:47 -07:00
6f1f912ac5 detail setting debian hostname 2023-01-29 17:56:00 -07:00
b4c2428833 starting to set up devterm config 2023-01-29 17:34:52 -07:00
543dee6e69 helix editor setup 2023-01-25 22:29:46 -07:00
a7346e97b0 chezmoiroot 2023-01-25 22:25:19 -07:00
995356e90f data dir 2023-01-25 22:22:14 -07:00
1458f4a7f9 drop submodules 2023-01-25 22:21:34 -07:00
6caa966967 instructions 2023-01-25 22:20:47 -07:00
e8846ec72b reboot: chezmoi 2023-01-25 22:13:24 -07:00
1dfcb6068f wip 2023-01-25 19:21:12 -07:00
c7dcdf7784 maint: stuff 2022-10-20 18:36:45 -07:00
2690012be5 gitconfig 2022-08-07 15:27:55 -07:00
c5bada8502 maint: mpd and new job prep 2022-07-05 09:33:44 -07:00
051aa4a9b2 maint: more wsl paths 2022-06-22 16:38:38 -07:00
bad48dfdcf new: go 2022-05-25 17:08:06 -07:00
a72e1b9e8a maint: drop opensuse 2022-05-25 16:24:17 -07:00
b1dd2c897a new: ripgrep show hidden files 2022-05-24 11:53:13 -07:00
766edf680a new: remarkable/gemini sync 2022-05-24 11:52:40 -07:00
cea84294d3 new scm gutter plugin 2022-03-15 14:43:31 -07:00
0a3d0c304b update $PATH 2022-03-14 22:49:23 -07:00
cde057f0e1 more gdscript tweaks 2022-03-14 16:40:18 -07:00
02e9424408 maint: godot tweaks 2022-03-14 06:59:10 -07:00
f4a3b65189 wslg updates 2022-02-13 11:07:53 -07:00
716df683af maint: wsl paths 2021-10-28 20:15:13 -07:00
7721652200 maint: misc env cleanup 2021-10-26 16:34:29 -07:00
fce3b73fbb maint: adding gwar instructions 2021-10-26 13:36:08 -07:00
0e13a23357 maint: setting up on wsl2 (opensuse tumbleweed) 2021-10-26 13:31:41 -07:00
2c7b5d0315 new: neovim config 2021-09-26 17:03:27 -07:00
5c619c4d01 maint: git switch 2021-08-10 15:46:12 -07:00
f864d13901 maint: vscode && cargo 2021-07-13 14:18:30 -07:00
82b970a105 maint: adding new rust project, gwar 2021-06-30 20:05:39 -07:00
85d491cf64 maint: back to macports 2021-06-06 15:33:27 -07:00
1b74b7beec maint: nix->macports
i had to stop using macports because my old personal workstation didn't
have enough disk space for xcode and friends.
2021-06-01 07:17:36 -07:00
3fd9076fe2 vim: excmd normal map dot-cmd 2021-04-10 19:32:43 -07:00
5add969f6e new: adding some dokku remotes 2021-04-07 21:37:49 -07:00
fad7921389 grep alias 2021-04-06 14:47:13 -07:00
9e16d24cb1 vim: hl search 2021-04-06 14:46:41 -07:00
220a6154e3 sorting vim plugin list 2021-03-29 10:38:58 -07:00
591dd4dfb2 maint: adding additional vimwikis 2021-03-28 09:58:24 -07:00
1f5c5040fb new: vimwiki 2021-03-22 10:30:54 -07:00
ecee9ab31d maint: cleaning up git repos 2021-03-20 20:50:27 -07:00
fb1d0dfa87 vim: new plugins 2021-03-19 12:32:42 -07:00
9388a62e0c maint: clean up gitconfig 2021-03-18 10:30:52 -07:00
0044a32fae vim tweaks 2021-03-14 15:57:19 -07:00
f66bda3b5a maint: new helper scripts 2021-03-14 11:22:40 -07:00
6911580c0f alerts: mv password into new dir 2021-02-27 16:02:25 -07:00
cdd4082fb8 maint: tmux status checks 2021-02-27 13:34:25 -07:00
14b3b6a5c0 minor updates 2021-02-15 14:14:02 -07:00
1441db7246 set default branch to "main" 2021-01-31 16:57:42 -07:00
40a8a2e50e wrapping up initial cut at new repo manager 2021-01-31 13:38:07 -07:00
5e6ada58ae pygit2 git workspace sync (way faster) 2021-01-30 22:56:21 -07:00
111 changed files with 3085 additions and 1661 deletions

1
.chezmoiroot Normal file
View file

@ -0,0 +1 @@
home

2
.gitignore vendored
View file

@ -107,3 +107,5 @@ dmypy.json
.pyre/
# End of https://www.gitignore.io/api/python
step.log

4
.gitmodules vendored
View file

@ -1,4 +0,0 @@
[submodule "dotbot"]
path = dotbot
url = https://github.com/anishathalye/dotbot
ignore = dirty

View file

@ -1,55 +1,29 @@
# dotfiles
```bash
$ git clone https://github.com/thermokarst/dotfiles.git ~/.dotfiles
$ cd ~/.dotfiles
$ git remote rename origin thermokarst
$ git clone https://github.com/chriskempson/base16-shell.git ~/.config/base16-shell
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
$ ./install
$ sh <(curl -L https://nixos.org/nix/install) --darwin-use-unencrypted-nix-store-volume
$ source ~/.zshrc
$ nix-env -i \
alacritty \
cmus \
docker \
elixir \
git \
htop \
nodejs \
postgresql \
reattach-to-user-namespace \
silver-searcher \
syncthing \
tmux \
vim \
wget \
xz \
yarn
$ base16_ashes
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
$ sudo sh Miniconda3-latest-MacOSX-x86_64.sh -p /opt/miniconda3 -b
$ sudo conda update conda
$ wget https://raw.githubusercontent.com/qiime2/environment-files/master/latest/staging/qiime2-latest-py36-osx-conda.yml
$ conda env create -n q2dev --file qiime2-latest-py36-osx-conda.yml
```
## optional vscode extensions
## 1. set the fqdn:
```bash
$ code --install-extension AndrsDC.base16-themes
$ code --install-extension ecmel.vscode-html-css
$ code --install-extension formulahendry.auto-close-tag
$ code --install-extension hollowtree.vue-snippets
$ code --install-extension JakeBecker.elixir-ls
$ code --install-extension karigari.chat
$ code --install-extension lextudio.restructuredtext
$ code --install-extension ms-python.python
$ code --install-extension ms-vscode.Go
$ code --install-extension ms-vsliveshare.vsliveshare
$ code --install-extension redhat.vscode-yaml
$ code --install-extension vscodevim.vim
$ code --install-extension wakatime.vscode-wakatime
# macos-specific commands
sudo scutil --set HostName $MY_HOSTNAME.local
sudo scutil --set LocalHostName $MY_HOSTNAME
sudo scutil --set ComputerName $MY_HOSTNAME
dscacheutil -flushcache
```
## 2. reboot
## 3. install https://typeof.net/Iosevka/
## 4. install `age` private key from password manager into `~/.key.txt`
## 5. bootstrap chezmoi:
```bash
sh -c "$(curl -fsLS get.chezmoi.io)" -- \
init \
git://pingo.thermokar.st/dotfiles \
--apply \
--guess-repo-url=false
```
## 6. restart shell

View file

@ -1,54 +0,0 @@
import json
import os
import subprocess
from qiime2_projects import PROJECTS as Q2_PROJECTS
from mds_projects import PROJECTS as MDS_PROJECTS
from personal_projects import PROJECTS as PERSONAL_PROJECTS
def fetch_projects(projects, base_fp, remotes):
for org, repos in projects.items():
base_fp = os.path.join('~', 'projects', base_fp)
base_fp = os.path.expanduser(base_fp)
for repo in repos:
print('repo: %s/%s' % (org, repo))
repo_fp = os.path.join(base_fp, repo)
repo_fp = os.path.expanduser(repo_fp)
if not os.path.isdir(repo_fp):
url = 'https://github.com/%s/%s' % (org, repo)
subprocess.run(['git', 'clone', url, repo_fp])
subprocess.run(['git', 'remote', 'rename', 'origin', org],
cwd=repo_fp)
for remote in remotes:
url = 'https://github.com/%s/%s' % (remote, repo)
try:
subprocess.run(['git', 'remote', 'add', remote, url],
cwd=repo_fp, check=True,
capture_output=True)
except subprocess.CalledProcessError as e:
msg = 'remote %s already exists' % (remote, )
if msg not in str(e.stderr):
raise
try:
subprocess.run(['git', 'fetch', remote],
cwd=repo_fp, check=True,
capture_output=True)
except subprocess.CalledProcessError as e:
if url not in str(e.stderr):
raise
else:
subprocess.run(['git', 'remote', 'remove', remote],
cwd=repo_fp)
if __name__ == '__main__':
remotes = ['thermokarst', 'ebolyen', 'gregcaporaso', 'ChrisKeefe',
'Oddant1', 'nbokulich', 'andrewsanchez', 'David-Rod']
fetch_projects(Q2_PROJECTS, 'qiime2', remotes)
fetch_projects(MDS_PROJECTS, 'mds', [])
fetch_projects(PERSONAL_PROJECTS, 'personal', [])

View file

@ -1,57 +0,0 @@
import json
import os
from qiime2_projects import PROJECTS as Q2_PROJECTS
from mds_projects import PROJECTS as MDS_PROJECTS
from personal_projects import PROJECTS as PERSONAL_PROJECTS
def render_vscode_workspace(projects, project_name, output_fp,
include_dotfiles=True, extra_dirs=None):
folders = []
for org, repos in projects.items():
for repo in repos:
fp = os.path.join('~', 'projects', project_name, repo)
fp = os.path.expanduser(fp)
folders.append({'name': repo.lower(),
'path': fp})
if include_dotfiles:
dotfile_fp = os.path.join(os.sep, 'Users', 'matthew', '.dotfiles')
folders.append({'name': 'dotfiles',
'path': dotfile_fp})
if extra_dirs is not None:
for name, path in extra_dirs.items():
fp = os.path.join('~', 'projects', project_name, path)
fp = os.path.expanduser(fp)
folders.append({'name': name,
'path': fp})
with open(output_fp, 'w') as fh:
json.dump({'folders': sorted(folders, key=lambda x: x['name'])},
fh, sort_keys=True, indent=4)
if __name__ == '__main__':
def qws(ws_number: int):
return render_vscode_workspace(
Q2_PROJECTS,
'qiime2',
os.path.join('vscode', 'qiime2-%d.code-workspace' % (ws_number, )),
extra_dirs={'data': 'data'},
)
[qws(i) for i in range(1, 4)]
render_vscode_workspace(
MDS_PROJECTS,
'mds',
os.path.join('vscode', 'mds.code-workspace'),
)
render_vscode_workspace(
PERSONAL_PROJECTS,
'personal',
os.path.join('vscode', 'personal.code-workspace'),
)

View file

@ -1,10 +0,0 @@
PROJECTS = {
'thermokarst': [
'ccdb-api',
'ccdb-web',
'tucotuco',
'fathm',
'hibernators',
'hibernators-web',
],
}

View file

@ -1,5 +0,0 @@
PROJECTS = {
'thermokarst': [
'elixir-class',
],
}

View file

@ -1,79 +0,0 @@
PROJECTS = {
'qiime2': [
'Keemei',
'action-library-packaging',
'busywork',
'data302',
'dev-docs',
'discourse-unhandled-tagger',
'docs',
'environment-files',
'library',
'logos',
'paper2',
'q2-alignment',
'q2-composition',
'q2-cutadapt',
'q2-dada2',
'q2-deblur',
'q2-demux',
'q2-diversity',
'q2-diversity-lib',
'q2-emperor',
'q2-feature-classifier',
'q2-feature-table',
'q2-fragment-insertion',
'q2-gneiss',
'q2-longitudinal',
'q2-metadata',
'q2-mystery-stew',
'q2-phylogeny',
'q2-quality-control',
'q2-quality-filter',
'q2-sample-classifier',
'q2-shogun',
'q2-taxa',
'q2-types',
'q2-vsearch',
'q2cli',
'q2cwl',
'q2galaxy',
'q2studio',
'q2templates',
'q2view',
'qiime2',
'qiime2.github.io',
'static-site-infrastructure',
'template-repo',
'view.qiime2.org',
'vm-playbooks',
'workshop-playbooks',
'workshops.qiime2.org',
],
'caporaso-lab': [
'caporaso-lab.github.io',
'pretrained-feature-classifiers',
'q2-phylogenomics',
'genome-sampler',
],
'gregcaporaso': [
'caporaso-lab-secrets',
'qiime2-meta-figures',
],
'biocore': [
'scikit-bio',
'deblur',
],
'thermokarst': [
'q2-no-op',
'busywork2_action_playground',
],
'bioconda': [
'bioconda-recipes',
]
}

62
data/personal.toml Normal file
View file

@ -0,0 +1,62 @@
# personal
[[workspace]]
path = "$HOME/projects/personal"
ssh_key_path = "$HOME/.ssh/id_ecdsa"
origin.base_addr = "ssh://git@git.thermokar.st/thermokarst"
origin.name = "pingo"
repos = [
"devlog",
"dsort",
"gitolite-admin",
"gpx-web-utils",
"gwar",
"leaving-hope",
"mini-lsm",
"pingo",
"talent-plan",
]
remotes = []
# personal-dokku
[[workspace]]
path = "$HOME/projects/personal"
ssh_key_path = "$HOME/.ssh/id_ecdsa"
origin.base_addr = "ssh://git@git.thermokar.st/thermokarst"
origin.name = "pingo"
repos = [
"akdillon",
"planner",
# dokku app name is thermokarst, not thermokar.st
"thermokar.st",
"zettel",
]
remotes = [{ name = "dokku", base_addr = "ssh://dokku@pingo.thermokar.st" }]
# mds
[[workspace]]
path = "$HOME/projects/mds"
ssh_key_path = "$HOME/.ssh/id_ecdsa"
origin.base_addr = "ssh://git@git.thermokar.st/thermokarst"
origin.name = "pingo"
repos = [
"arctic_hibernators_schema",
"bactdb",
"bactdb_data",
"ccdb-api",
"ccdb-old",
"ccdb-web",
"drf_ember_pagination",
"hibernators",
"hibernators-web",
"hymenobacterdotinfo",
]
remotes = []
# github-thermokarst-personal
[[workspace]]
path = "$HOME/projects/personal"
ssh_key_path = "$HOME/.ssh/id_ecdsa"
origin.base_addr = "ssh://git@github.com/thermokarst"
origin.name = "thermokarst"
repos = ["thermokarst"]
remotes = []

1
dotbot

@ -1 +0,0 @@
Subproject commit 5d83f9e797b1950199e127a8196803f5e33e0916

26
home/.chezmoi.toml.tmpl Normal file
View file

@ -0,0 +1,26 @@
{{- $hostname := .chezmoi.hostname -}}
{{- if eq .chezmoi.os "darwin" -}}
{{- $hostname := output "scutil" "--get" "ComputerName" | trim -}}
{{- end -}}
{{- $choices := list "personal" "work" -}}
{{- $hosttype := promptChoiceOnce . "hosttype" "What type of host are you on" $choices -}}
{{ $name := promptString "name" -}}
{{ $email_personal := promptString "email_personal" -}}
{{ $email_work := promptString "email_work" -}}
{{ $github_personal := promptString "github_personal" -}}
{{ $github_work := promptString "github_work" -}}
encryption = "age"
[age]
identity = "~/.key.txt"
recipient = "age1yd87u4ae86erpem2tynyl959ppc8a3jt4ztssykytzaklut6uvus5prt2t"
[data]
hostname = {{ $hostname | quote }}
hosttype = {{ $hosttype | quote }}
name = {{ $name | quote }}
email_personal = {{ $email_personal | quote }}
email_work = {{ $email_work | quote }}
github_personal = {{ $github_personal | quote }}
github_work = {{ $github_work | quote }}

View file

@ -0,0 +1,4 @@
[".config/zellij/plugins/room.wasm"]
type = "file"
url = "https://github.com/rvcas/room/releases/latest/download/room.wasm"
refreshPeriod = "168h"

10
home/.chezmoiignore.tmpl Normal file
View file

@ -0,0 +1,10 @@
{{- if eq .hosttype "work" }}
.zshprivate
{{- end }}
{{- if eq .hosttype "personal" }}
.apprc
.s2a_login
.work_packages
.work_paths
.zshklaviyo
{{- end }}

View file

@ -0,0 +1,45 @@
#!/usr/bin/env python
import argparse
import ast
import pathlib
def find_definition(fp, line):
symbols = {}
with fp.open() as fh:
tree = ast.parse(fh.read())
for node in ast.walk(tree):
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)):
start, end = compute_size(node)
symbols[node.name] = (start, end)
matches = []
for key, (start, end) in symbols.items():
if start <= line <= end:
matches.append(key)
return matches
def compute_size(node):
min_lineno = node.lineno
max_lineno = node.lineno
for node in ast.walk(node):
if hasattr(node, "lineno"):
min_lineno = min(min_lineno, node.lineno)
max_lineno = max(max_lineno, node.lineno)
return (min_lineno, max_lineno + 1)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('filepath', type=pathlib.Path)
parser.add_argument('line', type=int)
args = parser.parse_args()
symbols = find_definition(args.filepath, args.line)
for symbol in symbols:
print(symbol)

View file

@ -0,0 +1,27 @@
#!/usr/bin/env sh
set -e
tmpfile=$(mktemp)
zellij action dump-screen $tmpfile
status_line=$(cat $tmpfile | rg -e "(?:NOR|INS|SEL)\s+[\x{2800}-\x{28FF}]*\s+(\S*)\s[^│]* (\d+):*.*" -o --replace '$1 $2')
filename=$(echo $status_line | awk '{ print $1 }')
escaped_filename=$(echo "$filename" | sed 's/[\/&]/\\&/g')
line_number=$(echo $status_line | awk '{ print $2 }')
extension="${filename##*.}"
case "$extension" in
"py")
# this is pretty pytest-specific, but will probably be fine for the time being
test_runner=${PYTEST:-pytest}
cmd="get_python_function_at_position.py $filename $line_number | pytester.py - | sed 's/^/$test_runner /;s/$/ $escaped_filename/' | sh"
;;
*)
echo "uh oh!"
exit 1
;;
esac
full_cmd="echo \"running $cmd\" && $cmd"
zellij action new-pane --direction down -- zsh -c "$full_cmd"

View file

@ -0,0 +1,35 @@
#!/usr/bin/env python
import argparse
import os
import pathlib
import sys
def main():
parser = argparse.ArgumentParser()
parser.add_argument('symbols', type=argparse.FileType('r'))
args = parser.parse_args()
symbols = args.symbols.read()
try:
symbols = symbols.strip()
symbols = symbols.split("\n")
expressions = " and ".join(symbols)
if expressions:
print(f"-k \"{expressions}\"")
else:
print("")
finally:
args.symbols.close()
if __name__ == "__main__":
try:
main()
sys.stdout.flush()
except BrokenPipeError:
devnull = os.open(os.devnull, os.O_WRONLY)
os.dup2(devnull, sys.stdout.fileno())
sys.exit(1)

View file

@ -0,0 +1,23 @@
{{ if eq .hosttype "personal" -}}
model: ollama_chat/qwen2.5-coder:14b
{{ else -}}
model: ollama_chat/qwen2.5-coder:32b
{{- end }}
cache-prompts: true
gitignore: false
auto-commits: false
watch-files: true
subtree-only: true
stream: false
code-theme: "lightbulb"
user-input-color: "#a6e3a1"
tool-output-color: "#89b4fa"
tool-error-color: "#f38ba8"
tool-warning-color: "#fab387"
assistant-output-color: "#cba6f7"
completion-menu-color: "#cdd6f4"
completion-menu-bg-color: "#313244"
completion-menu-current-color: "#f9e2af"
completion-menu-current-bg-color: "#45475a"

View file

@ -0,0 +1,5 @@
[user]
email = {{ .email_work }}
[core]
sshCommand = "ssh -i ~/.ssh/id_rsa_work"

View file

@ -1,9 +1,23 @@
[include]
path = /opt/local/share/git-delta/themes.gitconfig
[user]
name = Matthew Dillon
email = matthewrdillon@gmail.com
name = {{ .name }}
email = {{ .email_personal }}
[core]
editor = vim
excludesfile = /Users/matthew/.gitignore_global
editor = hx
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
features = chameleon
navigate = true
light = false
side-by-side = true
true-color = always
colorMoved = default
syntax-theme = base16
[diff]
colorMoved = default
[color]
diff = auto
status = auto
@ -14,12 +28,9 @@
auto = 1
[merge]
summary = true
tool = vimdiff
conflictstyle = diff3
prompt = false
[alias]
unstage = reset HEAD
uncommit = reset --soft HEAD^
# http://stackoverflow.com/a/9074343
lg1 = log \
--graph \
@ -38,19 +49,21 @@
a = add
c = commit --verbose
ca = commit -a --verbose
m = commit --amend --verbose
d = diff
dc = diff --cached
s = status -s
co = checkout
cob = checkout -b
sw = switch
swc = switch -c
# list branches sorted by last modified
b = "!git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's-refs/heads/--'"
# list aliases
la = "!git config -l | grep alias | cut -c 7-"
[push]
default = upstream
[credential]
helper = osxkeychain
[pull]
rebase = true
[init]
defaultBranch = main
[includeIf "gitdir:~/Klaviyo/"]
path = ~/.gitconfig-work
[includeIf "gitdir:~/.klaviyocli/"]
path = ~/.gitconfig-work

14
home/dot_nbrc Normal file
View file

@ -0,0 +1,14 @@
#!/usr/bin/env bash
###############################################################################
# .nbrc
#
# Configuration file for `nb`, a command line note-taking, bookmarking,
# and knowledge base application with encryption, search, Git-backed syncing,
# and more in a single portable script.
#
# Edit this file manually or manage settings using the `nb settings`
# subcommand. Configuration options are set as environment variables, eg:
# export NB_ENCRYPTION_TOOL=gpg
#
# https://github.com/xwmx/nb
###############################################################################

0
home/dot_npmrc Normal file
View file

1
home/dot_ripgreprc Normal file
View file

@ -0,0 +1 @@
--glob=!.git/*

5
home/dot_zprofile.tmpl Normal file
View file

@ -0,0 +1,5 @@
# {{ .name }}
# {{ .email_personal }}
# Added by OrbStack: command-line tools and integration
source ~/.orbstack/shell/init.zsh 2>/dev/null || :

View file

@ -1,41 +1,19 @@
#
# Defines environment variables.
#
#
# Nix
#
export NIX_IGNORE_SYMLINK_STORE=1
#
# Browser
#
if [[ "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
#
# Editors
#
export EDITOR='vim'
export VISUAL='vim'
export EDITOR='hx'
export VISUAL='hx'
export PAGER='less'
#
# Language
#
if [[ -z "$LANG" ]]; then
export LANG='en_US.UTF-8'
fi
#
# Less
#
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X and -F (exit if the content fits on one screen) to enable it.
@ -46,10 +24,7 @@ if (( $+commands[lesspipe.sh] )); then
export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
fi
#
# Temporary Files
#
if [[ ! -d "$TMPDIR" ]]; then
export TMPDIR="/tmp/$USER"
mkdir -p -m 700 "$TMPDIR"
@ -60,24 +35,13 @@ if [[ ! -d "$TMPPREFIX" ]]; then
mkdir -p "$TMPPREFIX"
fi
#
# Paths
#
typeset -gU cdpath fpath mailpath path
# Set the the list of directories that cd searches.
# cdpath=(
# .
# $cdpath
# )
# Set the list of directories that Zsh searches for programs.
path=(
$path
# miniconda
/opt/miniconda3/bin
check_paths=(
# rust
$HOME/.cargo/bin
$HOME/.cargo/env
# npm
$HOME/.npm-packages/bin
@ -86,15 +50,38 @@ path=(
$HOME/.yarn/bin
$HOME/.config/yarn/global/node_modules/.bin
# rust
$HOME/.cargo/bin
# WSL
# /mnt/c/windows
# /mnt/c/windows/system32
# misc apps
/Applications/Postgres.app/Contents/Versions/12/bin/
/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/
# home
$HOME/bin
# go
/usr/local/go/bin
# pixi
$HOME/.pixi/bin
# homebrew
/opt/homebrew/bin
# uv
$HOME/.local/bin
{{ join .chezmoi.sourceDir "encrypted_dot_work_paths.age" | include | decrypt -}}
)
for fp in $check_paths; do
if [[ -s "$fp" ]]; then
path+=("$fp")
fi
done
export -U PATH
export CONDA_ENVS_PATH=$HOME/.conda/envs:/opt/miniconda3/envs
export CONDA_PKGS_DIRS=$HOME/.conda/pkgs
export XDG_CONFIG_HOME=$HOME/.config
export JJ_CONFIG=$XDG_CONFIG_HOME/jj/config.toml
export OLLAMA_API_BASE=http://127.0.0.1:11434
export RIPGREP_CONFIG_PATH=$HOME/.ripgreprc

78
home/dot_zshrc.tmpl Normal file
View file

@ -0,0 +1,78 @@
# Remove older command from the history if a duplicate is to be added.
setopt HIST_IGNORE_ALL_DUPS
# Set editor default keymap to emacs (`-e`) or vi (`-v`)
bindkey -v
# Remove path separator from WORDCHARS.
WORDCHARS=${WORDCHARS//[\/]}
# Disable automatic widget re-binding on each precmd. This can be set when
# zsh-users/zsh-autosuggestions is the last module in your ~/.zimrc.
ZSH_AUTOSUGGEST_MANUAL_REBIND=1
# Set what highlighters will be used.
# See https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets)
ZIM_HOME=${ZDOTDIR:-${HOME}}/.zim
# Download zimfw plugin manager if missing.
if [[ ! -e ${ZIM_HOME}/zimfw.zsh ]]; then
if (( ${+commands[curl]} )); then
curl -fsSL --create-dirs -o ${ZIM_HOME}/zimfw.zsh \
https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh
else
mkdir -p ${ZIM_HOME} && wget -nv -O ${ZIM_HOME}/zimfw.zsh \
https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh
fi
fi
# Install missing modules, and update ${ZIM_HOME}/init.zsh if missing or outdated.
if [[ ! ${ZIM_HOME}/init.zsh -nt ${ZDOTDIR:-${HOME}}/.zimrc ]]; then
source ${ZIM_HOME}/zimfw.zsh init -q
fi
# Initialize modules.
source ${ZIM_HOME}/init.zsh
# zsh-history-substring-search
zmodload -F zsh/terminfo +p:terminfo
# Bind ^[[A/^[[B manually so up/down works both before and after zle-line-init
for key ('^[[A' '^P' ${terminfo[kcuu1]}) bindkey ${key} history-substring-search-up
for key ('^[[B' '^N' ${terminfo[kcud1]}) bindkey ${key} history-substring-search-down
for key ('k') bindkey -M vicmd ${key} history-substring-search-up
for key ('j') bindkey -M vicmd ${key} history-substring-search-down
unset key
srcs=(
"/opt/miniforge3/etc/profile.d/conda.sh"
"/opt/miniforge3/etc/profile.d/mamba.sh"
"$HOME/.cargo/env"
"$HOME/.zshklaviyo"
"$HOME/.zshprivate"
)
for fp in $srcs; do
if [[ -s "$fp" ]]; then
source "$fp"
fi
done
alias devlog="cd ~/projects/personal/devlog && hx logs/$(date '+%Y-%m-%d').gmi && cd -"
eval "$(/opt/homebrew/bin/brew shellenv)"
eval "$(direnv hook zsh)"
eval "$(jj util completion zsh)"
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
function reldate() {
date -v "${1}" "+%Y-%m-%d"
}
[ "$TERM" = "xterm-kitty" ] && alias ssh="TERM=xterm ssh"
alias strip_jira="sed 's/\[\{0,1\}[a-zA-Z]*-[0-9]*\]\{0,1\}//g'"

View file

@ -0,0 +1,11 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYcS9JQTB5TkZGVTlFVEkx
T0pkZWtQeVA0OGJGcTJCTi9zK2o5VkNVQ3dnClFQdWVuWUpwOStuZTNqQ0N1dm9z
aUJsMktNd1N6MDhaN1RlYmZ1YVAwSE0KLS0tIElubG8wNVlOUXYzdTBieGpYRGFQ
RFhHSTM2Yit0WWVRVXpWcUhDVlU3a2sKwiBHRNxbfp6imiMrKPiBmSmq7W8qZOTY
dY6gANHwmwYahtVAFjLMySiTiheRCNqMRbkII8sbOZRvE0Nx7BneE2enHc+gX5kJ
PnOjbqmAYtR58FBhX3aL578cxkdMmEJC+lT4189ywPhWsuZb2j9ysbyNT4WwYcdk
NjY58Tpt/v5kDb5Roj6eMfoQiR3lBJEbPeP7QI9VlJNa1vP242bK7gYWLKMsTB4Q
pbdF+3dJ58khvCpdw3gNz11tBCE+qKeiPwQSj1ghPzeNOOM4fpPftdU8HPDWNMWh
qNJtqwwZl6FLCw==
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,10 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLVVd1WlkyUitSUWdFSzBG
ZnJWc3pYZmVGSzBxKzhRcmpnSGVjSnZVdUdZCmFDOHcySkhtVXd4L2tuaERDRjRq
UzBvY1h5cmhQM09JTzZpTEVJQVcyWDgKLS0tIE9pYm9CUzRFdjh4NkN3eWEvUE9V
KzZyUm1qMVA5Tm54c1UzZTdROW5qakUKBuIeMGy+Jff9ZUueA8j7zSu1M0LVYTHH
udpQLQIJXMS/UGRSWimfIn9jdRv1wrovPYE/hQJCLcuL3cf5iejZAmmKj/+3ODF0
cS4RAO/t8W2GFCXvoc2fiiqN6lu5Cq79aLMu7W5CtgOLB2nbov+WgapZ4T/5gogX
n7Ks/+M13urAphxvdBegNkDOLz7bkF0JJ8v3HcHS9JPZ9WkpOF4nBGycwdnYFplU
ws0nrpLwFg6QEmScqxtyh8G2ZXQgd+P3m3M68jtQkD6nK2Q=
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,9 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0R1ZRL1VJVW5URzZoZXJC
Wm1XcjVzeE5rdXBVVFJ4RmpVS3FqVE5LRmtjCjVia29aeklXUkRWWWpKY2hGRlJh
cWlRTlIyNlZqbUNoTmhaNzFoOWc2czQKLS0tIDUwTFJZVlcxVjRzOVV0QUJBdEZV
Mm5SamhSYlgvZUgxd1NlcFhRd2R3MDgKHuVfpKp1BQBx1xXur5x8N8Ohli0rYY6+
MmmKTDdYvuZKDqGrI+EpQw0yywLyUgeWfDUx5OSx1Z9PKMAU1+KYGAWB0WLYXafT
51UZSNj835YVZUChLKwLhthKg8KTl6h4FxE4K/88iHVOlRyVhuUAkZfGlGpL21uC
XgKaOnt/i5IFeGj459sR0io2m0sjCcZJA/3F1SBkVch3Lw1Xx4GrPmKq
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,7 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByV0J4aGFoR3hDSTJvNVp2
a1F1NzJmaERoYWwycStJeC9OS0tLaUp0aXpvCjhndzJrQmhRaWo4STRzdWtYTE94
Y0V4UHJ5UHlwaXZJOVJXSjdhMktvUWcKLS0tIDRtUHptRjYzT0RHQVJxT2RBbXNa
OUwxak52ZVhQL2psSUlpRVhHdzUxZjgKtcrEfrCDzTmLFhPNcnJ/PBMoiIxF0KAE
B2lhLyJ6+0OVTHMM6byVr+JnjnIXoA35537EUkQZ+A==
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,66 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3ZVVGeW9icVBjbXk4VnZo
aEQxVTNoTFpSSUlZcEpVRHp1VWRGdjBwYmtnCnk4L241UmUyb0QyZUVVVU50SmdR
ckNPWVFVM3dSWmxTeGRrL0hwZ0xqN1UKLS0tIFpjZkE1QWt3UFBPanY2WmtwckFw
bkoyZ3pWWXEzem50ZG1uY3E2MjB4Q3cK9gtlN1NleI5+MF5SJfO7AJPpTmej3f9g
JYRXjja1eBDkl91/pgjV5Q8k5lh+X+DrUWlZ6ddigFijBUt5gdjCpeK7ETKZhJuU
qSLEZo84/ICOBB1GJk1DMNpSTCqm17SMrTHCiue8NCuy+U22mlduuEbN3M9MzZkt
L5NrxNwzlHVBpznwNCJsFfK8tAsND+alAXZICDDD5NrGt2kKbUnu5DQoacxDVqt8
o95/7Ce6LS1/p/+/JvAehF+z/H9CySE5sRVZmuVrrgXwjOqvAvPNfc8cjWHmeN8m
SOEemrYjQkJ2aZpnj1Lj2h1pjqnM6VJP98WPZInXIbTIVDi+cOig/igR976U8aM6
oEBBMDNOxH3d/3smGL2qbaKb9ZHvJHxFG64p2Xc+mZ7Tr0xDvETsS8qEm/zF4dyz
RIKYUOEZJqLwwNRRd7kkFGHyMH/Exiz36oEYFjN9UGm5c3XEaKhVbn7PuEOyjdis
hdlZxfx9Ijz2mKib8wFqjgLLeIBFusomov2zeruXtOWUl8piNyZFrzmW/D8naIXL
2HlZt43ESJdmWTESMZvUYCnnz5JitQm8yvWTG+VNd/XI5jJAIuLOb2tZqKIkSHms
uPPp/Ihjt94lAxrE745zVPq6Sbz2lzUtMQ14yCWqRDobCh1mzbuixo9W3QOTDlcw
zUgxdF3cUIx290GZwVKqftbbOrlP3tpxDKvJRp/XG069zr21hwSDOzWqa1ZYzyOd
fssrDV3IocpGJs7qi0mTMJh5gSf9yBncudGxk+E3b6Z+a0XKKeFIgA7cBeeiyQJh
EL7A6BOzN1XSMat11fxogXoouB8hrnnPhAd2SyTimYjSLJ0c3xB35r0i2Xe3Zjp6
1YQEoo/i5WiHccEzy7QuyjqwxxvVoLazQBIUU154O/FMnOWs1jBcnL+AbdOBTiKC
gkFdYnm/ly3NqEGMbFCcpDsuQcPnqgZs7bh/6CZk4UB0v4LyCCoTfUoE1/22z6um
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
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,9 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaTUNxWEJoK1FsdzZma3Bv
N0ExZjl0L0wyME5SNFFLeWlwTmQxKzBhYzNnClJpcVljQ2tVQVE5V0dWM3pVM0l6
L25aNyszbUpJdkQ4U3BiMzJqZG1VMUkKLS0tIG1hU2F3T3JwWVlocDBaTytVSEhS
eGFRdS83K3Z5Q1k5SjZKaklGeFNzTVEKSfDagViJt1sc8+MBK7wuAFUzuOhTEeR/
n1npKF9k7EJ7zGlstQrIANUk6/k1ArIhJHCJizrMX1QqRAEsUKKZ+J/ckdD1uBEE
/GIPBwb43l01Yj162XLzT9+zjHL2E8BDRwQDHYd/xjgQTUHGrgpc2zHzWOzkIOf+
ASAe+lix9By7mfkiRA==
-----END AGE ENCRYPTED FILE-----

View file

@ -2,3 +2,5 @@
.DS_Store
.idea
.vscode
.envrc
.aider*

View file

@ -0,0 +1,14 @@
theme = "catppuccin_mocha"
[editor]
true-color = true
insert-final-newline = false
[editor.file-picker]
hidden = false
[keys.normal.space.m]
r = ":reload-all"
s = ":toggle-option soft-wrap.enable"
t = ":sh run_test_under_cursor"
y = ":sh zellij run -c -f -x 5% -y 5% --width 90% --height 90% -- bash ~/.config/helix/yazi-picker.sh open"

View file

@ -0,0 +1,44 @@
[[language]]
name = "rust"
[language-server.rust-analyzer.config.check]
command = "clippy"
{{ if eq .hosttype "work" -}}
[language-server.pyright]
command = "pyright-langserver"
args = ["--stdio"]
config = {}
environment = { "PYENV_VERSION" = "pyright" }
[[language]]
name = "python"
language-servers = ["pyright"]
{{- end }}
[language-server.roc-ls]
command = "roc_language_server"
[[language]]
name = "roc"
scope = "source.roc"
injection-regex = "roc"
file-types = ["roc"]
shebangs = ["roc"]
roots = []
comment-token = "#"
language-servers = ["roc-ls"]
indent = { tab-width = 2, unit = " " }
auto-format = true
formatter = { command = "roc", args =[ "format", "--stdin", "--stdout"]}
[language.auto-pairs]
'(' = ')'
'{' = '}'
'[' = ']'
'"' = '"'
[[grammar]]
name = "roc"
source = { git = "https://github.com/faldor20/tree-sitter-roc.git", rev = "ef46edd0c03ea30a22f7e92bc68628fb7231dc8a" }

View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
paths=$(yazi --chooser-file=/dev/stdout | while read -r; do printf "%q " "$REPLY"; done)
if [[ -n "$paths" ]]; then
zellij action toggle-floating-panes
zellij action write 27 # send <Escape> key
zellij action write-chars ":$1 $paths"
zellij action write 13 # send <Enter> key
else
zellij action toggle-floating-panes
fi

View file

@ -0,0 +1,37 @@
[user]
name = {{ .name | quote }}
email = {{ .email_personal | quote }}
[git]
push-bookmark-prefix = "{{ .github_personal }}_jj_"
private-commits = "description(glob:'private:*') | bookmarks('merge')"
[revset-aliases]
"stack()" = "trunk()..@"
"immutable_heads()" = "builtin_immutable_heads() | (trunk().. & ~mine())"
[ui]
default-command = ["log"]
pager = "delta"
[ui.diff]
format = "git"
[merge-tools.delta]
diff-args = [
"--color-only",
"--features", "chameleon",
"--navigate",
"--dark",
"--side-by-side",
"--true-color", "always",
"--syntax-theme", "base16",
"$left", "$right",
]
[[--scope]]
--when.repositories = ["~/Klaviyo"]
[--scope.user]
email = {{ .email_work | quote }}
[--scope.git]
push-bookmark-prefix = "2025_{{ .github_work }}_jj_"

View file

@ -0,0 +1,80 @@
font_family Iosevka Term Extralight
font_size 14.0
shell .
clipboard_control write-clipboard write-primary no-append
macos_option_as_alt yes
# Bell
enable_audio_bell no
visual_bell_duration 0.5
# The basic colors
foreground #cdd6f4
background #1e1e2e
selection_foreground #1e1e2e
selection_background #f5e0dc
# Cursor colors
cursor #f5e0dc
cursor_text_color #1e1e2e
# URL underline color when hovering with mouse
url_color #f5e0dc
# Kitty window border colors
active_border_color #b4befe
inactive_border_color #6c7086
bell_border_color #f9e2af
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #11111b
active_tab_background #cba6f7
inactive_tab_foreground #cdd6f4
inactive_tab_background #181825
tab_bar_background #11111b
# Colors for marks (marked text in the terminal)
mark1_foreground #1e1e2e
mark1_background #b4befe
mark2_foreground #1e1e2e
mark2_background #cba6f7
mark3_foreground #1e1e2e
mark3_background #74c7ec
# The 16 terminal colors
# black
color0 #45475a
color8 #585b70
# red
color1 #f38ba8
color9 #f38ba8
# green
color2 #a6e3a1
color10 #a6e3a1
# yellow
color3 #f9e2af
color11 #f9e2af
# blue
color4 #89b4fa
color12 #89b4fa
# magenta
color5 #f5c2e7
color13 #f5c2e7
# cyan
color6 #94e2d5
color14 #94e2d5
# white
color7 #bac2de
color15 #a6adc8

View file

@ -0,0 +1,10 @@
[
{
"name": "default",
"path": "/Users/matthew.dillon/notebook/klaviyo/work.klg"
},
{
"name": "work",
"path": "/Users/matthew.dillon/notebook/klaviyo/work.klg"
}
]

View file

@ -0,0 +1,5 @@
{
"diagnostics.globals": [
"vim"
]
}

View file

@ -0,0 +1,20 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- order matters here!
require("vim-options")
require("lazy").setup("plugins")

View file

@ -0,0 +1,25 @@
return {
"yetone/avante.nvim",
opts = {
provider = "copilot",
},
dependencies = {
{
"zbirenbaum/copilot.lua",
config = function()
require("copilot").setup({
copilot_node_command = vim.fn.expand("$HOME") .. "/.nvm/versions/node/v22.14.0/bin/node",
suggestion = { enabled = false },
panel = { enabled = false },
})
end,
},
{
"MeanderingProgrammer/render-markdown.nvim",
opts = {
file_types = { "markdown", "Avante" },
},
ft = { "markdown", "Avante" },
},
},
}

View file

@ -0,0 +1,9 @@
return {
"catppuccin/nvim",
lazy = false,
name = "catppuccin",
priority = 1000,
config = function()
vim.cmd.colorscheme("catppuccin")
end,
}

View file

@ -0,0 +1,38 @@
return {
{
"hrsh7th/cmp-nvim-lsp",
},
{
"zbirenbaum/copilot-cmp",
config = function()
require("copilot_cmp").setup()
end,
},
{
"hrsh7th/nvim-cmp",
config = function()
local cmp = require("cmp")
cmp.setup({
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert({
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
}),
sources = cmp.config.sources({
{ name = "nvim_lsp" },
}, {
{ name = "buffer" },
}, {
{ name = "copilot" },
}),
})
end,
},
}

View file

@ -0,0 +1,49 @@
return {
{
"williamboman/mason.nvim",
config = function()
require("mason").setup()
end,
},
{
"williamboman/mason-lspconfig.nvim",
config = function()
require("mason-lspconfig").setup({
ensure_installed = { "lua_ls", "marksman", "rust_analyzer", "pyright" },
})
end,
},
{
"neovim/nvim-lspconfig",
config = function()
local capabilities = require("cmp_nvim_lsp").default_capabilities()
local lspconfig = require("lspconfig")
-- lua
lspconfig.lua_ls.setup({
capabilities = capabilities,
})
-- markdown
lspconfig.marksman.setup({
capabilities = capabilities,
})
-- rust
lspconfig.rust_analyzer.setup({
capabilities = capabilities,
})
-- python
lspconfig.pyright.setup({
capabilities = capabilities,
})
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
vim.keymap.set({ "n", "v" }, "<leader>c", "", { desc = "+code" })
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, { desc = "action" })
vim.keymap.set({ "n", "v" }, "<leader>cr", vim.lsp.buf.rename, { desc = "rename" })
end,
},
}

View file

@ -0,0 +1,6 @@
return {
"nvim-lualine/lualine.nvim",
config = function()
require("lualine").setup()
end,
}

View file

@ -0,0 +1,12 @@
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
config = function()
vim.keymap.set("n", "<leader>e", ":Neotree toggle<CR>", { desc = "toggle file tree" })
end,
}

View file

@ -0,0 +1,14 @@
return {
"nvimtools/none-ls.nvim",
config = function()
local null_ls = require("null-ls")
null_ls.setup({
sources = {
null_ls.builtins.formatting.stylua,
},
})
vim.keymap.set("n", "<leader>cf", vim.lsp.buf.format, { desc = "format" })
end,
}

View file

@ -0,0 +1,39 @@
return {
{
"nvim-telescope/telescope.nvim",
tag = "0.1.8",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<leader>f", builtin.find_files, { desc = "find files" })
vim.keymap.set("n", "<leader>b", builtin.buffers, { desc = "find buffers" })
vim.keymap.set("n", "<leader>/", builtin.live_grep, { desc = "live grep" })
vim.keymap.set("n", "<leader>j", builtin.jumplist, { desc = "jumplist" })
local actions = require("telescope.actions")
require("telescope").setup({
defaults = {
mappings = {
i = {
["<esc>"] = actions.close,
},
},
},
})
end,
},
{
"nvim-telescope/telescope-ui-select.nvim",
config = function()
require("telescope").setup({
extensions = {
["ui-select"] = {
require("telescope.themes").get_dropdown({}),
},
},
})
require("telescope").load_extension("ui-select")
end,
},
}

View file

@ -0,0 +1,56 @@
return {
{
"nvim-neotest/neotest",
dependencies = {
"nvim-neotest/nvim-nio",
"nvim-lua/plenary.nvim",
"antoinemadec/FixCursorHold.nvim",
"nvim-treesitter/nvim-treesitter",
},
config = function()
require("neotest").setup({
adapters = {
require("neotest-python"),
require("rustaceanvim.neotest"),
},
})
vim.keymap.set({ "n", "v" }, "<leader>t", "", { desc = "+testing" })
vim.keymap.set({ "n", "v" }, "<leader>tt", function()
require("neotest").run.run(vim.fn.expand("%"))
end, { desc = "run file" })
vim.keymap.set({ "n", "v" }, "<leader>tT", function()
require("neotest").run.run(vim.uv.cwd())
end, { desc = "run all test files" })
vim.keymap.set({ "n", "v" }, "<leader>tr", function()
require("neotest").run.run()
end, { desc = "run nearest" })
vim.keymap.set({ "n", "v" }, "<leader>tl", function()
require("neotest").run.run_last()
end, { desc = "run last" })
vim.keymap.set({ "n", "v" }, "<leader>ts", function()
require("neotest").summary.toggle()
end, { desc = "toggle summary" })
vim.keymap.set({ "n", "v" }, "<leader>to", function()
require("neotest").output.open({ enter = true, auto_close = true })
end, { desc = "show output" })
vim.keymap.set({ "n", "v" }, "<leader>to", function()
require("neotest").output_panel.toggle()
end, { desc = "toggle output panel" })
vim.keymap.set({ "n", "v" }, "<leader>ts", function()
require("neotest").run.stop()
end, { desc = "stop" })
vim.keymap.set({ "n", "v" }, "<leader>tw", function()
require("neotest").watch.toggle(vim.fn.expand("%"))
end, { desc = "toggle watch" })
end,
},
{
"nvim-neotest/neotest-python",
},
{
"mrcjkb/rustaceanvim",
version = "^5",
lazy = false,
},
}

View file

@ -0,0 +1,15 @@
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local configs = require("nvim-treesitter.configs")
configs.setup({
ensure_installed = { "lua", "vim", "query", "javascript", "html", "python", "rust", "markdown" },
sync_install = false,
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
})
end,
}

View file

@ -0,0 +1,14 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
opts = {},
keys = {
{
"<leader>?",
function()
require("which-key").show({ global = false })
end,
desc = "buffer local keymaps (which-key)",
},
},
}

View file

@ -0,0 +1,11 @@
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
vim.o.cursorline = true
vim.o.expandtab = true
vim.o.number = true
vim.o.shiftwidth = 2
vim.o.softtabstop = 2
vim.o.tabstop = 2
vim.keymap.set({ "n", "v" }, "<leader>y", "\"*y", { desc = "yank to clipboard" })

View file

@ -0,0 +1,3 @@
defaults:
max_columns: 150
theme: "catppuccin-mocha"

View file

@ -0,0 +1,24 @@
### catppuccin
set color_cmdline_bg=default
set color_cmdline_fg=254
set color_error=211
set color_info=223
set color_separator=117
set color_statusline_bg=default
set color_statusline_fg=254
set color_titleline_bg=151
set color_titleline_fg=16
set color_win_bg=default
set color_win_cur=117
set color_win_cur_sel_bg=151
set color_win_cur_sel_fg=16
set color_win_dir=254
set color_win_fg=254
set color_win_inactive_cur_sel_bg=181
set color_win_inactive_cur_sel_fg=235
set color_win_inactive_sel_bg=152
set color_win_inactive_sel_fg=235
set color_win_sel_bg=117
set color_win_sel_fg=235
set color_win_title_bg=default
set color_win_title_fg=117

View file

@ -0,0 +1,5 @@
style: {{ .chezmoi.homeDir }}/.config/glow/themes/catppuccin-mocha.json
mouse: false
pager: false
width: 80
all: false

View file

@ -0,0 +1,199 @@
{
"document": {
"block_prefix": "\n",
"block_suffix": "\n",
"color": "#cdd6f4",
"margin": 2
},
"block_quote": {
"indent": 1,
"indent_token": "│ "
},
"paragraph": {},
"list": {
"level_indent": 2
},
"heading": {
"block_suffix": "\n",
"color": "#cdd6f4",
"bold": true
},
"h1": {
"prefix": "▓▓▓ ",
"suffix": " ",
"color": "#f38ba8",
"bold": true
},
"h2": {
"prefix": "▓▓▓▓ ",
"color": "#fab387"
},
"h3": {
"prefix": "▓▓▓▓▓ ",
"color": "#f9e2af"
},
"h4": {
"prefix": "▓▓▓▓▓▓ ",
"color": "#a6e3a1"
},
"h5": {
"prefix": "▓▓▓▓▓▓▓ ",
"color": "#74c7ec"
},
"h6": {
"prefix": "▓▓▓▓▓▓▓▓ ",
"color": "#b4befe"
},
"text": {},
"strikethrough": {
"crossed_out": true
},
"emph": {
"italic": true
},
"strong": {
"bold": true
},
"hr": {
"color": "#6c7086",
"format": "\n--------\n"
},
"item": {
"block_prefix": "• "
},
"enumeration": {
"block_prefix": ". "
},
"task": {
"ticked": "[✓] ",
"unticked": "[ ] "
},
"link": {
"color": "#89b4fa",
"underline": true
},
"link_text": {
"color": "#b4befe",
"bold": true
},
"image": {
"color": "#89b4fa",
"underline": true
},
"image_text": {
"color": "#b4befe",
"format": "Image: {{.text}} →"
},
"code": {
"prefix": " ",
"suffix": " ",
"color": "#eba0ac",
"background_color": "#181825"
},
"code_block": {
"color": "#181825",
"margin": 2,
"chroma": {
"text": {
"color": "#cdd6f4"
},
"error": {
"color": "#cdd6f4",
"background_color": "#f38ba8"
},
"comment": {
"color": "#6c7086"
},
"comment_preproc": {
"color": "#89b4fa"
},
"keyword": {
"color": "#cba6f7"
},
"keyword_reserved": {
"color": "#cba6f7"
},
"keyword_namespace": {
"color": "#f9e2af"
},
"keyword_type": {
"color": "#f9e2af"
},
"operator": {
"color": "#89dceb"
},
"punctuation": {
"color": "#9399b2"
},
"name": {
"color": "#b4befe"
},
"name_builtin": {
"color": "#fab387"
},
"name_tag": {
"color": "#cba6f7"
},
"name_attribute": {
"color": "#f9e2af"
},
"name_class": {
"color": "#f9e2af"
},
"name_constant": {
"color": "#f9e2af"
},
"name_decorator": {
"color": "#f5c2e7"
},
"name_exception": {},
"name_function": {
"color": "#89b4fa"
},
"name_other": {},
"literal": {},
"literal_number": {
"color": "#fab387"
},
"literal_date": {},
"literal_string": {
"color": "#a6e3a1"
},
"literal_string_escape": {
"color": "#f5c2e7"
},
"generic_deleted": {
"color": "#f38ba8"
},
"generic_emph": {
"color": "#cdd6f4",
"italic": true
},
"generic_inserted": {
"color": "#a6e3a1"
},
"generic_strong": {
"color": "#cdd6f4",
"bold": true
},
"generic_subheading": {
"color": "#89dceb"
},
"background": {
"background_color": "#181825"
}
}
},
"table": {
"center_separator": "┼",
"column_separator": "│",
"row_separator": "─"
},
"definition_list": {},
"definition_term": {},
"definition_description": {
"block_prefix": "\n🠶 "
},
"html_block": {},
"html_span": {}
}

View file

@ -0,0 +1,9 @@
aliases:
dp: deployments
sec: v1/secrets
jo: jobs
cr: clusterroles
crb: clusterrolebindings
ro: roles
rb: rolebindings
np: networkpolicies

View file

@ -0,0 +1,44 @@
k9s:
liveViewAutoRefresh: false
screenDumpDir: {{ .chezmoi.homeDir }}/Library/Application Support/k9s/screen-dumps
refreshRate: 2
maxConnRetry: 5
readOnly: false
noExitOnCtrlC: false
portForwardAddress: localhost
ui:
skin: catppuccin-mocha
enableMouse: false
headless: false
logoless: false
crumbsless: false
reactive: false
noIcons: false
defaultsToFullScreen: false
skipLatestRevCheck: false
disablePodCounting: false
shellPod:
image: busybox:1.35.0
namespace: default
limits:
cpu: 100m
memory: 100Mi
imageScans:
enable: false
exclusions:
namespaces: []
labels: {}
logger:
tail: 100
buffer: 5000
sinceSeconds: -1
textWrap: false
disableAutoscroll: false
showTime: false
thresholds:
cpu:
critical: 90
warn: 70
memory:
critical: 90
warn: 70

View file

@ -0,0 +1,100 @@
k9s:
body:
fgColor: '#c6d0f5'
bgColor: default
logoColor: '#ca9ee6'
prompt:
fgColor: '#c6d0f5'
bgColor: default
suggestColor: '#8caaee'
help:
fgColor: '#c6d0f5'
bgColor: default
sectionColor: '#a6d189'
keyColor: '#8caaee'
numKeyColor: '#ea999c'
frame:
title:
fgColor: '#81c8be'
bgColor: default
highlightColor: '#f4b8e4'
counterColor: '#e5c890'
filterColor: '#a6d189'
border:
fgColor: '#ca9ee6'
focusColor: '#babbf1'
menu:
fgColor: '#c6d0f5'
keyColor: '#8caaee'
numKeyColor: '#ea999c'
crumbs:
fgColor: '#303446'
bgColor: default
activeColor: '#eebebe'
status:
newColor: '#8caaee'
modifyColor: '#babbf1'
addColor: '#a6d189'
pendingColor: '#ef9f76'
errorColor: '#e78284'
highlightColor: '#99d1db'
killColor: '#ca9ee6'
completedColor: '#737994'
info:
fgColor: '#ef9f76'
sectionColor: '#c6d0f5'
views:
table:
fgColor: '#c6d0f5'
bgColor: default
cursorFgColor: '#414559'
cursorBgColor: '#51576d'
markColor: '#f2d5cf'
header:
fgColor: '#e5c890'
bgColor: default
sorterColor: '#99d1db'
xray:
fgColor: '#c6d0f5'
bgColor: default
cursorColor: '#51576d'
cursorTextColor: '#303446'
graphicColor: '#f4b8e4'
charts:
bgColor: default
chartBgColor: default
dialBgColor: default
defaultDialColors:
- '#a6d189'
- '#e78284'
defaultChartColors:
- '#a6d189'
- '#e78284'
resourceColors:
cpu:
- '#ca9ee6'
- '#8caaee'
mem:
- '#e5c890'
- '#ef9f76'
yaml:
keyColor: '#8caaee'
valueColor: '#c6d0f5'
colonColor: '#a5adce'
logs:
fgColor: '#c6d0f5'
bgColor: default
indicator:
fgColor: '#babbf1'
bgColor: default
toggleOnColor: '#a6d189'
toggleOffColor: '#a5adce'
dialog:
fgColor: '#e5c890'
bgColor: default
buttonFgColor: '#303446'
buttonBgColor: default
buttonFocusFgColor: '#303446'
buttonFocusBgColor: '#f4b8e4'
labelFgColor: '#f2d5cf'
fieldFgColor: '#c6d0f5'

View file

@ -0,0 +1,100 @@
k9s:
body:
fgColor: '#c6d0f5'
bgColor: '#303446'
logoColor: '#ca9ee6'
prompt:
fgColor: '#c6d0f5'
bgColor: '#292c3c'
suggestColor: '#8caaee'
help:
fgColor: '#c6d0f5'
bgColor: '#303446'
sectionColor: '#a6d189'
keyColor: '#8caaee'
numKeyColor: '#ea999c'
frame:
title:
fgColor: '#81c8be'
bgColor: '#303446'
highlightColor: '#f4b8e4'
counterColor: '#e5c890'
filterColor: '#a6d189'
border:
fgColor: '#ca9ee6'
focusColor: '#babbf1'
menu:
fgColor: '#c6d0f5'
keyColor: '#8caaee'
numKeyColor: '#ea999c'
crumbs:
fgColor: '#303446'
bgColor: '#ea999c'
activeColor: '#eebebe'
status:
newColor: '#8caaee'
modifyColor: '#babbf1'
addColor: '#a6d189'
pendingColor: '#ef9f76'
errorColor: '#e78284'
highlightColor: '#99d1db'
killColor: '#ca9ee6'
completedColor: '#737994'
info:
fgColor: '#ef9f76'
sectionColor: '#c6d0f5'
views:
table:
fgColor: '#c6d0f5'
bgColor: '#303446'
cursorFgColor: '#414559'
cursorBgColor: '#51576d'
markColor: '#f2d5cf'
header:
fgColor: '#e5c890'
bgColor: '#303446'
sorterColor: '#99d1db'
xray:
fgColor: '#c6d0f5'
bgColor: '#303446'
cursorColor: '#51576d'
cursorTextColor: '#303446'
graphicColor: '#f4b8e4'
charts:
bgColor: '#303446'
chartBgColor: '#303446'
dialBgColor: '#303446'
defaultDialColors:
- '#a6d189'
- '#e78284'
defaultChartColors:
- '#a6d189'
- '#e78284'
resourceColors:
cpu:
- '#ca9ee6'
- '#8caaee'
mem:
- '#e5c890'
- '#ef9f76'
yaml:
keyColor: '#8caaee'
valueColor: '#c6d0f5'
colonColor: '#a5adce'
logs:
fgColor: '#c6d0f5'
bgColor: '#303446'
indicator:
fgColor: '#babbf1'
bgColor: '#303446'
toggleOnColor: '#a6d189'
toggleOffColor: '#a5adce'
dialog:
fgColor: '#e5c890'
bgColor: '#949cbb'
buttonFgColor: '#303446'
buttonBgColor: '#838ba7'
buttonFocusFgColor: '#303446'
buttonFocusBgColor: '#f4b8e4'
labelFgColor: '#f2d5cf'
fieldFgColor: '#c6d0f5'

View file

@ -0,0 +1,100 @@
k9s:
body:
fgColor: '#4c4f69'
bgColor: default
logoColor: '#8839ef'
prompt:
fgColor: '#4c4f69'
bgColor: default
suggestColor: '#1e66f5'
help:
fgColor: '#4c4f69'
bgColor: default
sectionColor: '#40a02b'
keyColor: '#1e66f5'
numKeyColor: '#e64553'
frame:
title:
fgColor: '#179299'
bgColor: default
highlightColor: '#ea76cb'
counterColor: '#df8e1d'
filterColor: '#40a02b'
border:
fgColor: '#8839ef'
focusColor: '#7287fd'
menu:
fgColor: '#4c4f69'
keyColor: '#1e66f5'
numKeyColor: '#e64553'
crumbs:
fgColor: '#eff1f5'
bgColor: default
activeColor: '#dd7878'
status:
newColor: '#1e66f5'
modifyColor: '#7287fd'
addColor: '#40a02b'
pendingColor: '#fe640b'
errorColor: '#d20f39'
highlightColor: '#04a5e5'
killColor: '#8839ef'
completedColor: '#9ca0b0'
info:
fgColor: '#fe640b'
sectionColor: '#4c4f69'
views:
table:
fgColor: '#4c4f69'
bgColor: default
cursorFgColor: '#ccd0da'
cursorBgColor: '#bcc0cc'
markColor: '#dc8a78'
header:
fgColor: '#df8e1d'
bgColor: default
sorterColor: '#04a5e5'
xray:
fgColor: '#4c4f69'
bgColor: default
cursorColor: '#bcc0cc'
cursorTextColor: '#eff1f5'
graphicColor: '#ea76cb'
charts:
bgColor: default
chartBgColor: default
dialBgColor: default
defaultDialColors:
- '#40a02b'
- '#d20f39'
defaultChartColors:
- '#40a02b'
- '#d20f39'
resourceColors:
cpu:
- '#8839ef'
- '#1e66f5'
mem:
- '#df8e1d'
- '#fe640b'
yaml:
keyColor: '#1e66f5'
valueColor: '#4c4f69'
colonColor: '#6c6f85'
logs:
fgColor: '#4c4f69'
bgColor: default
indicator:
fgColor: '#7287fd'
bgColor: default
toggleOnColor: '#40a02b'
toggleOffColor: '#6c6f85'
dialog:
fgColor: '#df8e1d'
bgColor: default
buttonFgColor: '#eff1f5'
buttonBgColor: default
buttonFocusFgColor: '#eff1f5'
buttonFocusBgColor: '#ea76cb'
labelFgColor: '#dc8a78'
fieldFgColor: '#4c4f69'

View file

@ -0,0 +1,100 @@
k9s:
body:
fgColor: '#4c4f69'
bgColor: '#eff1f5'
logoColor: '#8839ef'
prompt:
fgColor: '#4c4f69'
bgColor: '#e6e9ef'
suggestColor: '#1e66f5'
help:
fgColor: '#4c4f69'
bgColor: '#eff1f5'
sectionColor: '#40a02b'
keyColor: '#1e66f5'
numKeyColor: '#e64553'
frame:
title:
fgColor: '#179299'
bgColor: '#eff1f5'
highlightColor: '#ea76cb'
counterColor: '#df8e1d'
filterColor: '#40a02b'
border:
fgColor: '#8839ef'
focusColor: '#7287fd'
menu:
fgColor: '#4c4f69'
keyColor: '#1e66f5'
numKeyColor: '#e64553'
crumbs:
fgColor: '#eff1f5'
bgColor: '#e64553'
activeColor: '#dd7878'
status:
newColor: '#1e66f5'
modifyColor: '#7287fd'
addColor: '#40a02b'
pendingColor: '#fe640b'
errorColor: '#d20f39'
highlightColor: '#04a5e5'
killColor: '#8839ef'
completedColor: '#9ca0b0'
info:
fgColor: '#fe640b'
sectionColor: '#4c4f69'
views:
table:
fgColor: '#4c4f69'
bgColor: '#eff1f5'
cursorFgColor: '#ccd0da'
cursorBgColor: '#bcc0cc'
markColor: '#dc8a78'
header:
fgColor: '#df8e1d'
bgColor: '#eff1f5'
sorterColor: '#04a5e5'
xray:
fgColor: '#4c4f69'
bgColor: '#eff1f5'
cursorColor: '#bcc0cc'
cursorTextColor: '#eff1f5'
graphicColor: '#ea76cb'
charts:
bgColor: '#eff1f5'
chartBgColor: '#eff1f5'
dialBgColor: '#eff1f5'
defaultDialColors:
- '#40a02b'
- '#d20f39'
defaultChartColors:
- '#40a02b'
- '#d20f39'
resourceColors:
cpu:
- '#8839ef'
- '#1e66f5'
mem:
- '#df8e1d'
- '#fe640b'
yaml:
keyColor: '#1e66f5'
valueColor: '#4c4f69'
colonColor: '#6c6f85'
logs:
fgColor: '#4c4f69'
bgColor: '#eff1f5'
indicator:
fgColor: '#7287fd'
bgColor: '#eff1f5'
toggleOnColor: '#40a02b'
toggleOffColor: '#6c6f85'
dialog:
fgColor: '#df8e1d'
bgColor: '#7c7f93'
buttonFgColor: '#eff1f5'
buttonBgColor: '#8c8fa1'
buttonFocusFgColor: '#eff1f5'
buttonFocusBgColor: '#ea76cb'
labelFgColor: '#dc8a78'
fieldFgColor: '#4c4f69'

View file

@ -0,0 +1,100 @@
k9s:
body:
fgColor: '#cad3f5'
bgColor: default
logoColor: '#c6a0f6'
prompt:
fgColor: '#cad3f5'
bgColor: default
suggestColor: '#8aadf4'
help:
fgColor: '#cad3f5'
bgColor: default
sectionColor: '#a6da95'
keyColor: '#8aadf4'
numKeyColor: '#ee99a0'
frame:
title:
fgColor: '#8bd5ca'
bgColor: default
highlightColor: '#f5bde6'
counterColor: '#eed49f'
filterColor: '#a6da95'
border:
fgColor: '#c6a0f6'
focusColor: '#b7bdf8'
menu:
fgColor: '#cad3f5'
keyColor: '#8aadf4'
numKeyColor: '#ee99a0'
crumbs:
fgColor: '#24273a'
bgColor: default
activeColor: '#f0c6c6'
status:
newColor: '#8aadf4'
modifyColor: '#b7bdf8'
addColor: '#a6da95'
pendingColor: '#f5a97f'
errorColor: '#ed8796'
highlightColor: '#91d7e3'
killColor: '#c6a0f6'
completedColor: '#6e738d'
info:
fgColor: '#f5a97f'
sectionColor: '#cad3f5'
views:
table:
fgColor: '#cad3f5'
bgColor: default
cursorFgColor: '#363a4f'
cursorBgColor: '#494d64'
markColor: '#f4dbd6'
header:
fgColor: '#eed49f'
bgColor: default
sorterColor: '#91d7e3'
xray:
fgColor: '#cad3f5'
bgColor: default
cursorColor: '#494d64'
cursorTextColor: '#24273a'
graphicColor: '#f5bde6'
charts:
bgColor: default
chartBgColor: default
dialBgColor: default
defaultDialColors:
- '#a6da95'
- '#ed8796'
defaultChartColors:
- '#a6da95'
- '#ed8796'
resourceColors:
cpu:
- '#c6a0f6'
- '#8aadf4'
mem:
- '#eed49f'
- '#f5a97f'
yaml:
keyColor: '#8aadf4'
valueColor: '#cad3f5'
colonColor: '#a5adcb'
logs:
fgColor: '#cad3f5'
bgColor: default
indicator:
fgColor: '#b7bdf8'
bgColor: default
toggleOnColor: '#a6da95'
toggleOffColor: '#a5adcb'
dialog:
fgColor: '#eed49f'
bgColor: default
buttonFgColor: '#24273a'
buttonBgColor: default
buttonFocusFgColor: '#24273a'
buttonFocusBgColor: '#f5bde6'
labelFgColor: '#f4dbd6'
fieldFgColor: '#cad3f5'

View file

@ -0,0 +1,100 @@
k9s:
body:
fgColor: '#cad3f5'
bgColor: '#24273a'
logoColor: '#c6a0f6'
prompt:
fgColor: '#cad3f5'
bgColor: '#1e2030'
suggestColor: '#8aadf4'
help:
fgColor: '#cad3f5'
bgColor: '#24273a'
sectionColor: '#a6da95'
keyColor: '#8aadf4'
numKeyColor: '#ee99a0'
frame:
title:
fgColor: '#8bd5ca'
bgColor: '#24273a'
highlightColor: '#f5bde6'
counterColor: '#eed49f'
filterColor: '#a6da95'
border:
fgColor: '#c6a0f6'
focusColor: '#b7bdf8'
menu:
fgColor: '#cad3f5'
keyColor: '#8aadf4'
numKeyColor: '#ee99a0'
crumbs:
fgColor: '#24273a'
bgColor: '#ee99a0'
activeColor: '#f0c6c6'
status:
newColor: '#8aadf4'
modifyColor: '#b7bdf8'
addColor: '#a6da95'
pendingColor: '#f5a97f'
errorColor: '#ed8796'
highlightColor: '#91d7e3'
killColor: '#c6a0f6'
completedColor: '#6e738d'
info:
fgColor: '#f5a97f'
sectionColor: '#cad3f5'
views:
table:
fgColor: '#cad3f5'
bgColor: '#24273a'
cursorFgColor: '#363a4f'
cursorBgColor: '#494d64'
markColor: '#f4dbd6'
header:
fgColor: '#eed49f'
bgColor: '#24273a'
sorterColor: '#91d7e3'
xray:
fgColor: '#cad3f5'
bgColor: '#24273a'
cursorColor: '#494d64'
cursorTextColor: '#24273a'
graphicColor: '#f5bde6'
charts:
bgColor: '#24273a'
chartBgColor: '#24273a'
dialBgColor: '#24273a'
defaultDialColors:
- '#a6da95'
- '#ed8796'
defaultChartColors:
- '#a6da95'
- '#ed8796'
resourceColors:
cpu:
- '#c6a0f6'
- '#8aadf4'
mem:
- '#eed49f'
- '#f5a97f'
yaml:
keyColor: '#8aadf4'
valueColor: '#cad3f5'
colonColor: '#a5adcb'
logs:
fgColor: '#cad3f5'
bgColor: '#24273a'
indicator:
fgColor: '#b7bdf8'
bgColor: '#24273a'
toggleOnColor: '#a6da95'
toggleOffColor: '#a5adcb'
dialog:
fgColor: '#eed49f'
bgColor: '#939ab7'
buttonFgColor: '#24273a'
buttonBgColor: '#8087a2'
buttonFocusFgColor: '#24273a'
buttonFocusBgColor: '#f5bde6'
labelFgColor: '#f4dbd6'
fieldFgColor: '#cad3f5'

View file

@ -0,0 +1,100 @@
k9s:
body:
fgColor: '#cdd6f4'
bgColor: default
logoColor: '#cba6f7'
prompt:
fgColor: '#cdd6f4'
bgColor: default
suggestColor: '#89b4fa'
help:
fgColor: '#cdd6f4'
bgColor: default
sectionColor: '#a6e3a1'
keyColor: '#89b4fa'
numKeyColor: '#eba0ac'
frame:
title:
fgColor: '#94e2d5'
bgColor: default
highlightColor: '#f5c2e7'
counterColor: '#f9e2af'
filterColor: '#a6e3a1'
border:
fgColor: '#cba6f7'
focusColor: '#b4befe'
menu:
fgColor: '#cdd6f4'
keyColor: '#89b4fa'
numKeyColor: '#eba0ac'
crumbs:
fgColor: '#1e1e2e'
bgColor: default
activeColor: '#f2cdcd'
status:
newColor: '#89b4fa'
modifyColor: '#b4befe'
addColor: '#a6e3a1'
pendingColor: '#fab387'
errorColor: '#f38ba8'
highlightColor: '#89dceb'
killColor: '#cba6f7'
completedColor: '#6c7086'
info:
fgColor: '#fab387'
sectionColor: '#cdd6f4'
views:
table:
fgColor: '#cdd6f4'
bgColor: default
cursorFgColor: '#313244'
cursorBgColor: '#45475a'
markColor: '#f5e0dc'
header:
fgColor: '#f9e2af'
bgColor: default
sorterColor: '#89dceb'
xray:
fgColor: '#cdd6f4'
bgColor: default
cursorColor: '#45475a'
cursorTextColor: '#1e1e2e'
graphicColor: '#f5c2e7'
charts:
bgColor: default
chartBgColor: default
dialBgColor: default
defaultDialColors:
- '#a6e3a1'
- '#f38ba8'
defaultChartColors:
- '#a6e3a1'
- '#f38ba8'
resourceColors:
cpu:
- '#cba6f7'
- '#89b4fa'
mem:
- '#f9e2af'
- '#fab387'
yaml:
keyColor: '#89b4fa'
valueColor: '#cdd6f4'
colonColor: '#a6adc8'
logs:
fgColor: '#cdd6f4'
bgColor: default
indicator:
fgColor: '#b4befe'
bgColor: default
toggleOnColor: '#a6e3a1'
toggleOffColor: '#a6adc8'
dialog:
fgColor: '#f9e2af'
bgColor: default
buttonFgColor: '#1e1e2e'
buttonBgColor: default
buttonFocusFgColor: '#1e1e2e'
buttonFocusBgColor: '#f5c2e7'
labelFgColor: '#f5e0dc'
fieldFgColor: '#cdd6f4'

View file

@ -0,0 +1,100 @@
k9s:
body:
fgColor: '#cdd6f4'
bgColor: '#1e1e2e'
logoColor: '#cba6f7'
prompt:
fgColor: '#cdd6f4'
bgColor: '#181825'
suggestColor: '#89b4fa'
help:
fgColor: '#cdd6f4'
bgColor: '#1e1e2e'
sectionColor: '#a6e3a1'
keyColor: '#89b4fa'
numKeyColor: '#eba0ac'
frame:
title:
fgColor: '#94e2d5'
bgColor: '#1e1e2e'
highlightColor: '#f5c2e7'
counterColor: '#f9e2af'
filterColor: '#a6e3a1'
border:
fgColor: '#cba6f7'
focusColor: '#b4befe'
menu:
fgColor: '#cdd6f4'
keyColor: '#89b4fa'
numKeyColor: '#eba0ac'
crumbs:
fgColor: '#1e1e2e'
bgColor: '#eba0ac'
activeColor: '#f2cdcd'
status:
newColor: '#89b4fa'
modifyColor: '#b4befe'
addColor: '#a6e3a1'
pendingColor: '#fab387'
errorColor: '#f38ba8'
highlightColor: '#89dceb'
killColor: '#cba6f7'
completedColor: '#6c7086'
info:
fgColor: '#fab387'
sectionColor: '#cdd6f4'
views:
table:
fgColor: '#cdd6f4'
bgColor: '#1e1e2e'
cursorFgColor: '#313244'
cursorBgColor: '#45475a'
markColor: '#f5e0dc'
header:
fgColor: '#f9e2af'
bgColor: '#1e1e2e'
sorterColor: '#89dceb'
xray:
fgColor: '#cdd6f4'
bgColor: '#1e1e2e'
cursorColor: '#45475a'
cursorTextColor: '#1e1e2e'
graphicColor: '#f5c2e7'
charts:
bgColor: '#1e1e2e'
chartBgColor: '#1e1e2e'
dialBgColor: '#1e1e2e'
defaultDialColors:
- '#a6e3a1'
- '#f38ba8'
defaultChartColors:
- '#a6e3a1'
- '#f38ba8'
resourceColors:
cpu:
- '#cba6f7'
- '#89b4fa'
mem:
- '#f9e2af'
- '#fab387'
yaml:
keyColor: '#89b4fa'
valueColor: '#cdd6f4'
colonColor: '#a6adc8'
logs:
fgColor: '#cdd6f4'
bgColor: '#1e1e2e'
indicator:
fgColor: '#b4befe'
bgColor: '#1e1e2e'
toggleOnColor: '#a6e3a1'
toggleOffColor: '#a6adc8'
dialog:
fgColor: '#f9e2af'
bgColor: '#9399b2'
buttonFgColor: '#1e1e2e'
buttonBgColor: '#7f849c'
buttonFocusFgColor: '#1e1e2e'
buttonFocusBgColor: '#f5c2e7'
labelFgColor: '#f5e0dc'
fieldFgColor: '#cdd6f4'

View file

@ -0,0 +1,4 @@
[[input.prepend_keymap]]
on = "<Esc>"
run = "close"
desc = "Cancel input"

View file

@ -0,0 +1,57 @@
[
{
"context": "Terminal || ProjectPanel || CollabPanel || OutlinePanel || ChatPanel || VimControl || EmptyPane || SharedScreen || MarkdownPreview || KeyContextView",
"bindings": {
"ctrl-w": null,
"ctrl-w left": ["workspace::ActivatePaneInDirection", "Left"],
"ctrl-w right": ["workspace::ActivatePaneInDirection", "Right"],
"ctrl-w up": ["workspace::ActivatePaneInDirection", "Up"],
"ctrl-w down": ["workspace::ActivatePaneInDirection", "Down"],
"ctrl-w ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],
"ctrl-w ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],
"ctrl-w ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],
"ctrl-w ctrl-j": ["workspace::ActivatePaneInDirection", "Down"],
"ctrl-w h": ["workspace::ActivatePaneInDirection", "Left"],
"ctrl-w l": ["workspace::ActivatePaneInDirection", "Right"],
"ctrl-w k": ["workspace::ActivatePaneInDirection", "Up"],
"ctrl-w j": ["workspace::ActivatePaneInDirection", "Down"],
"ctrl-w shift-left": ["workspace::SwapPaneInDirection", "Left"],
"ctrl-w shift-right": ["workspace::SwapPaneInDirection", "Right"],
"ctrl-w shift-up": ["workspace::SwapPaneInDirection", "Up"],
"ctrl-w shift-down": ["workspace::SwapPaneInDirection", "Down"],
"ctrl-w shift-h": ["workspace::SwapPaneInDirection", "Left"],
"ctrl-w shift-l": ["workspace::SwapPaneInDirection", "Right"],
"ctrl-w shift-k": ["workspace::SwapPaneInDirection", "Up"],
"ctrl-w shift-j": ["workspace::SwapPaneInDirection", "Down"],
"ctrl-w >": ["vim::ResizePane", "Widen"],
"ctrl-w <": ["vim::ResizePane", "Narrow"],
"ctrl-w -": ["vim::ResizePane", "Shorten"],
"ctrl-w +": ["vim::ResizePane", "Lengthen"],
"ctrl-w _": "vim::MaximizePane",
"ctrl-w =": "vim::ResetPaneSizes",
"ctrl-w g t": "pane::ActivateNextItem",
"ctrl-w ctrl-g t": "pane::ActivateNextItem",
"ctrl-w g shift-t": "pane::ActivatePrevItem",
"ctrl-w ctrl-g shift-t": "pane::ActivatePrevItem",
"ctrl-w w": "workspace::ActivateNextPane",
"ctrl-w ctrl-w": "workspace::ActivateNextPane",
"ctrl-w p": "workspace::ActivatePreviousPane",
"ctrl-w ctrl-p": "workspace::ActivatePreviousPane",
"ctrl-w shift-w": "workspace::ActivatePreviousPane",
"ctrl-w ctrl-shift-w": "workspace::ActivatePreviousPane",
"ctrl-w ctrl-v": "pane::SplitVertical",
"ctrl-w v": "pane::SplitVertical",
"ctrl-w shift-s": "pane::SplitHorizontal",
"ctrl-w ctrl-s": "pane::SplitHorizontal",
"ctrl-w s": "pane::SplitHorizontal",
"ctrl-w ctrl-c": "pane::CloseAllItems",
"ctrl-w c": "pane::CloseAllItems",
"ctrl-w ctrl-q": "pane::CloseAllItems",
"ctrl-w q": "pane::CloseAllItems",
"ctrl-w ctrl-o": "workspace::CloseInactiveTabsAndPanes",
"ctrl-w o": "workspace::CloseInactiveTabsAndPanes",
"ctrl-w ctrl-n": "workspace::NewFileSplitHorizontal",
"ctrl-w n": "workspace::NewFileSplitHorizontal"
}
}
]

View file

@ -0,0 +1,96 @@
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"outline_panel": {
"dock": "left"
},
"features": { "edit_prediction_provider": "zed" },
"assistant": {
"enable_experimental_live_diffs": true,
"default_model": {
"provider": "copilot_chat",
"model": "gpt-4o"
},
"version": "2"
},
"vim_mode": true,
"ui_font_size": 14,
"buffer_font_family": "Iosevka Term",
"buffer_font_size": 14,
"font_size": 14,
"font_family": "Iosevka Term",
"theme": {
"mode": "dark",
"light": "One Light",
"dark": "Catppuccin Mocha"
},
"terminal": {
"line_height": "standard"
},
"auto_install_extensions": {
"html": true,
"toml": true,
"catppuccin": true,
"make": true,
"dockerfile": true,
"sql": true,
"terraform": true,
"lua": true,
"log": true,
"docker-compose": true,
"csv": true,
"basher": true,
"proto": true,
"gdscript": true,
"jinja2": true,
"roc": true,
"gemini": true,
"graphviz": true,
"ssh-config": true
},
"languages": {
"Python": {
"language_servers": ["pyright", "ruff"]
}
},
"lsp": {
"ruff": {
"initialization_options": {
"settings": {
"lint": {
"extendSelect": ["I"]
}
}
}
},
"rust-analyzer": {
"initialization_options": {
"inlayHints": {
"maxLength": null,
"lifetimeElisionHints": {
"enable": "skip_trivial",
"useParameterNames": true
},
"closureReturnTypeHints": {
"enable": "always"
}
}
}
}
}
}

View file

@ -0,0 +1,275 @@
keybinds clear-defaults=true {
tmux {
bind "[" { SwitchToMode "Scroll"; }
bind "Ctrl a" { ToggleTab; SwitchToMode "Normal"; }
bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
bind "c" { NewTab; SwitchToMode "Normal"; }
bind "," { SwitchToMode "RenameTab"; }
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
bind "n" { GoToNextTab; SwitchToMode "Normal"; }
bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; }
bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; }
bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; }
bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; }
bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; }
bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; }
bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; }
bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; }
bind "o" { FocusNextPane; }
bind "d" { Detach; }
bind "Space" { NextSwapLayout; }
bind "x" { CloseFocus; SwitchToMode "Normal"; }
}
shared_except "locked" {
bind "Ctrl u" {
LaunchOrFocusPlugin "file:~/.config/zellij/plugins/room.wasm" {
floating true
ignore_case true
quick_jump true
}
}
}
shared_except "normal" "locked" {
bind "Enter" "Esc" { SwitchToMode "Normal"; }
}
shared_except "tmux" "locked" {
bind "Ctrl a" { SwitchToMode "Tmux"; }
}
}
plugins {
tab-bar location="zellij:tab-bar"
status-bar location="zellij:status-bar"
strider location="zellij:strider"
compact-bar location="zellij:compact-bar"
session-manager location="zellij:session-manager"
welcome-screen location="zellij:session-manager" {
welcome_screen true
}
filepicker location="zellij:strider" {
cwd "/"
}
}
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
// eg. when terminal window with an active zellij session is closed
// Options:
// - detach (Default)
// - quit
//
// on_force_close "quit"
// Send a request for a simplified ui (without arrow fonts) to plugins
// Options:
// - true
// - false (Default)
//
// simplified_ui true
// Choose the path to the default shell that zellij will use for opening new panes
// Default: $SHELL
//
// default_shell "fish"
// Choose the path to override cwd that zellij will use for opening new panes
//
// default_cwd ""
// Toggle between having pane frames around the panes
// Options:
// - true (default)
// - false
//
pane_frames false
// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible
// Options:
// - true (default)
// - false
//
// auto_layout true
// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected
// Options:
// - true (default)
// - false
//
// session_serialization false
// Whether pane viewports are serialized along with the session, default is false
// Options:
// - true
// - false (default)
// serialize_pane_viewport true
// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0
// defaults to the scrollback size. If this number is higher than the scrollback size, it will
// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true.
//
// scrollback_lines_to_serialize 10000
// Define color themes for Zellij
// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
// Once these themes are defined, one of them should to be selected in the "theme" section of this file
themes {
dracula {
fg 248 248 242
bg 40 42 54
red 255 85 85
green 80 250 123
yellow 241 250 140
blue 98 114 164
magenta 255 121 198
orange 255 184 108
cyan 139 233 253
black 0 0 0
white 255 255 255
}
catppuccin-latte {
bg "#acb0be" // Surface2
fg "#4c4f69" // Text
red "#d20f39"
green "#40a02b"
blue "#1e66f5"
yellow "#df8e1d"
magenta "#ea76cb" // Pink
orange "#fe640b" // Peach
cyan "#04a5e5" // Sky
black "#e6e9ef" // Mantle
white "#4c4f69" // Text
}
catppuccin-frappe {
bg "#626880" // Surface2
fg "#c6d0f5" // Text
red "#e78284"
green "#a6d189"
blue "#8caaee"
yellow "#e5c890"
magenta "#f4b8e4" // Pink
orange "#ef9f76" // Peach
cyan "#99d1db" // Sky
black "#292c3c" // Mantle
white "#c6d0f5" // Text
}
catppuccin-macchiato {
bg "#5b6078" // Surface2
fg "#cad3f5" // Text
red "#ed8796"
green "#a6da95"
blue "#8aadf4"
yellow "#eed49f"
magenta "#f5bde6" // Pink
orange "#f5a97f" // Peach
cyan "#91d7e3" // Sky
black "#1e2030" // Mantle
white "#cad3f5" // Text
}
catppuccin-mocha {
bg "#585b70" // Surface2
fg "#cdd6f4" // Text
red "#f38ba8"
green "#a6e3a1"
blue "#89b4fa"
yellow "#f9e2af"
magenta "#f5c2e7" // Pink
orange "#fab387" // Peach
cyan "#89dceb" // Sky
black "#181825" // Mantle
white "#cdd6f4" // Text
}
}
// Choose the theme that is specified in the themes section.
// Default: default
//
theme "catppuccin-mocha"
// The name of the default layout to load on startup
// Default: "default"
//
// default_layout "compact"
// Choose the mode that zellij uses when starting up.
// Default: normal
//
// default_mode "locked"
// Toggle enabling the mouse mode.
// On certain configurations, or terminals this could
// potentially interfere with copying text.
// Options:
// - true (default)
// - false
//
// mouse_mode false
// Configure the scroll back buffer size
// This is the number of lines zellij stores for each pane in the scroll back
// buffer. Excess number of lines are discarded in a FIFO fashion.
// Valid values: positive integers
// Default value: 10000
//
// scroll_buffer_size 10000
// Provide a command to execute when copying text. The text will be piped to
// the stdin of the program to perform the copy. This can be used with
// terminal emulators which do not support the OSC 52 ANSI control sequence
// that will be used by default if this option is not set.
// Examples:
//
// copy_command "xclip -selection clipboard" // x11
// copy_command "wl-copy" // wayland
// copy_command "pbcopy" // osx
// Choose the destination for copied text
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
// Does not apply when using copy_command.
// Options:
// - system (default)
// - primary
//
// copy_clipboard "primary"
// Enable or disable automatic copy (and clear) of selection when releasing mouse
// Default: true
//
// copy_on_select false
// Path to the default editor to use to edit pane scrollbuffer
// Default: $EDITOR or $VISUAL
//
// scrollback_editor "/usr/bin/vim"
// When attaching to an existing session with other users,
// should the session be mirrored (true)
// or should each user have their own cursor (false)
// Default: false
//
// mirror_session true
// The folder in which Zellij will look for layouts
//
// layout_dir "/path/to/my/layout_dir"
// The folder in which Zellij will look for themes
//
// theme_dir "/path/to/my/theme_dir"
// Enable or disable the rendering of styled and colored underlines (undercurl).
// May need to be disabled for certain unsupported terminals
// Default: true
//
// styled_underlines false
// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know
// metadata info on this session)
// Default: false
//
// disable_session_metadata true

View file

@ -0,0 +1,35 @@
[notebook]
dir = "~/notebook"
[note]
language = "en"
default-title = "untitled"
filename = "{{id}}-{{slug title}}"
extension = "md"
template = "default.md"
id-charset = "alphanum"
id-length = 4
id-case = "lower"
[group.journal]
paths = ["journal/daily"]
[group.journal.note]
filename = "{{format-date now}}"
template = "daily.md"
[lsp]
[lsp.diagnostics]
wiki-title = "hint"
dead-link = "error"
[alias]
save = 'jj desc -m "$*" && jj bookmark set main -r @ && jj new'
sync = 'jj git fetch && jj git push'
log = 'jj log -r ".."'
diff = 'jj diff'
daily = 'zk new --no-input "$ZK_NOTEBOOK_DIR/journal/daily"'
[tool]
editor = "hx --hsplit journal/tasks.xit"

View file

@ -0,0 +1 @@
# {{ format-date now }}

View file

@ -0,0 +1,5 @@
# {{ title }}
{{ format-date now }}
{{ content }}

View file

@ -0,0 +1,3 @@
{{ if eq .chezmoi.os "darwin" -}}
Include ~/.orbstack/ssh/config
{{ end }}

View file

@ -0,0 +1,12 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1Y1Z4ZEpoK2RidUgrZFFV
VElqZDlNdXZ3czRwSVZiSWx3WnZGUFIrbkZzCnhTMG1MUWMraFVwSjFNQUFvMjhU
RUFHZE1nTDBwRGt4MXNHTUxVZFhUTUEKLS0tIDNsSjlsMWlSbnlRbTM5TmFVVmQy
am9LSzI0SjBBZ3pXSVhxQnlzTWR5ZFEKrx4z3Usu6NUqMyuM0UJeGa3X7SJed50o
lNYgdEatTd52LmkBDBeId4uilJU4Hw7g+NK80uxLgsXyjjfI+FznigNl8Ofd6n57
uPMuLj2shrslWRYoLq3Dtw03X/q/2eUuJPG9T7H98RQvsEl/N7zekymgoXUFT44v
eRZBr5mg5i57sX539Z1jZmmaWEcPyR9OYFSRCrtRATOEF520hU2LTxIRSxF194/e
NzGh6lrvK/m8VGClGHk/UqdItH5S6+dAg+P4v2FSFQwls/uzq9j0n/bK0A06F6Vs
lL+mSumS9d+zvXzsu0iHLSoECP31kAfNuWPj9j0WCekISdwJmoXR+gp3iCf6IUOh
w0vP1Vsz4cIWUC6SgoK2rrWqmfSkD2TFPom3MzFhr3yw+60LwtYZQ3LzIJQQ
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,9 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzZlFZSzBiYXVpdzl5VGR6
OWZYTk8zaVBxZE4yK1dNN2ZqMWtyMmlzY2lZCkhSM3ZGbkgwTXlVR0RNbFZPM3ps
R21IM2N5d2RXQmt4RUY3RUV1YjZmTVEKLS0tIEJSK2ZocWFPUE40OGlBN3I1TCtR
QWhjVGVPMk1LdVNzeCtSYTA5NzQ2d1UKKff/PWU7776PpbUztvJE3X8AnG+CKfW/
l/Ha2puxfpa30d0gD9TeeqiEYFgGAujHinV4NvrsbLrWbia8tM3Ycl+wiCF2fdAh
oerskCiUow212eOXwIUEYKobe/pWjVka6ZOPOrviwVLlwAjMBtF9y+G6M2v/g6nK
lt03ojnwkFLWd8UTJyFKqZeFMlA=
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,22 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwekJ1R1Z6M0hLN2pESFBY
NW1BYjFPTjNKMEFaeFJsdWtzK2lnQkl3emdzCitrREJ3RGd4TWh0R25yaDRRd0pi
bDlrbG1ucDV2SXd5NklMeUx3K2F0Z0UKLS0tIDZTUjBYV1Q1TDh4RVJQUzlTUENS
YllMcXlQalVoUkY5VzN6bWJTakt4L2cKlYHzGnnjKZQpZzc7NdjrRsXum2tfcjwk
T45iSastj8gFQLbB3fIElsprJAgCPhu0jcWtbvgiFpESRlmThzP1wWf9DmgDNnHI
68IBPaM4Ru6PWBY6HTMQ4EsyzFrnuKj8ZM/RYF7fjOmKG/K1hYB7+iqwR3tlt1D2
6Cryn5qLU0Ou68nwnsXdFIcPEolVvMX4XsGrSaSnprNVF3hCW9vtYEdjJvIgKNUz
3xX+J3MfGIR+oSfYb6o81aA9F5xS2obbPaBIW04x9ZQ4ik20GiYt+gI2H3QTOp7z
+/Je1HIF2/biWwP7qgdbusAd+XFbwPs4wh/M3XEqiEVcY+MvshmWUbjShjYq0c0e
ySqF+ZPSw0NKg50O+avZeH1LxPXqshr2RHpGDNFGHaJRIKse0W1hNPZ5rj8daJj1
f8eIcfZ4fcIAgci3Je5PZHdErEnhU2LsvTEeGuINdNjiEpV+YqMEhZlKE2h0sdeF
oYRQt8enCCqFEizMTm1CQRcix7WYLx2CCJEbH8jnDlnlJnNRQ4utHA+q8c0ERndz
iDtgbjhktDgNRtXx/gvf9Fu1Jh4fHz2brFTIeuI27hy9OmtcNF5Z2U+86K3QkGyr
Dp3NFQUXlkv5NLDeCACbsqE99BBfczhliVFCeR1WaUtriNbXkzO17KDy7vI7XUwb
+V4OW7y5+2v4UQX4GbhViUSioxIfjil5NHXYIXIhlk2QB50odvbkfhfEboir0+vC
fx1+9SzZB+Krp+/29u+mN357OSRTWMkZephjUCPP42rOqe+WYFBVLQJ60JAHsyye
Vb9ge7FPCHHO7TmzD2a5rWU3u0Mzh5l8x0KoVoaP7PZnmQmFJ8TdRAGaMowH/Ej+
IiHbStLtMqLpRtHMou5+wC+oIJW6mgJCS8m+dJPG522xHpDnTmg3rHRax771i9SP
fpL9OPDcqCQABCU8iTL1K/iisj/1+0sjV3ojBZb6FTk14rrJyCes6BgVU46Yr19T
i52qXa5Pq0i1V4Md72ucws8Y7qaOjkNd/5Zrzy/7qOh7Iuv1fLo=
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,22 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzMEJ4N2R4bFlLR1JIdEVO
Vm93M0h3QmE2c05jRG1CaVJXamVrQWVtQVUwCml0b0xWdExQQ2oxd1p0ODBPcnJa
U1RQR080cHI2VGVmUWt2SWxHVGZrREkKLS0tIDdwMTZJWVQrZFFqSlpJT3Q5VDZz
MXJPWGs1enAvUjNmMC9MbitqREVhZzAK5TvmoMNf7PPPYRjTY/ysv6s6ryX8b/eK
6wuJRiWLEYUlB5cZrMRZuJMJF2v/zXdooyglEsd+cLMac0PEYb+RL6Ao9HZR1lS5
ZW482zkYS2WTOey2wp8kcqPeMIybWcbBXc1P9fE5+skLnVmmHicV2kH8ZJ2jksk+
95Mitr+RjUrVhYVP0pY6uNQex3As1OYaipBr/H9/VVM56t1lee8tREnpjWw4V22A
QbwQn0CHZAug1ZUkrERDAdV+1WLpNrtcADyoOGX1j1FG5UzQzEE4K++Al2QOawQL
YoTvEXvHMyz30zmToZmI6hLQWxp6mkYcSMbJVf472v2Nbt8NiGlU6fU6+cnnCQfw
FjykqTF1Lem+yWN+OigBVbSkZFGRMRhgHzdV53Px7qU6uivKbGHXyyp/nL4C1plM
pZnl5JSWt2ukgCKFWQGo+1ccHrUB5dBOJ/G01kmqvIk/eHMd/Qn2WYeMwKz3H7U0
DB7YDGRTo4j2lKjNUuLRf6zPng0jZ/HDXbgyjYU51R7CKS7alqPsa5d24xZ/iWpF
GYCAdMJXTWdqHj60K25F41Ym9B+dB/TUJ4uz+/ylgcoeVsBjESk22OZp1nRbJ+Ak
qC6gGuoZV9aOyrm3M00SlHOlkZzJT8ZElOTXYX4hpydCBZ5UTU9r8sjIsMTWV4FM
3e+tfG0pyF6zgy2q/X21mFBpZCwy8hgRoUHBtqS5n1+DgiFeasZbFB1tTW66Drz4
ojtOCgztU54V0LRZuTJJ7WfNDZ+LBWzbnZZfzACCe9llIkY1BbFMfN5BnCWi0zNW
7v4k+nZ+XfWXsQ3+pvAjsInDwvEcjLke/efiXfHEjQ7avsu4iRfApbEWfOazilax
uRPcvXGK30lZKPuaCPjhNmxZm7oh2+jsXSkrirx+rmTx+sLBqU+NXcDp2iZO8Eq8
ek1MGbyXi9EypJvYMs2eGbHona+YfnvP5ryZBDA8ZAP7qzKLBVrrVUej7NzD3byg
MXxBe8OOjxwhhAB+YK10jegte6SFS2sFIFLEe59kccM0qm40ZJSAOg==
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,22 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2SEFzdmNyTWdiSXpIZGhs
T2kxOXpXczc4VE9nWkNFbi9yelJvdmtVOEhVClVaWlZ0dUJLaXhMRCs1dW9MY1Nl
NUpNcGR3WW5vcG1tTCtTOXcwZEt0M1UKLS0tIHhvWDJDTFkzcWd2bjRoRDdzS2hs
RzBLdFZvWlc2VW1OczZOak9YMzlzZmcKARnp+EZvwPa2LvmGeI1EDaaVtroC6SKe
qEhhN3Oq8zX9jEIYJxGU49HHr+V9qS2e3v992alPdstejkuJA1sMBoEzI5UuJFDI
zZ4YUj6tJjzNQiW2L018jYfvywZRbCv55M3y63LTzHMsVIvWRcJYwf5KBDvJXK6g
Bivbxobm41KL6ftMqsPIShQwUmbitdIO2hw7ZxEQc+VXrGZeU2pU5oRSbAXxxY/p
F2OBm/mWfxrcmN7OvhjfQkp52mquK5bYCSBf41hipA+bHhRGajzzhRWuKHqaPB60
d8KEgPIDP673BAhUNH+PLkoar1b7SDX63OsMmHECkS+cdpuuXAIlm1OaTTEb5tUD
+DxXCD5W5jYQAEjNoihXgxRfXFS7ADUtn7m/xoTwAaTScZmJKXfCMFwP2aOdQFa2
eWOFFIo93+rpwFuSHNw2r2mEAd7UD3ctEWkpYfagaVT4kWJFa7aprBmi7hb3IPZa
L7KnnokXWZiVmMEuRz69eqJ5/PWM/097mg03E62bS0KHM5yz4QhD2t3ExwqdfR2g
5EYqDnvY0TtT+mJqW1SRNNOTD69Xrrud/j01GobTrDgkAZf8afUm1NXozgZJh+dl
RFqdyvbYtgmQ9VGuJyPgHlHmiCGgNuMJ6h6Q8xI+fOemvjDVZ0sOa/Upggl2Wi8+
RxbSXSw/SXBH0eOkP2Wi52U8cM6K5Q++YgG8lljYiGSwGqJ87hBSOYJme5qN5UVF
s1e2/OZEixtvtD7wFqZji699ZZwonqXWbP1g8/Wg9oOS0rFKKFpGnprMcbaZp3ac
4ioIpe5xbKyoB5phzWK1L2U6pVD7BdVSbx3S0KNvsvkQ2g9CjrsbkY/7YsKYnZMJ
CLw/paagNm/1RNJTtGi1lz6rPwsYNVE8ilq7QwbTrDUJRQaicywJpyx+uxv0FcA/
5lR1KBvURANX/8g4AOh1tD4nlHCnQXQ1w1miObJaayxuoEzvawhH6gxP3jMcfpXZ
BSZNelSQuTnErxhjtaIiWgM8ITVw7j+WigVZR080Ipl72xLA
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,15 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyQVYvNlBnd1VrTXdaOXov
RVV2dTBJWTRwSnIzNkdVUm5mTStNcnFRVW40CmhJNmpaa1NQV2FEd0xBa2RSMGdF
WnhWLzAzMFl5SFJzQ3FwS3dQZWU4NkEKLS0tIDBvWUJiN3BVVy9hc3M1VE9udEpR
OG1Bc1JmRjhYNm1PU2tHL1Vrcmp4WmMKUlnXIK32N1ckGjILWLehf1rBDwzlozWV
WZ6s1JAIFsqswNTDMbrSzK9rho8B5r0blIOz0ik4imtz3NE1kNj3D8F4VnGm0m7M
TljtehOxSXLJbF5S2Gf6G1j9td0t6H6XVLHlUC0qhZkF1H+dHJoBfiGpLLYxp569
V3B8XItIpmA1oJHNTcV7HZBbdZchR/jQTUBhogmwIWU5RVPwofoIiq/ID3ack9ZZ
4YhDgjqi9fjkdxQUChjS4Sl4bekWrafuGjKZixWGofV7nlYHMNWsI5x3Y0Y60lWD
WEZbSzwq4NgtRS4l/8G1F3In40OM5/TbbVIJYzmiwkisNw0kCApeb7EOtsDsTTxx
lu9lxUbORXUelVrmcyjmllqQJ8QsNnUnAdXlQ6WeLa4UaA4xRXEHZ1es2pAMMTm9
S0RXa3ZGXHwCmaU2Qz5JgDhmnRXfTsfMnv+jjtV1xohgT1Pkwv3uOLmgCnT4K4IH
lMGfIlwcTVtS+6tDJcOW4CbRET1hhXDXR+o6FzTGNSzQE5YuO8wCEoAZ3P/9aKQC
vT7ni7KA7WwJEWXTbw+cTy/qZa2b8vPTPKOFhdKXHyD5ArRj2yUKcOwdIQ==
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,77 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2dTJtOXhNTXRJSW5XaVk2
cVFrZlg1bkEvWk0zMEpVTnVIQXZtYWhlRmdVCkFOTDljY3l3dVF6eitzTTZEYk9T
L2V6cWJPQnRnaGRMMkI4Q0I4K1M2bFkKLS0tIEpDQ2hKYWVPS3hvbkt3NDJuTmpa
ZXgwa24wODVLZE1IRENYTXd4SGdXdVEK/4D4Bobna1iIX2ot9uMiyO4hE4mhs9mU
QK691AjAnY0DnOC7P+ZCjMFnA3PphfwXI5AEPMYW/hq0wpNjRZfhZm2vDT/IkSjR
H2knv/AW5WwERu2HxIHETGoQQlrAm+NANeca+OWF3+OFkO1+Mpsu5Dfyr3Txmz9Z
yG8INKwmunU5SqtdpRCg/YQmwylA6Nmmw8fjFREWD+eLxvuDmUYIGBUOfetrP78l
h1Vanx9zhj85J89qAkLFaQ8uZy7NezgIUe81L7+QY98H2wwnc279tvnv/vc3QLc1
hwH9D5Pdrq6KUNBv1pG5hItLbh1yY3ho5/vMWIMXHw5LxQsE2nLHkvXGhZXN8YyM
bR0BWMH6n1w5KQHR8nnHCuJsCuFC7KUoXAwaljbbbv/xO/+uAihJu3/2RrgMgA+y
dOUtNkl9VrvXll5frAAijZzgd/JgQk3OrJGlpCxamcbPjvKok8aYfqeJa+MVr3lU
akc7lJpBE54rsHw+wR844rgdve4x5z3sSQ1sMmThVu2VvDw+SqKGbcgSu0sdARgz
c/ktCxSbC3x6j2sVv4Eie+1mtkfky9pX6GKzfvrGb6sLXtHL+nwli1F3ahP3TNK3
7y8+57Ob6/XSGfxGdRe0ylMSXPCQ7NiU8fQAKyY92larkKpBZJfaoyrYwbPmTnPP
W2Y1WtXecKKvE6S0GToMOqKkESJQhQNj57zBSGF+CjPTtuKN/WafwQy2sL9H+XxJ
JLLh4DVfdcnbmz6Kh/+hcGQbpwHcW0Lm1ZOAi+VKgCe45oaUWM5h/D7xb6C4SbAh
IXlPewrk+6TqSUSoK4GLYEaFEC4i5x+1HlouNDHSoFacMrbEgZ3KooK+/+Rcsr1J
L4j1AG6EAaxd39XtffA3a4GsgcoeXmekg5V9b/MwwmXOTjdrq5cJCU5izrQFuFEw
faTi3OgQJJDLiKbaFNzLhfD6bf9gprKFDtjr/wLE7fxHGywPG6QDFo2ARQKfYiSd
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
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,22 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwekJ1R1Z6M0hLN2pESFBY
NW1BYjFPTjNKMEFaeFJsdWtzK2lnQkl3emdzCitrREJ3RGd4TWh0R25yaDRRd0pi
bDlrbG1ucDV2SXd5NklMeUx3K2F0Z0UKLS0tIDZTUjBYV1Q1TDh4RVJQUzlTUENS
YllMcXlQalVoUkY5VzN6bWJTakt4L2cKlYHzGnnjKZQpZzc7NdjrRsXum2tfcjwk
T45iSastj8gFQLbB3fIElsprJAgCPhu0jcWtbvgiFpESRlmThzP1wWf9DmgDNnHI
68IBPaM4Ru6PWBY6HTMQ4EsyzFrnuKj8ZM/RYF7fjOmKG/K1hYB7+iqwR3tlt1D2
6Cryn5qLU0Ou68nwnsXdFIcPEolVvMX4XsGrSaSnprNVF3hCW9vtYEdjJvIgKNUz
3xX+J3MfGIR+oSfYb6o81aA9F5xS2obbPaBIW04x9ZQ4ik20GiYt+gI2H3QTOp7z
+/Je1HIF2/biWwP7qgdbusAd+XFbwPs4wh/M3XEqiEVcY+MvshmWUbjShjYq0c0e
ySqF+ZPSw0NKg50O+avZeH1LxPXqshr2RHpGDNFGHaJRIKse0W1hNPZ5rj8daJj1
f8eIcfZ4fcIAgci3Je5PZHdErEnhU2LsvTEeGuINdNjiEpV+YqMEhZlKE2h0sdeF
oYRQt8enCCqFEizMTm1CQRcix7WYLx2CCJEbH8jnDlnlJnNRQ4utHA+q8c0ERndz
iDtgbjhktDgNRtXx/gvf9Fu1Jh4fHz2brFTIeuI27hy9OmtcNF5Z2U+86K3QkGyr
Dp3NFQUXlkv5NLDeCACbsqE99BBfczhliVFCeR1WaUtriNbXkzO17KDy7vI7XUwb
+V4OW7y5+2v4UQX4GbhViUSioxIfjil5NHXYIXIhlk2QB50odvbkfhfEboir0+vC
fx1+9SzZB+Krp+/29u+mN357OSRTWMkZephjUCPP42rOqe+WYFBVLQJ60JAHsyye
Vb9ge7FPCHHO7TmzD2a5rWU3u0Mzh5l8x0KoVoaP7PZnmQmFJ8TdRAGaMowH/Ej+
IiHbStLtMqLpRtHMou5+wC+oIJW6mgJCS8m+dJPG522xHpDnTmg3rHRax771i9SP
fpL9OPDcqCQABCU8iTL1K/iisj/1+0sjV3ojBZb6FTk14rrJyCes6BgVU46Yr19T
i52qXa5Pq0i1V4Md72ucws8Y7qaOjkNd/5Zrzy/7qOh7Iuv1fLo=
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,77 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2dTJtOXhNTXRJSW5XaVk2
cVFrZlg1bkEvWk0zMEpVTnVIQXZtYWhlRmdVCkFOTDljY3l3dVF6eitzTTZEYk9T
L2V6cWJPQnRnaGRMMkI4Q0I4K1M2bFkKLS0tIEpDQ2hKYWVPS3hvbkt3NDJuTmpa
ZXgwa24wODVLZE1IRENYTXd4SGdXdVEK/4D4Bobna1iIX2ot9uMiyO4hE4mhs9mU
QK691AjAnY0DnOC7P+ZCjMFnA3PphfwXI5AEPMYW/hq0wpNjRZfhZm2vDT/IkSjR
H2knv/AW5WwERu2HxIHETGoQQlrAm+NANeca+OWF3+OFkO1+Mpsu5Dfyr3Txmz9Z
yG8INKwmunU5SqtdpRCg/YQmwylA6Nmmw8fjFREWD+eLxvuDmUYIGBUOfetrP78l
h1Vanx9zhj85J89qAkLFaQ8uZy7NezgIUe81L7+QY98H2wwnc279tvnv/vc3QLc1
hwH9D5Pdrq6KUNBv1pG5hItLbh1yY3ho5/vMWIMXHw5LxQsE2nLHkvXGhZXN8YyM
bR0BWMH6n1w5KQHR8nnHCuJsCuFC7KUoXAwaljbbbv/xO/+uAihJu3/2RrgMgA+y
dOUtNkl9VrvXll5frAAijZzgd/JgQk3OrJGlpCxamcbPjvKok8aYfqeJa+MVr3lU
akc7lJpBE54rsHw+wR844rgdve4x5z3sSQ1sMmThVu2VvDw+SqKGbcgSu0sdARgz
c/ktCxSbC3x6j2sVv4Eie+1mtkfky9pX6GKzfvrGb6sLXtHL+nwli1F3ahP3TNK3
7y8+57Ob6/XSGfxGdRe0ylMSXPCQ7NiU8fQAKyY92larkKpBZJfaoyrYwbPmTnPP
W2Y1WtXecKKvE6S0GToMOqKkESJQhQNj57zBSGF+CjPTtuKN/WafwQy2sL9H+XxJ
JLLh4DVfdcnbmz6Kh/+hcGQbpwHcW0Lm1ZOAi+VKgCe45oaUWM5h/D7xb6C4SbAh
IXlPewrk+6TqSUSoK4GLYEaFEC4i5x+1HlouNDHSoFacMrbEgZ3KooK+/+Rcsr1J
L4j1AG6EAaxd39XtffA3a4GsgcoeXmekg5V9b/MwwmXOTjdrq5cJCU5izrQFuFEw
faTi3OgQJJDLiKbaFNzLhfD6bf9gprKFDtjr/wLE7fxHGywPG6QDFo2ARQKfYiSd
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
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,74 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4aVhyNDdpNERyeS9nYkRG
STB2YUV4Rm8yL1VJRGVYZW11MW1iWXlmdWk0CmJWeUNlcEdlNVhMKzduZFNCSFpo
U1lJVzlKZ09OU0lmdytLZ0FtVzZCd2sKLS0tIG5IM0tzclJuTDVWYWVYak9JL3kx
emYwZEhpNTdlbkRyc2VadEtQbGpvZ2MKIfg4lE/XfD3NVUr+q7KfPUL0mxMxf6Jr
vMSe3nySaXOeHep5HCCFNzIW3UUk+sZml0Y3nZNlIm5ZTCbzG0nCT+R4aYzwFUmq
W22IlXNlTd+4KuGS0UODztBivY4dU2LkKsAZFboYD7RYxhKShSygab9TkJJ18tEU
O8Oqewnh4t7cnos0NegazQ0bWcv9k1SFT3AfovBRIqMfBKbn6Lufgy3k5qLPWOs3
GuWEtr8lHVeHiFo+g3WrKUc1AEXsYAIyO+0ry05VG0svVAD9krTxCyB0x55cymuy
hSWPNpu0+7cXIsMAwO6EM7TQgM/CDhYDcXu84Kz7iZp1N0QY7X0q7nvc6w/mNRnd
XxezMgJSGFhZ9tktWwbEG5hbzk+BtccLnjLvzr939U5HjoALh+SEu3HJmslpifmr
AHiRxV3/XKTbJDhHqCEXkWiR3m38czIkJrtvOp3VxCUEBXl+xu4kDBu57/0tZqmq
DHo87J3Jj+TmvJqRly4xM+Q2aHfzCxGFMNriSEvAvlMTXBnklFEoSQM+1VR33sVQ
eeisQzwgi9koAwilM+zUbYjcQaZ4AUneUdYUcz6V1gEkSDG8RWBelywmDsSX5srj
r1tvEG95poNOYD/mXRyG9DEUG4RBdzrrAr2/NTEYOrsPATabp/HCdqnmld0nHvkl
LTizBKa1JeQ7Ldw5zoyS5qqzVV/xG0Gs5f6pyLc/oMLV21De5Ypt7i4+Oipxm1mE
gf9eJKjFd1TcfwqiWr549q7sot1ZMCyInutEmNk+c8KlfBDGal1OcvoQaBlMWbus
ozd3hEGOLdwn/PmgGKg3nLOl3HrXYOd+v72zSb0ke1pnpdL0F1QdmL5l+qaJ3VHS
ynFX1Lv/Se9lswktB2z0zjXXpw7qxvv2aP9kEy8vmJbYeYUuYgSczB1CO5VYHTcD
OVoGYj/ACICqDzRaAnAtLjiK+O+3PVAAe2Gwf/qe5KWDTryh/bjNzw4RQdpaipms
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
-----END AGE ENCRYPTED FILE-----

49
home/private_dot_zimrc Normal file
View file

@ -0,0 +1,49 @@
### Modules ###
# Sets sane Zsh built-in environment options.
zmodule environment
# Provides handy git aliases and functions.
zmodule git
# Applies correct bindkeys for input events.
zmodule input
# Sets a custom terminal title.
zmodule termtitle
# Utility aliases and functions. Adds colour to ls, grep and less.
zmodule utility
### Prompt ###
# Exposes to prompts how long the last command took to execute, used by asciiship.
zmodule duration-info
# Exposes git repository status information to prompts, used by asciiship.
zmodule git-info
# A heavily reduced, ASCII-only version of the Spaceship and Starship prompts.
zmodule asciiship
### Completion ###
# Additional completion definitions for Zsh.
zmodule zsh-users/zsh-completions --fpath src
# Enables and configures smart and extensive tab completion.
# completion must be sourced after all modules that add completion definitions.
zmodule completion
### Modules that must be initialized last ###
# Fish-like syntax highlighting for Zsh.
# zsh-users/zsh-syntax-highlighting must be sourced after completion
zmodule zsh-users/zsh-syntax-highlighting
# Fish-like history search (up arrow) for Zsh.
# zsh-users/zsh-history-substring-search must be sourced after zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-history-substring-search
# Fish-like autosuggestions for Zsh.
zmodule zsh-users/zsh-autosuggestions

View file

@ -0,0 +1,52 @@
#!/bin/sh
set -e
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
eval "$(/opt/homebrew/bin/brew shellenv)"
brew install \
age \
bzip2 \
cmus \
curl \
direnv \
fzf \
gh \
git \
git-delta \
glow \
helix \
jj \
kitty \
marksman \
nvm \
presenterm \
ripgrep \
sqlite \
tree \
watch \
wget \
xz \
yazi \
zellij \
zk \
zlib
brew install --cask \
kap
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
nvm install 22
nvm use 22
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install --force --python python3.12 aider-chat@latest
{{ if eq .hosttype "personal" -}}
brew install \
mingw-w64 \
pandoc
{{ else if eq .hosttype "work" -}}
{{ join .chezmoi.sourceDir "encrypted_dot_work_packages.age" | include | decrypt -}}
{{ end }}

View file

@ -0,0 +1,9 @@
#!/bin/sh
set -e
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup.sh
chmod u+x /tmp/rustup.sh
/tmp/rustup.sh -y --no-modify-path
. $HOME/.cargo/env
rustup update stable

View file

@ -0,0 +1,13 @@
#!/bin/sh
set -e
if [ ! -d $HOME/.src/gwar ] ; then
git clone ssh://git@pingo.thermokar.st/gwar $HOME/.src/gwar
fi
cd $HOME/.src/gwar
# belt-and-suspenders
. $HOME/.cargo/env
cargo build --release
cp target/release/gwar ~/bin

15
install
View file

@ -1,15 +0,0 @@
#!/usr/bin/env bash
set -e
CONFIG="install.conf.yaml"
DOTBOT_DIR="dotbot"
DOTBOT_BIN="bin/dotbot"
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "${BASEDIR}"
git -C "${DOTBOT_DIR}" submodule sync --quiet --recursive
git submodule update --init --recursive "${DOTBOT_DIR}"
"${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}" -d "${BASEDIR}" -c "${CONFIG}" "${@}"

View file

@ -1,43 +0,0 @@
- clean:
- '~'
- create:
- ~/projects/qiime2
- ~/projects/qiime2/data/moving-pictures
- ~/projects/mds
- ~/projects/personal
- shell:
- python3 bin/generate_vscode_workspaces.py
- python3 bin/bootstrap_git_repos.py
- link:
~/.tmux.conf: tmux.conf
~/.gitconfig: git/gitconfig
~/.gitignore_global: git/gitignore_global
~/.npmrc: npmrc
~/.psqlrc: psqlrc
~/.vimrc: vimrc
~/.zpreztorc: zsh/zpreztorc
~/.zlogin: zsh/zlogin
~/.zlogout: zsh/zlogout
~/.zprofile: zsh/zprofile
~/.zshenv: zsh/zshenv
~/.zshrc: zsh/zshrc
~/Library/Application Support/Code/User/settings.json:
create: true
path: vscode/settings.json
~/Library/Application Support/Code/User/keybindings.json:
create: true
path: vscode/keybindings.json
~/Library/Application Support/Code/User/tasks.json:
create: true
path: vscode/tasks.json
~/qiime2-1.code-workspace: vscode/qiime2-1.code-workspace
~/qiime2-2.code-workspace: vscode/qiime2-2.code-workspace
~/qiime2-3.code-workspace: vscode/qiime2-3.code-workspace
~/mds.code-workspace: vscode/mds.code-workspace
~/personal.code-workspace: vscode/personal.code-workspace
~/.config/kak/kakrc:
create: true
path: kakrc

36
kakrc
View file

@ -1,36 +0,0 @@
# inspired by https://gist.github.com/daboross/ce6a5a9f8d14bd4974c5f43b90dfdfaa
# line numbers
add-highlighter global/ number-lines
# TODO: do I _have_ to use rgb here?
set-face global LineNumbers rgb:707070,default
# helper popups
set -add global autoinfo normal
set global ui_options ncurses_assistant=off
set global autowrap_fmtcmd 'fmt -w %c'
# global: wrap to 100 characters (unless FT override, below)
add-highlighter global/ wrap -width 101 -indent -word
set global autowrap_column 101
# global: 4 space indents (unless FT override, below)
set global tabstop 4
hook global InsertChar \t %{ exec -draft -itersel h@ } -group kakrc-replace-tabs-with-spaces
#### FT overrides ####
hook global WinSetOption filetype=rust %{
set buffer formatcmd 'rustfmt'
set buffer tabstop 4
set buffer indentwidth 4
add-highlighter buffer/ wrap -word -width 120
set buffer autowrap_column 120
}
hook global WinSetOption filetype=python %{
set buffer tabstop 4
set buffer indentwidth 4
add-highlighter buffer/ wrap -word -width 79
set buffer autowrap_column 79
}

View file

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data>
<vid>1390</vid>
<pid>254</pid>
<select_profile>0</select_profile>
<profile>
<profname>default</profname>
<lbutton>1</lbutton>
<rbutton>2</rbutton>
<tbutton>5</tbutton>
<button4>41</button4>
<button5>41</button5>
<tiltleft>39</tiltleft>
<tiltright>40</tiltright>
<scrolls>5</scrolls>
<hlotate>5</hlotate>
<hspeed>5</hspeed>
<hcount>1</hcount>
<button6>33</button6>
<button7>34</button7>
<button8>36</button8>
<lbutton_etcKey_key1>0</lbutton_etcKey_key1>
<lbutton_etcKey_key2>0</lbutton_etcKey_key2>
<rbutton_etcKey_key1>0</rbutton_etcKey_key1>
<rbutton_etcKey_key2>0</rbutton_etcKey_key2>
<tbutton_etcKey_key1>0</tbutton_etcKey_key1>
<tbutton_etcKey_key2>0</tbutton_etcKey_key2>
<button4_etcKey_key1>1</button4_etcKey_key1>
<button4_etcKey_key2>73</button4_etcKey_key2>
<button5_etcKey_key1>1</button5_etcKey_key1>
<button5_etcKey_key2>72</button5_etcKey_key2>
<tiltleft_etcKey_key1>0</tiltleft_etcKey_key1>
<tiltleft_etcKey_key2>0</tiltleft_etcKey_key2>
<tiltright_etcKey_key1>0</tiltright_etcKey_key1>
<tiltright_etcKey_key2>0</tiltright_etcKey_key2>
<button6_etcKey_key1>0</button6_etcKey_key1>
<button6_etcKey_key2>0</button6_etcKey_key2>
<button7_etcKey_key1>0</button7_etcKey_key1>
<button7_etcKey_key2>0</button7_etcKey_key2>
<button8_etcKey_key1>0</button8_etcKey_key1>
<button8_etcKey_key2>0</button8_etcKey_key2>
<dispGesture>1</dispGesture>
</profile>
</data>

1
npmrc
View file

@ -1 +0,0 @@
prefix=~/.npm-packages

View file

@ -1,24 +0,0 @@
- .DS_Store
- venv
- node_modules
- __pycache__
- *.pyc
- Applications/
- Library/
- miniconda3/
- tmp/
- .cache/
- .npm/
- .Trash/
- .cpan/
- .nvim/plugged/
- .vim/plugged/
- .conda/
- .mail/
- .dropbox/
- .wine/
- .cisco/
- .fzf/
- .local/
- .zprezto/
- .conda-bld/

View file

@ -1,44 +0,0 @@
setw -g automatic-rename
set-option -g default-shell /bin/zsh
set -g default-command "reattach-to-user-namespace -l ${SHELL}"
set -g default-terminal "screen-256color"
set -g prefix C-a
unbind C-b
bind C-a last-window
unbind r
bind r source-file ~/.tmux.conf
set -g base-index 1
bind c new-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
set-window-option -g mode-keys vi
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
set-option -g status-bg colour18
set-option -g status-fg colour136
set -g status-justify centre
set -g status-left-length 50
set -g status-right-length 140
set -g status-left '#[fg=green]#H#[default] session:#S'
set -g status-right '#[fg=white,bg=default]%a %l:%M:%S %p#[default] #[fg=blue]%Y-%m-%d'
set-option -g renumber-windows on
set -sg escape-time 0
set-option -g destroy-unattached 'off'
# Enable mouse control (clickable windows, panes, resizable panes)
set -g mouse on
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'reattach-to-user-namespace pbcopy'
bind-key p paste-buffer

61
vimrc
View file

@ -1,61 +0,0 @@
" filetype support provides filetype-specific indenting, syntax highlighting,
" omni-completion and other useful settings.
filetype plugin indent on
syntax on
" built-in plugin, `%` to jump to condition branch
runtime macros/matchit.vim
let mapleader=" "
set autoindent
set backspace=indent,eol,start
set hidden
set incsearch
set ruler
set wildmenu
set number
set list
set listchars=tab:▸\ ,extends:>,precedes:<,trail:~
set cursorline
set colorcolumn=80
set backup
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
set backupskip=/tmp/*,/private/tmp/*
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
set writebackup
set expandtab
set updatetime=200
nnoremap <silent> [b :bprevious<CR>
nnoremap <silent> ]b :bnext<CR>
nnoremap <silent> [B :bfirst<CR>
nnoremap <silent> ]B :blast<CR>
call plug#begin('~/.vim/plugged')
Plug 'airblade/vim-gitgutter'
Plug 'chriskempson/base16-vim'
Plug 'ntpeters/vim-better-whitespace'
Plug 'sheerun/vim-polyglot'
Plug 'tpope/vim-vinegar'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'wakatime/vim-wakatime'
call plug#end()
" for Plug 'chriskempson/base16-vim'
let base16colorspace=256
source ~/.vimrc_background
" for Plug 'ntpeters/vim-better-whitespace'
let g:better_whitespace_enabled=1
let g:strip_whitespace_on_save=1
" for Plug 'vim-airline/vim-airline'
set laststatus=2
let g:airline#extensions#tabline#enabled=1
let g:airline#extensions#tabline#fnamemod=':t'
" for Plug 'vim-airline/vim-airline-themes'
let g:airline_theme='base16'

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