Compare commits

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

246 commits

Author SHA1 Message Date
Anthony Cicchetti
f5d5dfa94c updates 2025-03-31 08:53:40 -04:00
Anthony Cicchetti
bb71dcbced tons of stuff, all in neovim 2025-03-28 16:35:51 -04:00
Anthony Cicchetti
aeb6afa880 blink-cmp - Way nicer 2025-03-28 15:45:52 -04:00
Anthony Cicchetti
0043e78eb2 zellij shakeup 2025-03-24 11:49:35 -04:00
Anthony Cicchetti
257d53e993 switch back to Maple, plus neovide changes 2025-03-24 09:29:46 -04:00
a5168b87dd maple-mono fixes 2025-03-23 21:30:11 -04:00
6d49b68de8 updates 2025-03-17 18:14:34 -04:00
Anthony Cicchetti
7c0f157560 updates 2025-03-10 08:58:51 -04:00
Anthony Cicchetti
b55b73075b flake.lock updates 2025-03-05 09:59:19 -05:00
Anthony Cicchetti
f0e371cda2 updates 2025-02-25 09:38:50 -05:00
Anthony Cicchetti
7de37a7b5d Berkeley Mono in neovide 2025-02-06 10:42:58 -05:00
Anthony Cicchetti
087a7d30d2 updates 2025-02-05 08:37:38 -05:00
Anthony Cicchetti
5c592a0034 maccy (clipboard manager) 2025-02-04 10:52:24 -05:00
Anthony Cicchetti
ddc4b83e77 ghostty and zed and new fonts 2025-02-04 08:20:51 -05:00
Anthony Cicchetti
b894d7f4ec nixvim no longer follows nixpkgs sadly 2025-02-03 08:21:46 -05:00
Anthony Cicchetti
b81be4ee0f updates 2025-01-30 10:00:50 -05:00
Anthony Cicchetti
83db3efd18 updates 2025-01-27 09:16:27 -05:00
414550da70 switch to nixfmt-rfc-style, run nix fmt 2025-01-25 11:02:36 -05:00
Anthony Cicchetti
601817ece5 updates 2025-01-21 08:39:21 -05:00
Anthony Cicchetti
294a9d3c42 updates, and some SetEnv TERM 2025-01-17 09:09:38 -05:00
Anthony Cicchetti
f227aaca0a updates 2025-01-16 09:11:45 -05:00
Anthony Cicchetti
c1fe196ac7 updates or something 2025-01-10 13:13:09 -05:00
7dcfd82a90 cy 2025-01-03 22:52:44 -05:00
b4bc034f9b updates, fix zshrc, default terminal on macOS == ghostty 2025-01-01 20:24:16 -05:00
99920bee6a remove wezterm override 2024-12-30 16:33:34 -05:00
89e2b46a2c updates 2024-12-30 14:12:09 -05:00
57288d1d23 ghostty, among other things 2024-12-29 17:05:15 -05:00
Anthony Cicchetti
60362b3dd1 fontconfig 2024-12-19 08:54:12 -05:00
Anthony Cicchetti
815c1c15c2 updates 2024-12-19 08:38:48 -05:00
5ef6cec155 updates, more font-handling 2024-12-15 22:03:14 -05:00
Anthony Cicchetti
3ca79cf7e0 updates, remove devenv binary 2024-12-10 11:00:19 -05:00
Anthony Cicchetti
12e5310f12 add yamlls 2024-12-02 13:48:34 -05:00
Anthony Cicchetti
eb9f25b740 telescope fixes 2024-11-25 13:36:38 -05:00
2b7bbdf2fe bump devenv flake 2024-11-24 15:35:05 -05:00
08c92c7220 remove zed from default nix 2024-11-23 11:24:29 -05:00
Anthony Cicchetti
999bded4d4 departure mono 2024-11-22 13:45:47 -05:00
Anthony Cicchetti
66d9bd1c52 updates 2024-11-21 10:24:18 -05:00
Anthony Cicchetti
ac7a4a83cf updates 2024-11-19 13:56:19 -05:00
Anthony Cicchetti
0d5c8e93d5 merged up 2024-11-18 08:52:08 -05:00
600a5aa862 fmt, and jujutsu overlay 2024-11-16 13:50:08 -05:00
0a5faf47c2 nixvim fixups 2024-11-15 18:40:28 -05:00
Anthony Cicchetti
72ec14cda1 back on not-staging-next 2024-11-14 11:14:10 -05:00
57e7c1e02e nixvim (#7)
Co-authored-by: Anthony Cicchetti <acicchetti@jellyfish.co>
Reviewed-on: #7
2024-11-10 18:52:23 -05:00
0d15d7179e nixpkgs/staging-next to get neovide working again 2024-11-10 16:07:33 -05:00
Anthony Cicchetti
95e1ee46b1 remove the wezterm nonsense, just use zellij like a normie 2024-11-05 15:04:30 -05:00
Anthony Cicchetti
e89c6941d3 wezterm mux? 2024-10-28 15:25:30 -04:00
f0bdfb0a05 wezterm-gui as a real option 2024-10-20 22:44:09 -04:00
71ae53bd5e fixes 2024-10-20 22:04:32 -04:00
Anthony Cicchetti
fc7045f1d7 fix deprecation 2024-10-16 13:33:39 -04:00
Anthony Cicchetti
b040c4defd updates, and some mise 2024-10-15 15:11:50 -04:00
2dd6de9f59 see-cat 2024-10-12 22:41:05 -04:00
62694b358b picocrypt 2024-10-12 18:41:09 -04:00
Anthony Cicchetti
2e03f41459 updates 2024-10-10 10:29:08 -04:00
Anthony Cicchetti
153a9932b5 updates 2024-10-01 11:01:29 -04:00
Anthony Cicchetti
a29ca36b6a updates 2024-09-26 09:12:30 -04:00
Anthony Cicchetti
9a812e16e8 zed stuff 2024-09-24 15:17:55 -04:00
Anthony Cicchetti
9ecded3c29 updates 2024-09-24 08:53:07 -04:00
Anthony Cicchetti
51d98089b0 updates & devenv updates 2024-09-23 08:41:28 -04:00
3394c3157f updates 2024-09-22 15:53:37 -04:00
Anthony Cicchetti
7ada6a7ffe updates 2024-09-19 09:33:34 -04:00
Anthony Cicchetti
6c960be16a updates, that finally worked 2024-09-17 08:32:55 -04:00
fee99e186f what do I need ruby for 2024-09-07 11:06:41 -04:00
Anthony Cicchetti
ecd44cf125 updates 2024-09-05 09:07:43 -04:00
Anthony Cicchetti
4b674603c7 uv-via-mise 2024-09-04 15:55:37 -04:00
Anthony Cicchetti
7230af1223 Fix atuin 2024-08-29 10:03:32 -04:00
Anthony Cicchetti
4062a898d2 updates 2024-08-28 09:00:20 -04:00
Anthony Cicchetti
114303e4b4 vale + zsh-autosuggestions 2024-08-26 09:28:52 -04:00
Anthony Cicchetti
0c803cacbf updates 2024-08-26 07:59:43 -04:00
7af9e17e2a updates 2024-08-23 09:23:54 -04:00
Anthony Cicchetti
a5bfe7a273 atuin self-hosted setup 2024-08-21 11:54:10 -04:00
Anthony Cicchetti
845b65d714 overlay mynixpkgs 2024-08-21 09:00:06 -04:00
Anthony Cicchetti
2f3661365c fixup some rust breakages 2024-08-14 15:31:42 -04:00
Anthony Cicchetti
807fa7249a change zsh-vi-mode plugin 2024-08-13 14:27:39 -04:00
Anthony Cicchetti
7d39c221e6 pushd_silent 2024-08-12 10:35:07 -04:00
Anthony Cicchetti
9bfab277e3 updates 2024-08-12 08:40:54 -04:00
Anthony Cicchetti
c6a614fc1f no more luasnip 2024-08-05 09:51:11 -04:00
326c36d9b7 flake updates 2024-08-03 11:02:45 -04:00
Anthony Cicchetti
80698f4d65 updates 2024-07-31 14:37:22 -04:00
Anthony Cicchetti
a3fcd0adea more updates, devenv update 2024-07-26 09:32:02 -04:00
Anthony Cicchetti
cff69c8f5d zed keymaps, and updates 2024-07-26 08:00:26 -04:00
Anthony Cicchetti
cba2290cd2 updates 2024-07-23 09:28:43 -04:00
28ab8e2d57 updates 2024-07-19 18:20:18 -04:00
5ff1cd9b81 flake lock updates 2024-07-17 08:57:10 -04:00
e6cd790dfb Updates 2024-07-11 09:30:45 -04:00
3923f11ff8 topgrade stuff, because jj as vcs now 2024-07-10 09:41:35 -04:00
8a47be9700 More git options set 2024-07-09 14:13:00 -04:00
a87da58eaa Add custom starship config, updates 2024-07-08 09:55:40 -04:00
4dcccd888b Formatting, removing duplicate config definition 2024-07-07 11:34:00 -04:00
be706005eb Adding jujutsu config 2024-07-07 11:26:35 -04:00
75ee8c9cf1 Remove ov 2024-07-07 11:26:35 -04:00
56ae7c11c8 updates for flake.locks 2024-07-03 09:40:45 -04:00
8507d94414 Jujutsu via home-manager instead 2024-07-02 15:09:28 -04:00
658b5ff99f Adding Jujutsu - let's see 2024-07-02 14:46:06 -04:00
Anthony Cicchetti
43fe01b7ba updates 2024-07-01 16:06:08 -04:00
7d7769cbb9 updates 2024-06-28 19:50:02 -04:00
042ad16fa1 updates 2024-06-26 21:08:25 -04:00
9388fe201a updates and flake lock 2024-06-24 16:12:18 -04:00
fe1013527d updates 2024-06-21 23:15:16 -04:00
ee8f2b003d updates, no colima on linux 2024-06-19 12:12:54 -04:00
Anthony Cicchetti
5d9b1aef72 update flake.locks 2024-06-18 08:37:54 -04:00
ca5f7423e3 s/dog/doge, and unlock nixpkgs 2024-06-15 17:06:00 -04:00
Anthony Cicchetti
006bb4335b lock nixpkgs until bashls is fixed 2024-06-14 15:02:16 -04:00
8a2cf44a66 ollama in zed! and httpstat 2024-06-13 18:46:04 -04:00
Anthony Cicchetti
783643bf5c forget about zjstatus mostly 2024-06-12 10:50:13 -04:00
Anthony Cicchetti
c9cc591e45 neovide is back 2024-06-12 10:37:03 -04:00
Anthony Cicchetti
c37757d60a updates, nix fmt for devenv flake 2024-06-11 10:15:49 -04:00
Anthony Cicchetti
8b4c755e29 updates 2024-06-10 08:49:30 -04:00
85d88a7f58 updates 2024-06-09 22:25:31 -04:00
3e60505726 updates for nixneovim... truly awful change 2024-06-09 15:50:58 -04:00
adc33619d1 updates 2024-06-08 11:39:45 -04:00
a87f26346b updates 2024-06-06 22:21:53 -04:00
d9f4358d36 1Password changed? 2024-06-06 19:31:23 -04:00
Anthony Cicchetti
c7cc80a346 distribute cargo via fenix+hm 2024-06-06 09:57:56 -04:00
5c87ddac78 updates 2024-06-04 17:35:21 -04:00
Anthony Cicchetti
3120446a7e age-op 2024-06-04 14:08:20 -04:00
Anthony Cicchetti
72844a78f1 1pass update 2024-06-04 10:41:06 -04:00
Anthony Cicchetti
5ee070b42c updates and remove zig deps for now 2024-06-04 08:40:12 -04:00
Anthony Cicchetti
4b567405c7 updates 2024-05-28 08:53:33 -04:00
Anthony Cicchetti
32214e5c8e updates 2024-05-23 09:20:08 -04:00
Anthony Cicchetti
1222a2af2f remove git-credential-1pass because it doesn't exist anymore 2024-05-21 09:46:38 -04:00
53dc368edd ollama 2024-05-20 19:04:20 -04:00
42f2184ae6 updates 2024-05-20 19:03:23 -04:00
Anthony Cicchetti
b8a2cfac96 zed ollama 2024-05-20 09:46:11 -04:00
Anthony Cicchetti
a4fb210439 1Password agent laydown 2024-05-18 11:50:19 -04:00
Anthony Cicchetti
182dc65013 updates 2024-05-16 08:53:47 -04:00
Anthony Cicchetti
57d2999d6a fonts + stuff 2024-05-09 12:30:04 -04:00
Anthony Cicchetti
eaecd39e76 new wezterm colorscheme 2024-05-09 09:21:06 -04:00
Anthony Cicchetti
5a3f26bbda updates 2024-05-09 08:43:32 -04:00
7af309e863 git-sync but linux 2024-05-08 18:44:55 -04:00
Anthony Cicchetti
f766331d72 zed-on-linux 2024-05-07 15:28:52 -04:00
Anthony Cicchetti
ee8365b940 zjstatus not managing frames 2024-05-07 09:27:57 -04:00
532685d65e carapace 2024-05-06 16:44:12 -04:00
3fcc13db11 not berlin 2024-05-04 19:22:34 -04:00
Anthony Cicchetti
7e42965dcb git-sync as a home-manager.service 2024-05-03 16:01:48 -04:00
Anthony Cicchetti
9833cd25d1 statix 2024-05-03 12:48:05 -04:00
Anthony Cicchetti
1617fe89cd deadnix 2024-05-03 10:58:23 -04:00
Anthony Cicchetti
4db8f8c571 zellij overhaul 2024-05-03 10:57:23 -04:00
Anthony Cicchetti
fa3572d8dd updates 2024-05-02 08:46:15 -04:00
Anthony Cicchetti
bb840745ea updates 2024-04-29 10:04:06 -04:00
a5615fce82 updates 2024-04-27 10:00:41 -04:00
Anthony Cicchetti
47944400f0 updates 2024-04-25 08:55:15 -04:00
7857120033 ssh to git.anthonycicchetti.com 2024-04-20 14:29:37 -04:00
Anthony Cicchetti
eeefb73884 updates; 2024-04-20 13:58:22 -04:00
Anthony Cicchetti
d011dabc75 page 2024-04-18 09:28:36 -04:00
Anthony Cicchetti
8434b5a46e many things, nvim, manpages 2024-04-17 08:48:09 -04:00
Anthony Cicchetti
e5df0b93cc better updater 2024-04-16 15:05:18 -04:00
Anthony Cicchetti
cbb978568b lualine 2024-04-16 13:57:29 -04:00
c4f18159af update_me command 2024-04-13 12:01:19 -04:00
Anthony Cicchetti
7f3acddfee some telescope 2024-04-12 15:05:35 -04:00
Anthony Cicchetti
9d8a549199 atuin + projects 2024-04-12 08:53:17 -04:00
Anthony Cicchetti
67af7e3c7e updates; 2024-04-10 09:30:53 -04:00
Anthony Cicchetti
8416de3b5e updates + additive options 2024-04-05 10:51:48 -04:00
Anthony Cicchetti
ee86e05637 updates 2024-04-04 10:49:34 -04:00
Anthony Cicchetti
e0571f6584 cachix and updates 2024-04-02 18:55:48 -04:00
d2beb208ed yazi 2024-03-30 20:40:03 -04:00
bab2e9dcbf updates 2024-03-30 12:34:30 -04:00
Anthony Cicchetti
d3f0e04b09 updates 2024-03-29 10:20:55 -04:00
Anthony Cicchetti
29f12680d7 nvim-cmp & friends 2024-03-27 09:05:46 -04:00
a1e89d9b53 updates 2024-03-24 19:32:30 -04:00
Anthony Cicchetti
c87bdbb266 updates, remove unused flake inputs 2024-03-22 14:25:36 -04:00
Anthony Cicchetti
bb9b0c4d8a pass.beer ssh 2024-03-19 15:29:50 -04:00
69c4eed07b updates 2024-03-17 15:35:32 -04:00
Anthony Cicchetti
ba010c4601 eza.enableShellIntegration deprecated 2024-03-13 08:59:38 -04:00
Anthony Cicchetti
aed66c0650 nil in place of rnix-lsp 2024-03-12 10:02:26 -04:00
Anthony Cicchetti
ef4b36bd9d Add commentstring stuff 2024-03-11 10:05:31 -04:00
Anthony Cicchetti
31308cdb64 nix-index-database + updates 2024-03-11 09:05:18 -04:00
7f735f08f9 gitconfig 2024-03-09 17:28:13 -05:00
Anthony Cicchetti
0e320591ed templating 2024-03-07 14:43:53 -05:00
Anthony Cicchetti
09ad3d10e7 some stuff 2024-03-06 10:17:27 -05:00
Anthony Cicchetti
b346296b93 stylua 2024-02-26 15:35:07 -05:00
Anthony Cicchetti
372ab893a3 telescope & updates 2024-02-26 14:56:46 -05:00
Anthony Cicchetti
bb21f8527e algorithm = histogram 2024-02-20 15:24:01 -05:00
Anthony Cicchetti
6402b1e4e8 Difftastic relegated to difftool 2024-02-20 14:36:45 -05:00
Anthony Cicchetti
b86456d429 typeset PATH too 2024-02-20 09:37:09 -05:00
f1024c66a4 updates 2024-02-18 18:17:55 -05:00
de2ef29738 some additions to zsh 2024-02-18 11:45:54 -05:00
c6961123d8 fix dt 2024-02-17 09:50:17 -05:00
9077b7846a some neovim 2024-02-16 21:42:24 -05:00
be9100982c No more zsh-snap 2024-02-16 21:01:17 -05:00
ff6161b1d9 working zsh-in-nix 2024-02-16 19:36:44 -05:00
Anthony Cicchetti
bdd8b623f2 onChange 2024-02-16 16:24:53 -05:00
Anthony Cicchetti
b12b2812e7 yeet nix-doom-emacs it's kinda stinky 2024-02-16 16:07:39 -05:00
Anthony Cicchetti
45dc2ddfe1 GitLink and wezterm webGPU and nix management - oh my! 2024-02-14 16:02:56 -05:00
Anthony Cicchetti
4b709dbb5b updates 2024-02-13 10:02:55 -05:00
Anthony Cicchetti
9cf62dc8aa Update... update.sh 🤣 2024-01-29 09:10:21 -05:00
Anthony Cicchetti
5597e531e1 updates 2024-01-29 08:42:41 -05:00
077118e5cf use 1password agent for github pushes 2024-01-27 12:10:57 -05:00
Anthony Cicchetti
71bbd6a7fe nvim 0.9+ has editorconfig built int 2024-01-24 09:53:37 -05:00
Anthony Cicchetti
0e6a0df19d merge me up scotty 2024-01-24 09:48:12 -05:00
d789f77f83 divest more flakehub 😔 2024-01-19 20:53:47 -05:00
Anthony Cicchetti
4edc7d56f0 zsh-completions-anyenv removal 2024-01-12 10:44:04 -05:00
9399428446 emacs29 2024-01-11 22:00:05 -05:00
Anthony Cicchetti
52749c2ae0 updates 2024-01-11 09:28:34 -05:00
5bd0459a65 re-add cargo-ws 2024-01-07 22:46:36 -05:00
Anthony Cicchetti
cde44d8b63 pandoc 2024-01-03 09:53:49 -05:00
Anthony Cicchetti
7dfa28f02e updates 2024-01-03 09:37:09 -05:00
6263ceb108 updates 2023-12-25 23:11:14 -05:00
7d822831cf Updates 2023-12-22 11:11:52 -05:00
634dc3d2d2 updates, plus completions 2023-12-22 10:10:13 -05:00
Anthony Cicchetti
93c9b8d71b Emacs 28 lock because nix-straight 🫠 2023-12-15 10:23:38 -05:00
81c7e2941c updates 2023-12-08 17:04:28 -05:00
Anthony Cicchetti
5655dd25a8 gitql, updates 2023-12-05 08:37:54 -05:00
78465750ba add ssh config 2023-11-30 23:10:29 -05:00
Anthony Cicchetti
9f66b0fed1 ssh management 2023-11-29 15:46:08 -05:00
Anthony Cicchetti
366ad323f2 add 1pass 2023-11-29 15:22:33 -05:00
Anthony Cicchetti
5b3cecb191 bump lockfiles 2023-11-17 08:59:07 -05:00
6439e52c96 updates 2023-11-13 17:58:18 -05:00
Anthony Cicchetti
eb03c38853 updates 2023-11-09 14:06:32 -05:00
Anthony Cicchetti
6fce5a8ffa updates 2023-11-06 09:22:23 -05:00
Anthony Cicchetti
62f723c658 atuin enter_accept 2023-11-03 09:20:33 -04:00
Anthony Cicchetti
4708588e13 updates 2023-11-02 13:40:53 -04:00
Anthony Cicchetti
d83f409049 updates 2023-10-30 10:35:42 -04:00
Anthony Cicchetti
5aa8442b73 update version 2023-10-24 13:43:57 -04:00
176e706613 updates 2023-10-08 00:01:14 -04:00
Anthony Cicchetti
c5bb547294 updates 2023-10-04 09:40:45 -04:00
Anthony Cicchetti
32858fda42 updates 2023-10-02 14:29:28 -04:00
6158fff470 mawp 2023-09-22 08:33:17 -04:00
Anthony Cicchetti
ec994d09d5 oh boy 2023-09-20 11:55:42 -04:00
Anthony Cicchetti
fb9bd4d705 updates 2023-09-18 09:15:19 -04:00
Anthony Cicchetti
be4851dabd direnv-nix 2.3.0; emacs-dooms.nixpkgs follows 2023-09-15 09:10:16 -04:00
Anthony Cicchetti
741c9d33ac eza but actually, and lay down topgrade 2023-09-13 11:17:05 -04:00
Anthony Cicchetti
fe75b6ace1 eza 2023-09-13 10:37:54 -04:00
Anthony Cicchetti
2ecc7ae37b updates 2023-09-12 14:53:58 -04:00
3aa5aaaf67 yeet exa, updates 2023-09-11 14:01:26 -04:00
1bc7119495 updates 2023-09-06 18:06:11 -04:00
379337d159 updates 2023-09-02 19:16:21 -04:00
Anthony Cicchetti
b060357104 more futzing with emacs 2023-08-29 10:00:02 -04:00
Anthony Cicchetti
0506b1d7d1 updates 2023-08-28 09:29:58 -04:00
Anthony Cicchetti
4a972148b0 no pep582 2023-08-28 08:07:28 -04:00
3e59a71087 updates 2023-08-27 20:34:53 -04:00
d08871febb devenv on flakehub as well 2023-08-26 16:01:35 -04:00
3baccf2b8c flakehub! 2023-08-26 15:54:06 -04:00
Anthony Cicchetti
f8c41d6863 updates and such 2023-08-22 08:18:30 -04:00
Anthony Cicchetti
fbd9a4aae8 telescope, no more ctrl-p 2023-08-22 08:18:11 -04:00
Anthony Cicchetti
930ad320bc wip 2023-08-22 08:17:04 -04:00
Anthony Cicchetti
1bb3a8bcbe First pass? 2023-08-22 08:16:18 -04:00
Anthony Cicchetti
b1b7c4ff8d use pkgs.stdenv.hostPlatform 2023-08-21 09:39:38 -04:00
Anthony Cicchetti
4af65f3c24 updates 2023-08-21 08:18:01 -04:00
Anthony Cicchetti
7a11c0740c more lsp 2023-08-21 08:12:12 -04:00
Anthony Cicchetti
4611552b15 telescope, no more ctrl-p 2023-08-17 09:45:37 -04:00
Anthony Cicchetti
6cc9be20ff rainbow-delimeters 2023-08-16 09:36:36 -04:00
Anthony Cicchetti
2a620b852a updates, as well as leap-analogue 2023-08-16 09:31:38 -04:00
Anthony Cicchetti
c59a8c0bc3 updates 2023-08-15 08:46:17 -04:00
Anthony Cicchetti
9dc77e5c55 updates 2023-08-10 15:23:24 -04:00
Anthony Cicchetti
d423622890 updates 2023-08-09 11:10:07 -04:00
8b6d21d3ba updates 2023-08-04 16:37:58 -04:00
47 changed files with 4642 additions and 1454 deletions

11
.envrc
View file

@ -1,11 +1,10 @@
if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
if ! has nix_direnv_version || ! nix_direnv_version 3.0.5; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.5/direnvrc" "sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4="
fi
nix_direnv_watch_file devenv.nix
nix_direnv_watch_file devenv.lock
nix_direnv_watch_file devenv.yaml
watch_file flake.nix
watch_file flake.lock
if ! use flake . --impure
then
echo "devenv could not be build. The devenv environment was not loaded. Make the necessary changes to devenv.nix and hit enter to try again." >&2
echo "devenv could not be build. The devenv environment was not loaded. Make the necessary changes to flake.nix and hit enter to try again." >&2
fi

View file

@ -1,3 +1 @@
🗹 Use [Delta](https://github.com/dandavison/delta)
❎ Convert to [Home-Manager](https://github.com/rycee/home-manager)
Lay down ssh_config with list of my_domains pointing to 1password agent socket

View file

@ -4,13 +4,13 @@
# environment variables. Some entries may override variables
# set by alacritty itself.
#env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use 'alacritty' if it is
# available, otherwise 'xterm-256color' is used.
#TERM: xterm-256color
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use 'alacritty' if it is
# available, otherwise 'xterm-256color' is used.
#TERM: xterm-256color
window:
# Window dimensions (changes require restart)
@ -120,43 +120,43 @@ debug:
colors:
# Default colors
primary:
background: '0x1b2b34'
foreground: '0xc0c5ce'
background: "0x1b2b34"
foreground: "0xc0c5ce"
# Colors the cursor will use if `custom_cursor_colors` is true
cursor:
text: '0x1b2b34'
cursor: '0xc0c5ce'
text: "0x1b2b34"
cursor: "0xc0c5ce"
# Normal colors
normal:
black: '0x1b2b34'
red: '0xec5f67'
green: '0x99c794'
yellow: '0xfac863'
blue: '0x6699cc'
magenta: '0xc594c5'
cyan: '0x5fb3b3'
white: '0xc0c5ce'
black: "0x1b2b34"
red: "0xec5f67"
green: "0x99c794"
yellow: "0xfac863"
blue: "0x6699cc"
magenta: "0xc594c5"
cyan: "0x5fb3b3"
white: "0xc0c5ce"
# Bright colors
bright:
black: '0x65737e'
red: '0xec5f67'
green: '0x99c794'
yellow: '0xfac863'
blue: '0x6699cc'
magenta: '0xc594c5'
cyan: '0x5fb3b3'
white: '0xd8dee9'
black: "0x65737e"
red: "0xec5f67"
green: "0x99c794"
yellow: "0xfac863"
blue: "0x6699cc"
magenta: "0xc594c5"
cyan: "0x5fb3b3"
white: "0xd8dee9"
indexed_colors:
- { index: 16, color: '0xf99157' }
- { index: 17, color: '0xab7967' }
- { index: 18, color: '0x343d46' }
- { index: 19, color: '0x4f5b66' }
- { index: 20, color: '0xa7adba' }
- { index: 21, color: '0xcdd3de' }
- { index: 16, color: "0xf99157" }
- { index: 17, color: "0xab7967" }
- { index: 18, color: "0x343d46" }
- { index: 19, color: "0x4f5b66" }
- { index: 20, color: "0xa7adba" }
- { index: 21, color: "0xcdd3de" }
# Visual Bell
#
@ -233,14 +233,13 @@ mouse:
#modifiers: Control|Shift
selection:
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
semantic_escape_chars: ',│`|:"'' ()[]{}<>'
# When set to `true`, selected text will be copied to both the primary and
# the selection clipboard. Otherwise, it will only be copied to the selection
# clipboard.
save_to_clipboard: false
cursor:
# Cursor style
#
@ -346,110 +345,110 @@ shell:
# - ~AppKeypad
# - AppKeypad
key_bindings:
- { key: V, mods: Command|Shift, action: Paste }
- { key: C, mods: Command|Shift, action: Copy }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: Q, mods: Command, action: Quit }
- { key: W, mods: Command, action: Quit }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Subtract, mods: Control, action: DecreaseFontSize }
- { key: L, mods: Control, action: ClearLogNotice }
- { key: L, mods: Control, chars: "\x0c" }
- { key: Home, chars: "\x1bOH", mode: AppCursor }
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
- { key: End, chars: "\x1bOF", mode: AppCursor }
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~" }
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
- { key: PageUp, chars: "\x1b[5~" }
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" }
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
- { key: PageDown, chars: "\x1b[6~" }
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
- { key: Back, chars: "\x7f" }
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
- { key: Insert, chars: "\x1b[2~" }
- { key: Delete, chars: "\x1b[3~" }
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
- { key: Left, chars: "\x1bOD", mode: AppCursor }
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
- { key: Right, chars: "\x1bOC", mode: AppCursor }
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
- { key: Up, chars: "\x1bOA", mode: AppCursor }
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
- { key: Down, chars: "\x1bOB", mode: AppCursor }
- { key: F1, chars: "\x1bOP" }
- { key: F2, chars: "\x1bOQ" }
- { key: F3, chars: "\x1bOR" }
- { key: F4, chars: "\x1bOS" }
- { key: F5, chars: "\x1b[15~" }
- { key: F6, chars: "\x1b[17~" }
- { key: F7, chars: "\x1b[18~" }
- { key: F8, chars: "\x1b[19~" }
- { key: F9, chars: "\x1b[20~" }
- { key: F10, chars: "\x1b[21~" }
- { key: F11, chars: "\x1b[23~" }
- { key: F12, chars: "\x1b[24~" }
- { key: F1, mods: Shift, chars: "\x1b[1;2P" }
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" }
- { key: F3, mods: Shift, chars: "\x1b[1;2R" }
- { key: F4, mods: Shift, chars: "\x1b[1;2S" }
- { key: F5, mods: Shift, chars: "\x1b[15;2~" }
- { key: F6, mods: Shift, chars: "\x1b[17;2~" }
- { key: F7, mods: Shift, chars: "\x1b[18;2~" }
- { key: F8, mods: Shift, chars: "\x1b[19;2~" }
- { key: F9, mods: Shift, chars: "\x1b[20;2~" }
- { key: F10, mods: Shift, chars: "\x1b[21;2~" }
- { key: F11, mods: Shift, chars: "\x1b[23;2~" }
- { key: F12, mods: Shift, chars: "\x1b[24;2~" }
- { key: F1, mods: Control, chars: "\x1b[1;5P" }
- { key: F2, mods: Control, chars: "\x1b[1;5Q" }
- { key: F3, mods: Control, chars: "\x1b[1;5R" }
- { key: F4, mods: Control, chars: "\x1b[1;5S" }
- { key: F5, mods: Control, chars: "\x1b[15;5~" }
- { key: F6, mods: Control, chars: "\x1b[17;5~" }
- { key: F7, mods: Control, chars: "\x1b[18;5~" }
- { key: F8, mods: Control, chars: "\x1b[19;5~" }
- { key: F9, mods: Control, chars: "\x1b[20;5~" }
- { key: F10, mods: Control, chars: "\x1b[21;5~" }
- { key: F11, mods: Control, chars: "\x1b[23;5~" }
- { key: F12, mods: Control, chars: "\x1b[24;5~" }
- { key: F1, mods: Alt, chars: "\x1b[1;6P" }
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" }
- { key: F3, mods: Alt, chars: "\x1b[1;6R" }
- { key: F4, mods: Alt, chars: "\x1b[1;6S" }
- { key: F5, mods: Alt, chars: "\x1b[15;6~" }
- { key: F6, mods: Alt, chars: "\x1b[17;6~" }
- { key: F7, mods: Alt, chars: "\x1b[18;6~" }
- { key: F8, mods: Alt, chars: "\x1b[19;6~" }
- { key: F9, mods: Alt, chars: "\x1b[20;6~" }
- { key: F10, mods: Alt, chars: "\x1b[21;6~" }
- { key: F11, mods: Alt, chars: "\x1b[23;6~" }
- { key: F12, mods: Alt, chars: "\x1b[24;6~" }
- { key: F1, mods: Super, chars: "\x1b[1;3P" }
- { key: F2, mods: Super, chars: "\x1b[1;3Q" }
- { key: F3, mods: Super, chars: "\x1b[1;3R" }
- { key: F4, mods: Super, chars: "\x1b[1;3S" }
- { key: F5, mods: Super, chars: "\x1b[15;3~" }
- { key: F6, mods: Super, chars: "\x1b[17;3~" }
- { key: F7, mods: Super, chars: "\x1b[18;3~" }
- { key: F8, mods: Super, chars: "\x1b[19;3~" }
- { key: F9, mods: Super, chars: "\x1b[20;3~" }
- { key: F10, mods: Super, chars: "\x1b[21;3~" }
- { key: F11, mods: Super, chars: "\x1b[23;3~" }
- { key: F12, mods: Super, chars: "\x1b[24;3~" }
- { key: V, mods: Command|Shift, action: Paste }
- { key: C, mods: Command|Shift, action: Copy }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: Q, mods: Command, action: Quit }
- { key: W, mods: Command, action: Quit }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Subtract, mods: Control, action: DecreaseFontSize }
- { key: L, mods: Control, action: ClearLogNotice }
- { key: L, mods: Control, chars: "\x0c" }
- { key: Home, chars: "\x1bOH", mode: AppCursor }
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
- { key: End, chars: "\x1bOF", mode: AppCursor }
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~" }
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
- { key: PageUp, chars: "\x1b[5~" }
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" }
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
- { key: PageDown, chars: "\x1b[6~" }
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
- { key: Back, chars: "\x7f" }
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
- { key: Insert, chars: "\x1b[2~" }
- { key: Delete, chars: "\x1b[3~" }
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
- { key: Left, chars: "\x1bOD", mode: AppCursor }
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
- { key: Right, chars: "\x1bOC", mode: AppCursor }
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
- { key: Up, chars: "\x1bOA", mode: AppCursor }
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
- { key: Down, chars: "\x1bOB", mode: AppCursor }
- { key: F1, chars: "\x1bOP" }
- { key: F2, chars: "\x1bOQ" }
- { key: F3, chars: "\x1bOR" }
- { key: F4, chars: "\x1bOS" }
- { key: F5, chars: "\x1b[15~" }
- { key: F6, chars: "\x1b[17~" }
- { key: F7, chars: "\x1b[18~" }
- { key: F8, chars: "\x1b[19~" }
- { key: F9, chars: "\x1b[20~" }
- { key: F10, chars: "\x1b[21~" }
- { key: F11, chars: "\x1b[23~" }
- { key: F12, chars: "\x1b[24~" }
- { key: F1, mods: Shift, chars: "\x1b[1;2P" }
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" }
- { key: F3, mods: Shift, chars: "\x1b[1;2R" }
- { key: F4, mods: Shift, chars: "\x1b[1;2S" }
- { key: F5, mods: Shift, chars: "\x1b[15;2~" }
- { key: F6, mods: Shift, chars: "\x1b[17;2~" }
- { key: F7, mods: Shift, chars: "\x1b[18;2~" }
- { key: F8, mods: Shift, chars: "\x1b[19;2~" }
- { key: F9, mods: Shift, chars: "\x1b[20;2~" }
- { key: F10, mods: Shift, chars: "\x1b[21;2~" }
- { key: F11, mods: Shift, chars: "\x1b[23;2~" }
- { key: F12, mods: Shift, chars: "\x1b[24;2~" }
- { key: F1, mods: Control, chars: "\x1b[1;5P" }
- { key: F2, mods: Control, chars: "\x1b[1;5Q" }
- { key: F3, mods: Control, chars: "\x1b[1;5R" }
- { key: F4, mods: Control, chars: "\x1b[1;5S" }
- { key: F5, mods: Control, chars: "\x1b[15;5~" }
- { key: F6, mods: Control, chars: "\x1b[17;5~" }
- { key: F7, mods: Control, chars: "\x1b[18;5~" }
- { key: F8, mods: Control, chars: "\x1b[19;5~" }
- { key: F9, mods: Control, chars: "\x1b[20;5~" }
- { key: F10, mods: Control, chars: "\x1b[21;5~" }
- { key: F11, mods: Control, chars: "\x1b[23;5~" }
- { key: F12, mods: Control, chars: "\x1b[24;5~" }
- { key: F1, mods: Alt, chars: "\x1b[1;6P" }
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" }
- { key: F3, mods: Alt, chars: "\x1b[1;6R" }
- { key: F4, mods: Alt, chars: "\x1b[1;6S" }
- { key: F5, mods: Alt, chars: "\x1b[15;6~" }
- { key: F6, mods: Alt, chars: "\x1b[17;6~" }
- { key: F7, mods: Alt, chars: "\x1b[18;6~" }
- { key: F8, mods: Alt, chars: "\x1b[19;6~" }
- { key: F9, mods: Alt, chars: "\x1b[20;6~" }
- { key: F10, mods: Alt, chars: "\x1b[21;6~" }
- { key: F11, mods: Alt, chars: "\x1b[23;6~" }
- { key: F12, mods: Alt, chars: "\x1b[24;6~" }
- { key: F1, mods: Super, chars: "\x1b[1;3P" }
- { key: F2, mods: Super, chars: "\x1b[1;3Q" }
- { key: F3, mods: Super, chars: "\x1b[1;3R" }
- { key: F4, mods: Super, chars: "\x1b[1;3S" }
- { key: F5, mods: Super, chars: "\x1b[15;3~" }
- { key: F6, mods: Super, chars: "\x1b[17;3~" }
- { key: F7, mods: Super, chars: "\x1b[18;3~" }
- { key: F8, mods: Super, chars: "\x1b[19;3~" }
- { key: F9, mods: Super, chars: "\x1b[20;3~" }
- { key: F10, mods: Super, chars: "\x1b[21;3~" }
- { key: F11, mods: Super, chars: "\x1b[23;3~" }
- { key: F12, mods: Super, chars: "\x1b[24;3~" }

221
bin/age-op Normal file
View file

@ -0,0 +1,221 @@
#!/usr/bin/env bash
# Age encryption using secrets in 1password vault
# Date: 2024-06-04
# Version: 0.3
# License: MIT or APACHE-2.0
# Author: @stevelr
# Author: @anthonycicc
#
# Run `age-op -h` for help and examples
#
# For information about age, see https://github.com/FiloSottile/age
# Tested on mac and linux. Tested with age and rage (rust-rage)
# check dependencies
# Change to 'rage' if you prefer
AGE=${AGE:-$(which age)}
OP=${OP:-op}
# Select private folder for temporary secrets. can be overridden with `-t` flag
# The defaults for linux and macos are readable by owner only
# Returns: temp folder path with no trailing '/'
private_tmp() {
if [ -d /run/user/$(id -u) ]; then
echo /run/user/$(id -u) # linux. folder owned by user with mode 700
elif [ -d "$TMPDIR" ]; then
echo "$(echo $TMPDIR | sed 's./$..')" # macos. owned by user with mode 700. remove trailing slash
else
echo "$PWD"
fi
}
tmppath=$(private_tmp)
# Display help message and quit
# param: ERROR_MESSAGE
# If ERROR_MESSAGE is not empty, exits 1, otherwise exits 0
_help() {
[ -n "$1" ] && echo "Error: $1\n"
local ds="\$"
local prog=$(basename $0)
cat <<_HELP
age encryption with secret keys in 1password vault
Examples:
Encrypt file:
$prog -e -k KEY_PATH [ -o OUTPUT ] [ -t TMPDIR ] [ FILE ]
encrypt a single input file FILE.
If FILE is '-' or not specified, stdin is encrypted
If OUTPUT is '-' or not specified, the output is sent to stdout
To encrypt one or more files or folders to a tar file, use
tar czf - FILE_OR_DIR FILE_OR_DIR ... | $prog -e -k KEY_PATH -o foo.tar.gz.age
Decrypt file:
$prog -d -k KEY_PATH [ -o OUTPUT ] [-t TMPDIR ] [ FILE ]
decrypt a file, or stdin
If FILE is '-' or not specified, stdin is decrypted
If OUTPUT is '-' or not specified, the output is sent to stdout
To decrypt a tar file,
$prog -d -k KEY_PATH foo.tar.gz.age | tar xzf -
Generate an age ed25519 key and store it in the 1password vault. The type of the new item will be "Password"
$prog -n -k KEY_PATH
KEY_PATH should have one of the following formats:
- 'op://vault/title', 'op://vault/title/field', or 'op://vault/title/section/field'
In the first case, the field name defaults to 'password'
TMPDIR is the temporary folder where key will be briefly written and quickly removed
Default is '$tmppath'
1Password configuration:
For the 1Password cli ('op') to authenticate with a vault, you can do one of the following:
- For use with a service account, set the environment variable OP_SERVICE_ACCOUNT_TOKEN
- For use with a 1Password Connect Server, set OP_CONNECT_HOST and OP_CONNECT_TOKEN
- sign into a local app with "eval ${ds}(op signin)"
Dependencies: Installation instructions and documentation:
age: https://age-encryption.org
op (1Password cli): https://developer.1password.com/docs/cli/get-started
_HELP
[ -n "$1" ] && exit 1 || exit 0
}
# Store key in unique temp file, with access limited to current user
# params: TMPDIR KEY
# returns: path to temp file
store_secret() {
secret=$(mktemp "$1/age-secret.XXXXXX")
chmod 600 "$secret"
cat >"$secret" <<_EKEY
$2
_EKEY
echo "$secret"
}
# Create a new key
# params: KEYPATH
new_key() {
local keypath="$1"
local key field out pw title vault field
##
## Create new key
##
vault=$(echo $keypath | sed -E 's|op://([^/]+)\/([^/]+)\/(.*)|\1|')
title=$(echo $keypath | sed -E 's|op://([^/]+)\/([^/]+)\/(.*)|\2|')
field=$(echo $keypath | sed -E 's|op://([^/]+)\/([^/]+)\/(.*)|\3|')
# check if the key path exists so we don't overwrite it.
# The successs case (key is unique) generates an error, so temporarily disable '+e'
set +e
key=$($OP item get "$title" "--vault=$vault" 2>/dev/null)
[ $? -eq 0 ] && _help "Key vault:$vault title:$title already exists - will not overwrite"
set -e
pw="$($AGE-keygen)"
out=$($OP item create --category=password --title="$title" --vault="$vault" "$field=$pw")
echo "Created vault:$vault title:$title"
}
cmd=""
input=""
output=""
keypath=""
stdin=0
_err=""
# putting this in a variable makes it work with zsh
help_regex="^\-h|^--help|^help$"
[ ! $($AGE --help 2>&1 | grep Usage) ] && _help "Missing 'age' or 'rage' dependency. Please see installation url below."
# 1password cli
[ ! $($OP --version) ] && _help "Missing 'op' dependency. Please see installation url below."
[[ $1 =~ $help_regex ]] && _help
while getopts ':hnedo:k:t:' OPTION; do
case $OPTION in
h) _help
;;
n) [ -n "$cmd" ] && _help "Only one of -e, -d, or -n may be used"
cmd="new"
;;
e) [ -n "$cmd" ] && _help "Only one of -e, -d, or -n may be used"
cmd="encrypt"
;;
d) [ -n "$cmd" ] && _help "Only one of -e, -d, or -n may be used"
cmd="decrypt"
;;
o) output=$OPTARG
;;
k) keypath=$OPTARG
if [[ -v AGE_KEYPATH ]]; then
keypath=$AGE_KEYPATH
fi
if [[ ! $keypath =~ ^op://[^/]+/[^/]+/.+$ ]]; then
# if path has only two segments (vault & title), append field "password"
# since the 'new' function creates items of type Password
if [[ $keypath =~ ^op://[^/]+/[^/]+$ ]]; then
keypath="$keypath/password"
else
_help "Invalid key path '$keypath'"
fi
fi
;;
t) tmppath=$OPTARG
[ ! -d "$tmppath" ] && _help "Invalid tmp folder: '$tmppath' does not exist"
;;
?) _help "" ;;
esac
done
shift "$(($OPTIND -1))"
[ -z "$cmd" ] && _help "One of -e, -d, or -n must be used"
[ -z "$keypath" ] && _help "keypath is required. Should be of the form op://vault/title[/field]"
if [ "$cmd" = "new" ]; then
new_key $keypath
else
##
## Encrypt or Decrypt
##
if [ -z "$1" ] || [ "$1" = "-" ]; then
stdin=1
else
input="$1"
[ ! -r "$input" ] && _help "Missing or unreadable input file '$input'"
# don't re-encrypt file ending in .age
[ "$cmd" = "encrypt" ] && [[ $input =~ \.age$ ]] && _help "Input file may not end in '.age'"
fi
if [ -z "$output" ] || [ "$output" = "-" ]; then
output=/dev/stdout
fi
key=$($OP read "$keypath")
if [ $? -ne 0 ] || [ -z "$key" ]; then
_help "Invalid keypath '$keypath'"
fi
secret=$(store_secret "$tmppath" "$key")
## try
{(
set +e # don't quit on error here - we want to make sure secret is deleted
if [ $stdin -eq 1 ]; then
$AGE --${cmd} -i "$secret" >"$output"
else
$AGE --${cmd} -i "$secret" <"$input" >"$output"
fi
)}
## catch
{
rm -f "$secret"
}
fi
unset _err cmd input key keypath output secret stdin tmppath

1
cy/cy.janet Normal file
View file

@ -0,0 +1 @@
(key/bind :root ["ctrl+a" "p"] action/command-palette)

View file

@ -21,8 +21,8 @@
;; font string. You generally only need these two:
;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light)
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
(setq doom-font (font-spec :family "Iosevka Custom" :size 14 :weight 'medium)
doom-unicode-font (font-spec :family "Iosevka Custom" :size 14 :weight 'medium))
(setq doom-font (font-spec :family "TX-02-BerkeleyAC" :size 14 :weight 'medium)
doom-unicode-font (font-spec :family "TX-02-BerkeleyAC" :size 14 :weight 'medium))
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
@ -48,6 +48,7 @@
;; numbers are disabled. For relative line numbers, set this to `relative'.
(setq display-line-numbers-type 'relative)
(auth-source-1password-enable)
;; Here are some additional functions/macros that could help you configure Doom:
;;

View file

@ -25,14 +25,14 @@
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
;; (ivy +childframe +fuzzy +icons +prescient) ; a search engine for love and life
(vertico +icons) ; the search engine of the future
(vertico) ; the search engine of the future
:ui
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
doom-quit ; DOOM quit-message prompts when you quit Emacs
(emoji +unicode +github) ; 🙂
(emoji +github) ; 🙂
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
hydra
indent-guides ; highlighted indent columns
@ -45,7 +45,7 @@
(popup +defaults) ; tame sudden yet inevitable temporary windows
;;tabs ; a tab bar for Emacs
(treemacs +lsp) ; a project drawer, like neotree but cooler
unicode ; extended unicode support for various languages
; unicode ; extended unicode support for various languages
vc-gutter ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
window-select ; visually switch windows
@ -67,7 +67,7 @@
word-wrap ; soft wrapping with language-aware indent
:emacs
(dired +icons) ; making dired pretty [functional]
(dired) ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
;;ibuffer ; interactive buffer management
(undo +tree) ; persistent, smarter undo for your inevitable mistakes
@ -153,7 +153,7 @@
nim ; python + lisp at the speed of c
nix ; I hereby declare "nix geht mehr!"
;;(ocaml +lsp) ; an objective camel
(org +pandoc +pretty +roam2 +brain +dragndrop) ; organize your plain life in plain text
(org +pandoc +pretty +dragndrop) ; organize your plain life in plain text
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional

View file

@ -52,3 +52,4 @@
(package! org-transclusion)
(package! jsonnet-mode)
(package! org-modern)
(package! auth-source-1password)

255
flake.lock generated
View file

@ -1,18 +1,49 @@
{
"nodes": {
"devenv": {
"cachix": {
"inputs": {
"flake-compat": "flake-compat",
"nix": "nix",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
"devenv": [
"devenv"
],
"flake-compat": [
"devenv"
],
"git-hooks": [
"devenv"
],
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1690638457,
"narHash": "sha256-3EBd8PHd0lbSCMief9eQdzTOvEofnB3koR+Q4wvvDbA=",
"lastModified": 1737621947,
"narHash": "sha256-8HFvG7fvIFbgtaYAY2628Tb89fA55nPm2jSiNs0/Cws=",
"owner": "cachix",
"repo": "cachix",
"rev": "f65a3cd5e339c223471e64c051434616e18cc4f5",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "latest",
"repo": "cachix",
"type": "github"
}
},
"devenv": {
"inputs": {
"cachix": "cachix",
"flake-compat": "flake-compat",
"git-hooks": "git-hooks",
"nix": "nix",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1743025451,
"narHash": "sha256-5gqfQwTpOIHWSltdm5tKbyOvnTll81lGSiuC2EsVZt0=",
"owner": "cachix",
"repo": "devenv",
"rev": "da313abf0fb6d21210f6d555acabf40425e080f1",
"rev": "686aaf88c9c095fc49dadc620d1a814830c78206",
"type": "github"
},
"original": {
@ -24,11 +55,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
@ -37,21 +68,50 @@
"type": "github"
}
},
"flake-utils": {
"flake-parts": {
"inputs": {
"systems": "systems"
"nixpkgs-lib": [
"devenv",
"nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1685518550,
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
"lastModified": 1712014858,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": [
"devenv"
],
"gitignore": "gitignore",
"nixpkgs": [
"devenv",
"nixpkgs"
]
},
"locked": {
"lastModified": 1740849354,
"narHash": "sha256-oy33+t09FraucSZ2rZ6qnD1Y1c8azKKmQuCvF2ytUko=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "4a709a8ce9f8c08fa7ddb86761fe488ff7858a07",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
@ -59,16 +119,16 @@
"inputs": {
"nixpkgs": [
"devenv",
"pre-commit-hooks",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
@ -77,143 +137,106 @@
"type": "github"
}
},
"lowdown-src": {
"libgit2": {
"flake": false,
"locked": {
"lastModified": 1633514407,
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
"owner": "kristapsdz",
"repo": "lowdown",
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
"lastModified": 1697646580,
"narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=",
"owner": "libgit2",
"repo": "libgit2",
"rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5",
"type": "github"
},
"original": {
"owner": "kristapsdz",
"repo": "lowdown",
"owner": "libgit2",
"repo": "libgit2",
"type": "github"
}
},
"nix": {
"inputs": {
"lowdown-src": "lowdown-src",
"nixpkgs": [
"devenv",
"nixpkgs"
"flake-compat": [
"devenv"
],
"nixpkgs-regression": "nixpkgs-regression"
"flake-parts": "flake-parts",
"libgit2": "libgit2",
"nixpkgs": "nixpkgs_2",
"nixpkgs-23-11": [
"devenv"
],
"nixpkgs-regression": [
"devenv"
],
"pre-commit-hooks": [
"devenv"
]
},
"locked": {
"lastModified": 1676545802,
"narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=",
"lastModified": 1741798497,
"narHash": "sha256-E3j+3MoY8Y96mG1dUIiLFm2tZmNbRvSiyN7CrSKuAVg=",
"owner": "domenkozar",
"repo": "nix",
"rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f",
"rev": "f3f44b2baaf6c4c6e179de8cbb1cc6db031083cd",
"type": "github"
},
"original": {
"owner": "domenkozar",
"ref": "relaxed-flakes",
"ref": "devenv-2.24",
"repo": "nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1678875422,
"narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=",
"lastModified": 1733212471,
"narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459",
"rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-regression": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1685801374,
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1688392541,
"narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=",
"lastModified": 1717432640,
"narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b",
"rev": "88269ab3044128b7c2f4c7d68448b2fb50456870",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.11",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": [
"devenv",
"flake-compat"
],
"flake-utils": "flake-utils",
"gitignore": "gitignore",
"nixpkgs": [
"devenv",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"nixpkgs_3": {
"locked": {
"lastModified": 1688056373,
"narHash": "sha256-2+SDlNRTKsgo3LBRiMUcoEUb6sDViRNQhzJquZ4koOI=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "5843cf069272d92b60c3ed9e55b7a8989c01d4c7",
"type": "github"
"lastModified": 1742422364,
"narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=",
"rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc",
"revCount": 770807,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.770807%2Brev-a84ebe20c6bc2ecbcfb000a50776219f48d134cc/0195b626-8c1d-7fb9-9282-563af3d37ab9/source.tar.gz"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
"type": "tarball",
"url": "https://flakehub.com/f/NixOS/nixpkgs/0.1.0.tar.gz"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"nixpkgs": "nixpkgs_2",
"systems": "systems_2"
"nixpkgs": "nixpkgs_3",
"systems": "systems"
}
},
"systems": {
@ -226,24 +249,8 @@
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
"id": "systems",
"type": "indirect"
}
}
},

View file

@ -1,41 +1,64 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
systems.url = "github:nix-systems/default";
devenv.url = "github:cachix/devenv";
nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.0.tar.gz";
devenv = {
url = "github:cachix/devenv";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
};
outputs = {
self,
nixpkgs,
devenv,
systems,
...
} @ inputs: let
forEachSystem = nixpkgs.lib.genAttrs (import systems);
in {
devShells =
forEachSystem
(system: let
pkgs = nixpkgs.legacyPackages.${system};
in {
default = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
{
# https://devenv.sh/reference/options/
packages = [pkgs.hello pkgs.delta pkgs.difftastic pkgs.alejandra pkgs.nodePackages.bash-language-server pkgs.shellcheck pkgs.shfmt];
pre-commit.hooks = {
alejandra.enable = true;
black.enable = true;
shellcheck.enable = true;
shfmt.enable = true;
taplo.enable = true;
};
}
];
};
});
nixConfig = {
extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
extra-substituters = "https://devenv.cachix.org";
};
outputs =
{
nixpkgs,
devenv,
systems,
...
}@inputs:
let
forEachSystem = nixpkgs.lib.genAttrs (import systems);
in
{
formatter = forEachSystem (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style);
devShells = forEachSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
default = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
{
# https://devenv.sh/reference/options/
packages = [
pkgs.hello
pkgs.delta
pkgs.difftastic
pkgs.nodePackages.bash-language-server
pkgs.shellcheck
pkgs.shfmt
];
pre-commit.hooks = {
nixfmt-rfc-style.enable = true;
black.enable = true;
deadnix.enable = true;
stylua.enable = true;
shellcheck.enable = true;
shfmt.enable = true;
taplo.enable = true;
};
}
];
};
}
);
};
}

2
ghostty/config Normal file
View file

@ -0,0 +1,2 @@
font-family = "Berkeley Mono"
font-style = "Retina"

View file

@ -5,7 +5,8 @@ spoon.SpoonInstall:andUse("WindowHalfsAndThirds")
spoon.SpoonInstall:andUse("Commander")
spoon.SpoonInstall:andUse("ReloadConfiguration")
TERMINAL_NAME = "WezTerm"
-- Keep a running, and preferred terminal as the _last_ value here
TERMINAL_NAMES = { "Ghostty", "wezterm-gui", "WezTerm" }
spoon.WindowScreenLeftAndRight:bindHotkeys(spoon.WindowScreenLeftAndRight.defaultHotkeys)
@ -15,27 +16,36 @@ spoon.ReloadConfiguration:start()
pcall(require, "initlocal")
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "SPACE", function ()
spoon.Commander.show()
hs.hotkey.bind({ "cmd", "alt", "ctrl" }, "SPACE", function()
spoon.Commander.show()
end)
hs.hotkey.bind({"ctrl"}, "t", function ()
local currentApp = hs.window.focusedWindow():application()
if (currentApp:name() == TERMINAL_NAME) then
hs.eventtap.keyStroke({"ctrl"}, "t", 1000, currentApp)
else
hs.application.launchOrFocus(TERMINAL_NAME)
end
hs.hotkey.bind({ "ctrl" }, "t", function()
local terminal = nil
for i = 1, #TERMINAL_NAMES do
-- Can't use .get here, as there's an open bug where it just… returns a window instead sometimes
if hs.application.find(TERMINAL_NAMES[i], true) then
terminal = hs.application.find(TERMINAL_NAMES[i], true)
break
end
end
local currentApp = hs.window.focusedWindow():application()
print(currentApp)
if terminal then
if currentApp:name() == terminal:name() then
hs.eventtap.keyStroke({ "ctrl" }, "t", 1000, currentApp)
else
terminal:activate()
end
else
hs.application.launchOrFocus(TERMINAL_NAMES[1])
end
end)
hs.hotkey.bind({"ctrl", "alt"}, "t", function ()
hs.application.launchOrFocus("/Users/acicchetti/bin/Terminal (Rosetta).app")
hs.hotkey.bind({ "cmd", "alt" }, ",", function()
hs.application.launchOrFocus("System Preferences")
end)
hs.hotkey.bind({"cmd", "alt"}, ",", function ()
hs.application.launchOrFocus("System Preferences")
end)
hs.hotkey.bind({"cmd", "shift"}, "l", function ()
hs.application.launchOrFocus("Launchpad")
hs.hotkey.bind({ "cmd", "shift" }, "l", function()
hs.application.launchOrFocus("Launchpad")
end)

View file

@ -1,35 +1,34 @@
{
"nodes": {
"devenv": {
"fenix": {
"inputs": {
"flake-compat": "flake-compat",
"nix": "nix",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
"nixpkgs": [
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1688058187,
"narHash": "sha256-ipDcc7qrucpJ0+0eYNlwnE+ISTcq4m03qW+CWUshRXI=",
"owner": "cachix",
"repo": "devenv",
"rev": "c8778e3dc30eb9043e218aaa3861d42d4992de77",
"lastModified": 1742452566,
"narHash": "sha256-sVuLDQ2UIWfXUBbctzrZrXM2X05YjX08K7XHMztt36E=",
"owner": "nix-community",
"repo": "fenix",
"rev": "7d9ba794daf5e8cc7ee728859bc688d8e26d5f06",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "latest",
"repo": "devenv",
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
@ -38,13 +37,53 @@
"type": "github"
}
},
"flake-utils": {
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1741352980,
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -55,14 +94,14 @@
},
"flake-utils_2": {
"inputs": {
"systems": "systems"
"systems": "systems_2"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -73,14 +112,14 @@
},
"flake-utils_3": {
"inputs": {
"systems": "systems_2"
"systems": "systems_3"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -89,25 +128,28 @@
"type": "github"
}
},
"gitignore": {
"ghostty": {
"inputs": {
"nixpkgs": [
"devenv",
"pre-commit-hooks",
"flake-compat": "flake-compat",
"flake-utils": "flake-utils_2",
"nixpkgs-stable": "nixpkgs-stable",
"nixpkgs-unstable": [
"nixpkgs"
]
],
"zig": "zig",
"zon2nix": "zon2nix"
},
"locked": {
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"lastModified": 1743191728,
"narHash": "sha256-LrQd2IkfcmHdBh+pwPEPXzcosBerIEFzz/DbVNzBqig=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "1067cd3d8a061eb5b23bc1a4c46ca10af4481941",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"owner": "ghostty-org",
"repo": "ghostty",
"type": "github"
}
},
@ -118,11 +160,11 @@
]
},
"locked": {
"lastModified": 1691039228,
"narHash": "sha256-iPNZJ1LvfUf1Y456ewC0DXgf99TNssG8OLObOyqxO6M=",
"lastModified": 1743360001,
"narHash": "sha256-HtpS/ZdgWXw0y+aFdORcX5RuBGTyz3WskThspNR70SM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "86dd48d70a2e2c17e84e747ba4faa92453e68d4a",
"rev": "b6fd653ef8fbeccfd4958650757e91767a65506d",
"type": "github"
},
"original": {
@ -131,81 +173,31 @@
"type": "github"
}
},
"lowdown-src": {
"flake": false,
"locked": {
"lastModified": 1633514407,
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
"owner": "kristapsdz",
"repo": "lowdown",
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
"type": "github"
},
"original": {
"owner": "kristapsdz",
"repo": "lowdown",
"type": "github"
}
},
"nix": {
"ixx": {
"inputs": {
"lowdown-src": "lowdown-src",
"nixpkgs": [
"devenv",
"nixpkgs"
"flake-utils": [
"nixvim",
"nuschtosSearch",
"flake-utils"
],
"nixpkgs-regression": "nixpkgs-regression"
},
"locked": {
"lastModified": 1676545802,
"narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=",
"owner": "domenkozar",
"repo": "nix",
"rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f",
"type": "github"
},
"original": {
"owner": "domenkozar",
"ref": "relaxed-flakes",
"repo": "nix",
"type": "github"
}
},
"nix-flake-tests": {
"locked": {
"lastModified": 1677844186,
"narHash": "sha256-ErJZ/Gs1rxh561CJeWP5bohA2IcTq1rDneu1WT6CVII=",
"owner": "antifuchs",
"repo": "nix-flake-tests",
"rev": "bbd9216bd0f6495bb961a8eb8392b7ef55c67afb",
"type": "github"
},
"original": {
"owner": "antifuchs",
"repo": "nix-flake-tests",
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"nixneovim",
"nixneovimplugins",
"poetry2nix",
"nixvim",
"nuschtosSearch",
"nixpkgs"
]
},
"locked": {
"lastModified": 1688870561,
"narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "165b1650b753316aa7f1787f3005a8d2da0f5301",
"lastModified": 1729958008,
"narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"owner": "NuschtOS",
"ref": "v0.0.6",
"repo": "ixx",
"type": "github"
}
},
@ -216,11 +208,11 @@
]
},
"locked": {
"lastModified": 1690687539,
"narHash": "sha256-Lnwz9XKtshm+5OeWqCbj/3tKuKK+DL5tUTdKSRrKBlY=",
"lastModified": 1743306489,
"narHash": "sha256-LROaIjSLo347cwcHRfSpqzEOa2FoLSeJwU4dOrGm55E=",
"owner": "Mic92",
"repo": "nix-index-database",
"rev": "d74b8171153ae35d7d323a9b1ad6c4cf7a995591",
"rev": "b3696bfb6c24aa61428839a99e8b40c53ac3a82d",
"type": "github"
},
"original": {
@ -229,215 +221,134 @@
"type": "github"
}
},
"nixneovim": {
"inputs": {
"flake-utils": "flake-utils_2",
"home-manager": [
"home-manager"
],
"nix-flake-tests": "nix-flake-tests",
"nixneovimplugins": "nixneovimplugins",
"nixpkgs": [
"nixpkgs"
],
"nmd": "nmd",
"nmt": "nmt"
},
"locked": {
"lastModified": 1690726695,
"narHash": "sha256-h0azAgBLlS8i6RpEjWK7fwLVKhlmbs02OGojsH29Jqo=",
"owner": "nixneovim",
"repo": "nixneovim",
"rev": "69ade92b8d90658b45c7c915262725ec66a25d6b",
"type": "github"
},
"original": {
"owner": "nixneovim",
"repo": "nixneovim",
"type": "github"
}
},
"nixneovimplugins": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": [
"nixneovim",
"flake-utils"
],
"nixpkgs": [
"nixneovim",
"nixpkgs"
],
"poetry2nix": "poetry2nix"
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1690726628,
"narHash": "sha256-0G9oLqGzA5MRoYjBWTEH1hyKmHfzfwxmRfLAYbWl1jQ=",
"owner": "nixneovim",
"repo": "nixneovimplugins",
"rev": "a4c09b64a0f7be0e8d26ecacc5cf1ba1f8a24d22",
"lastModified": 1743355494,
"narHash": "sha256-NlHg4uJ0aneeoh2q6ZMGElDStnSNxF4YdxNGgZitjQw=",
"owner": "m15a",
"repo": "flake-awesome-neovim-plugins",
"rev": "aa8458831dc4e07c159616091216f56e488fc952",
"type": "github"
},
"original": {
"owner": "nixneovim",
"repo": "nixneovimplugins",
"owner": "m15a",
"repo": "flake-awesome-neovim-plugins",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1678875422,
"narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=",
"owner": "NixOS",
"lastModified": 1743423905,
"narHash": "sha256-KMl3R0n1H4Vo9OyFFwAUI6d799r8zbxV+Q5WSsVNajw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459",
"rev": "e68b342423c69aa8113894d9e89ae50e4fd9c456",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"owner": "nixos",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-regression": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1678872516,
"narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1691006197,
"narHash": "sha256-DbtxVWPt+ZP5W0Usg7jAyTomIM//c3Jtfa59Ht7AV8s=",
"lastModified": 1741992157,
"narHash": "sha256-nlIfTsTrMSksEJc1f7YexXiPVuzD1gOfeN1ggwZyUoc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "66aedfd010204949cb225cf749be08cb13ce1813",
"rev": "da4b122f63095ca1199bd4d526f9e26426697689",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"ref": "release-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nmd": {
"flake": false,
"locked": {
"lastModified": 1687627428,
"narHash": "sha256-7zGfXuNS5RHqhpEdz2fwrtqvF86JRo5U1hrxZSYgcm8=",
"owner": "~rycee",
"repo": "nmd",
"rev": "824a380546b5d0d0eb701ff8cd5dbafb360750ff",
"type": "sourcehut"
"nixvim": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"nuschtosSearch": "nuschtosSearch"
},
"original": {
"owner": "~rycee",
"repo": "nmd",
"type": "sourcehut"
}
},
"nmt": {
"flake": false,
"locked": {
"lastModified": 1683843030,
"narHash": "sha256-2K9tFpypgSORyUTRAL7MFRKCXU4GykmhIDrrIydtPdI=",
"owner": "jooooscha",
"repo": "nmt",
"rev": "f30b96093eb056f1bcc60199545344b4e4a72c5a",
"lastModified": 1743362786,
"narHash": "sha256-XbXIRDbb8/vLBX1M096l7lM5wfzBTp1ZXfUl9bUhVGU=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "d81f37256d0a8691b837b74979d27bf89be8ecdd",
"type": "github"
},
"original": {
"owner": "jooooscha",
"repo": "nmt",
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"poetry2nix": {
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils_3",
"nix-github-actions": "nix-github-actions",
"ixx": "ixx",
"nixpkgs": [
"nixneovim",
"nixneovimplugins",
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1689849924,
"narHash": "sha256-d259Z2S7CS7Na04qQNQ6LYQILuI7cf4Rpe76qc4mz40=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "1d7eda9336f336392d24e9602be5cb9be7ae405c",
"lastModified": 1742659553,
"narHash": "sha256-i/JCrr/jApVorI9GkSV5to+USrRCa0rWuQDH8JSlK2A=",
"owner": "NuschtOS",
"repo": "search",
"rev": "508752835128a3977985a4d5225ff241f7756181",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": [
"devenv",
"flake-compat"
],
"flake-utils": "flake-utils",
"gitignore": "gitignore",
"nixpkgs": [
"devenv",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1686050334,
"narHash": "sha256-R0mczWjDzBpIvM3XXhO908X5e2CQqjyh/gFbwZk/7/Q=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "6881eb2ae5d8a3516e34714e7a90d9d95914c4dc",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"fenix": "fenix",
"flake-utils": "flake-utils",
"ghostty": "ghostty",
"home-manager": "home-manager",
"nix-index-database": "nix-index-database",
"nixneovim": "nixneovim",
"nixpkgs": "nixpkgs_2"
"nixneovimplugins": "nixneovimplugins",
"nixpkgs": "nixpkgs",
"nixvim": "nixvim"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1742296961,
"narHash": "sha256-gCpvEQOrugHWLimD1wTFOJHagnSEP6VYBDspq96Idu0=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "15d87419f1a123d8f888d608129c3ce3ff8f13d4",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"systems": {
@ -469,6 +380,96 @@
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixneovimplugins",
"nixpkgs"
]
},
"locked": {
"lastModified": 1743081648,
"narHash": "sha256-WRAylyYptt6OX5eCEBWyTwOEqEtD6zt33rlUkr6u3cE=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "29a3d7b768c70addce17af0869f6e2bd8f5be4b7",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"zig": {
"inputs": {
"flake-compat": [
"ghostty"
],
"flake-utils": [
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs-stable"
]
},
"locked": {
"lastModified": 1741825901,
"narHash": "sha256-aeopo+aXg5I2IksOPFN79usw7AeimH1+tjfuMzJHFdk=",
"owner": "mitchellh",
"repo": "zig-overlay",
"rev": "0b14285e283f5a747f372fb2931835dd937c4383",
"type": "github"
},
"original": {
"owner": "mitchellh",
"repo": "zig-overlay",
"type": "github"
}
},
"zon2nix": {
"inputs": {
"flake-utils": [
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1742104771,
"narHash": "sha256-LhidlyEA9MP8jGe1rEnyjGFCzLLgCdDpYeWggibayr0=",
"owner": "jcollie",
"repo": "zon2nix",
"rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613",
"type": "github"
},
"original": {
"owner": "jcollie",
"ref": "56c159be489cc6c0e73c3930bd908ddc6fe89613",
"repo": "zon2nix",
"type": "github"
}
}
},
"root": "root",

View file

@ -1,74 +1,116 @@
{
description = "Home Manager configuration of acicchetti";
nixConfig = {
extra-substituters = [
"https://devenv.cachix.org"
"https://nixpkgs.cachix.org"
"https://nix-community.cachix.org"
];
extra-trusted-public-keys = [
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
"nixpkgs.cachix.org-1:q91R6hxbwFvDqTSDKwDAV4T5PxqXGxswD8vhONFMeOE="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
inputs = {
# Specify the source of Home Manager and Nixpkgs.
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs = {
url = "github:nixos/nixpkgs";
};
flake-utils.url = "github:numtide/flake-utils"; # not directly used, but common source for the several flakes that do use it
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
devenv = {
url = "github:cachix/devenv/latest";
};
nix-index-database = {
url = "github:Mic92/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
nixneovim = {
url = "github:nixneovim/nixneovim";
ghostty = {
url = "github:ghostty-org/ghostty";
inputs.nixpkgs-unstable.follows = "nixpkgs";
};
nixvim = {
url = "github:nix-community/nixvim";
inputs = {
nixpkgs.follows = "nixpkgs";
# home-manager.follows = "home-manager";
};
};
nixneovimplugins = {
url = "github:m15a/flake-awesome-neovim-plugins";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
};
};
fenix = {
url = "github:nix-community/fenix";
inputs = {
nixpkgs.follows = "nixpkgs";
home-manager.follows = "home-manager";
};
};
};
outputs = {
self,
nixpkgs,
home-manager,
devenv,
nix-index-database,
nixneovim,
...
}: let
inherit (nixpkgs.lib) optionalAttrs singleton optionals;
supportedSystems = ["aarch64-darwin" "x86_64-linux"];
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
outputs =
{
self,
nixpkgs,
home-manager,
nix-index-database,
nixvim,
fenix,
nixneovimplugins,
ghostty,
...
}:
let
supportedSystems = [
"aarch64-darwin"
"x86_64-linux"
];
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
pkgs = forAllSystems (
system:
pkgs = forAllSystems (
system:
import nixpkgs {
inherit system;
config = {allowUnfree = true;};
overlays = [nixneovim.overlays.default];
config = {
allowUnfree = true;
};
overlays = [
ghostty.overlays.default
nixneovimplugins.overlays.default
fenix.overlays.default
];
}
);
);
homeManagerConfigs = forAllSystems (
system: {
pkgs = pkgs."${system}";
homeManagerConfigs = forAllSystems (system: {
pkgs = pkgs.${system};
modules = [
{
imports = [nixneovim.nixosModules.default];
home.packages = [devenv.packages."${system}".devenv];
imports = [
nixvim.homeManagerModules.nixvim
];
}
nix-index-database.hmModules.nix-index
./home.nix
];
});
in
{
formatter = forAllSystems (system: pkgs.${system}.nixfmt-rfc-style);
homeConfigurations.aarch64-darwin-acicchetti =
home-manager.lib.homeManagerConfiguration
homeManagerConfigs."aarch64-darwin";
homeConfigurations.x86_64-linux-acicchetti =
home-manager.lib.homeManagerConfiguration
homeManagerConfigs."x86_64-linux";
extraSpecialArgs = {
system = system;
};
}
);
in {
# formatter."${system}" = pkgs.alejandra;
homeConfigurations.aarch64-darwin-acicchetti = home-manager.lib.homeManagerConfiguration homeManagerConfigs."aarch64-darwin";
homeConfigurations.x86_64-linux-acicchetti = home-manager.lib.homeManagerConfiguration homeManagerConfigs."x86_64-linux";
defaultPackage.aarch64-darwin = self.homeConfigurations.aarch64-darwin-acicchetti.activationPackage;
defaultPackage.x86_64-linux = self.homeConfigurations.x86_64-linux-acicchetti.activationPackage;
};
defaultPackage.aarch64-darwin = self.homeConfigurations.aarch64-darwin-acicchetti.activationPackage;
defaultPackage.x86_64-linux = self.homeConfigurations.x86_64-linux-acicchetti.activationPackage;
};
}

View file

@ -1,146 +1,164 @@
{ pkgs, ... }:
let
inherit (pkgs.stdenv.hostPlatform) isDarwin;
in
{
config,
pkgs,
system,
...
}: {
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "acicchetti";
home = {
username = "acicchetti";
home.homeDirectory =
if "${system}" == "aarch64-darwin"
then "/Users/acicchetti"
else "/home/acicchetti";
homeDirectory = if isDarwin then "/Users/acicchetti" else "/home/acicchetti";
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "22.11"; # Please read the comment before changing.
stateVersion = "24.11";
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = [
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# You can also manage environment variables but you will have to manually
# source
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/acicchetti/etc/profile.d/hm-session-vars.sh
#
# if you don't want to manage your shell through Home Manager.
home.sessionVariables = {
EDITOR = "nvim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
programs.aria2 = {
enable = true;
};
programs.atuin = {
enable = true;
enableZshIntegration = true;
};
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
programs.exa = {
enable = true;
git = true;
icons = true;
enableAliases = false;
};
programs.gh = {
enable = true;
settings = {
editor = "nvim";
git_protocol = "ssh";
sessionVariables = {
EDITOR = "nvim";
};
};
programs.htop = {
enable = true;
};
fonts.fontconfig.enable = true;
programs.mcfly = {
enable = false;
keyScheme = "vim";
};
programs = {
home-manager.enable = true;
programs.nix-index-database = {
comma.enable = true;
};
aria2 = {
enable = true;
};
programs.nnn = {
enable = true;
};
atuin = {
enable = true;
enableZshIntegration = true;
settings = {
enter_accept = true;
style = "compact";
keymap_mode = "vim-insert";
keymap_cursor = {
vim_insert = "steady-bar";
vim_normal = "steady-block";
};
sync_address = "https://atuin.acicchetti.dev";
};
};
programs.skim = {
enable = true;
enableZshIntegration = false;
};
direnv = {
enable = true;
nix-direnv.enable = true;
enableZshIntegration = true;
};
programs.tealdeer = {
enable = true;
};
eza = {
enable = true;
git = true;
icons = "auto";
enableZshIntegration = true;
};
programs.topgrade = {
enable = true;
};
gh = {
enable = true;
settings = {
editor = "nvim";
git_protocol = "ssh";
};
};
programs.zoxide = {
enable = true;
};
ghostty = {
enable = true;
package = null;
# installVimSyntax = true;
# installBatSyntax = true;
enableZshIntegration = true;
settings = {
font-family = "Maple Mono NF";
font-style = "Medium";
};
};
programs.zsh = {
enable = false;
htop = {
enable = true;
};
jujutsu = {
enable = true;
settings = {
user = {
name = "Anthony Cicchetti";
email = "anthony@anthonycicchetti.com";
};
"default-command" = "log";
};
};
nix-index = {
enable = true;
};
nix-index-database = {
comma.enable = true;
};
nnn = {
enable = true;
};
pay-respects = {
enable = true;
};
skim = {
enable = true;
enableZshIntegration = false;
};
tealdeer = {
enable = true;
};
topgrade = {
enable = true;
settings = {
misc = {
disable = [
"node"
"nix"
"home_manager"
"gem"
"ruby_gems"
"cargo"
"vim"
"pipx"
"pip3"
"containers"
];
run_in_tmux = true;
display_time = true;
skip_notify = true;
};
git = {
max_concurrency = 5;
pull_predefined = false;
};
linux.arch_package_manager = "paru";
};
};
wezterm = {
enable = true;
enableZshIntegration = true;
extraConfig = builtins.readFile ../../wezterm/wezterm.lua;
# package = wezterm.packages.${pkgs.system}.default;
};
yazi = {
enable = true;
enableZshIntegration = true;
};
zoxide = {
enable = true;
};
};
imports = [
./modules/packages
./modules/files.nix
./modules/environment.nix
./modules/services
];
}

View file

@ -1,10 +1,7 @@
{ ... }:
{
pkgs,
lib,
config,
...
}: {
home.sessionVariables = {
EDITOR = "nvim";
PAGE = "page -q 90000 -z 90000";
};
}

View file

@ -1,17 +1,93 @@
{
pkgs,
lib,
config,
...
}: {
home.file.".ideavimrc".source = ../../../ideavim/ideavimrc;
xdg.configFile."erdtree/.erdtreerc".source = ../../../erdtree/erdtreerc;
xdg.configFile."ov/config.yaml".source = ../../../ov/ov-less.yaml;
home.file."bin/git-sync".source = ../../../git-sync;
xdg.configFile."kitty/kitty.conf".source = ../../../kitty/kitty.conf;
xdg.configFile."lsd/config.yaml".source = ../../../lsd/config.yaml;
home.file.".cargo/config.toml".source = pkgs.substituteAll {
src = ../../../cargo/config.toml.nixtemplate;
profileDir = config.home.profileDirectory;
}:
let
inherit (pkgs.stdenv.hostPlatform) isLinux;
repo_root = "../../..";
nv_fonts_basic = [
"Maple Mono NF"
"Berkeley Mono"
"Departure Mono"
"Fantasque Sans Mono"
];
nv_fonts_normal =
nv_fonts_basic ++ (if isLinux then [ "Noto Color Emoji" ] else [ "Apple Color Emoji" ]);
nv_fonts_italic = nv_fonts_basic;
in
{
home.file = {
"/.zsh.d/" = {
source = ./${repo_root}/zsh/funcs;
};
"/.cache/zsh/completions/.keep" = {
text = "";
recursive = true;
};
".cargo/config.toml".source = (pkgs.formats.toml { }).generate "cargo-config" {
net = {
git-fetch-with-cli = true;
};
"profile.release" = {
lto = true;
opt-level = 3;
};
# Could avoid setting this at all with another `isLinux` but whatever, doesn't truly matter
"target.x86_64-unknown-linux-gnu" = {
linker = "clang";
rustflags = [
"-C"
"link-arg=-fuse-ld=${config.home.profileDirectory}/bin/mold"
];
};
"registries.crates-io" = {
protocol = "sparse";
};
};
".ideavimrc".source = ./${repo_root}/ideavim/ideavimrc;
"/bin/run_ollama" = {
source = ./${repo_root}/zsh/bin/run_ollama;
executable = true;
};
"/bin/age-op" = {
source = ./${repo_root}/bin/age-op;
executable = true;
};
};
xdg.configFile = {
"1Password/ssh/agent.toml".text = ''
[[ssh-keys]]
item = "l24kumgnx3h3gyvon6k5we54qi"
[[ssh-keys]]
item = "mpf42t6kn2hxijw5jsqti4hxfm"
'';
"cy/cyrc.janet".source = ./${repo_root}/cy/cy.janet;
"doom/init.el" = {
source = ./${repo_root}/emacs/emacs.doom/init.el;
onChange = "~/.emacs.d/bin/doom sync";
};
"doom/config.el" = {
source = ./${repo_root}/emacs/emacs.doom/config.el;
onChange = "~/.emacs.d/bin/doom sync";
};
"doom/packages.el" = {
source = ./${repo_root}/emacs/emacs.doom/packages.el;
onChange = "~/.emacs.d/bin/doom sync";
};
"erdtree/.erdtreerc".source = ./${repo_root}/erdtree/erdtreerc;
# "ghostty/config".source = ./${repo_root}/ghostty/config;
"kitty/kitty.conf".source = ./${repo_root}/kitty/kitty.conf;
"lsd/config.yaml".source = ./${repo_root}/lsd/config.yaml;
"neovide/config.toml".source = (pkgs.formats.toml { }).generate "neovide-config" {
font = {
normal = nv_fonts_normal;
italic = nv_fonts_italic;
size = 14;
};
};
"zed/settings.json".source = ./${repo_root}/zed/settings.json;
"zed/keymap.json".source = ./${repo_root}/zed/keymap.json;
};
}

View file

@ -1,40 +1,107 @@
{
pkgs,
lib,
config,
system,
...
}: let
{ pkgs, ... }:
let
inherit (pkgs.stdenv.hostPlatform) isLinux;
systemSpecificPackages =
if "${system}" != "aarch64-darwin"
# include gping because of open bug
then [pkgs.zsh pkgs.racket pkgs.gping pkgs.mold]
else [];
in {
with pkgs;
if
isLinux
# ncdu (well, all zig packages) don't work on macOS nix right now
then
[
zsh
racket
mold
ncdu
ghostty
xorg.libX11
]
else
[
keka
colima
neovide
aerospace
maccy
];
cy =
{
pkgs,
fetchFromGitHub,
}:
let
ver = "1.3.1";
in
pkgs.buildGoModule {
pname = "cy";
version = "${ver}";
src = fetchFromGitHub {
owner = "cfoust";
repo = "cy";
rev = "refs/tags/v${ver}";
hash = "sha256-i5suNLh1Dy8sWKBasO1rnVRzDetEF77XXRonRk1RzB4=";
};
vendorHash = null;
buildPhase = ''
runHook preBuild
export GOCACHE=$PWD/.cache/go-build
go install ./cmd/cy/
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm755 -t $out/bin $GOPATH/bin/cy
runHook postInstall
'';
};
in
{
imports = [
./emacs.nix
./git.nix
./mise.nix
./neovim.nix
./ssh.nix
./starship.nix
./zellij.nix
./zsh.nix
# ./cy.nix
];
home.packages = with pkgs;
home.packages =
with pkgs;
[
bandwhich
_1password-cli
nerd-fonts._0xproto
bat
bottom
cargo-workspaces
colima
clipboard-jh
dogdns
curl
departure-mono
docker-client
dogedns
erdtree
erg
emacs
fantasque-sans-mono
fd
(fenix.latest.withComponents [
"cargo"
"clippy"
"rustfmt"
"rust-src"
"rustc"
])
ffmpeg_6
gawk
git-credential-1password
gawkInteractive
gnugrep
gnused
gnutar
gping
gql
httpstat
imagemagick
internetarchive
jless
@ -43,15 +110,34 @@ in {
kondo
litecli
magic-wormhole-rs
ncdu
ov
pdm
poetry
maple-mono.NF
martian-mono
page
pandoc
parallel
picocrypt
picocrypt-cli
python312Packages.pipx
rage
ripgrep
rsync
rust-analyzer-nightly # part of the fenix distribution/overlay
scriptisto
see-cat
sqlite
yt-dlp
tmux
vale
python312Packages.yt-dlp
zenith
zstd
]
++ systemSpecificPackages;
++ systemSpecificPackages
++ (
if isLinux then
[ ]
else
[
(callPackage cy { })
]
);
}

View file

@ -1,11 +1,8 @@
{ ... }:
{
config,
lib,
pkgs,
system,
...
}: {
home.file.".doom.d/init.el".source = ../../../../emacs/emacs.doom/init.el;
home.file.".doom.d/config.el".source = ../../../../emacs/emacs.doom/config.el;
home.file.".doom.d/packages.el".source = ../../../../emacs/emacs.doom/packages.el;
home.file = {
".doom.d/init.el".source = ../../../../emacs/emacs.doom/init.el;
".doom.d/config.el".source = ../../../../emacs/emacs.doom/config.el;
".doom.d/packages.el".source = ../../../../emacs/emacs.doom/packages.el;
};
}

View file

@ -1,12 +1,12 @@
{ pkgs, ... }:
{
config,
lib,
pkgs,
...
}: {
programs.git = {
enable = true;
difftastic.enable = true;
# Don't use difftastic on git-diff by default
# it makes distributing patches difficult
#
# Instead use difftastic as a difftool
difftastic.enable = false;
userName = "Anthony Cicchetti";
userEmail = "anthony@anthonycicchetti.com";
@ -15,6 +15,7 @@
pushall = "!git remote | xargs -L1 git push --all";
pr = "!f() { git fetch -fu $${2:-$(git remote |grep ^upstream || echo origin)} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f";
logp = "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short";
difft = "difftool";
};
extraConfig = {
@ -27,18 +28,49 @@
workers = 0;
};
diff = {
tool = "difftastic";
algorithm = "histogram";
submodule = "log";
};
difftool = {
prompt = false;
difftastic = {
cmd = "${pkgs.difftastic}/bin/difft --color auto --background light --display side-by-side \"$LOCAL\" \"$REMOTE\"";
};
};
fetch = {
prune = true;
fsckObjects = true;
pruneTags = true;
};
format = {
pretty = "fuller";
};
help = {
autoCorrect = "prompt";
};
init = {
defaultBranch = "main";
};
log = {
follow = true;
};
merge = {
conflictStyle = "zdiff3";
};
pack = {
allowPackReuse = "multi";
};
push = {
autoSetupRemote = true;
};
@ -47,19 +79,33 @@
rebase = true;
};
init = {
defaultBranch = "main";
};
help = {
autoCorrect = "prompt";
};
rebase = {
updateRefs = true;
};
receive = {
fsckObjects = true;
};
rerere = {
enabled = true;
};
status = {
submoduleSummary = true;
};
submodule = {
recurse = true;
};
transfer = {
fsckObjects = true;
};
};
includes = [
{path = "~/.gitconfig_local";}
{ path = "~/.gitconfig_local"; }
];
};
}

View file

@ -0,0 +1,25 @@
{ ... }:
{
programs.mise = {
enable = true;
enableZshIntegration = true;
globalConfig = {
tools = {
node = "lts";
python = "latest";
uv = "latest";
};
settings = {
experimental = true;
pipx = {
uvx = true;
};
status = {
missing_tools = "always";
};
python_compile = true;
python_default_packages_file = "$HOME/.dotfiles/defaults/default-packages";
};
};
};
}

View file

@ -1,113 +1,378 @@
{ pkgs, ... }:
{
config,
lib,
pkgs,
...
}: {
programs.nixneovim = {
programs.nixvim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
extraLuaPreConfig = builtins.readFile ./neovim/pre.lua;
extraConfigLua = builtins.readFile ./neovim/core.lua;
colorscheme = "onedark";
extraConfigLuaPre = builtins.readFile ./neovim/pre.lua;
extraConfigLuaPost = builtins.readFile ./neovim/core.lua;
colorschemes = {
onedark.enable = true;
};
diagnostics = {
virtual_lines = true;
};
plugins = {
fugitive = {
enable = true;
};
gitsigns = {
enable = true;
};
lualine = {
enable = true;
# theme = "bubbles_theme"; # Currently doesn't work
settings = {
componentSeparators = {
left = "";
right = "";
};
sectionSeparators = {
left = "";
right = "";
};
sections = {
lualine_a = [
{
__unkeyed-1 = "mode";
separator = {
left = "";
};
padding = {
right = 2;
left = 0;
};
}
];
lualine_b = [
"filename"
"branch"
];
lualine_c = [ "%=" ];
lualine_x = [ ];
lualine_y = [
"filetype"
"progress"
];
lualine_z = [
{
__unkeyed-1 = "location";
separator = {
right = "";
};
padding = {
right = 0;
left = 2;
};
}
];
};
};
};
lsp = {
enable = true;
preConfig = '''';
servers = {
bashls.enable = true;
gopls.enable = true;
jsonls.enable = true;
pyright.enable = true;
rust-analyzer.enable = true;
};
};
treesitter = {
enable = true;
indent = true;
folding = true;
incrementalSelection = {
enable = true;
pyright.enable = true; # In preference to attempting to use pylyzer
nil_ls.enable = true;
rust_analyzer =
let
fenix = fenix.latest.withComponents [
"cargo"
"rustc"
];
in
{
enable = true;
installCargo = false;
installRustc = false;
cargoPackage = fenix.cargo;
rustcPackage = fenix.rustc;
};
taplo.enable = true;
terraformls.enable = true;
yamlls.enable = true;
};
};
mini = {
enable = true;
ai.enable = true;
align.enable = true;
animate.enable = true;
comment.enable = true;
jump.enable = true;
surround.enable = true;
modules = {
ai.enable = true;
align.enable = true;
animate.enable = true;
comment.enable = true;
completion.enable = true;
indentscope.enable = true;
jump.enable = true;
jump2d = {
enable = true;
mappings.start_jumping = "<leader>a";
};
splitjoin.enable = true;
surround.enable = true;
tabline.enable = true;
clue = {
triggers = [
{
mode = "n";
keys = "<leader>";
}
{
mode = "n";
keys = "z";
}
];
clues = [
{ __raw = "require('mini.clue').gen_clues.builtin_completion()"; }
{ __raw = "require('mini.clue').gen_clues.g()"; }
{ __raw = "require('mini.clue').gen_clues.marks()"; }
{ __raw = "require('mini.clue').gen_clues.registers()"; }
{ __raw = "require('mini.clue').gen_clues.windows()"; }
{ __raw = "require('mini.clue').gen_clues.z()"; }
];
};
};
};
fugitive = {
enable = true;
};
undotree = {
enable = true;
};
which-key = {
blink-cmp = {
enable = true;
settings = {
keymap.preset = "super-tab";
appearance = {
nerd_font_variant = "mono";
};
completion = {
ghost_text = {
enabled = true;
show_with_menu = false;
};
accept = {
auto_brackets = {
enabled = true;
};
};
list = {
selection = {
auto_insert = false;
preselect = true;
};
};
menu = {
draw = {
columns.__raw = "{ { 'kind_icon' }, {'label', gap = 1 } }";
components = {
label.__raw = ''
{
text = function(ctx)
return require('colorful-menu').blink_components_text(ctx)
end,
highlight = function(ctx)
return require('colorful-menu').blink_components_highlight(ctx)
end,
}'';
};
};
};
};
signature = {
enabled = true;
};
sources = {
default = [
"lsp"
"path"
"snippets"
"buffer"
# [TODO] Disabled until I figure this out, rust uses :: "emoji"
];
providers = {
emoji = {
module = "blink-emoji";
name = "Emoji";
score_offset = 15;
opts = {
insert = true;
};
};
};
};
};
};
blink-emoji.enable = true;
project-nvim = {
enable = true;
enableTelescope = true;
settings.detection_methods = [
"lsp"
"pattern"
];
};
telescope = {
enable = true;
extensions.live-grep-args.enable = true;
enabledExtensions = [
"zf-native" # TODO
"projects" # TODO
];
# extraLua = {
# post = builtins.readFile ./neovim/telescope.lua;
# };
keymaps = {
"<leader>ff" = {
mode = "n";
action = "find_files";
options.desc = "Find Files";
};
"<leader>fg" = {
mode = "n";
action = "live_grep";
options.desc = "Live Grep";
};
"<leader>fb" = {
mode = "n";
action = "buffers";
options.desc = "Find Buffers";
};
"<leader>r" = {
mode = "n";
action = "registers";
options.desc = "View Registers";
};
"<leader>pr" = {
mode = "n";
action = "lsp_references";
options.desc = "(LSP) References";
};
"<leader>pi" = {
mode = "n";
action = "lsp_implementations";
options.desc = "(LSP) Implementations";
};
"<leader>pd" = {
mode = "n";
action = "lsp_definitions";
options.desc = "(LSP) Definitions";
};
"<leader>ps" = {
mode = "n";
action = "lsp_document_symbols";
options.desc = "(LSP) Document Symbols";
};
"<leader>pws" = {
mode = "n";
action = "lsp_workspace_symbols";
options.desc = "(LSP) Workspace Symbols";
};
"<leader>pwd" = {
mode = "n";
action = "lsp_dynamic_workspace_symbols";
options.desc = "(LSP) Dynamic Workspace Symbols";
};
};
};
treesitter = {
enable = true;
settings = {
indent = {
enable = true;
};
incremental_selection = {
enable = true;
};
};
folding = true;
};
trouble = {
enable = true;
};
ts-context-commentstring = {
enable = true;
};
overseer = {
enable = true;
};
nvim-ufo = {
enable = true;
};
rainbow-delimiters = {
enable = true;
};
vim-bbye = {
enable = true;
};
web-devicons.enable = true;
};
extraPlugins =
(
with pkgs.vimPlugins; [
vim-ReplaceWithRegister
ctrlp-vim
vim-dispatch-neovim
vim-bbye
editorconfig-nvim
vim-expand-region
vim-signify
vim-terraform
leap-nvim
]
)
++ (with pkgs.vimExtraPlugins; [
nvim-ts-rainbow2
(with pkgs.vimPlugins; [
telescope-symbols-nvim
telescope-zf-native-nvim
vim-ReplaceWithRegister
vim-dispatch-neovim
vim-expand-region
colorful-menu-nvim
])
++ (with pkgs.awesomeNeovimPlugins; [
linrongbin16-gitlinker-nvim
officer-nvim
nvim-biscuits
colorful-menu-nvim
]);
mappings = {
normal = {
"<leader>u" = {
action = "vim.cmd.UndotreeToggle";
};
"<leader>h" = {
action = "function() vim.api.nvim_command('wincmd h') end";
};
"<leader>j" = {
action = "function() vim.api.nvim_command('wincmd j') end";
};
"<leader>k" = {
action = "function() vim.api.nvim_command('wincmd k') end";
};
"<leader>l" = {
action = "function() vim.api.nvim_command('wincmd l') end";
};
"<c-k>" = {
action = "'<c-u>'";
};
"<c-j>" = {
action = "'<c-d>'";
};
"<leader>n" = {
action = "function() vim.api.nvim_command('nohl') end";
};
};
visual = {
"<c-k>" = {
action = "'<c-u>'";
};
"<c-j>" = {
action = "'<c-d>'";
};
};
};
keymaps = [
{
action = "function() vim.api.nvim_command('wincmd h') end";
key = "<leader>h";
options.desc = "Cursor - Window left";
mode = "n";
}
{
action = "function() vim.api.nvim_command('wincmd j') end";
key = "<leader>j";
options.desc = "Cursor - Window down";
mode = "n";
}
{
action = "function() vim.api.nvim_command('wincmd k') end";
key = "<leader>k";
options.desc = "Cursor - Window up";
mode = "n";
}
{
action = "function() vim.api.nvim_command('wincmd l') end";
key = "<leader>l";
options.desc = "Cursor - Window right";
mode = "n";
}
{
key = "<c-k>";
action = "<c-u>";
mode = [
"n"
"v"
];
}
{
key = "<c-j>";
action = "<c-d>";
mode = [
"n"
"v"
];
}
{
key = "<leader>n";
action = "function() vim.api.nvim_command('nohl') end";
options.desc = "nohl";
mode = "n";
}
{
action = "<cmd>Telescope<cr>";
key = "<leader>t";
options.desc = "Open Telescope";
mode = "n";
}
];
};
}

View file

@ -1,4 +1,11 @@
vim.o.expandtab = true
-- local guifont = { "Iosevka Custom" }
-- if vim.loop.os_uname().sysname == "Darwin" then
-- table.insert(guifont, "Apple Color Emoji")
-- else
-- table.insert(guifont, "Noto Color Emoji")
-- end
-- vim.o.guifont = table.concat(guifont, ",") .. ":14"
vim.o.hidden = true
vim.o.ignorecase = true
vim.o.inccommand = "split"
@ -23,12 +30,20 @@ vim.o.title = true
vim.o.updatetime = 500
vim.o.wildmenu = true
vim.o.wildmode = "list:longest,full"
vim.g.skip_ts_context_commentstring_module = true
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function() vim.highlight.on_yank() end
-- `page` config
vim.g.page_icon_pipe = "|"
vim.g.page_icon_redirect = ">"
vim.g.page_icon_instance = "$"
vim.api.nvim_create_autocmd("TextYankPost", {
callback = function()
vim.highlight.on_yank()
end,
})
-- Ctrlp
vim.g.ctrlp_map = "<leader>p"
vim.g.ctrlp_cmd = "CtrlPMixed"
vim.g.ctrlp_user_command = "rg --files %s"
require("gitlinker").setup()
require("nvim-biscuits").setup()
require("overseer").setup()
require("officer").setup({ create_mappings = true })

View file

@ -1,2 +1,80 @@
vim.g.mapleader = " "
vim.g.maplocalleader = ","
-- local kind_icons = {
-- Text = "",
-- Method = "",
-- Function = "⨐",
-- Constructor = "",
-- Field = "",
-- Variable = "μ",
-- Class = "",
-- Interface = "",
-- Module = "",
-- Property = "",
-- Unit = "",
-- Value = "",
-- Enum = "",
-- Keyword = "",
-- Snippet = "",
-- Color = "፨",
-- File = "",
-- Reference = "",
-- Folder = "",
-- EnumMember = "",
-- Constant = "",
-- Struct = "",
-- Event = "",
-- Operator = "",
-- TypeParameter = "",
-- }
local colors = {
blue = "#80a0ff",
cyan = "#79dac8",
black = "#080808",
white = "#c6c6c6",
red = "#ff5189",
violet = "#d183e8",
grey = "#303030",
}
local bubbles_theme = {
normal = {
a = { fg = colors.black, bg = colors.violet },
b = { fg = colors.white, bg = colors.grey },
c = { fg = colors.white },
},
insert = { a = { fg = colors.black, bg = colors.blue } },
visual = { a = { fg = colors.black, bg = colors.cyan } },
replace = { a = { fg = colors.black, bg = colors.red } },
inactive = {
a = { fg = colors.white, bg = colors.black },
b = { fg = colors.white, bg = colors.black },
c = { fg = colors.white },
},
}
do
function setup()
require("ufo").setup({
provider_selector = function(bufnr, filetype, buftype)
return { "treesitter", "indent" }
end,
})
require("ufo").setup({})
vim.o.foldcolumn = "1" -- '0' is not bad
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value
vim.o.foldlevelstart = 99
vim.o.foldenable = true
end
success, output = pcall(setup) -- execute 'setup()' and catch any errors
if not success then
print("Error on setup for plugin: ufo")
print(output)
end
end

View file

@ -0,0 +1,22 @@
require("telescope").load_extension("zf-native")
require("telescope").load_extension("projects")
require("telescope").load_extension("egrepify")
local builtin = require("telescope.builtin")
-- greps
vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Find Files" })
-- vim.keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "Live Grep" })
vim.keymap.set("n", "<leader>fg", ":Telescope egrepify<CR>", { desc = "Live Grep" })
vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "Buffers" })
-- register reading
vim.keymap.set("n", "<leader>r", builtin.registers, { desc = "View registers" })
-- lsp stuff
vim.keymap.set("n", "<leader>pr", builtin.lsp_references, { desc = "References" })
vim.keymap.set("n", "<leader>pi", builtin.lsp_implementations, { desc = "Implementations" })
vim.keymap.set("n", "<leader>pd", builtin.lsp_definitions, { desc = "Definitions" })
vim.keymap.set("n", "<leader>ps", builtin.lsp_document_symbols, { desc = "Document Symbols" })
vim.keymap.set("n", "<leader>pws", builtin.lsp_workspace_symbols, { desc = "Workspace Symbols" })
vim.keymap.set("n", "<leader>pwd", builtin.lsp_dynamic_workspace_symbols, { desc = "Dynamic Workspace Symbols" })

View file

@ -0,0 +1,55 @@
{
config,
pkgs,
...
}:
let
inherit (pkgs.stdenv.hostPlatform) isDarwin;
_1pass_socket =
if isDarwin then
"${config.home.homeDirectory}/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
else
"${config.home.homeDirectory}/.1password/agent.sock";
in
{
programs.ssh = {
enable = true;
includes = if isDarwin then [ "${config.home.homeDirectory}/.colima/ssh_config" ] else [ ];
matchBlocks = {
"10.*" = {
setEnv = {
"TERM" = "xterm-256color";
};
};
"acicchetti.dev" = {
extraOptions = {
"IdentityAgent" = "'${_1pass_socket}'\n";
};
};
"*.sr.ht" = {
extraOptions = {
"IdentityAgent" = "'${_1pass_socket}'\n";
};
};
"github.com" = {
extraOptions = {
"IdentityAgent" = "'${_1pass_socket}'\n";
};
};
"pass.beer" = {
extraOptions = {
"IdentityAgent" = "'${_1pass_socket}'\n";
};
};
"git.anthonycicchetti.com" = {
extraOptions = {
"IdentityAgent" = "'${_1pass_socket}'\n";
};
};
"steamdeck" = {
user = "deck";
hostname = "192.168.1.55";
};
};
};
}

View file

@ -1,11 +1,8 @@
{ ... }:
{
config,
lib,
pkgs,
...
}: {
programs.starship = {
enable = true;
enableZshIntegration = true;
settings = {
aws = {
symbol = " ";
@ -35,6 +32,41 @@
};
continuation_prompt = "";
custom.jj = {
command = ''
jj log -r@ -l1 --ignore-working-copy --no-graph --color always -T '
separate(" ",
branches.map(|x| if(
x.name().substr(0, 10).starts_with(x.name()),
x.name().substr(0, 10),
x.name().substr(0, 9) ++ "")
).join(" "),
tags.map(|x| if(
x.name().substr(0, 10).starts_with(x.name()),
x.name().substr(0, 10),
x.name().substr(0, 9) ++ "")
).join(" "),
surround("\"","\"",
if(
description.first_line().substr(0, 24).starts_with(description.first_line()),
description.first_line().substr(0, 24),
description.first_line().substr(0, 23) ++ ""
)
),
if(conflict, "conflict"),
if(divergent, "divergent"),
if(hidden, "hidden"),
)
'
'';
detect_folders = [ ".jj" ];
symbol = "jj";
};
custom.jjstatus = {
command = ''jj log -r@ -l1 --no-graph -T "" --stat | tail -n1 | sd "(\d+) files? changed, (\d+) insertions?\(\+\), (\d+) deletions?\(-\)" " $${1}m $${2}+ $${3}-" | sd " 0." ""'';
detect_folders = [ ".jj" ];
};
dart = {
symbol = " ";
};

View file

@ -1,12 +1,11 @@
{ ... }:
{
config,
lib,
pkgs,
...
}: {
programs.zellij = {
enable = true;
enableZshIntegration = false; # automatically sets up a session - I don't want this, I want manual control of my sessions
};
home.file.".config/zellij/config.kdl".source = ../../../../zellij/config.kdl;
xdg.configFile = {
"zellij/config.kdl".source = ../../../../zellij/config.kdl;
};
}

View file

@ -0,0 +1,109 @@
{ pkgs, ... }:
let
inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux;
in
{
programs.zsh = {
enable = true;
initExtraFirst = ''
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search zmv colors add-zle-hook-widget compinit
compinit
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
export ZSH_CACHE_DIR="$HOME/.cache/zsh"
typeset -U path PATH
'';
initExtra = builtins.readFile ../../../../zsh/zshrc;
antidote = {
enable = true;
plugins =
let
ohmyzsh-lib = "ohmyzsh/oh-my-zsh path:lib";
ohmyzsh-plugin = "ohmyzsh/oh-my-zsh path:plugins";
extraPlugins =
if isLinux then
[ ]
else if isDarwin then
[
"${ohmyzsh-plugin}/brew"
]
else
[ ];
in
extraPlugins
++ [
"zdharma-continuum/fast-syntax-highlighting"
"zsh-users/zsh-completions"
"jeffreytse/zsh-vi-mode"
"reegnz/jq-zsh-plugin"
"${ohmyzsh-lib}/completion.zsh"
"${ohmyzsh-lib}/git.zsh"
"${ohmyzsh-plugin}/1password"
"${ohmyzsh-plugin}/aws"
"${ohmyzsh-plugin}/colored-man-pages"
"${ohmyzsh-plugin}/docker"
"${ohmyzsh-plugin}/docker-compose"
"${ohmyzsh-plugin}/emoji"
"${ohmyzsh-plugin}/fd kind:fpath"
"${ohmyzsh-plugin}/gh"
"${ohmyzsh-plugin}/git"
"${ohmyzsh-plugin}/gitignore"
"${ohmyzsh-plugin}/gradle"
"${ohmyzsh-plugin}/helm"
"${ohmyzsh-plugin}/isodate"
"${ohmyzsh-plugin}/mix-fast"
"${ohmyzsh-plugin}/mosh"
"${ohmyzsh-plugin}/mvn"
"${ohmyzsh-plugin}/nmap"
"${ohmyzsh-plugin}/rsync"
"${ohmyzsh-plugin}/rust"
];
useFriendlyNames = true;
};
autosuggestion = {
enable = true;
};
dirHashes = {
"-- -dotfiles" = "$HOME/.dotfiles";
"-- -src" = "$HOME/src";
"-- -doom" = "$HOME/.emacs.d";
};
autocd = false;
history = {
path = "$HOME/.histfile";
size = 10000;
save = 10000;
ignoreAllDups = true;
ignoreSpace = true;
};
sessionVariables = {
COMPLETION_WAITING_DOTS = true;
VISUAL = "nvim";
EDITOR = "nvim";
RPROMPT = "' '"; # Fixes a side-effect of the vi-mode oh-my-zsh plugin
KEYTIMEOUT = 1;
AGE = "rage";
AGE_KEYPATH = "op://Jellyfish/age-key";
};
shellAliases =
let
platformSpecificAliases =
if isLinux then
{
cp = "cp --reflink=auto";
}
else
{
# exa = "eza -l --git";
# ls = "exa";
nv = "neovide --fork";
};
in
{ zj = "zellij -l welcome"; } // platformSpecificAliases;
};
programs.carapace = {
enable = true;
enableZshIntegration = true;
};
}

View file

@ -0,0 +1,6 @@
{ ... }:
{
imports = [
./git-sync.nix
];
}

View file

@ -0,0 +1,13 @@
{ config, ... }:
{
services.git-sync = {
enable = true;
repositories = {
"org-roam" = {
path = "${config.home.homeDirectory}/org-roam";
interval = 300;
uri = "git@git.anthonycicchetti.com:anthonycicc/org-roam";
};
};
};
}

View file

@ -7,16 +7,11 @@ fi
nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
nix-channel --update
nix profile install --accept-flake-config nixpkgs#cachix
cachix use
nix-shell '<home-manager>' -A install
nix flake update
if [[ $(uname) == "Darwin" ]]; then
# we're modern macOS
home-manager switch --flake "$PWD/home-manager#aarch64-darwin-acicchetti"
else
# we're linux
home-manager switch --flake "$PWD/home-manager#x86_64-linux-acicchetti"
fi
git clone https://github.com/doomemacs/doomemacs ~/.emacs.d
~/.emacs.d/bin/doom install
./update.sh -a

View file

@ -1,10 +1,16 @@
#!/bin/bash
do_devenv() {
pushd ~/.dotfiles || return
printf "Updating \033[38;5;87mdevenv\033[0m \n"
nix flake update
popd || return
}
do_topgrade() {
topgrade
}
update_home_manager() {
pushd ./home-manager || return
printf "Updating \033[38;5;87mhome-manager\033[0m\n"
@ -21,8 +27,7 @@ apply_home_manager() {
popd || return
}
OPTIND=1
while getopts dha opt; do
while getopts ':dhat' opt; do
case $opt in
a)
apply_home_manager
@ -34,9 +39,12 @@ while getopts dha opt; do
update_home_manager
apply_home_manager
;;
*)
"Ignoring unknown option. Please only pass -a, -d, or -h"
t)
do_topgrade
;;
?)
echo "Ignoring unknown option. Please only pass -a, -d, -h, or -t"
exit
;;
esac
done
shift "$((OPTIND - 1))"

1
statix.toml Normal file
View file

@ -0,0 +1 @@
disabled = ["empty_pattern"]

View file

@ -1,28 +1,33 @@
local wezterm = require 'wezterm';
local wezterm = require("wezterm")
local act = wezterm.action
-- Allow working with both the current release and the nightly
local config = {}
if wezterm.config_builder then
config = wezterm.config_builder()
config = wezterm.config_builder()
end
config.font = wezterm.font_with_fallback({
{family="Iosevka Custom", weight="Medium"},
{ family = "0xProto Nerd Font Mono" },
{ family = "Maple Mono NF" },
{ family = "Departure Mono" },
{ family = "Fantasque Sans Mono" },
{ family = "Iosevka Custom", weight = "Medium" },
})
config.font_rules = {
{
italic = true,
font = wezterm.font_with_fallback({
{family="Dank Mono", italic=true},
{family="Iosevka Custom", weight="Light"},
}
),
},
{
italic = true,
font = wezterm.font_with_fallback({
{ family = "Maple Mono NF", italic = true },
{ family = "Dank Mono", italic = true },
{ family = "Fantasque Sans Mono", italic = true },
{ family = "Iosevka Custom", weight = "Light" },
}),
},
}
config.font_size = 15.0
config.font_size = 14.0
-- wayland?
config.enable_wayland = true
-- TERM name
@ -30,31 +35,123 @@ config.term = "xterm-256color"
-- Color Scheme(s)
-- config.color_scheme = "Hopscotch.256"
config.color_scheme = "Everblush"
config.color_schemes = {
["Corvine"] = {
background = "#262626",
foreground = "#c6c6c6",
-- ansi = {"black", "maroon", "green", "olive", "navy", "purple", "teal", "silver"},
-- brights = {"grey", "red", "lime", "yellow", "blue", "fuchsia", "aqua", "white"},
ansi = {"#3a3a3a", "#d7d7d7", "#87af5f", "#d7d7af", "#87afd7", "#afafd7", "#87d7d7", "#c6c6c6"},
brights = {"#626262", "#ffafaf", "#afd787", "#d7d787", "#87d7ff", "#d7afd7", "#5fd7d7", "#eeeeee"}
},
["OceanicNext"] = {
background = "#1b2b34",
foreground = "#c0c5ce",
-- Overrides the cell background color when the current cell is occupied by the
-- cursor and the cursor style is set to Block
cursor_bg = "#c0c5ce",
-- Overrides the text color when the current cell is occupied by the cursor
cursor_fg = "#1b2b34",
ansi = {"#1b2b34", "#ec5f67", "#99c794", "#fac863", "#6699cc", "#c594c5", "#5fb3b3", "#c0c5ce"},
brights = {"#65737e", "#ec5f67", "#99c794" ,"#fac863", "#6699cc", "#c594c5", "#5fb3b3", "#d8dee9"}
},
["Corvine"] = {
background = "#262626",
foreground = "#c6c6c6",
-- ansi = {"black", "maroon", "green", "olive", "navy", "purple", "teal", "silver"},
-- brights = {"grey", "red", "lime", "yellow", "blue", "fuchsia", "aqua", "white"},
ansi = { "#3a3a3a", "#d7d7d7", "#87af5f", "#d7d7af", "#87afd7", "#afafd7", "#87d7d7", "#c6c6c6" },
brights = { "#626262", "#ffafaf", "#afd787", "#d7d787", "#87d7ff", "#d7afd7", "#5fd7d7", "#eeeeee" },
},
["OceanicNext"] = {
background = "#1b2b34",
foreground = "#c0c5ce",
-- Overrides the cell background color when the current cell is occupied by the
-- cursor and the cursor style is set to Block
cursor_bg = "#c0c5ce",
-- Overrides the text color when the current cell is occupied by the cursor
cursor_fg = "#1b2b34",
ansi = { "#1b2b34", "#ec5f67", "#99c794", "#fac863", "#6699cc", "#c594c5", "#5fb3b3", "#c0c5ce" },
brights = { "#65737e", "#ec5f67", "#99c794", "#fac863", "#6699cc", "#c594c5", "#5fb3b3", "#d8dee9" },
},
["Kanagawa"] = {
-- force_reverse_video_cursor = true,
foreground = "#dcd7ba",
background = "#1f1f28",
cursor_bg = "#c8c093",
cursor_fg = "#c8c093",
cursor_border = "#c8c093",
selection_fg = "#c8c093",
selection_bg = "#2d4f67",
scrollbar_thumb = "#16161d",
split = "#16161d",
ansi = { "#090618", "#c34043", "#76946a", "#c0a36e", "#7e9cd8", "#957fb8", "#6a9589", "#c8c093" },
brights = { "#727169", "#e82424", "#98bb6c", "#e6c384", "#7fb4ca", "#938aa9", "#7aa89f", "#dcd7ba" },
indexed = { [16] = "#ffa066", [17] = "#ff5d62" },
},
}
config.color_scheme = "Kanagawa"
-- Tab Bar
config.enable_tab_bar = true
config.hide_tab_bar_if_only_one_tab = true
config.front_end = "WebGpu"
-- Wezterm Mux
config.unix_domains = { { name = "unix" } }
config.default_gui_startup_args = { "connect", "unix" }
-- Some keybinds… A lot of keybinds
local copy_mode = nil
if wezterm.gui then
copy_mode = wezterm.gui.default_key_tables().copy_mode
table.insert(copy_mode, { key = "k", mods = "CTRL", action = act.CopyMode({ MoveByPage = -0.5 }) })
table.insert(copy_mode, { key = "j", mods = "CTRL", action = act.CopyMode({ MoveByPage = 0.5 }) })
end
-- config.leader = { key = "a", mods = "CTRL", timeout_milliseconds = 1000 }
-- config.keys = {
-- {
-- key = "|",
-- mods = "LEADER|SHIFT",
-- action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }),
-- },
-- {
-- key = "a",
-- mods = "LEADER|CTRL",
-- action = act.SendKey({ key = "a", mods = "CTRL" }),
-- },
-- {
-- key = "-",
-- mods = "LEADER",
-- action = act.SplitVertical({ domain = "CurrentPaneDomain" }),
-- },
-- {
-- key = "n",
-- mods = "LEADER",
-- action = act.ActivateKeyTable({
-- name = "manage_panes",
-- one_shot = false,
-- timeout_milliseconds = 5000,
-- until_unknown = true,
-- }),
-- },
-- {
-- key = "Escape",
-- mods = "LEADER",
-- action = act.ActivateCopyMode,
-- },
-- { key = "Tab", mods = "LEADER", action = act.QuickSelect },
-- { key = "c", mods = "LEADER", action = act.SpawnTab("CurrentPaneDomain") },
-- }
-- config.key_tables = {
-- manage_panes = {
-- { key = "LeftArrow", action = act.AdjustPaneSize({ "Left", 1 }) },
-- { key = "h", action = act.AdjustPaneSize({ "Left", 1 }) },
-- { key = "h", mods = "SHIFT", action = act.ActivatePaneDirection("Left") },
-- { key = "RightArrow", action = act.AdjustPaneSize({ "Right", 1 }) },
-- { key = "l", action = act.AdjustPaneSize({ "Right", 1 }) },
-- { key = "l", mods = "SHIFT", action = act.ActivatePaneDirection("Right") },
-- { key = "UpArrow", action = act.AdjustPaneSize({ "Up", 1 }) },
-- { key = "k", action = act.AdjustPaneSize({ "Up", 1 }) },
-- { key = "k", mods = "SHIFT", action = act.ActivatePaneDirection("Up") },
-- { key = "DownArrow", action = act.AdjustPaneSize({ "Down", 1 }) },
-- { key = "j", action = act.AdjustPaneSize({ "Down", 1 }) },
-- { key = "j", mods = "SHIFT", action = act.ActivatePaneDirection("Down") },
-- -- Cancel the mode by pressing escape
-- { key = "Escape", action = "PopKeyTable" },
-- },
-- copy_mode = copy_mode,
-- }
return config

9
zed/keymap.json Normal file
View file

@ -0,0 +1,9 @@
[
{
"context": "VimControl",
"bindings": {
"space s": "pane::RevealInProjectPanel",
"ctrl-r": "workspace::ToggleRightDock"
}
}
]

96
zed/settings.json Normal file
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
{
"assistant": {
"default_model": {
"provider": "ollama",
"model": "llama3.2:3b"
},
"version": "2"
},
"vim_mode": true,
"autosave": "on_focus_change",
"buffer_font_family": "Berkeley Mono",
"buffer_font_fallbacks": [
"Apple Color Emoji",
"Segoe UI Emoji",
"Noto Color Emoji"
],
"buffer_font_weight": 400,
"buffer_font_size": 14,
"load_direnv": "shell_hook",
"ui_font_size": 16,
"theme": {
"mode": "system",
"light": "Kanagawa Wave",
"dark": "Kanagawa Wave"
},
"scrollbar": {
"show": "always"
},
"tab_bar": {
"show_nav_history_buttons": false
},
"tabs": {
"file_icons": true,
"git_status": true
},
"toolbar": {
"breadcrumbs": true,
"quick_actions": true
},
"lsp": {
"rust-analyzer": {
"initialization_options": {
"check": {
"command": "clippy"
}
}
}
},
"always_treat_brackets_as_autoclosed": true,
"git": {
"git_gutter": "tracked_files",
"inline_blame": {
"enabled": true,
"delay_ms": 200
}
},
"indent_guides": {
"enabled": true,
"coloring": "indent_aware",
"background_coloring": "disabled"
},
"inlay_hints": {
"enabled": true,
"show_type_hints": true,
"show_parameter_hints": true
},
"languages": {
"Python": {
"format_on_save": "on",
"formatter": {
"external": {
"command": "black",
"args": ["--quiet", "-"]
}
}
}
},
"preview_tabs": {
"enabled": true,
"enable_preview_from_file_finder": true,
"enable_preview_from_code_navigation": true
},
"show_whitespaces": "all",
"telemetry": {
"diagnostics": false,
"metrics": false
}
}

View file

@ -1,242 +1,29 @@
keybinds clear-defaults=true {
normal {
keybinds {
shared_except "locked" "tmux" {
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Ctrl p" { SwitchToMode "pane"; }
// bind "Ctrl p" { SwitchToMode "pane"; }
bind "Ctrl n" { SwitchToMode "resize"; }
bind "Ctrl t" { SwitchToMode "tab"; }
bind "Ctrl s" { SwitchToMode "scroll"; }
bind "Ctrl o" { SwitchToMode "session"; }
bind "Ctrl h" { SwitchToMode "move"; }
bind "Ctrl a" { SwitchToMode "tmux"; }
}
normal {
bind "Ctrl q" { Quit; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocusOrTab "Left"; }
bind "Alt l" { MoveFocusOrTab "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
move {
bind "Esc" { SwitchToMode "Normal";}
}
locked {
bind "Ctrl g" { SwitchToMode "normal"; }
}
pane {
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Ctrl n" { SwitchToMode "resize"; }
bind "Ctrl t" { SwitchToMode "tab"; }
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
bind "Ctrl s" { SwitchToMode "scroll"; }
bind "Ctrl o" { SwitchToMode "session"; }
bind "Ctrl h" { SwitchToMode "move"; }
bind "Ctrl b" { SwitchToMode "tmux"; }
bind "Ctrl q" { Quit; }
bind "h" "Left" { MoveFocus "Left"; }
bind "l" "Right" { MoveFocus "Right"; }
bind "j" "Down" { MoveFocus "Down"; }
bind "k" "Up" { MoveFocus "Up"; }
bind "p" { SwitchFocus; }
bind "n" { NewPane; SwitchToMode "normal"; }
bind "d" { NewPane "Down"; SwitchToMode "normal"; }
bind "r" { NewPane "Right"; SwitchToMode "normal"; }
bind "x" { CloseFocus; SwitchToMode "normal"; }
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
}
tab {
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Ctrl p" { SwitchToMode "pane"; }
bind "Ctrl n" { SwitchToMode "resize"; }
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
bind "Ctrl s" { SwitchToMode "scroll"; }
bind "Ctrl h" { SwitchToMode "move"; }
bind "Ctrl b" { SwitchToMode "tmux"; }
bind "Ctrl o" { SwitchToMode "session"; }
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
bind "Ctrl q" { Quit; }
bind "h" "Left" "Up" "k" { GoToPreviousTab; }
bind "l" "Right" "Down" "j" { GoToNextTab; }
bind "n" { NewTab; SwitchToMode "normal"; }
bind "x" { CloseTab; SwitchToMode "normal"; }
bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; }
bind "1" { GoToTab 1; SwitchToMode "normal"; }
bind "2" { GoToTab 2; SwitchToMode "normal"; }
bind "3" { GoToTab 3; SwitchToMode "normal"; }
bind "4" { GoToTab 4; SwitchToMode "normal"; }
bind "5" { GoToTab 5; SwitchToMode "normal"; }
bind "6" { GoToTab 6; SwitchToMode "normal"; }
bind "7" { GoToTab 7; SwitchToMode "normal"; }
bind "8" { GoToTab 8; SwitchToMode "normal"; }
bind "9" { GoToTab 9; SwitchToMode "normal"; }
bind "Tab" { ToggleTab; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
resize {
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Ctrl p" { SwitchToMode "pane"; }
bind "Ctrl t" { SwitchToMode "tab"; }
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
bind "Ctrl s" { SwitchToMode "scroll"; }
bind "Ctrl o" { SwitchToMode "session"; }
bind "Ctrl h" { SwitchToMode "move"; }
bind "Ctrl b" { SwitchToMode "tmux"; }
bind "Ctrl q" { Quit; }
bind "h" "Left" { Resize "Left"; }
bind "j" "Down" { Resize "Down"; }
bind "k" "Up" { Resize "Up"; }
bind "l" "Right" { Resize "Right"; }
bind "=" { Resize "Increase"; }
bind "+" { Resize "Increase"; }
bind "-" { Resize "Decrease"; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
move {
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Ctrl p" { SwitchToMode "pane"; }
bind "Ctrl t" { SwitchToMode "tab"; }
bind "Ctrl n" { SwitchToMode "resize"; }
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
bind "Ctrl s" { SwitchToMode "scroll"; }
bind "Ctrl o" { SwitchToMode "session"; }
bind "Ctrl q" { Quit; }
bind "n" "Tab" { MovePane; }
bind "h" "Left" { MovePane "Left"; }
bind "j" "Down" { MovePane "Down"; }
bind "k" "Up" { MovePane "Up"; }
bind "l" "Right" { MovePane "Right"; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
scroll {
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
bind "Ctrl t" { SwitchToMode "tab"; }
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Ctrl p" { SwitchToMode "pane"; }
bind "Ctrl h" { SwitchToMode "move"; }
bind "Ctrl b" { SwitchToMode "tmux"; }
bind "Ctrl o" { SwitchToMode "session"; }
bind "Ctrl n" { SwitchToMode "resize"; }
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
bind "Ctrl q" { Quit; }
bind "j" "Down" { ScrollDown; }
bind "k" "Up" { ScrollUp; }
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
bind "d" { HalfPageScrollDown; }
bind "u" { HalfPageScrollUp; }
bind "e" { EditScrollback; SwitchToMode "normal"; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
session {
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Ctrl n" { SwitchToMode "resize"; }
bind "Ctrl p" { SwitchToMode "pane"; }
bind "Ctrl h" { SwitchToMode "move"; }
bind "Ctrl b" { SwitchToMode "tmux"; }
bind "Ctrl t" { SwitchToMode "tab"; }
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
bind "Ctrl s" { SwitchToMode "scroll"; }
bind "Ctrl q" { Quit; }
bind "d" { Detach; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
RenameTab {
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
bind "Esc" { TabNameInput 27; SwitchToMode "tab"; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
RenamePane {
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
bind "Esc" { PaneNameInput 27; SwitchToMode "pane"; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { FocusPreviousPane; }
bind "Alt ]" { FocusNextPane; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
tmux {
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Esc" { EditScrollback; SwitchToMode "normal"; }
bind "Ctrl n" { SwitchToMode "resize"; }
bind "Ctrl p" { SwitchToMode "pane"; }
bind "Ctrl h" { SwitchToMode "move"; }
bind "Ctrl t" { SwitchToMode "tab"; }
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
bind "Ctrl s" { SwitchToMode "scroll"; }
bind "Ctrl q" { Quit; }
bind "[" { SwitchToMode "Scroll";}
bind "-" { NewPane "Down"; SwitchToMode "normal"; }
bind "|" { NewPane "Right"; SwitchToMode "normal"; }
bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; }
@ -248,129 +35,30 @@ keybinds clear-defaults=true {
bind "l" { MoveFocus "Right"; SwitchToMode "normal"; }
bind "j" { MoveFocus "Down"; SwitchToMode "normal"; }
bind "k" { MoveFocus "Up"; SwitchToMode "normal"; }
bind "Alt n" { NewPane; }
bind "Alt h" { MoveFocus "Left"; }
bind "Alt l" { MoveFocus "Right"; }
bind "Alt j" { MoveFocus "Down"; }
bind "Alt k" { MoveFocus "Up"; }
bind "Alt [" { PreviousSwapLayout; }
bind "Alt ]" { NextSwapLayout; }
bind "Alt =" { Resize "Increase"; }
bind "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
bind "Ctrl a" { Write 1; SwitchToMode "normal"; }
bind "d" { Detach; }
bind "e" { EditScrollback; SwitchToMode "normal"; }
bind "y" { ToggleActiveSyncTab; SwitchToMode "normal"; }
bind "r" { SwitchToMode "RenamePane"; PaneNameInput 0; }
bind "/" { SwitchToMode "EnterSearch"; SearchInput 0;}
bind "m" { SwitchToMode "Move"; }
bind "+" { Resize "Increase";}
bind "=" { Resize "Decrease"; }
bind "w" { ToggleFloatingPanes; SwitchToMode "normal";}
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal";}
bind "i" { TogglePanePinned; SwitchToMode "normal";}
}
}
// 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"
// Toggle between having pane frames around the panes
// Options:
// - true (default)
// - false
//
pane_frames false
session_serialization false
// Choose the theme that is specified in the themes section.
// Default: default
//
// theme "default"
theme "nord"
// 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"
plugins {
tab-bar { path "tab-bar"; }
status-bar { path "status-bar"; }
strider { path "strider"; }
ui {
pane_frames {
rounded_corners true
}
}

10
zsh/bin/run_ollama Normal file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env zsh
if ! command -v ollama; then
echo "Go install ollama"
fi
env GIN_MODE=release ollama serve &|
sleep 2
ollama pull llama3
ollama cp llama3 gpt-4-turbo-preview

205
zsh/completions/_gh Normal file
View file

@ -0,0 +1,205 @@
#compdef gh
# zsh completion for gh -*- shell-script -*-
__gh_debug()
{
local file="$BASH_COMP_DEBUG_FILE"
if [[ -n ${file} ]]; then
echo "$*" >> "${file}"
fi
}
_gh()
{
local shellCompDirectiveError=1
local shellCompDirectiveNoSpace=2
local shellCompDirectiveNoFileComp=4
local shellCompDirectiveFilterFileExt=8
local shellCompDirectiveFilterDirs=16
local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace
local -a completions
__gh_debug "\n========= starting completion logic =========="
__gh_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}"
# The user could have moved the cursor backwards on the command-line.
# We need to trigger completion from the $CURRENT location, so we need
# to truncate the command-line ($words) up to the $CURRENT location.
# (We cannot use $CURSOR as its value does not work when a command is an alias.)
words=("${=words[1,CURRENT]}")
__gh_debug "Truncated words[*]: ${words[*]},"
lastParam=${words[-1]}
lastChar=${lastParam[-1]}
__gh_debug "lastParam: ${lastParam}, lastChar: ${lastChar}"
# For zsh, when completing a flag with an = (e.g., gh -n=<TAB>)
# completions must be prefixed with the flag
setopt local_options BASH_REMATCH
if [[ "${lastParam}" =~ '-.*=' ]]; then
# We are dealing with a flag with an =
flagPrefix="-P ${BASH_REMATCH}"
fi
# Prepare the command to obtain completions
requestComp="${words[1]} __complete ${words[2,-1]}"
if [ "${lastChar}" = "" ]; then
# If the last parameter is complete (there is a space following it)
# We add an extra empty parameter so we can indicate this to the go completion code.
__gh_debug "Adding extra empty parameter"
requestComp="${requestComp} \"\""
fi
__gh_debug "About to call: eval ${requestComp}"
# Use eval to handle any environment variables and such
out=$(eval ${requestComp} 2>/dev/null)
__gh_debug "completion output: ${out}"
# Extract the directive integer following a : from the last line
local lastLine
while IFS='\n' read -r line; do
lastLine=${line}
done < <(printf "%s\n" "${out[@]}")
__gh_debug "last line: ${lastLine}"
if [ "${lastLine[1]}" = : ]; then
directive=${lastLine[2,-1]}
# Remove the directive including the : and the newline
local suffix
(( suffix=${#lastLine}+2))
out=${out[1,-$suffix]}
else
# There is no directive specified. Leave $out as is.
__gh_debug "No directive found. Setting do default"
directive=0
fi
__gh_debug "directive: ${directive}"
__gh_debug "completions: ${out}"
__gh_debug "flagPrefix: ${flagPrefix}"
if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then
__gh_debug "Completion received error. Ignoring completions."
return
fi
local activeHelpMarker="_activeHelp_ "
local endIndex=${#activeHelpMarker}
local startIndex=$((${#activeHelpMarker}+1))
local hasActiveHelp=0
while IFS='\n' read -r comp; do
# Check if this is an activeHelp statement (i.e., prefixed with $activeHelpMarker)
if [ "${comp[1,$endIndex]}" = "$activeHelpMarker" ];then
__gh_debug "ActiveHelp found: $comp"
comp="${comp[$startIndex,-1]}"
if [ -n "$comp" ]; then
compadd -x "${comp}"
__gh_debug "ActiveHelp will need delimiter"
hasActiveHelp=1
fi
continue
fi
if [ -n "$comp" ]; then
# If requested, completions are returned with a description.
# The description is preceded by a TAB character.
# For zsh's _describe, we need to use a : instead of a TAB.
# We first need to escape any : as part of the completion itself.
comp=${comp//:/\\:}
local tab="$(printf '\t')"
comp=${comp//$tab/:}
__gh_debug "Adding completion: ${comp}"
completions+=${comp}
lastComp=$comp
fi
done < <(printf "%s\n" "${out[@]}")
# Add a delimiter after the activeHelp statements, but only if:
# - there are completions following the activeHelp statements, or
# - file completion will be performed (so there will be choices after the activeHelp)
if [ $hasActiveHelp -eq 1 ]; then
if [ ${#completions} -ne 0 ] || [ $((directive & shellCompDirectiveNoFileComp)) -eq 0 ]; then
__gh_debug "Adding activeHelp delimiter"
compadd -x "--"
hasActiveHelp=0
fi
fi
if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then
__gh_debug "Activating nospace."
noSpace="-S ''"
fi
if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then
# File extension filtering
local filteringCmd
filteringCmd='_files'
for filter in ${completions[@]}; do
if [ ${filter[1]} != '*' ]; then
# zsh requires a glob pattern to do file filtering
filter="\*.$filter"
fi
filteringCmd+=" -g $filter"
done
filteringCmd+=" ${flagPrefix}"
__gh_debug "File filtering command: $filteringCmd"
_arguments '*:filename:'"$filteringCmd"
elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then
# File completion for directories only
local subdir
subdir="${completions[1]}"
if [ -n "$subdir" ]; then
__gh_debug "Listing directories in $subdir"
pushd "${subdir}" >/dev/null 2>&1
else
__gh_debug "Listing directories in ."
fi
local result
_arguments '*:dirname:_files -/'" ${flagPrefix}"
result=$?
if [ -n "$subdir" ]; then
popd >/dev/null 2>&1
fi
return $result
else
__gh_debug "Calling _describe"
if eval _describe "completions" completions $flagPrefix $noSpace; then
__gh_debug "_describe found some completions"
# Return the success of having called _describe
return 0
else
__gh_debug "_describe did not find completions."
__gh_debug "Checking if we should do file completion."
if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then
__gh_debug "deactivating file completion"
# We must return an error code here to let zsh know that there were no
# completions found by _describe; this is what will trigger other
# matching algorithms to attempt to find completions.
# For example zsh can match letters in the middle of words.
return 1
else
# Perform file completion
__gh_debug "Activating file completion"
# We must return the result of this command, so it must be the
# last command, or else we must store its result to return it.
_arguments '*:filename:_files'" ${flagPrefix}"
fi
fi
fi
}
# don't run the completion function when being source-ed or eval-ed
if [ "$funcstack[1]" = "_gh" ]; then
_gh
fi

2036
zsh/completions/_op Normal file

File diff suppressed because it is too large Load diff

11
zsh/funcs/atuin Normal file
View file

@ -0,0 +1,11 @@
# zsh-vi-mode for some reason is overriding these - so overriding them back
bindkey -M emacs '^r' atuin-search
bindkey -M viins '^r' atuin-search-viins
bindkey -M vicmd '/' atuin-search
bindkey -M emacs '^[[A' atuin-up-search
bindkey -M vicmd '^[[A' atuin-up-search-vicmd
bindkey -M viins '^[[A' atuin-up-search-viins
bindkey -M emacs '^[OA' atuin-up-search
bindkey -M vicmd '^[OA' atuin-up-search-vicmd
bindkey -M viins '^[OA' atuin-up-search-viins
bindkey -M vicmd 'k' atuin-up-search-vicm

View file

@ -1,9 +0,0 @@
function ls {
if [[ "${LS_PICKER}" == "lsd" ]]; then
lsd $@
elif [[ "${LS_PICKER}" == "exa" ]]; then
exa $@
else
/bin/ls $@
fi
}

5
zsh/funcs/man Normal file
View file

@ -0,0 +1,5 @@
man () {
PROGRAM="${@[-1]}"
SECTION="${@[-2]}"
page -W "man://${PROGRAM}${SECTION:+($SECTION)}"
}

8
zsh/funcs/updater Normal file
View file

@ -0,0 +1,8 @@
function update_me {
(
setopt local_options pushd_silent
cd ~/.dotfiles/nix
./update.sh $@
)
}

View file

@ -1,5 +1,4 @@
https://github.com/ohmyzsh/oh-my-zsh
https://github.com/zdharma-continuum/fast-syntax-highlighting
https://github.com/zsh-users/zsh-completions
https://github.com/ress997/zsh-completions-anyenv
https://github.com/b4b4r07/zsh-vimode-visual

169
zsh/zshrc
View file

@ -1,8 +1,5 @@
HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000
setopt extendedglob nomatch notify histignorespace histignorealldups histnofunctions histnostore histverify incappendhistory autopushd pushdignoredups
unsetopt autocd beep
setopt extendedglob nomatch notify histnofunctions histnostore histverify incappendhistory autopushd pushdignoredups
unsetopt beep
if [[ -f /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh ]];
then
@ -14,12 +11,6 @@ bindkey -v
# allow ctrl-a and ctrl-e to move to beginning/end of line
bindkey '^a' beginning-of-line
bindkey '^e' end-of-line
export RPROMPT=' ' # Fixes a side-effect of the vi-mode oh-my-zsh plugin
export KEYTIMEOUT=1
typeset -U path
typeset -U fpath
if [[ $(uname) == 'Darwin' ]]; then
if [[ $(arch) == 'arm64' ]]; then
@ -29,118 +20,45 @@ if [[ $(uname) == 'Darwin' ]]; then
fi
fi
hash -d -- -dotfiles=~/.dotfiles
hash -d -- -src=~/src
hash -d -- -doom=~/.doom-emacs
fpath=(~/bin ~/.zshcompletions $fpath)
zstyle :compinstall filename '/home/anthonys/.zshrc'
zstyle ":completion:*" complete _complete _ignored _approximate _expand
zstyle ":completion:*" glob 1
zstyle ":completion:*" insert-unambiguous true
zstyle ':completion:*' menu select
zstyle ':completion:*' rehash true
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'l:|=* r:|=*'
zstyle ":completion:*" substitute 1
export CARAPACE_BRIDGES='zsh,fish,bash'
zstyle ':completion:*' format $'\e[2;37mCompleting %d\e[m'
# Both because it's nice and as an example
zstyle ':completion:*:git:*' group-order 'main commands' 'alias commands' 'external commands'
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search zmv colors
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
# zsh-vi-mode stuff
ZVM_VI_SURROUND_BINDKEY="s-prefix"
ZVM_READKEY_ENDINE=$ZVM_READKEY_ENGINE_NEX
ZVM_INSERT_MODE_CURSOR=$ZVM_CURSOR_BLOCK
ZVM_LINE_INIT_MODE=$ZVM_MODE_INSERT
function zvm_after_lazy_keybindings() {
eval "$(/nix/store/imgh8mjpck0xadj64h9q4gqrjaj9pbn7-atuin-18.3.0/bin/atuin init zsh )"
}
# zstyle ":completion:*" complete _complete _ignored _approximate _expand
# zstyle ":completion:*" glob 1
# zstyle ":completion:*" insert-unambiguous true
# zstyle ':completion:*' menu select
# zstyle ':completion:*' rehash true
# zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'l:|=* r:|=*'
# zstyle ":completion:*" substitute 1
[[ -n "$key[Up]" ]] && bindkey -- "$key[Up]" up-line-or-beginning-search
[[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search
_command-exists() {
[[ -x "$(command -v $1)" ]] && return 0 || return 1
}
export COMPLETION_WAITING_DOTS="true"
export VISUAL='nvim'
export EDITOR='nvim'
path=("$HOME/bin" "$HOME/go/bin" $path)
local ZSH_PLUGIN_DIR="$HOME/.zsh_plugins"
zstyle ':znap:*' repos-dir "${ZSH_PLUGIN_DIR}"
zstyle ':znap:*' auto-compile no
zstyle ':znap:*:*' git-maintenance off
autoload -Uz add-zle-hook-widget
local ZSH_PLUGIN_DIR="$HOME/.zsh_plugins"
if [[ ! -d "${ZSH_PLUGIN_DIR}/zsh-snap" ]]; then
mkdir -p ~/.zsh_plugins
cd ~/.zsh_plugins
git clone https://github.com/marlonrichert/zsh-snap.git
fi
source "${ZSH_PLUGIN_DIR}/zsh-snap/znap.zsh" && export ZNAP_USED=1
local -a paths
for line in "${(@f)"$(<~/.zsh_plugins.txt)"}"
{
if [[ ! -d "${ZSH_PLUGIN_DIR}/$(basename $line)" ]]; then
paths=($paths $line)
fi
}
if [[ ! ${#paths[@]} -eq 0 ]]; then
echo "Paths not empty: $paths"
znap clone ${^paths}
fi
if [[ ( $ZNAP_USED = 1 ) ]]; then
znap source oh-my-zsh lib/{git,completion}
znap source oh-my-zsh plugins/colored-man-pages
fpath=($fpath ~[oh-my-zsh]/plugins/{pass,ripgrep,cargo,docker,docker-compose,rsync,fd})
znap source fast-syntax-highlighting
fpath=($fpath ~[zsh-completions]/src)
znap source zsh-vimode-visual
fi
if [[ -d ~/.cargo/bin ]]; then
path=($path $HOME/.cargo/bin)
fi
if (_command-exists starship); then
znap eval starship 'starship init zsh --print-full-init'
znap prompt
else
if [[ ( $ZNAP_USED = 1 ) ]]; then
autoload -Uz promptinit
promptinit
znap clone https://github.com/denysdovhan/spaceship-prompt
znap prompt spaceship-prompt
fi
fi
autoload -Uz compinit
compinit
znap source oh-my-zsh plugins/{gitignore,git,helm,mvn,gradle}
alias exa="exa -l --git"
if [[ $(uname -s) =~ 'Linux' ]]; then
alias cp="cp --reflink=auto"
fi
function dt() {
local session_name
session_name=${1:-DefaultSession}
if [[ "${SESSION_MANAGER}" == "tmux" ]]; then
tmux -u -2 new-session -A -s $session_name
else
zellij attach -c $session_name
fi
local session_name=${1:-DefaultSession}
zellij attach -c $session_name
}
function send-to-pane() {
tmux pipe-pane -I -t $1 "$2 | head -n 1"
}
function _send_to_pane {
reply=($(tmux display-panes -b ''))
}
compctl -K _send_to_pane send-to-pane
function root() {
if [[ -n $(git rev-parse --show-toplevel) ]]
then
@ -148,40 +66,6 @@ function root() {
fi
}
if [[ -d $HOME/.anyenv ]]; then
path+=($HOME/.anyenv/bin)
if [[ ( $ZNAP_USED = 1 ) ]]; then
znap eval anyenv-init ${${:-=anyenv}:A}' init -'
else
eval "$(anyenv init -)"
fi
fi
CTRL_R_PICKER="atuin"
if [[ "${CTRL_R_PICKER}" == "mcfly" ]]; then
znap eval mcfly 'mcfly init zsh'
export MCFLY_KEY_SCHEME=vim
export MCFLY_FUZZY=true
export MCFLY_RESULTS=50
export MCFLY_USED=1
fi
if [[ "${CTRL_R_PICKER}" == "atuin" ]]; then
znap eval atuin 'atuin init zsh'
fi
if (_command-exists direnv); then
eval "$(direnv hook zsh)"
fi
if (_command-exists pdm); then
eval "$(pdm --pep582 zsh)"
fi
##THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && znap eval sdkman-init "cat $HOME/.sdkman/bin/sdkman-init.sh # $SDKMAN_VERSION"
if [[ -a $HOME/.zshsrc ]]; then
source $HOME/.zshsrc
else
@ -189,7 +73,8 @@ else
touch $HOME/.zshsrc
fi
LS_PICKER="exa"
alias exa="eza -l --git"
for funcfile in $HOME/.zsh.d/* ; do
source "${funcfile}"
done