Compare commits

...

590 commits

Author SHA1 Message Date
48af3d5449
ghostty: use window decorations 2025-01-17 20:56:28 +01:00
1b367e2322
nemo: add tpm2 tooling + perms 2025-01-16 16:38:52 +01:00
cc9fc76545
jj: fancier status 2025-01-15 20:04:18 +01:00
dcc102f9bf
ghostty: keymap c-m + friends 2025-01-15 20:02:41 +01:00
6b1a4b5d04
jj: pass args to 's' alias 2025-01-15 14:50:54 +01:00
62246715bb
jj: fancy 's' command as default
new `util exec` is very nice 😀
2025-01-15 14:38:23 +01:00
eb06ace77d
nix: update 2025-01-15 14:38:17 +01:00
fac0a155e2
fish: jj dynamic completion 2025-01-14 21:55:58 +01:00
de6547851a
fish: remove unused config 2025-01-14 21:55:14 +01:00
a6013523fa
nvim: cleanup 2025-01-12 23:01:30 +01:00
ad82eb1cbf
nvim: Add autoformat on save w/toggle ui 2025-01-12 23:01:30 +01:00
3b577407f7
nvim: remove codeium cmp source 2025-01-12 17:19:13 +01:00
8e2d043650
nvim: add mini.files 2025-01-12 17:00:54 +01:00
0b6313671c
ghostty: reduce font size a bit 2025-01-12 15:09:26 +01:00
81f036c147
nvim: use mini.visits for history w/frecency 2025-01-12 13:44:14 +01:00
f8c7a5ecfe
nvim: revert minipick preview key 2025-01-12 13:42:31 +01:00
a93861071d
nvim: cleanup 2025-01-12 13:27:19 +01:00
b5a3d0ec9e
nvim: colors 2025-01-12 01:14:15 +01:00
2cd4b5c52a
nvim: picker + cmp tweaks 2025-01-11 23:10:02 +01:00
cea9b407c8
nvim: ruler format tweaks 2025-01-11 23:09:30 +01:00
fec53f5ca0
nvim: re-enable neocodium. bink-cmp config 2025-01-11 19:36:45 +01:00
ccf59fbaee
zoxide: add fzf border and avoid sorting (which ruins zoxide weighting) 2025-01-10 21:45:35 +01:00
f263c95f03
ghostty: don't start nvim automatically 2025-01-09 17:27:35 +01:00
c68bdd3818
nvim: blink-cmp changes 2025-01-09 17:27:23 +01:00
3ec86e59ba
nemo: disable coolercontrol + gnome vitals 2025-01-09 14:36:57 +01:00
03e20d83e1
nemo: disable sunshine 2025-01-09 14:36:21 +01:00
3ef41dd400
nemo: set OTEL endpoint globally 2025-01-08 18:58:40 +01:00
b82010faf8
nvim: add sqls 2025-01-08 15:39:04 +01:00
223bff6315
fish: remove grc 2025-01-07 22:00:37 +01:00
7a2d1a7e4e
nemo: re-enable pam_rssh 2025-01-07 19:45:49 +01:00
78d818056b
jj: use bright magenta for bookmarks 2025-01-07 19:44:44 +01:00
fac15cd4c5
nix: update 2025-01-05 23:13:58 +01:00
6d35750873
hardware.pulseaudio -> services.pulseaudio 2025-01-05 23:10:32 +01:00
476542b697
jj: colorific 2025-01-05 22:57:19 +01:00
b23bc6b9af
nix: add nixfmt 2025-01-05 00:10:27 +01:00
4bb1fa1f40
ghostty: fix .desktop entries 2025-01-04 19:11:37 +01:00
7152b0bf09
nix: add nix-index 2025-01-04 13:59:19 +01:00
9ca1072e00
rename nemo -> devel for ghostty+ssh 2025-01-03 19:40:42 +01:00
09694db337
nix update 2025-01-03 19:22:53 +01:00
90b5b48d2a
vcs: remove unused lazyjj, gitui 2025-01-03 19:22:32 +01:00
4766311654
ghostty: add desktop entries for secondary (condensed) terminals 2025-01-03 18:46:13 +01:00
6dd68098e0
jj: use jj flake directly 2025-01-03 15:35:11 +01:00
5032e07ee9
zoxide: fzf clown vomit mitigation effort 2025-01-03 14:01:49 +01:00
7954844ff6
fish: colorings 2025-01-03 13:38:56 +01:00
afa495919c
nvim: colorings 2025-01-03 13:38:53 +01:00
9b9389592e
eza: monochrome theme. use home-manager aliases. 2025-01-03 12:14:16 +01:00
79e3ffbac3
nvim: more subtle mini cursor word 2025-01-03 12:14:16 +01:00
a8adda373c
fish: bold prompt symbol instead of colored 2025-01-03 12:14:16 +01:00
243a476525
ghostty: lower underline position 2025-01-03 11:06:35 +01:00
6223f1e7c9
test-term: add ANSI color sets 2025-01-03 11:05:58 +01:00
5a35ac9aeb
nvim: absolute line numbers by default 2025-01-03 00:12:02 +01:00
70fec1c1f1
nvim: just color underlines for diagnostics 2025-01-03 00:11:36 +01:00
7e89879ae9
lsjostro has his own home-manager setup now 2025-01-02 23:08:36 +01:00
f0710b34fb
nvim: update Patagia logo 2025-01-02 23:05:49 +01:00
f8ad364bc9
ghostty: color adjustments 2025-01-02 22:16:03 +01:00
37372a5c69
nvim: colors 2025-01-02 20:28:12 +01:00
13348be8e9
nvim: Add dieter/dieter-nocolor variants. Switch with <Leader>uc 2025-01-02 19:50:05 +01:00
091442fcdf
ghostty: use berkeley mono v2 2025-01-02 17:04:32 +01:00
a603dd1cad
ghostty: module has been merged to home-manager 2025-01-02 16:22:32 +01:00
311cd9042e
nvim: wrapper script for persistent+remote control 2025-01-02 15:23:31 +01:00
9ee84b89e6
nvim: color scheme tweaks 2025-01-02 00:31:28 +01:00
376fb67f48
nix update 2025-01-01 16:55:35 +01:00
be77222a99
Ditch tmux for ghostty tabs + a more stateless living 2025-01-01 16:42:54 +01:00
494bd5cad1
nvim: <Leader>uw toggles line wrap 2024-12-31 14:48:50 +01:00
cdc020ff0d
nvim: trying out just using blink cmp for neocodium as well 2024-12-31 14:34:16 +01:00
c749caf2e9
nvim: do not enable inlay hints by default 2024-12-31 14:32:38 +01:00
be8780d846
Experiment with having no system wide language tooling 2024-12-31 13:57:40 +01:00
2497584fd0
Remove unused zed 2024-12-30 22:01:35 +01:00
be47c9500b
dinky is laptop 2024-12-30 21:29:53 +01:00
46c13deee7
nix update 2024-12-30 09:46:34 +01:00
c4a2a60fa6
nvim: implement projects picker 2024-12-30 09:46:34 +01:00
714cbcb8a9
nvim: reformat 2024-12-30 09:46:25 +01:00
461f3a9a46
nix update 2024-12-29 22:55:40 +01:00
b455010624
nvim: blink-cmp goodness 2024-12-28 00:54:23 +01:00
f26beb87bd
nvim: nvim-tree-pairs appears broken right now 2024-12-28 00:54:23 +01:00
8b46fa253d
nvim fixings 2024-12-28 00:54:23 +01:00
49d4bbd7c1
gimp: skip plugins for now 2024-12-27 22:58:17 +01:00
baaf516939
nix: bump 2024-12-27 20:00:40 +01:00
fa7fce620a
ghostty: Use official (now released + public) flake 2024-12-27 19:59:22 +01:00
1379ed01f0
Use cache-nixos-org.aarn.patagia.net as cache 2024-12-27 19:35:11 +01:00
f53cbba16f
Enable avahi 2024-12-27 19:14:55 +01:00
f5af1628e7
atuin: moved to atuin.patagia.net 2024-12-19 10:27:26 +01:00
0ff88467e6
athens moved to athens.patagia.net 2024-12-19 10:26:55 +01:00
195a66d7bf
nvim: add direnv-vim plugin 2024-12-15 23:56:40 +01:00
4c259757db
nvim: add c-p binding 2024-12-15 23:05:56 +01:00
378fd7caa0
patagia.dev -> patagia.net 2024-12-11 00:03:28 +01:00
264546666c
lazyjj: nixpkgs caught up and ran by 2024-12-10 09:15:23 +01:00
2d5364c5de
nvim: blink-cmp 0.7.3 is in nixpkgs now 2024-12-08 23:01:18 +01:00
da605daf08
jj: upgrade to 0.24.0 2024-12-08 22:56:26 +01:00
4465aa5abc
chore: fix typo 2024-12-08 20:45:21 +01:00
aed9af6f45
nvim: enable inlay hints + toggling 2024-12-05 00:22:39 +01:00
5c319ac288
nvim: Iterate on colors 2024-12-05 00:22:04 +01:00
c94ce60795
ghostty: use hardcoded session names in tmux 2024-12-04 20:30:41 +01:00
dc126a49d6
nvim: add harper ls 2024-12-04 18:03:46 +01:00
37ddc91613
nvim: upgrade blink-cmp. lsp config for web stuff. 2024-12-04 17:26:36 +01:00
7a4712c057
chore: typo 2024-12-02 12:33:20 +01:00
0357c7ff05
ghostty: add .desktop for secondary tmux session 2024-12-01 23:23:24 +01:00
761b506dac
desktop: nerd-fonts are split into separate packages now 2024-12-01 23:20:01 +01:00
4dadbe3542
nix: update 2024-11-30 21:18:03 +01:00
b6b4abddf5
Revert running tmux from fish, set ripgrep config explicitly.
There should be a better way to do this? 🤔
2024-11-30 21:17:02 +01:00
b0668e2ef7
nvim: Add blink.compat for nvim-cmp compatibility for blink.cmp
https://github.com/Saghen/blink.compat
2024-11-30 21:15:59 +01:00
38a179be12
README 2024-11-29 12:08:09 +01:00
3dee43330a
nvim: clear Normal group and use terminal defaults for
background+foreground
2024-11-28 12:47:30 +01:00
e1c3fd6cb8
ghostty+nvim: Add oled mode for darker darks on laptop 2024-11-28 12:28:29 +01:00
a7aa9c7a72
vcs+rg: fix ignore globs 2024-11-28 12:21:12 +01:00
71660705f0
nvim: mini.pick ripgrep->rg tool name 2024-11-28 12:20:02 +01:00
dfa99a5d4c
ghostty: run tmux in shell 2024-11-27 23:38:45 +01:00
9a31f83e80
ghostty+nvim: color tweaks to please the eyeballs 2024-11-27 15:46:31 +01:00
e7d96ac4c0
fish: fix viddy arguments for w 2024-11-26 21:17:25 +01:00
18a27db983
nix: update 2024-11-26 21:16:57 +01:00
b09da9efbe
ghostty+nvim: try on some oled black background 2024-11-26 21:12:54 +01:00
e3858e3adf
nvim: blink-cmp has been merged to unstable 2024-11-21 20:10:37 +01:00
4e803491d6
nvim: add <Leader>ub to toggle light/dark background 2024-11-21 16:43:00 +01:00
2994a40003
nix: update 2024-11-21 15:16:57 +01:00
010e4bc4d7
ghostty: automatic switching between light/dark themes 2024-11-21 15:16:16 +01:00
8ad810254b
nemo: add woodpecker user for woodpecker-agent 2024-11-21 14:53:16 +01:00
fe829e19c5
fish: Remove right prompt. Put vcs info on terminal bottom line. 2024-11-21 13:56:54 +01:00
49bf77b97f
fish: Add icons to jj fish prompt 2024-11-19 22:40:01 +01:00
0069a95e5d
fish: Prettier prompt w/jj desc in separator line 2024-11-19 21:49:53 +01:00
74c622efab
tmux: add stty command alias for resizing (serial) terminals 2024-11-19 12:51:36 +01:00
74e5882919
Nix update 2024-11-19 12:33:39 +01:00
a1906f2380
jj: fewer log entries by default 2024-11-18 18:44:52 +01:00
0496c8544b
home: i like file 2024-11-12 21:26:03 +01:00
d82a46a490
nvim: ignore /nix/store and cargo files in shada / oldfiles + friends 2024-11-10 20:25:03 +01:00
663119c828
nvim: sort buffers by most recent use 2024-11-10 14:19:05 +01:00
8648722d9a
nvim: remove nil lsp in favor of nixd 2024-11-10 14:18:32 +01:00
38ede1036e
nix: upgrade 2024-11-09 20:28:44 +01:00
b433ecef3c
nvim: blink-cmp 0.5.1 + styling 2024-11-09 17:16:35 +01:00
1eb8637840
nvim: colors 2024-11-09 01:34:01 +01:00
f6f2286505
nvim: use blink.cmp for completion
https://github.com/Saghen/blink.cmp
2024-11-09 00:22:09 +01:00
273c88b4fe
tmux: use C-t as prefix 2024-11-09 00:20:12 +01:00
e77885fdef
nvim: mini.pick fixings 2024-11-08 23:16:34 +01:00
6cbd28148a
nvim: move treesitter to separate file 2024-11-07 23:11:11 +01:00
d3b07a2e77
nvim: Add neocodium 2024-11-07 18:06:47 +01:00
2bad613a8a
nvim: completion and styling 2024-11-07 17:45:50 +01:00
f3628d2cf1
jj: upgrade to v0.23.0 2024-11-07 10:33:23 +01:00
6615366df7
nix: add cachix 2024-11-07 10:33:01 +01:00
9bc0226264
nvim: cleanup 2024-11-07 10:32:40 +01:00
01b97bf22c
nix: add cachix community cache 2024-11-07 01:20:15 +01:00
f4aa6d3cda
nvim: use neovim-nightly 2024-11-07 01:15:38 +01:00
cdeb64a7e4
nvim: mini + tree-sitter setup 2024-11-07 00:23:55 +01:00
f3d1d92840
nvim: add bufremove 2024-11-06 20:03:42 +01:00
29ea7970c3 nvim: mini all the things (#2)
Reviewed-on: dln/nixos-config#2
2024-11-06 00:03:58 +00:00
ab8ee834e9
nvim: add diagflow plugin 2024-11-06 01:00:41 +01:00
2f0f291167
cleanup 2024-11-06 00:49:48 +01:00
4f8865c8ac
nvim: fancy ruler with diagnostics 2024-11-06 00:43:04 +01:00
8b8a7cf04b
nvim: cleanup 2024-11-06 00:42:33 +01:00
93f6d76c76
nvim: use <leader>cf for code formatting 2024-11-06 00:41:50 +01:00
aa228521fe
nvim: all in on mini.nvim 2024-11-05 21:55:52 +01:00
890ac1e91c
Uninstall wezterm 2024-10-23 09:48:42 +02:00
4122379694
nix: update 2024-10-23 00:26:52 +02:00
d6a3d73411
dinky: remove calibre for now 2024-10-23 00:24:10 +02:00
5093a4fb11
fonts: noto cjk renamed 2024-10-23 00:24:10 +02:00
8d7ebd3656
dinky: update remote builder config 2024-10-23 00:24:10 +02:00
79cbb2462a
nemo: deploy woodpecker agent 2024-10-22 23:28:21 +02:00
0e7f1a4e36
ghostty: override nixpkgs with unstable packages 2024-10-18 15:07:14 +02:00
a362c3885f
more cleanup 2024-10-18 10:58:14 +02:00
c9f5febd94
Add stable nixpkgs. Use that for Calibre (python/qt is broken) 2024-10-18 10:42:50 +02:00
ad64ae1ecc
clean up flake.nix 2024-10-18 10:38:58 +02:00
62f93b8d54
update 2024-10-18 10:38:54 +02:00
81e8bca166
fish: confirm before poweroff, reboot, shutdown 2024-10-12 13:41:06 +02:00
c07fe99a2e
jj: branches -> bookmarks 2024-10-12 13:07:32 +02:00
39dcb58a9b
fish: show command duration after longer command 2024-10-11 14:59:28 +02:00
6b386be43b
jj: branch -> bookmark 2024-10-06 22:25:32 +02:00
f1e29fd5f8
jujutsu: upgrade to 0.22.0 2024-10-06 20:26:16 +02:00
213feda67b
Update. Add helix editor package 2024-10-06 19:46:49 +02:00
ca7a0646b5
lazyjj: upgrade to 0.3.1 2024-09-29 20:49:13 +02:00
adc9fdbba9
jj: fancy status and diff on <M-s> and <M-S> respectively 2024-09-29 20:19:18 +02:00
7c2b46120e
direnv: hide env diff. load .env files by default. 2024-09-29 20:17:20 +02:00
21c038baf5
neovim: add nil, nxd langauge servers
couldn't get the mason installed one to work
2024-09-29 17:49:27 +02:00
2d58c4714a
nemo: enable gpg-agent 2024-09-29 13:52:36 +02:00
026d5f813b
atuin: run as daemon 2024-09-29 12:56:03 +02:00
52fe78851b
dinky: enable gpg agent 2024-09-29 12:55:56 +02:00
c72bec3aa3
dinky: disable printing but leave configured. Add nitrokey. 2024-09-29 12:54:22 +02:00
68f80d321a
update 2024-09-29 12:53:06 +02:00
2a1f0398e2
Remove docker/podman-compose 2024-09-27 10:51:14 +02:00
3bf22d6276
update 2024-09-22 19:45:51 +02:00
f5245e6450
Install comma. Remove unused programs. 2024-09-22 19:43:41 +02:00
0f26b88080
jj: set git branch push prefix. remove unused aliases. 2024-09-22 19:40:27 +02:00
0283216034
Enable fwupd 2024-09-21 13:17:44 +02:00
f2bdcd904c
tmux: config 2024-09-17 15:45:13 +02:00
4ffb39118a
update 2024-09-17 11:57:53 +02:00
dc79f572ce
update 2024-09-16 09:23:08 +02:00
c7ca94e3c1
update 2024-09-14 13:40:04 +02:00
7efb24059c
fish: add tmux-refresh-env function 2024-09-14 13:32:53 +02:00
e6002533da
dln: install asciinema 2024-09-14 13:30:26 +02:00
b1d5eb1fc3
nvim: show projects list on startup by default. Add C-p for project
list.
2024-09-12 01:14:45 +02:00
c0e0e41004
ghostty: disable titlebar 2024-09-11 23:57:00 +02:00
913caf1281
jj: update to v0.21.0 2024-09-11 23:35:42 +02:00
9d4202d7d2
update 2024-09-11 22:07:12 +02:00
663ccea86b
update 2024-09-09 19:52:52 +02:00
3e0ab74c99
update 2024-09-09 09:40:04 +02:00
2a64fc24e3
nvim: fix indentline glyph 2024-09-08 14:06:52 +02:00
433787237f
update 2024-09-08 13:59:16 +02:00
369d3792dc
update 2024-09-07 20:36:03 +02:00
1fcacebf5a
update 2024-09-04 13:09:40 +02:00
04b6a1157f
update 2024-09-03 23:42:38 +02:00
7af8b78892
nemo: install obs studio 2024-09-03 23:42:02 +02:00
d40ac202fe
atuin: move server to atuin.patagia.dev 2024-09-03 23:42:02 +02:00
d3be213bd8
pearl: setup 2024-09-03 19:07:26 +02:00
d8cd9df7d3
Add pearl host 2024-09-03 17:13:48 +02:00
318c9c9cc3
update 2024-09-02 20:56:24 +02:00
72f0872618
ghostty: disable synthetic styles 2024-09-02 20:56:05 +02:00
8b1a4651c1
gnome: configure emoji copy extension 2024-09-02 19:51:32 +02:00
9bbd3fa12e
shelman->patagia 2024-09-02 19:48:24 +02:00
ad56904021
update 2024-09-02 14:15:46 +02:00
030f54c5df
vcs: remove unused git commands 2024-09-01 19:48:16 +02:00
2fb1f90dbe
update 2024-09-01 19:31:47 +02:00
d52f10ccd9
gnome: enable emoji-copy extension 2024-09-01 19:31:32 +02:00
694a5f152c
jj: use default immutable_heads function 2024-09-01 19:27:25 +02:00
b44fd4cd3a
update 2024-08-30 13:53:26 +02:00
d3dad5fd52
nemo: install calibre 2024-08-30 13:49:51 +02:00
467946b1af
update 2024-08-28 09:52:41 +02:00
eaf4d1fd00
fish: yellow prompt symbol 2024-08-27 16:14:32 +02:00
b572bf24a0
Update 2024-08-27 16:13:05 +02:00
100a871a6d
install dog(dns) 2024-08-25 20:25:33 +02:00
c03235156c
env vars: set GOPROXY 2024-08-25 17:12:39 +02:00
caf1da9231
Use tmpfs for /tmp. Enable new nixos system switch implementation 2024-08-22 19:48:29 +02:00
8ff422f953
devel: add mc 2024-08-22 19:46:58 +02:00
12757040d8
update 2024-08-22 19:46:18 +02:00
7f7855c03d
dinky: use iwd as wifi backend 2024-08-21 22:24:31 +02:00
66a3c221d3
dinky: install calibre 2024-08-21 21:49:18 +02:00
60ca243a65
nvim: fix keybindings 2024-08-21 21:49:18 +02:00
24002ffe4d
fish: keep 4 dir segements in prompt pwd 2024-08-21 16:43:00 +02:00
086298efa3
ssh: include host-local config file if available 2024-08-21 11:31:18 +02:00
3730825295
nemo: disable pam_rssh (again!) for now as rust 1.80 broke some pkgs 2024-08-21 11:00:31 +02:00
95461b403a
jj: more legible color for "hidden" / rest parts of changes and commits 2024-08-21 10:59:58 +02:00
cdb461a4c3
fish: a bit of color using grc 2024-08-21 10:31:52 +02:00
e774304bd2
delta: fix changed flags 2024-08-21 09:57:44 +02:00
8c439e2ce1
update (rust 1.80) 2024-08-21 09:40:32 +02:00
510ed39bbd
delta: style ripgrep results 2024-08-18 22:25:43 +02:00
46b3e9cf28
revert flake.lock until rust 1.80 npkgs fixes have been merged 2024-08-18 22:24:31 +02:00
008aed0854
nemo: disable pam_rssh for now as rust 1.80 broke some pkgs 2024-08-16 20:49:23 +02:00
7a73fb03b4
nemo: network fix 2024-08-16 20:48:43 +02:00
3e7b9dcf56
update 2024-08-16 20:46:50 +02:00
f2f3357384
ghostty: thinner underlines. adjust spacing slightly to allow underlines
more room.
2024-08-15 17:23:14 +02:00
4645486af3
ghostty: disable codepoint replacement and let ghostty do line drawing 2024-08-15 11:54:38 +02:00
5f530bbbb2
test-term: add geometric + line drawing tests 2024-08-15 11:53:55 +02:00
16b07b9213
nvim: fix keybindings 2024-08-15 10:23:11 +02:00
51ad6503ee
update 2024-08-14 21:35:01 +02:00
fa412f7677
dinky: enable firmware 2024-08-14 21:34:06 +02:00
28ec5c7230
nemo: wifi + firmware config 2024-08-14 21:14:30 +02:00
f56f664642
ghostty: fixing the fixings 2024-08-14 11:52:57 +02:00
5940efb858
nemo: fix netmask 2024-08-14 11:50:03 +02:00
65761d7b3f
ghostty / nvim: font + keybinding tweaks 2024-08-13 23:52:39 +02:00
873dcca9bc
update 2024-08-12 21:01:11 +02:00
debc52a179
tmux: persistent terminals + nvim edit helper M-1 2024-08-12 20:20:25 +02:00
1a193f3699
nemo: host specific config 2024-08-12 09:23:52 +02:00
54b623d4fe
wip: tmux setup for ghostty 2024-08-12 08:51:53 +02:00
0f02c4b376
ghostty: padding tweaks. fish binding for C-m 2024-08-11 22:16:09 +02:00
2bbe462c9d
ghostty: add dark theme, wrapper to auto-set theme based on system. add
desktop launchers
2024-08-11 17:38:34 +02:00
088a839a36
vcs: add git-get
See: https://github.com/grdl/git-get
2024-08-11 15:36:41 +02:00
1fae8d3e9c
Add ghostty 2024-08-11 15:36:39 +02:00
389907c2d4
fish: add jl function to show jj log w/fzf preview 2024-08-10 23:06:06 +02:00
9d1bdf84e5
nix: dinky: add remote build config 2024-08-10 22:32:25 +02:00
faaf76ef60
nix: remove broken attic for now 2024-08-10 22:32:23 +02:00
47baf8ac8f
update 2024-08-10 14:14:21 +02:00
78c14ff210
fixup 2024-08-10 14:04:20 +02:00
6f657978f3
jj: upgrade to 0.20.0 w/openssh patch 2024-08-10 13:45:24 +02:00
698fab3921
nix: set up remote builds 2024-08-09 23:23:09 +02:00
605e75220a
nix: shared cache 2024-08-09 19:26:41 +02:00
b636050ab6
Clean up renamed options and packages 2024-08-08 00:42:02 +02:00
d527f939b6
jj: show deleted/missing files as empty in difftastic 2024-08-07 21:58:59 +02:00
12351463fc
git/jj: ignore result dir 2024-08-07 21:50:52 +02:00
7527d2654c
fish: use delta as pager 2024-08-07 20:27:20 +02:00
abb479c2cd
jj: use difftastic by default. add more aliases for convenience 2024-08-07 15:27:11 +02:00
5868da6c29
update 2024-08-07 12:10:51 +02:00
b1c2640dc2
ssh: forward agent to dev 2024-08-04 00:04:43 +02:00
d6834302cb
vcs: re-add git-branchless since its still in use 2024-08-03 13:26:42 +02:00
68fb14b406
update 2024-08-03 13:25:07 +02:00
afab218397
update 2024-08-02 14:47:20 +02:00
54baace7c1
move old nixos-config over here 2024-08-02 14:10:15 +02:00
346d80ae7e
fish: use delta as pager for ripgrep 2024-08-02 11:57:41 +02:00
2f6d4e1d3c
Migrate to home-manager 2024-08-02 11:55:35 +02:00
6781866277 fish: fix zoxide config 2024-07-05 22:54:23 +02:00
3de78c65d8 nix: no absolute path for binaries 2024-07-02 21:20:27 +02:00
bd8685e275 wezterm: per-dpi settings 2024-07-02 21:19:21 +02:00
09946832c1 fish: use zoxide instead of fre + fzf 2024-06-30 23:08:26 +02:00
6a5196b4d4 nixos adjustments (PATHs mostly) 2024-06-28 07:55:21 +02:00
d22ce20dcf broot: fixings 2024-06-25 19:47:40 +02:00
c46e0931c9
nvim: change eob character for berkeley mono 2024-06-21 10:55:27 +02:00
6bf9bf1f47
wezterm: fix scrolling and re-enable semantic prompt 2024-06-21 10:52:48 +02:00
0e08bdacef
wezterm: add nemo desktop shortcut 2024-06-20 12:32:06 +02:00
69d897e7c3
wezterm: add nemo exec domain 2024-06-20 12:32:05 +02:00
172034e7af
ssh: add nemo config 2024-06-20 12:32:03 +02:00
ff0ac00c6f
k9s: color tweaks 2024-06-18 22:49:55 +02:00
82ed7f551e
k9s: use colorless skin 2024-06-18 13:47:23 +02:00
df96ee6bc5
wezterm: set exact font size based on dpi 2024-06-17 20:15:26 +02:00
0b14d0b9b0
wezterm: more accurate font hinting+rendering 2024-06-15 18:14:39 +02:00
b28004c168
nvim: disable telescope-zf-native for now 2024-06-12 19:23:48 +02:00
f0e98b6b46
nvim: telescope tuning 2024-06-11 22:48:30 +02:00
d666c403dc
fish: remove color from c-/ jump fzf 2024-06-11 22:48:29 +02:00
0d2461710b
test-term: add geometrical and arrow chars test 2024-06-11 13:02:23 +02:00
1cb5298e94
test-term: add blocks and border chars test 2024-06-11 12:38:37 +02:00
f7220ddf08
wezterm: fix underline position 2024-06-11 12:35:02 +02:00
116d3f9e0c
wezterm: tinker with stylistic features 2024-06-11 12:22:50 +02:00
08f365596c
gitui: remove theme 2024-06-09 14:36:08 +02:00
db796e4fab
git: no colors in delta 2024-06-09 14:30:08 +02:00
77854d330c
nvim: let rustaceanvim manage rust-analyzer 2024-06-08 21:39:25 +02:00
b64b083611
nvim: move all lazy extras to be managed by lazy 2024-06-08 09:33:12 +02:00
23dcb3c9dd
nvim: remove lazy-lock file from git 2024-06-08 09:32:36 +02:00
266ef70a8c
nvim: move all lazy extras to be managed by lazy 2024-06-08 09:32:04 +02:00
2f3376654c
nvim: shorten updatetime for cursorhold events 2024-06-08 09:31:23 +02:00
dca08c8a84
wezterm: inline colors in lua config 2024-06-07 17:59:56 +02:00
f611368664
wezterm: use berkeley mono nerd font 2024-06-07 17:45:29 +02:00
76a93bf0b1
nvim: onward 2024-06-07 17:01:10 +02:00
64644ebc50
meep 2024-06-07 16:59:10 +02:00
4d49b7af90
nvim: include fix 2024-06-07 16:58:47 +02:00
259e391d49
nvim: use sumi-e colorscheme 2024-06-07 16:58:39 +02:00
f6c264a7d2
nvim: hide whitespaces 2024-06-07 16:55:01 +02:00
2339c4d2b9
wezterm: renderfight 2024-06-05 08:11:30 +02:00
7d8ca69c71
nvim: replace ibl, mini.indentscope with indentmini 2024-06-03 13:27:48 +02:00
0d9644beb6
wezterm-edit-helper: hide output from remote nvim call 2024-06-03 13:27:46 +02:00
ce87785b52
wezterm: berkeley mono goodness 2024-06-03 11:34:32 +02:00
3dd6fa855b
nvim: silence direnv 2024-06-01 23:58:59 +02:00
9f9262ccbe
wezterm: disable freetype hinting explicitly 2024-06-01 17:32:28 +02:00
b623929170
git: a more ergonomic log 2024-06-01 16:00:01 +02:00
4b9f5f3dc4
starship: adjust to work nicely in both dark and light mode 2024-06-01 12:50:32 +02:00
c23152556a
fish: use typography instead of colors in theme 2024-06-01 11:19:07 +02:00
8f7e8cc83c
nvim: add overseer 2024-05-30 19:54:52 +02:00
b18bec4cb4
wezterm: use default gpu settings 2024-05-30 19:06:20 +02:00
22880f43ab
wezterm-edit-helper: no more need to hack the env vars, thanks to direnv.vim 2024-05-29 20:51:30 +02:00
4607390b2d
nvim: add direnv.vim 2024-05-29 19:46:03 +02:00
8a8176ba2c
onward 2024-05-27 19:42:59 +02:00
d70cf31829
broot goodness 2024-05-27 19:41:56 +02:00
92cf0fe62a
nvim: remap zz to top instead of center 2024-05-27 19:41:53 +02:00
f1e44b26ee
nvim: use smart-open as file finder 2024-05-27 19:41:52 +02:00
57a007be9d
wezterm: hyperlink rust error codes 2024-05-27 19:31:41 +02:00
b9779d4df4
Fresh take on using wezterm without tmux for remote dev 2024-05-26 22:25:30 +02:00
64cb98db3c
wezterm: colors 2024-05-25 14:46:01 +02:00
6b83e85aa2
fish: add broot for jumping directory 2024-05-24 16:15:55 +02:00
af200b99ed
neovim: <esc> should exit telescope immediately 2024-05-23 22:53:22 +02:00
b520597a52
neovim: onward 2024-05-23 22:10:11 +02:00
3ab98646c7
helix: dark mode 2024-05-23 22:09:52 +02:00
1268021390
fish: colors 2024-05-23 22:09:31 +02:00
a143f808c7
nvim: dashboard prettification 2024-05-14 19:57:55 +02:00
19f00ce552
nvim: hide telescope previews by default 2024-05-14 15:48:18 +02:00
84c03de0d4
Initial work on light/dark auto modes 2024-05-13 09:35:32 +02:00
0066554957
nvim: colors 2024-05-13 09:31:43 +02:00
cd62574246
bat: use ansi mode while waiting for next release w/auto light/dark theme 2024-05-13 09:31:12 +02:00
8f4d7bb9a7
nvim: telescope fancification 2024-05-12 11:25:35 +02:00
67e454b615
fish: fixup 2024-05-12 11:25:11 +02:00
58837c4f50
jj: set immutable heads 2024-05-12 11:24:22 +02:00
20846ca2ac
nvim: use buildifier and starpls for bazel files 2024-05-10 22:33:44 +02:00
67c72e3dd7
nvim: noice tweaks for increased Calm™️ 2024-05-09 17:18:20 +02:00
fff2203e4b
nvim: use modes.nvim for mode-specific cursor colors. fancier codeium highlights 2024-05-09 13:13:52 +02:00
1a7711e2a8
nvim: instant timeoutlen for general snappiness 2024-05-09 11:47:16 +02:00
1b3d001385
nvim: cleanup and adjust 2024-05-09 11:16:52 +02:00
e10e8993ea
git: unicode fixings 2024-05-09 11:16:28 +02:00
94791633d6
nvim: give codeium a whirl 2024-04-10 17:50:33 +02:00
c2d0cbe641
nvim: bring over key bind from helix 2024-04-10 17:44:41 +02:00
291ea5c46a
atuin: session filter for up key 2024-04-10 17:43:53 +02:00
1fd76dd0f3
helix: styling 2024-04-10 17:36:44 +02:00
f3aa483628
git: fancy log alias ll formatting 2024-04-10 17:36:06 +02:00
1b9788a000
switch back to nvim for now 2024-04-10 17:35:43 +02:00
36a8248ef3
tmux: revert back to window-switching for simplicity and speed 2024-04-10 17:35:03 +02:00
bce5c26f58
git: fancy log 2024-04-06 23:43:14 +02:00
478d0e33d0
git: clean up config 2024-04-06 12:03:43 +02:00
7ad9868c20
tmux: gnome-style app-shortcuts for switching panes 2024-04-05 20:30:39 +02:00
0afb5698dd
git: clean up .gitconfig 2024-04-04 23:10:46 +02:00
eefe6eb9a1
git: autoselect first -sk ssh key from agent for signing 2024-04-04 22:55:35 +02:00
6bc7f9e742
git: use ssh commit signing 2024-04-04 21:48:45 +02:00
348a87f049 bat: linux-grey default text 2024-04-01 23:37:35 +02:00
c522ff99b2 nvim: colors 2024-04-01 23:36:59 +02:00
558c7936b1 tmux: ensure env vars are set in helpers 2024-04-01 23:36:31 +02:00
870ff77a1e fish: fancy colors for C-g 2024-04-01 15:41:02 +02:00
9c7fa60c20 bat: add catpuccin color theme 2024-04-01 13:08:03 +02:00
6e27ee2b5f tmux: M-e invokes edit-helper, repeat to replace with edit-history 2024-04-01 13:07:30 +02:00
182abc1ad0 Add complete edit history using fre 2024-04-01 11:04:47 +02:00
6bc5bcee50 helix: border around popus 2024-03-31 21:22:01 +02:00
9ff59044ef helix: enable copilot w/helix-gpt 2024-03-31 21:21:40 +02:00
2682af3b05 give helix a proper whirl as a daily driver 2024-03-31 20:12:05 +02:00
fba5c2942d fish: use history prefix search 2024-03-31 20:11:06 +02:00
ee598e5fe8 git: add copr (check out PR) alias 2024-03-30 13:56:44 +01:00
4d6f9e2887 nvim: halfwitted attempt at colorscheme 2024-03-30 09:39:25 +01:00
4ec068ddad fish: add otel env vars 2024-03-30 09:37:04 +01:00
dba48cb52f nvim: move incline to bottom right. add some styling 2024-03-29 10:24:47 +01:00
8b1ee883d8 nvim: replace statusline within incline 2024-03-27 23:19:10 +01:00
7c10a8bbb0 remove deprecated zsh config 2024-03-26 20:28:48 +01:00
b17febf0fe fish: add nix env vars 2024-03-26 20:28:34 +01:00
5cc5e1ff8e fish: a bit fancier starship prompt 2024-03-26 01:15:18 +01:00
fab020b373 fish: add semantic prompt (OSC 133) support 2024-03-25 23:31:46 +01:00
6a52cd262c Add fish config 2024-03-25 22:57:14 +01:00
57ad37b67e nvim: rust-analyzer config 2024-03-25 19:30:23 +01:00
71f2b5356a nvim: update 2024-03-25 19:29:41 +01:00
b135975253 zsh: add secondary, unfiltered, prefix search 2024-03-25 19:29:27 +01:00
54ad214a5b gitui: catpuccin mocca theme 2024-03-25 19:28:23 +01:00
982b6b968c tmux-edit-helper: pass on nix-set environment vars to neovim 2024-03-25 17:26:02 +01:00
819686b44f zsh: use session filtering for prefix history search 2024-03-24 15:10:07 +01:00
1bde039e24 env: otel defaults 2024-03-24 15:07:49 +01:00
6c16434457 nvim: update 2024-03-23 16:37:47 +01:00
a2660c38c0 tmux: use OSC 133 to jump to previous/next prompt in history 2024-03-23 16:37:37 +01:00
12ce3d85d1 xdg-open: fix unbound variable error 2024-03-19 17:42:33 +01:00
d977d0bdac nvim: shorted delay for mini.indentscope 2024-03-18 17:53:00 +01:00
74a33e44ea nvim: colors 2024-03-18 17:53:00 +01:00
6318a796a8 opener: run after graphical-session 2024-03-16 09:51:42 +01:00
55afa4948e nvim: upgrade 2024-03-15 14:48:52 +01:00
6fe0266439 zsh: Replace p10k with oh-my-posh 2024-03-15 14:48:52 +01:00
7ecb63d1a0 ssh: bind localhost instead of ipv4 2024-03-14 09:55:39 +01:00
c87db0023b git: enable compression 2024-03-12 17:22:10 +01:00
5433ee64f7 nvim: enable inlay hints by default 2024-03-12 17:22:10 +01:00
40afbee248 nvim: add extrax 2024-03-12 17:22:10 +01:00
e176c27955 Set up opener. Support multiple hosts.
Enable with `systemctl --user enable --now opener@myhost`
2024-03-12 16:07:01 +01:00
fe11201cdb wezterm: new config 2024-03-11 13:00:38 +01:00
68c0b21cd2 nvim: disable lazy autoupdate 2024-03-11 09:18:43 +01:00
c17e7aba3d shell fixings 2024-03-10 00:16:29 +01:00
54417b92f7 nvim: disable bufferline 2024-03-09 18:34:31 +01:00
09e2c2e0fd zsh: use p10k for prompt with transient prompt 2024-03-09 18:34:05 +01:00
0b405b354a test-term: alignment 2024-03-08 19:53:49 +01:00
a93d3578a3 nvim: color scheme tweaks 2024-03-08 19:53:49 +01:00
2fb69d78a9 tmux: nvim edit helper selects first pane in first window 2024-03-08 19:53:49 +01:00
5f2a658772 tmux: pane border and nav 2024-03-08 19:53:49 +01:00
7411069e35 zsh: fresh prompt 2024-03-08 19:53:49 +01:00
2f27ec5095 Remove deprecated fontconfig 2024-03-07 19:48:37 +01:00
49a43e46c6 ssh: disable compression 2024-03-07 19:48:37 +01:00
fa08caa326 wezterm: explicitly request tty in ssh 2024-03-07 19:48:37 +01:00
6516c5306f wezterm: use iosevka shelman font 2024-03-07 19:48:37 +01:00
aac1be1b75 nvim: onward 2024-03-03 22:20:57 +01:00
736ba022a5 atuin: tweaks 2024-03-03 22:20:36 +01:00
10180be4fe nvim: add rust extras 2024-02-29 23:29:39 +01:00
1481603e9b autin: config goodness 2024-02-28 12:24:17 +01:00
e191b29748 zsh: bind C-p to atuin prefix search 2024-02-28 12:23:35 +01:00
6e7f8fc004 atuin: enter_accept nothxplz 2024-02-28 11:53:46 +01:00
c0e875a4eb add pst script for internal pastebin 2024-02-17 12:49:21 +01:00
64d50a238b zsh: Give atuin a whirl 2024-02-14 21:39:43 +01:00
2c6762d8e6 nvim: add comment string for CUE files 2024-02-12 15:25:27 +01:00
994ee848f6 nvim: osc7 goodness 2024-02-08 10:23:55 +01:00
09b2992cce nvim: updated yamlls schemas for k8s + friends 2024-02-08 10:23:41 +01:00
affaebbc13 k9s: add <Shift-k> ktoolbox plugin 2024-01-25 11:25:37 +01:00
92c475e20f k9s: add <Shift-l> get all pod logs plugin 2024-01-25 11:17:56 +01:00
f88aa21285 nvim: use cue fmt for cue files 2024-01-10 22:12:00 +01:00
4f0c383f9f nvim: emoji cmp 2024-01-02 23:33:20 +01:00
ed3b8eeae7 git: fancy git-st status script 2023-12-28 11:27:46 +01:00
7540f0540d zsh: abbr updates 2023-12-27 12:39:05 +01:00
e73da671ab zsh: set GOPROXY 2023-12-27 12:38:40 +01:00
045541c729 buildkitd: use unprivileged containerd 2023-12-27 12:38:18 +01:00
635841761e nvim: add templ filetype 2023-12-27 12:37:56 +01:00
3c12e2f746 git: add git-st script 2023-12-27 00:43:23 +01:00
c2023b81ac git: add gerrit-switch alias to select a change interactively 2023-12-26 21:36:25 +01:00
29d9faa20b git: add gerrit-clone, new aliases 2023-12-26 21:18:49 +01:00
4878f466b4 nerdctl + buildkit config 2023-11-19 13:50:41 +01:00
8cd16682e6 nvim: lazyvim update 2023-11-02 20:04:59 +01:00
fe48f382c2 nvim: telescope layout 2023-11-02 20:04:31 +01:00
2f0cc73f68 wezterm: default font size 2023-10-29 09:54:24 +01:00
02a8033fed nvim: lazy update 2023-10-29 09:48:36 +01:00
9cb610b2f9 Add contour config 2023-10-23 10:49:29 +02:00
3374a5247c nvim: proto and terraform autoformat 2023-10-04 22:22:31 +02:00
9ef30664bb nvim: lazy update 2023-10-04 21:50:07 +02:00
0cbf0441c0 zsh: muted prompt 2023-10-04 21:50:07 +02:00
326f502d38 nvim: enable conform + prettier 2023-10-04 21:50:07 +02:00
ea69d13bcf wezterm: line height 2023-10-03 15:18:46 +02:00
74b12bcfa5 wezterm: secondary 2023-10-03 15:18:46 +02:00
256d0c34e4 nvim: lazyvim update 2023-10-02 21:51:56 +02:00
b4c284f01e nvim: fix mini.comment keymap preference 2023-10-02 21:51:48 +02:00
d42d684ed8 nvim: adjust for indent-blankline v3 2023-10-02 21:39:32 +02:00
33cb2e30f0 nvim: config 2023-09-28 11:13:02 +02:00
0221c3ec00 tmux-edit-helper: open file directly on first launch 2023-09-21 11:23:53 +02:00
5020699941 nvim: document uncomment 2023-09-21 10:55:05 +02:00
45df7e4dfd nvim: comment keybindings 2023-09-21 10:51:59 +02:00
1b29efc1eb gitui: config file format change 2023-09-20 12:25:28 +02:00
4e111c7a40 nvim: onward with colors! 2023-09-20 12:25:15 +02:00
206b5ee006 nvim: pretty indent colors 2023-09-18 13:53:33 +02:00
251539979e nvim: yaml schema goodness 2023-09-18 00:45:46 +02:00
3923b20519 neovim: config refresh with lazyvim 2023-09-17 23:36:17 +02:00
30a2f2074a ssh: no need for tty always 2023-09-17 23:33:27 +02:00
8fe4c4fb27 zsh: exa -> eza 2023-09-07 13:30:15 +02:00
52b3249152 zsh: pulumi completion 2023-09-07 13:30:15 +02:00
ab03a59ae5 wezterm: tmux goodness 2023-09-01 11:14:42 +02:00
f40a7cc234 ssh: remove deprecated pkcs11 config 2023-08-25 10:12:37 +02:00
8071e98e1d tmux: don't start nvim on startup 2023-07-30 21:18:58 +02:00
91833eb18c nvim: add binding for lsp find implementations 2023-07-28 09:51:04 +02:00
bdac2d3612 nvim: add lsp_dynamic_workspace_symbols binding 2023-07-15 16:52:55 +02:00
136f6f7de3 zsh: rec abbrev 2023-07-15 11:09:51 +02:00
3b5cca3513 git: use --stat for show command 2023-07-15 11:09:38 +02:00
0a369346e7 zsh: task completion 2023-07-12 09:20:07 +02:00
36f21baf1d paru: prompt to remove make deps on install 2023-07-11 15:49:54 +02:00
64e7b1bad6 zsh: truncate branch name in vcs_info prompt 2023-07-02 21:28:30 +02:00
1ba2eef66b zsh: automatic jj abbreviations 2023-07-02 20:57:46 +02:00
f8d1cf1a57 zsh: add zsh-abbr 2023-07-02 16:40:18 +02:00
8050aa5304 zsh: git branchless completion 2023-07-02 14:24:15 +02:00
471ee13bf5 zsh/tmux: use OSC 7 to signal pwd. fixes M-e for tmux-edit-helper 2023-07-02 12:35:15 +02:00
ccf0d176c5 tmux: status style 2023-07-02 12:30:22 +02:00
dc6dc5b13a git: delta fancification 2023-07-01 17:32:37 +02:00
fe5d005c2b git: use --word-diff. minimize delta 2023-07-01 16:46:13 +02:00
d25cbf6ea4 zsh: fix for narrow cursor 2023-07-01 15:46:00 +02:00
e594c4177d wezterm: hide window decorations 2023-07-01 15:44:07 +02:00
9c38ebd3ee zsh: just use zsh for prompt, deprecating starship 2023-07-01 15:13:16 +02:00
1a2a5a9132 zsh: disable highlighting pasted test in reverse 2023-07-01 10:14:36 +02:00
3691a3aee1 zsh: disable fzf-tab that was driving me nuts 2023-07-01 10:13:34 +02:00
65defa2a96 tmux: use new terminal-features instead of terminal-override 2023-07-01 10:12:09 +02:00
b307c4549c starship: minimize prompt 2023-07-01 10:12:09 +02:00
17afeb4b6a wezterm: a bit thicker cursor 2023-07-01 10:11:24 +02:00
f08ac53219 wezterm: fonts 2023-06-25 21:18:53 +02:00
e7fce6aa85 term-test layout 2023-06-25 21:18:19 +02:00
4e734c68cb zsh: add nix completions 2023-06-25 16:28:31 +02:00
51f0692128 zsh: set NIX_REMOTE env var 2023-06-25 16:26:35 +02:00
01b973ad69 ssh: do not send locale vars 2023-06-25 13:36:12 +02:00
7428ba0dd0 zsh: nix vs locales 2023-06-25 13:35:46 +02:00
7ef81bb2ea starship: proper weights 2023-06-25 13:35:46 +02:00
8e9e6ef30e Add test-term script 2023-06-25 12:41:12 +02:00
489159f23b wezterm: font goodness 2023-06-25 12:41:12 +02:00
9d0eefb5dc zsh: remove unused tekton completion 2023-06-24 14:18:05 +02:00
c355831103 zsh: configure nix 2023-06-24 14:17:06 +02:00
cbc86ca7fc zsh: completion cache 2023-06-24 14:15:28 +02:00
a3d1ac98e2 jj: use scm-diff-editor from git-branchless 2023-06-24 14:15:06 +02:00
50c229fd5b zsh: add cargo bin to PATH 2023-06-21 14:07:22 +02:00
dbdc1b99da ssh: mkdir for the ssh-agent 2023-06-14 11:31:51 +02:00
61e5bb9aaf wezterm: appearance 2023-06-14 11:31:18 +02:00
6d12bce85f wezterm: give webgpu a chance 2023-06-14 09:48:19 +02:00
5c5c22a422 git/jj: change default email 2023-06-14 09:47:49 +02:00
7821afe73f ssh: use same agent path everywhere so tmux stays sane 2023-06-14 09:46:47 +02:00
2c730982ed ssh fixings 2023-06-13 22:57:38 +02:00
8f81473740 Fix up the tmux helpers for jj 2023-06-08 21:02:52 +02:00
91a3eaed94 Add jujtusu config 2023-06-08 09:51:36 +02:00
85b4158cf6 zsh: better completion for jj 2023-06-06 16:31:19 +02:00
4120076cb0 ssh fixings 2023-06-06 16:31:19 +02:00
e969503d7a zsh: set WORDCHARS for better delimiters 2023-06-06 16:20:27 +02:00
571c350379 ssh fixings 2023-06-06 13:02:41 +02:00
ebcced2c12 ssh: config to get defaults right 2023-06-06 13:01:04 +02:00
b4db1c4887 ssh: reorder config to get defaults right 2023-06-06 12:49:39 +02:00
fff394bf5e zsh: add jujutsu completion 2023-06-06 12:22:42 +02:00
3ae7467ed5 zsh: colorful kubectl using grc 2023-06-06 12:22:42 +02:00
a941385823 ssh fixings 2023-06-06 12:18:49 +02:00
d9039fa3f6 zsh: hello -sk ssh keys 2023-06-06 10:38:58 +02:00
742b149306 zshrc: enable kubecolor 2023-06-04 10:57:41 +02:00
4eee6eabfd zsh: emoji fun 2023-06-03 13:06:08 +02:00
4b264db471 zsh: zsh-tab goodness 2023-06-03 12:44:31 +02:00
a2d6c90dcb add paru config 2023-06-03 11:46:30 +02:00
a687516aed nvim: theme fixery 2023-06-03 11:14:09 +02:00
980107874e zsh: fzf tab goodness and better syntax highlighting 2023-06-03 11:14:09 +02:00
b1a7aec7b7 wezterm: no webgpu 2023-06-02 12:43:15 +02:00
4dcc64952f wezterm: resize fix 2023-06-02 10:05:10 +02:00
2e54a9eef2 zsh: use btm instead of top 2023-06-02 10:04:45 +02:00
783f94ecf3 git: branchless goodies 2023-05-26 14:13:02 +02:00
264fa64323 zsh: paging goodness 2023-05-26 14:12:44 +02:00
a4e102f944 git: nice tag alias "t" 2023-05-19 21:12:51 +02:00
9d6880a733 nvim: cmp tweaks 2023-05-09 22:20:20 +02:00
712769d7cd nvim: no clipboard sync 2023-05-09 22:20:20 +02:00
faaaf6cf84 nvim: telescope oldfiles all dirs by default 2023-05-09 22:20:20 +02:00
2df6c93955 wezterm: cleaning up the typography 2023-05-08 00:15:11 +02:00
7826d193f6 nvim: put hostname in lualine 2023-05-07 10:43:13 +02:00
3343310800 nvim: disable lazy auto check for updates 2023-05-07 10:42:53 +02:00
474a89b198 nvim: nvim and tmux cwd fix 2023-05-03 10:39:06 +02:00
8df9e883a1 nvim: uncomment comment textobject 2023-05-03 10:33:36 +02:00
e80c94955d zsh: use en_DK locale 2023-05-03 10:22:07 +02:00
58e973e0f1 nvim: fix tmux key bindings 2023-05-03 10:21:44 +02:00
bbca481fc4 zsh: locale kludge 2023-04-29 15:23:12 +02:00
c4439324db ssh: send locale env vars 2023-04-29 15:18:46 +02:00
1a1acba0e7 Return of the tmux 2023-04-29 11:33:39 +02:00
6dfd7d5f8e zsh: clean up completion 2023-04-27 16:05:24 +02:00
e9e059660c edit-helper: do not spawn nvim 2023-04-27 16:05:24 +02:00
037dc7029a wezterm: stop using muxer since it was too slow 2023-04-27 15:58:03 +02:00
acaac62602 disable sapling prompt for now 2023-04-27 15:40:04 +02:00
6e6afdbe56 wezterm: user webgpu renderer 2023-04-17 12:58:06 +02:00
11886d2ce8 wezterm: remove window decorations and padding 2023-04-17 12:58:06 +02:00
ad881d3228 untrack lazys lockfile 2023-04-10 21:22:42 +02:00
1b05f7e138 remove GOPROXY 2023-04-10 21:07:59 +02:00
8aa51d08ee remove unused binaries 2023-04-10 21:07:19 +02:00
3fc07fbbe5 wezterm-edit-helper: hide escape code output 2023-04-10 21:06:24 +02:00
259776e898 nvim: lazy update 2023-03-28 11:10:33 +02:00
03994d4f04 starship: sl prompt 2023-03-28 11:10:33 +02:00
49f92613ce sapling: dark mode 2023-03-28 11:10:33 +02:00
d701d27fd4 wezterm: paste from clipboard 2023-03-28 11:09:31 +02:00
2df09ac4fb neovim: theme juggling 2023-03-25 17:14:10 +01:00
5637a9e614 wezterm update 2023-03-24 09:19:10 +01:00
c8f8a268a6 prompt: no git 2023-03-17 11:31:49 +01:00
09f3cb6b3f ssh: private config 2023-03-17 11:27:56 +01:00
4a13cbcd13 nvim: add shelman-theme 2023-03-12 21:56:50 +01:00
add4e0a218 zsh: rg shelman theme 2023-03-12 21:56:21 +01:00
ffb96e6e39 wezterm fixings 2023-03-12 19:44:30 +01:00
f63379c151 nvim: lazy update 2023-03-09 18:12:33 +01:00
b0eae7695f wezterm: use shelman-theme 2023-03-09 18:12:33 +01:00
e64f06da3d wezterm: mousewheel scroll 2023-03-09 18:11:07 +01:00
21e885309c non-default nvim socket for wezterm-edit-helper 2023-03-08 23:27:35 +01:00
89accda030 wezterm: permatabs on demand 2023-03-08 22:59:58 +01:00
0f1e2c9baf wezterm: multi-workspace goodness 2023-03-08 20:58:53 +01:00
fe3b0111f2 wezterm: add launcher shortcut 2023-03-08 13:00:00 +01:00
de0266996c nvim: dark modes 2023-03-08 12:58:56 +01:00
f6fe8df934 nvim: add stylua 2023-03-08 12:58:56 +01:00
592b8e4b09 nvim: C-/ works out of tmux 2023-03-08 12:58:56 +01:00
3c37004e9d nvim: clean up cmp config 2023-03-08 12:58:56 +01:00
41b8393e6a wezterm: disable tab bar 2023-03-07 23:04:13 +01:00
a04e268db9 replace tmux-edit-helper with equivalent wezterm script 2023-03-07 22:56:45 +01:00
7a66f62635 nvim: darkness 2023-03-07 22:43:36 +01:00
d4605f5a55 wezterm: use multiplexer 2023-03-07 16:53:50 +01:00
dcf02aff92 ssh: remove dbus socket forwarding 2023-03-07 16:52:20 +01:00
b6796b8861 wezterm magic 2023-03-07 10:42:16 +01:00
491d064414 nvim: colorscheme 2023-03-03 11:33:16 +01:00
198903664a nvim: config 2023-03-03 11:29:57 +01:00
75ea947fa8 onward 2023-03-03 09:28:56 +01:00
131 changed files with 5101 additions and 3081 deletions

View file

@ -1,77 +0,0 @@
window:
decorations: none
startup_mode: Maximized
font:
normal:
family: Iosevka Term SS09
style: Regular
bold:
family: Iosevka Term SS09
style: Semibold
italic:
family: Iosevka Term Curly Slab
style: Light Italic
bold_italic:
family: Iosevka SS15
style: Extralight Italic
size: 10
offset:
x: 0
y: 3
glyph_offset:
x: 0
y: 2
cursor:
# Values for `style`:
# - ▇ Block
# - _ Underline
# - | Beam
style: Block
vi_mode_style: Beam
unfocused_hollow: true
thickness: 0.15
mouse:
hide_when_typing: true
# url:
# launcher:
# program: /home/dln/bin/url-copy
colors:
primary:
background: '#fcfcfc'
foreground: '#000000'
normal:
black: '#212121'
red: '#b7141e'
green: '#457b23'
yellow: '#f5971d'
blue: '#134eb2'
magenta: '#550087'
cyan: '#0e707c'
white: '#eeeeee'
bright:
black: '#424242'
red: '#e83a3f'
green: '#7aba39'
yellow: '#fee92e'
blue: '#53a4f3'
magenta: '#a94dbb'
cyan: '#26bad1'
white: '#d8d8d8'
key_bindings:
- { key: V, mods: Alt, action: Paste }
- { key: C, mods: Alt, action: Copy }
- { key: V, mods: Shift|Alt, action: Paste }
- { key: C, mods: Shift|Alt, action: Copy }
- { key: Return, mods: Alt, action: ToggleFullscreen }

View file

@ -1,3 +0,0 @@
--italic-text=always
--plain
--theme=ansi

View file

@ -1 +0,0 @@
--enable-features=OzonePlatform --ozone-platform=wayland

View file

@ -1,14 +0,0 @@
version: 2
root-markers:
- .git/
tools:
clang-format: &clang-format
format-command: 'clang-format -style="{BasedOnStyle: Google, IndentWidth: 2, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}"'
format-stdin: true
languages:
proto:
- <<: *clang-format

View file

@ -1 +0,0 @@
DFT_BACKGROUND=light

View file

@ -1 +0,0 @@
DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/podman/podman.sock

View file

@ -1 +0,0 @@
GOPROXY=https://athens.aarn.shelman.io

View file

@ -1,2 +0,0 @@
MOZ_ENABLE_WAYLAND=1
MOZ_DISABLE_RDD_SANDBOX=1

View file

@ -1,35 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Noto Color Emoji</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Color Emoji</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Color Emoji</family>
</prefer>
</alias>
<!--
<dir>~/.fonts</dir>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintmedium</const>
</edit>
</match>
-->
</fontconfig>

View file

@ -1,23 +0,0 @@
(
selected_tab: Reset,
command_fg: Rgb(2, 119, 189),
selection_bg: Rgb(225, 245, 254),
selection_fg: Reset,
cmdbar_extra_lines_bg: Rgb(2, 136, 209),
cmdbar_bg: Reset,
disabled_fg: Rgb(109, 76, 65),
diff_line_add: Rgb(56, 142, 60),
diff_line_delete: Rgb(230, 74, 25),
diff_file_added: Rgb(56, 142, 60),
diff_file_removed: Rgb(230, 74, 25),
diff_file_moved: Rgb(156, 39, 176),
diff_file_modified: Rgb(255, 111, 0),
commit_hash: Magenta,
commit_time: Rgb(0, 131, 143),
commit_author: Green,
danger_fg: Red,
push_gauge_bg: Blue,
push_gauge_fg: Reset,
tag_fg: LightMagenta,
branch_fg: LightBlue
)

View file

@ -1,100 +0,0 @@
# K9s Gruvbox Light Skin Contributed by [@indiebrain](https://github.com/indiebrain)
foreground: &foreground default
background: &background default
current_line: &current_line "#ebdbb2"
selection: &selection "#3c3735"
comment: &comment "#bdad93"
cyan: &cyan "#78ad79"
green: &green "#989719"
orange: &orange "#d79920"
magenta: &magenta "#b16185"
blue: &blue "#448488"
red: &red "#cc231c"
k9s:
body:
fgColor: *foreground
bgColor: *background
logoColor: *blue
prompt:
fgColor: *foreground
bgColor: *background
suggestColor: *orange
info:
fgColor: *magenta
sectionColor: *foreground
help:
fgColor: *foreground
bgColor: *background
keyColor: *magenta
numKeyColor: *blue
sectionColor: *green
dialog:
fgColor: *foreground
bgColor: *background
buttonFgColor: *foreground
buttonBgColor: *magenta
buttonFocusFgColor: white
buttonFocusBgColor: *cyan
labelFgColor: *orange
fieldFgColor: *foreground
frame:
border:
fgColor: *selection
focusColor: *current_line
menu:
fgColor: *foreground
keyColor: *magenta
numKeyColor: *magenta
crumbs:
fgColor: *foreground
bgColor: *comment
activeColor: *blue
status:
newColor: *cyan
modifyColor: *blue
addColor: *green
errorColor: *red
highlightColor: *orange
killColor: *comment
completedColor: *comment
title:
fgColor: *foreground
bgColor: *background
highlightColor: *orange
counterColor: *blue
filterColor: *magenta
views:
charts:
bgColor: background
defaultDialColors:
- *blue
- *red
defaultChartColors:
- *blue
- *red
table:
fgColor: *foreground
bgColor: *background
cursorFgColor: *foreground
cursorBgColor: *current_line
header:
fgColor: *foreground
bgColor: *background
sorterColor: *selection
xray:
fgColor: *foreground
bgColor: *background
cursorColor: *current_line
graphicColor: *blue
showIcons: false
yaml:
keyColor: *magenta
colonColor: *blue
valueColor: *foreground
logs:
fgColor: *foreground
bgColor: *background
indicator:
fgColor: *foreground
bgColor: *background

View file

@ -1,12 +0,0 @@
let g:netrw_dirhistmax =10
let g:netrw_dirhistcnt =4
let g:netrw_dirhist_4='/home/dln/src/github.com/tocaboca/Toca-Days/Infrastructure/Helm'
let g:netrw_dirhist_3='/home/dln/src/github.com/tocaboca/Toca-Days/Infrastructure/Helm/days'
let g:netrw_dirhist_2='/home/dln/src/github.com/tocaboca/toca-days-prod/blessings'
let g:netrw_dirhist_1='/home/dln/src/github.com/tocaboca/toca-infrastructure/flux/k8s/infra/tenants/toca-studio/clusters/studio'
let g:netrw_dirhist_0='/home/dln/src/github.com/tocaboca/toca-infrastructure/linkerd/gateway'
let g:netrw_dirhist_9='/home/dln/src/github.com/tocaboca/toca-infrastructure/cluster/terraform'
let g:netrw_dirhist_8='/home/dln/src/github.com/shelmangroup/tf-infra/lab001/vms/modules/fcos_vault_agent'
let g:netrw_dirhist_7='/tmp/squid/etc'
let g:netrw_dirhist_6='/tmp/squid'
let g:netrw_dirhist_5='/tmp/squid/etc'

View file

@ -1 +0,0 @@
require("config.lazy")

View file

@ -1,58 +0,0 @@
{
"Comment.nvim": { "branch": "master", "commit": "418d3117dab2f54c4340ea73e0070dd78fc81753" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "23c51b2a3c00f6abc4e922dbd7c3b9aca6992063" },
"cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
"cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" },
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp-tmux": { "branch": "main", "commit": "984772716f66d8ee88535a6bf3f94c4b4e1301f5" },
"colorbuddy.vim": { "branch": "master", "commit": "cdb5b0654d3cafe61d2a845e15b2b4b0e78e752a" },
"copilot-cmp": { "branch": "master", "commit": "b732a58ac8b7287b981cd9f0d9c0f61e5e9d5760" },
"copilot.lua": { "branch": "master", "commit": "137df557486f91627b8e4708a47088f36950f12c" },
"gitsigns.nvim": { "branch": "main", "commit": "4bd5d7702c17643ff40c035b6b936757b99743c7" },
"go.nvim": { "branch": "master", "commit": "4977d3165d6ee8a06781f7b3443484fe7e91c9a3" },
"hlargs.nvim": { "branch": "main", "commit": "88b925d699fb39633cdda02c24f0b3ba5d0e6964" },
"inc-rename.nvim": { "branch": "main", "commit": "21c23c379342a731a0c90f226601ec0434627b26" },
"indent-blankline.nvim": { "branch": "master", "commit": "8299fe7703dfff4b1752aeed271c3b95281a952d" },
"lazy.nvim": { "branch": "main", "commit": "6a18404b7d1c05f0d1f35f7b78bd5c282dff7a89" },
"lsp_lines.nvim": { "branch": "main", "commit": "ec98b45c8280e5ef8c84028d4f38aa447276c002" },
"lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
"lualine.nvim": { "branch": "master", "commit": "0050b308552e45f7128f399886c86afefc3eb988" },
"lush.nvim": { "branch": "main", "commit": "b1e8eb1da3fee95ef31515a73c9eff9bf251088d" },
"marks.nvim": { "branch": "master", "commit": "c3b18b97912720a6586fb537c5c0dfc9e06a68f1" },
"neogen": { "branch": "main", "commit": "465af9d6c6fb7f360175991dcc23fc10917e3a06" },
"noice.nvim": { "branch": "main", "commit": "d8a1f3056ad713b5d471048f8d029264828e22c0" },
"nui.nvim": { "branch": "main", "commit": "d147222a1300901656f3ebd5b95f91732785a329" },
"null-ls.nvim": { "branch": "main", "commit": "9d811bb6ed44cf766f4bda8a47fd65fdfbdcaa7d" },
"nvim-cmp": { "branch": "main", "commit": "aae0c3e4e778ca4be6fabc52e388cbd5b844b7a5" },
"nvim-dap": { "branch": "master", "commit": "401f5f22b2d7f9bdbb9294d0235136091458816a" },
"nvim-dap-go": { "branch": "main", "commit": "b4ded7de579b4e2a85c203388233b54bf1028816" },
"nvim-dap-ui": { "branch": "master", "commit": "110193102b4840be8bda6eb2358367026145ae3a" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "7f7f2af549e72a0b7bddc3b4f827beb027ea8ce3" },
"nvim-lsp-ts-utils": { "branch": "main", "commit": "0a6a16ef292c9b61eac6dad00d52666c7f84b0e7" },
"nvim-lspconfig": { "branch": "master", "commit": "9b8f5260f3e793e2dcb2899e0a5b944667a95cb2" },
"nvim-navic": { "branch": "master", "commit": "7e9d2b2b601149fecdccd11b516acb721e571fe6" },
"nvim-osc52": { "branch": "main", "commit": "27da4724a887dabed3768b41fa51c785cb62ef26" },
"nvim-treesitter": { "branch": "master", "commit": "f475b24c81d64d64ab213a73882b7c4f3bbbf26a" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "fcd764507f723903af5507e141ea593e855b504a" },
"nvim-ts-autotag": { "branch": "main", "commit": "fdefe46c6807441460f11f11a167a2baf8e4534b" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "a0f89563ba36b3bacd62cf967b46beb4c2c29e52" },
"nvim-web-devicons": { "branch": "master", "commit": "bb6d4fd1e010300510172b173ab5205d37af084f" },
"packer.nvim": { "branch": "master", "commit": "1d0cf98a561f7fd654c970c49f917d74fafe1530" },
"playground": { "branch": "master", "commit": "c481c660fa903a0e295902b1765ecfbd6e76a556" },
"plenary.nvim": { "branch": "master", "commit": "9a0d3bf7b832818c042aaf30f692b081ddd58bd9" },
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
"refactoring.nvim": { "branch": "master", "commit": "57c32c6b7a211e5a3a5e4ddc4ad2033daff5cf9a" },
"stylua-nvim": { "branch": "main", "commit": "ce59a353f02938cba3e0285e662fcd3901cd270f" },
"telescope-dap.nvim": { "branch": "master", "commit": "313d2ea12ae59a1ca51b62bf01fc941a983d9c9c" },
"telescope-fzy-native.nvim": { "branch": "master", "commit": "282f069504515eec762ab6d6c89903377252bf5b" },
"telescope-github.nvim": { "branch": "master", "commit": "ee95c509901c3357679e9f2f9eaac3561c811736" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "62ea5e58c7bbe191297b983a9e7e89420f581369" },
"telescope.nvim": { "branch": "master", "commit": "203bf5609137600d73e8ed82703d6b0e320a5f36" },
"trouble.nvim": { "branch": "main", "commit": "556ef3089709a6e253df1e500381fec5eb48e48a" },
"vim-cue": { "branch": "master", "commit": "bd1a62303d096aa24fe4160a475645087f8770b3" },
"vim-illuminate": { "branch": "master", "commit": "49062ab1dd8fec91833a69f0a1344223dd59d643" },
"yanky.nvim": { "branch": "main", "commit": "100150704104db1930519eb2a05e5aee6d00f553" },
"zenbones.nvim": { "branch": "main", "commit": "910b8c240c6aaf5263db038db81c538602c766c3" }
}

View file

@ -1,33 +0,0 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath })
vim.fn.system({ "git", "-C", lazypath, "checkout", "tags/stable" }) -- last stable release
end
vim.opt.runtimepath:prepend(lazypath)
-- require("lazy").setup("plugins")
require("lazy").setup({
import = "plugins",
defaults = { lazy = true },
checker = { enabled = true },
performance = {
cache = {
enabled = true,
},
rtp = {
disabled_plugins = {
"gzip",
"matchit",
"matchparen",
"netrwPlugin",
"rplugin",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
debug = false,
})

View file

@ -1,72 +0,0 @@
vim.cmd([[set undofile]])
vim.cmd([[set completeopt-=preview]])
vim.cmd([[set viewoptions-=options]])
vim.g.mapleader = ","
vim.o.hidden = true
vim.o.mouse = "a"
vim.o.splitbelow = true
vim.o.splitright = true
vim.o.ttimeout = true
vim.o.ttimeoutlen = 50
vim.o.updatetime = 100
vim.o.autochdir = false
vim.o.backupdir = "/home/dln/.local/share/nvim/backup/"
vim.o.backup = true
vim.g.netrw_dirhistmax = 0
vim.o.clipboard = "unnamedplus"
vim.g.do_filetype_lua = 1
vim.o.spell = false
vim.o.spelllang = "en_us"
vim.opt.winbar = nil
--- Indent
vim.o.autoindent = true
vim.o.breakindent = true
vim.o.expandtab = true
vim.o.smartindent = true
vim.o.joinspaces = false
vim.o.listchars = "extends:,precedes:,nbsp:·,tab:→ ,trail:·"
vim.wo.foldlevel = 99
vim.wo.linebreak = true
vim.wo.list = true
vim.o.shiftwidth = 2
vim.o.tabstop = 2
vim.o.softtabstop = 2
--- Search
vim.cmd("set path+=**")
vim.cmd("set wildignore+=/var/*,*.so,*.swp,*.zip,*.tar,*.pyc")
vim.o.ignorecase = true
vim.o.smartcase = true
vim.o.wildmode = "longest:full,full"
if vim.fn.executable("rg") then
vim.o.grepprg = "rg --vimgrep --no-heading --smart-case"
end
--- Completion
vim.cmd("set shortmess+=c")
vim.o.completeopt = "menuone,noinsert,noselect"
--- Appearance
vim.o.background = "light"
vim.o.scrolloff = 7
vim.o.showmode = false
vim.o.sidescrolloff = 5
vim.o.termguicolors = true
vim.wo.cursorline = true
vim.wo.number = true
vim.wo.signcolumn = "yes"
vim.o.laststatus = 3
vim.o.cmdheight = 1
-- vim.o.statusline = "═"
-- vim.o.title = true
-- vim.o.titlestring = "%F%m %r %y"
vim.o.fillchars = "stl: ,stlnc: ,eob:🮙"
-- vim.wo.foldmethod = "expr"
-- vim.wo.foldexpr = "nvim_treesitter#foldexpr()"
vim.g.netrw_dirhistmax = 0
--- Key mappings
vim.keymap.set("n", "<C-l>", ':let @/=""<CR>') -- clear search
vim.keymap.set("n", ",L", ":luafile %<CR>") -- Reload lua file

View file

@ -1,83 +0,0 @@
local M = {
"hrsh7th/nvim-cmp",
dependencies = {
"andersevenrud/cmp-tmux",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-emoji",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"hrsh7th/cmp-nvim-lsp-signature-help",
"onsails/lspkind-nvim",
},
event = "InsertEnter",
}
function M.config()
local cmp = require("cmp")
local has_words_before = function()
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
vim.o.completeopt = "menuone,noselect"
cmp.setup({
completion = {
completeopt = "menu,menuone,noinsert",
},
formatting = {
format = require("lspkind").cmp_format(),
},
window = {
completion = cmp.config.window.bordered({
winhighlight = "Normal:PMenu,FloatBorder:PMenuBorder,CursorLine:PMenuSel,Search:None",
}),
documentation = cmp.config.window.bordered({
winhighlight = "Normal:PMenu,FloatBorder:PMenu,CursorLine:PMenuSel,Search:None",
}),
},
mapping = {
["<Up>"] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "c" }),
["<Down>"] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "c" }),
["<C-d>"] = cmp.mapping.scroll_docs(-2),
["<C-u>"] = cmp.mapping.scroll_docs(2),
["<C-e>"] = cmp.mapping({
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
}),
-- ["<CR>"] = cmp.mapping(cmp.mapping.confirm({ select = false }), { "i", "c" }),
-- ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
["<CR>"] = cmp.mapping(cmp.mapping.confirm({ select = true })),
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), {}),
},
-- experimental = {
-- ghost_text = {
-- hl_group = "LspCodeLens",
-- },
-- },
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "nvim_lsp_signature_help" },
{ name = "buffer" },
{ name = "copilot" },
{
name = "tmux",
priority = 2,
option = {
all_panes = true,
trigger_characters = {},
},
},
{ name = "emoji" },
}),
})
end
return M

View file

@ -1,54 +0,0 @@
local M = {
"zbirenbaum/copilot.lua",
event = { "VeryLazy" },
dependencies = {
{
"zbirenbaum/copilot-cmp",
config = function()
require("copilot_cmp").setup()
end,
},
},
}
function M.config()
require("copilot").setup({
panel = {
enabled = true,
auto_refresh = false,
keymap = {
jump_prev = "[[",
jump_next = "]]",
accept = "<CR>",
refresh = "gr",
open = "<M-CR>",
},
},
suggestion = {
enabled = true,
auto_trigger = true,
debounce = 75,
keymap = {
accept = "<C-j>",
next = "<M-]>",
prev = "<M-[>",
dismiss = "<C-]>",
},
},
filetypes = {
yaml = false,
markdown = false,
help = false,
gitcommit = false,
gitrebase = false,
hgcommit = false,
svn = false,
cvs = false,
["."] = false,
},
copilot_node_command = "node", -- Node version must be < 18
server_opts_overrides = {},
})
end
return M

View file

@ -1,39 +0,0 @@
local M = {
"mfussenegger/nvim-dap",
dependencies = {
{ "rcarriga/nvim-dap-ui" },
{
"theHamsta/nvim-dap-virtual-text",
config = function()
require("nvim-dap-virtual-text").setup({
commented = true,
})
end,
},
{
"leoluz/nvim-dap-go",
config = function()
require("dap-go").setup()
end,
keys = {
{ "<leader>y", ":lua require('dap-go').debug_test()<CR>" },
},
},
},
}
function M.init()
local silent = { silent = true }
vim.fn.sign_define("DapStopped", { text = "", texthl = "", linehl = "debugPC", numhl = "" })
vim.fn.sign_define("DapBreakpoint", { text = "🧘", texthl = "", linehl = "debugPC", numhl = "" })
vim.keymap.set("n", "DD", ":lua require 'dap'.toggle_breakpoint()<CR>", silent)
vim.keymap.set("n", "Dc", ":lua require 'dap'.continue()<CR>", silent)
vim.keymap.set("n", "Di", ":lua require 'dap'.step_into()<CR>", silent)
vim.keymap.set("n", "Do", ":lua require 'dap'.step_over()<CR>", silent)
vim.keymap.set("n", "DO", ":lua require 'dap'.step_out()<CR>", silent)
vim.keymap.set("n", "Dr", ":lua require 'dap'.repl.toggle({height = 5})<CR>", silent)
vim.keymap.set("n", "Dh", ":lua require 'dap.ui.widgets'.hover()<CR>", silent)
end
return M

View file

@ -1,38 +0,0 @@
local M = {
"lewis6991/gitsigns.nvim",
}
function M.config()
require("gitsigns").setup({
numhl = true,
signs = {
add = { hl = "GitSignsAdd", text = "", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
change = {
hl = "GitSignsChange",
text = "",
numhl = "GitSignsChangeNr",
linehl = "GitSignsChangeLn",
},
delete = {
hl = "GitSignsDelete",
text = "",
numhl = "GitSignsDeleteNr",
linehl = "GitSignsDeleteLn",
},
topdelete = {
hl = "GitSignsDelete",
text = "",
numhl = "GitSignsDeleteNr",
linehl = "GitSignsDeleteLn",
},
changedelete = {
hl = "GitSignsChange",
text = "~",
numhl = "GitSignsChangeNr",
linehl = "GitSignsChangeLn",
},
},
})
end
return M

View file

@ -1,9 +0,0 @@
local M = {
"RRethy/vim-illuminate",
event = "BufReadPost",
config = function()
require("illuminate").configure({ delay = 200 })
end,
}
return M

View file

@ -1,44 +0,0 @@
local M = {
"lukas-reineke/indent-blankline.nvim",
event = "BufReadPre",
config = {
buftype_exclude = { "terminal", "nofile" },
filetype_exclude = {
"help",
"neogitstatus",
"NvimTree",
"neo-tree",
"Trouble",
},
char = "",
-- char = "┊",
char_highlight_list = { "Indent1", "Indent2", "Indent3", "Indent4", "Indent5", "Indent6" },
use_treesitter_scope = false,
show_trailing_blankline_indent = false,
show_current_context = true,
context_patterns = {
"class",
"return",
"function",
"method",
"^if",
"^while",
"jsx_element",
"^for",
"^object",
"^table",
"block",
"arguments",
"if_statement",
"else_clause",
"jsx_element",
"jsx_self_closing_element",
"try_statement",
"catch_clause",
"import_statement",
"operation_type",
},
},
}
return M

View file

@ -1,241 +0,0 @@
local M = {
"neovim/nvim-lspconfig",
event = "VeryLazy",
}
function M.config()
local lspconfig = require("lspconfig")
local capabilities = require("cmp_nvim_lsp").default_capabilities()
vim.keymap.set("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>")
vim.keymap.set("i", "<C-k>", "<Cmd>lua vim.lsp.buf.signature_help()<CR>")
vim.keymap.set("n", "1gd", "<Cmd>lua vim.lsp.buf.type_definition()<CR>")
vim.keymap.set("n", "gf", "<Cmd>lua vim.lsp.buf.format()<CR>")
vim.keymap.set("n", "[d", "<Cmd>lua vim.lsp.diagnostic.goto_prev()<CR>")
vim.keymap.set("n", "]d", "<Cmd>lua vim.lsp.diagnostic.goto_next()<CR>")
vim.keymap.set("n", "gwa", "<Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
vim.keymap.set("n", "gwr", "<Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
vim.keymap.set("n", "gwl", "<Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
vim.cmd([[autocmd BufWritePre * lua vim.lsp.buf.format({sync = true})]])
local border = {
{ "🭽", "FloatBorder" },
{ "", "FloatBorder" },
{ "🭾", "FloatBorder" },
{ "", "FloatBorder" },
{ "🭿", "FloatBorder" },
{ "", "FloatBorder" },
{ "🭼", "FloatBorder" },
{ "", "FloatBorder" },
}
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = border })
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = border })
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
update_in_insert = false,
virtual_text = false,
})
local signs = { Error = "🔥", Warn = "⚠️ ", Hint = "💡", Info = "💡" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end
local function on_attach(client, bufnr)
require("nvim-navic").attach(client, bufnr)
end
-- simple setups --
local servers = {
"bashls",
"bufls",
"dockerls",
"gopls",
"jsonls",
-- "sql",
"pyright",
"lua_ls",
"terraformls",
"yamlls",
}
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup({ on_attach = on_attach })
end
local efm_prettier = {
formatCommand = "prettier --stdin-filepath ${INPUT}",
formatStdin = true,
}
lspconfig.gopls.setup({
on_attach = on_attach,
settings = {
gopls = {
directoryFilters = {
"-bazel-bin",
"-bazel-out",
"-bazel-testlogs",
"-proto",
},
},
},
})
lspconfig.lua_ls.setup({
on_attach = function(client, bufnr)
on_attach(client, bufnr)
vim.cmd([[autocmd BufWritePre <buffer> lua require'stylua-nvim'.format_file()]])
end,
settings = {
Lua = {
completion = { kewordSnippet = "Disable" },
diagnostics = {
enable = true,
globals = { "renoise", "use", "vim" },
},
runtime = {
version = "LuaJIT",
path = { "?.lua", "?/init.lua", "?/?.lua" },
},
workspace = {
library = vim.api.nvim_get_runtime_file("", true),
maxPreload = 2000,
preloadFileSize = 1000,
checkThirdParty = false,
},
},
},
})
lspconfig.terraformls.setup({})
local yaml_is_k8s = function(bufnr)
local lines = vim.api.nvim_buf_get_lines(bufnr, 0, 50, false) -- Stop after the first 50 lines
for _, l in pairs(lines) do
if string.find(l, "apiVersion") ~= nil then
return true
end
end
return false
end
lspconfig.cssls.setup({
cmd = { "vscode-css-languageserver", "--stdio" },
capabilities = capabilities,
})
lspconfig.cssmodules_ls.setup({})
lspconfig.html.setup({
cmd = { "vscode-html-languageserver", "--stdio" },
filetypes = { "html" },
init_options = {
configurationSection = { "html", "css", "javascript" },
embeddedLanguages = {
css = true,
javascript = true,
},
},
settings = {},
})
lspconfig.yamlls.setup({
settings = {
yaml = {
format = { enable = true, singleQuote = true },
schemaStore = { enable = true, url = "https://json.schemastore.org" },
schemas = {
-- ["https://json.schemastore.org/github-workflow"] = "*.github/workflows/*",
["https://json.schemastore.org/kustomization.json"] = "kustomization.yaml",
-- ["https://json.schemastore.org/ansible-role-2.9.json"] = "*/tasks/*.y*ml",
kubernetes = {
"clusterrolebinding.yaml",
"clusterrole-contour.yaml",
"clusterrole.yaml",
"configmap.yaml",
"cronjob.yaml",
"daemonset.yaml",
"deployment-*.yaml",
"deployment.yaml",
"*-deployment.yaml",
"hpa.yaml",
"ingress.yaml",
"job.yaml",
"namespace.yaml",
"pvc.yaml",
"rbac.yaml",
"rolebinding.yaml",
"role.yaml",
"sa.yaml",
"secret.yaml",
"serviceaccounts.yaml",
"service-account.yaml",
"serviceaccount.yaml",
"service-*.yaml",
"service.yaml",
"*-service.yaml",
"statefulset.yaml",
},
},
validate = true,
},
},
})
require("lspconfig").tsserver.setup({
root_dir = vim.loop.cwd,
})
-- npm install -g typescript typescript-language-server
-- require("lspconfig").tsserver.setup({
-- on_attach = function(client, bufnr)
-- client.resolved_capabilities.document_formatting = false
-- on_attach(client)
-- local ts_utils = require("nvim-lsp-ts-utils")
-- ts_utils.setup({
-- debug = false,
-- disable_commands = false,
-- enable_import_on_completion = false,
-- import_all_timeout = 5000, -- ms
-- -- eslint
-- eslint_enable_code_actions = true,
-- eslint_enable_disable_comments = true,
-- eslint_bin = "eslint_d",
-- eslint_config_fallback = nil,
-- eslint_enable_diagnostics = true,
-- -- formatting
-- enable_formatting = true,
-- formatter = "prettier",
-- formatter_config_fallback = nil,
-- -- parentheses completion
-- complete_parens = false,
-- signature_help_in_parens = false,
-- -- update imports on file move
-- update_imports_on_move = true,
-- require_confirmation_on_move = true,
-- watch_dir = nil,
-- })
-- ts_utils.setup_client(client)
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<Leader>co", ":TSLspOrganize<CR>", { silent = true })
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "qq", ":TSLspFixCurrent<CR>", { silent = true })
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<Leader>cR", ":TSLspRenameFile<CR>", { silent = true })
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<Leader>ci", ":TSLspImportAll<CR>", { silent = true })
-- end,
-- })
--
end
return M

View file

@ -1,50 +0,0 @@
local M = {
"nvim-lualine/lualine.nvim",
dependencies = { "kyazdani42/nvim-web-devicons" },
event = "VeryLazy",
}
local function clock()
return os.date("%H:%M")
end
function M.config()
local lualine = require("lualine")
lualine.setup({
options = {
globalstatus = true,
theme = "onelight",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
},
sections = {
lualine_c = {
{
"filename",
path = 1,
file_status = true,
},
{
function()
local navic = require("nvim-navic")
local ret = navic.get_location()
return ret:len() > 2000 and "navic error" or ret
end,
cond = function()
if package.loaded["nvim-navic"] then
local navic = require("nvim-navic")
return navic.is_available()
end
end,
color = { fg = "#ff8f00" },
},
},
lualine_x = { "filetype" },
lualine_y = { "location" },
lualine_z = { clock },
},
})
end
return M

View file

@ -1,37 +0,0 @@
local M = {
"chentoast/marks.nvim",
event = "VeryLazy",
}
function M.config()
local marks = require("marks")
marks.setup({
default_mappings = true,
-- which builtin marks to show. default {}
-- builtin_marks = { ".", "<", ">", "^" },
cyclic = true,
force_write_shada = false,
-- marks, and bookmarks.
-- can be either a table with all/none of the keys, or a single number, in which case
-- the priority applies to all marks.
-- default 10.
-- sign_priority = { lower=10, upper=15, builtin=8, bookmark=20 },
--
-- disables mark tracking for specific filetypes. default {}
excluded_filetypes = {},
-- marks.nvim allows you to configure up to 10 bookmark groups, each with its own
-- sign/virttext. Bookmarks can be used to group together positions and quickly move
-- across multiple buffers. default sign is '!@#$%^&*()' (from 0 to 9), and
-- default virt_text is "".
bookmark_1 = {
sign = "",
virt_text = "",
},
})
end
return M

View file

@ -1,116 +0,0 @@
return {
"tjdevries/colorbuddy.vim",
"wbthomason/packer.nvim",
"jose-elias-alvarez/nvim-lsp-ts-utils",
"jjo/vim-cue",
"ckipp01/stylua-nvim",
{
"m-demare/hlargs.nvim",
event = "VeryLazy",
enabled = true,
config = {
excluded_argnames = {
usages = {
lua = { "self", "use" },
},
},
},
},
{
"folke/trouble.nvim",
cmd = { "TroubleToggle", "Trouble" },
config = {
auto_open = false,
use_diagnostic_signs = true,
},
keys = {
{ "<leader>xx", "<cmd>TroubleToggle<cr>" },
{ "<leader>xw", "<cmd>TroubleToggle workspace_diagnostics<cr>" },
{ "<leader>xd", "<cmd>TroubleToggle document_diagnostics<cr>" },
{ "<leader>xl", "<cmd>TroubleToggle loclist<cr>" },
{ "<leader>xq", "<cmd>TroubleToggle quickfix<cr>" },
{ "gR", "<cmd>TroubleToggle lsp_references<cr>" },
},
},
{
"danymat/neogen",
keys = {
{
"<leader>cc",
function()
require("neogen").generate({})
end,
desc = "Neogen Comment",
},
},
opts = { snippet_engine = "luasnip" },
},
{
"smjonas/inc-rename.nvim",
cmd = "IncRename",
config = true,
keys = {
{ "<Leader>rn", ":IncRename " },
},
},
{
"SmiteshP/nvim-navic",
config = function()
vim.g.navic_silence = true
require("nvim-navic").setup({ separator = " ", highlight = true, depth_limit = 5 })
end,
},
{
"numToStr/Comment.nvim",
keys = {
{ "<C-_>", "<Plug>(comment_toggle_linewise_current)" },
{ "<C-_>", "<Plug>(comment_toggle_linewise_visual)", mode = "v" },
},
dependencies = {
"JoosepAlviste/nvim-ts-context-commentstring",
},
config = function()
require("Comment").setup({
pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(),
})
end,
},
{
"ray-x/go.nvim",
config = function()
require("go").setup({
comment_placeholder = "",
icons = { breakpoint = "🧘", currentpos = "🏃" },
dap_debug_gui = false,
})
vim.cmd("autocmd FileType go nmap <Leader>c :lua require('go.comment').gen()<cr>")
vim.cmd("autocmd BufWritePre *.go :silent! lua require('go.format').gofmt()")
vim.cmd("autocmd BufWritePre (InsertLeave?) <buffer> lua vim.lsp.buf.formatting_sync(nil,500)")
end,
},
{
"onsails/lspkind-nvim",
config = function()
require("lspkind").init({})
end,
},
{
url = "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
config = function()
require("lsp_lines").setup()
vim.diagnostic.config({
virtual_text = false,
})
end,
},
}

View file

@ -1,19 +0,0 @@
local M = {
"folke/noice.nvim",
event = "VeryLazy",
dependencies = {
"MunifTanjim/nui.nvim",
},
}
function M.config()
require("noice").setup({
presets = {
inc_rename = true,
long_message_to_split = true,
lsp_doc_border = true,
},
})
end
return M

View file

@ -1,39 +0,0 @@
local M = {
"jose-elias-alvarez/null-ls.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
}
function M.config()
local null_ls = require("null-ls")
local builtins = require("null-ls.builtins")
null_ls.setup({
sources = {
builtins.formatting.black,
builtins.formatting.buf,
builtins.formatting.cue_fmt,
builtins.formatting.shfmt,
builtins.formatting.sqlfluff,
builtins.formatting.buildifier,
builtins.completion.spell,
builtins.code_actions.eslint_d,
builtins.diagnostics.buf.with({
args = { "lint", "--disable-symlinks", "--path", "$FILENAME" },
cwd = function()
local file_dir = vim.fn.expand("%:p:h") .. ";"
local buf_yaml = vim.fn.findfile("buf.yaml", file_dir)
if buf_yaml then
return vim.fn.fnamemodify(buf_yaml, ":h")
end
end,
}),
builtins.diagnostics.buildifier,
builtins.diagnostics.cue_fmt,
builtins.diagnostics.golangci_lint,
builtins.diagnostics.eslint_d,
},
debug = true,
})
end
return M

View file

@ -1,18 +0,0 @@
local M = {
"ojroques/nvim-osc52",
}
function M.config()
local osc52 = require("osc52")
osc52.setup({
max_length = 0, -- Maximum length of selection (0 for no limit)
silent = false, -- Disable message on successful copy
trim = false, -- Trim text before copy
})
vim.keymap.set("n", "<leader>c", require("osc52").copy_operator, { expr = true })
vim.keymap.set("n", "<leader>cc", "<leader>c_", { remap = true })
vim.keymap.set("x", "<leader>c", require("osc52").copy_visual)
end
return M

View file

@ -1,110 +0,0 @@
local function project_files()
require("telescope.builtin").find_files({
cwd = require("lspconfig.util").root_pattern(".git")(vim.fn.expand("%:p")),
})
end
local M = {
"nvim-telescope/telescope.nvim",
lazy = false,
dependencies = {
"nvim-lua/popup.nvim",
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope-fzy-native.nvim",
"nvim-telescope/telescope-github.nvim",
"nvim-telescope/telescope-dap.nvim",
"nvim-telescope/telescope-ui-select.nvim",
},
}
function M.config()
local telescope = require("telescope")
local actions = require("telescope.actions")
local previewers = require("telescope.previewers")
vim.keymap.set("n", "<leader>b", '<cmd>lua require("telescope.builtin").buffers()<CR>')
vim.keymap.set("n", "<leader>f", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
vim.keymap.set("n", "<space>", '<cmd>lua require("telescope.builtin").oldfiles({cwd_only=true})<CR>')
vim.keymap.set("n", "<leader><space>", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
vim.keymap.set("n", "<leader>d", '<cmd>lua require("telescope.builtin").diagnostics()<CR>')
vim.keymap.set("n", "<leader>e", '<cmd>lua require("telescope.builtin").git_files()<CR>')
vim.keymap.set("n", "<leader>g", '<cmd>lua require("telescope.builtin").git_status()<CR>')
vim.keymap.set("n", "<leader>a", '<cmd>lua require("telescope.builtin").lsp_code_actions()<CR>')
vim.keymap.set("n", "<leader>m", '<cmd>lua require("telescope.builtin").marks()<CR>')
vim.keymap.set("n", "<leader>s", '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>')
vim.keymap.set("n", "<leader>t", '<cmd>lua require("telescope.builtin").treesitter()<CR>')
vim.keymap.set("n", "<leader>/", '<cmd>lua require("telescope.builtin").live_grep()<CR>')
vim.keymap.set("n", "<leader>.", '<cmd>lua require("telescope.builtin").file_browser()<CR>')
vim.keymap.set("n", "<leader>p", '<cmd>lua require("telescope.builtin").registers()<CR>')
vim.keymap.set("n", "ga", "<cmd>lua vim.lsp.buf.code_action()<CR>")
vim.keymap.set("n", "gr", '<cmd>lua require("telescope.builtin").lsp_references()<CR>')
vim.keymap.set("n", "gd", '<cmd>lua require("telescope.builtin").lsp_definitions()<CR>')
vim.keymap.set("n", "g/", '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>')
vim.keymap.set(
"n",
"g?",
'<cmd>lua require("telescope.builtin").lsp_workspace_symbols({query=(vim.bo.filetype == "go" and "\'" or "")})<CR>'
)
vim.keymap.set("n", "ge", '<cmd>lua require("telescope.builtin").lsp_document_diagnostics()<CR>')
vim.keymap.set("n", "Db", '<cmd>lua require("telescope").extensions.dap.list_breakpoints()<CR>')
vim.keymap.set("n", "Dcc", '<cmd>lua require("telescope").extensions.dap.commands()<CR>')
vim.keymap.set("n", "Df", '<cmd>lua require("telescope").extensions.dap.frames()<CR>')
vim.keymap.set("n", "Dv", '<cmd>lua require("telescope").extensions.dap.variables()<CR>')
-- Setup
telescope.setup({
defaults = {
layout_strategy = "flex",
-- layout_defaults = {flip_columns = 160},
layout_config = {
preview_cutoff = 10,
prompt_position = "bottom",
mirror = true,
},
mappings = {
i = {
["<CR>"] = actions.select_default + actions.center,
["<esc>"] = actions.close,
["<tab>"] = actions.add_selection,
},
},
color_devicons = true,
file_previewer = previewers.vim_buffer_cat.new,
grep_previewer = previewers.vim_buffer_vimgrep.new,
qflist_previewer = previewers.vim_buffer_qflist.new,
},
extensions = {
["ui-select"] = {
require("telescope.themes").get_dropdown({
-- even more opts
}),
},
},
})
local layout_strategies = require("telescope.pickers.layout_strategies")
local config = require("telescope.config")
layout_strategies.flex = function(self, max_columns, max_lines)
local layout_config = self.layout_config or {}
local flip_columns = layout_config.flip_columns or 160 -- Here's why.
local flip_lines = layout_config.flip_lines or 20
if max_columns < flip_columns and max_lines > flip_lines then
self.layout_config = (config.values.layout_defaults or {})["vertical"]
return layout_strategies.vertical(self, max_columns, max_lines)
else
self.layout_config = (config.values.layout_defaults or {})["horizontal"]
return layout_strategies.horizontal(self, max_columns, max_lines)
end
end
-- Extensions
telescope.load_extension("dap")
telescope.load_extension("fzy_native")
telescope.load_extension("gh")
telescope.load_extension("ui-select")
end
return M

View file

@ -1,124 +0,0 @@
return {
{ "nvim-treesitter/playground", cmd = "TSPlaygroundToggle" },
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
event = "BufReadPost",
dependencies = {
"nvim-treesitter/nvim-treesitter-textobjects",
"windwp/nvim-ts-autotag",
},
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"bash",
"c",
"cmake",
"cpp",
"css",
"diff",
"dockerfile",
"gdscript",
"git_rebase",
"gitcommit",
"gitignore",
"go",
"gomod",
"graphql",
"help",
"hcl",
"html",
"http",
"java",
"javascript",
"jsdoc",
"json",
"jsonc",
"kotlin",
"latex",
"lua",
"make",
"markdown",
"markdown_inline",
"meson",
"ninja",
"php",
"proto",
"python",
"query",
"regex",
"rego",
"rust",
"scss",
"sql",
"svelte",
"teal",
"toml",
"tsx",
"typescript",
"vhs",
"vim",
"vue",
"wgsl",
"yaml",
"zig",
},
highlight = {
enable = true,
use_languagetree = true,
},
indent = {
enable = false,
},
context_commentstring = { enable = true, enable_autocmd = false },
playground = {
enable = true,
disable = {},
updatetime = 25,
persist_queries = false,
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "ss",
node_incremental = "sq",
scope_incremental = "sd",
node_decremental = "sa",
},
},
query_linter = {
enable = true,
use_virtual_text = true,
lint_events = { "BufWrite", "CursorHold" },
},
textobjects = {
move = {
enable = true,
goto_next_start = {
["]]"] = "@function.outer",
["]m"] = "@class.outer",
},
goto_next_end = {
["]["] = "@function.outer",
["]M"] = "@class.outer",
},
goto_previous_start = {
["[["] = "@function.outer",
["[m"] = "@class.outer",
},
goto_previous_end = {
["[]"] = "@function.outer",
["[M"] = "@class.outer",
},
},
},
--- nvim-ts-autotag ---
autotag = {
enable = true,
filetypes = { "html", "javascriptreact", "xml" },
},
})
end,
},
}

View file

@ -1,132 +0,0 @@
local M = {
"mcchrish/zenbones.nvim",
-- event = "VeryLazy",
dependencies = {
{ "rktjmp/lush.nvim" },
},
}
function M.config()
vim.g.zenbones = {
style = "light",
lightness = "bright",
colorize_diagnostic_underline_text = true,
transparent_background = true,
}
local lush = require("lush")
local base = require("zenbones")
-- Create some specs
---@diagnostic disable = undefined-global
local specs = lush.parse(function(injected_functions)
-- See https://github.com/rktjmp/lush.nvim/issues/109
local sym = injected_functions.sym
return {
CursorLine({ bg = "#f5f5f0" }),
Error({ fg = "#d9534f" }),
CursorLineNr({ fg = "#BCAAA4", bg = "#f5f5f0" }),
MsgArea({ fg = "#A1887F", bg = "#f1f1f1" }),
String({ fg = "#5E8122", gui = "italic" }),
Number({ fg = "#32936F" }),
sym("@field")({ fg = "#6F62A7" }),
sym("@string")({ fg = "#5B7B3D", gui = "italic" }),
sym("@type.definition")({ fg = "#B6465F", gui = "bold" }),
sym("@function")({ fg = "#8C1831", gui = "bold" }),
sym("@method")(sym("@function")),
-- Comment({ fg = "#114499", gui = "bold,italic" }),
-- Comment({ fg = "#144EE1", gui = "bold,italic" }),
Comment({ fg = "#8F001D", gui = "bold,italic" }),
Todo({ fg = "#FF0000", gui = "bold,underline" }),
EndOfBuffer({ fg = "#CBCFE1" }),
CopilotSuggestion({ fg = "#0066cc", gui = "bold,italic" }),
LineNr({ fg = "#9FA8AC", gui = "bold,italic" }),
LineNrAbove({ fg = "#9F080C", gui = "bold,italic" }),
IndentBlanklineContextChar({ fg = "#699FB5", gui = "italic" }),
Indent1({ fg = "#DFDF9A", gui = "italic" }),
Indent2({ fg = "#BAE1FF", gui = "italic" }),
Indent3({ fg = "#BAFFC9", gui = "italic" }),
Indent4({ fg = "#FFB3BA", gui = "italic" }),
Indent5({ fg = "#FFDFBA", gui = "italic" }),
Indent6({ fg = "#F3E5F5", gui = "italic" }),
NormalFloat({ bg = "#FFF9C4" }),
FloatBorder({ fg = "#FFB74D", bg = "#FFF9C4" }),
TelescopeNormal({ bg = "#EFEBE9" }),
TelescopeBorder({ fg = "#A1887F", bg = "#EFEBE9" }),
TelescopeSelection({ fg = "#FFFFFF", bg = "#1976D2" }),
DiagnosticSignError({ fg = "#ff2200", bg = "#fff5ff", gui = "bold" }),
DiagnosticVirtualTextInfo({ fg = "#0033bb", bg = "#f7fcff", gui = "bold,italic" }),
DiagnosticVirtualTextWarn({ fg = "#bb2200", bg = "#fff9f3", gui = "bold,italic" }),
DiagnosticVirtualTextError({ fg = "#ff2200", bg = "#fff5f3", gui = "italic" }),
DiagnosticUnderlineError({ fg = "#ff0000", gui = "undercurl" }),
DiagnosticUnderlineWarn({ fg = "#ff7700", gui = "undercurl" }),
DiagnosticUnderlineInfo({ fg = "#3366cc", gui = "undercurl" }),
MarkSignHL({ fg = "#009688", bg = "#E0F7FA" }),
MarkSignNumHL({ fg = "#B2DFDB", bg = "#E0F7FA" }),
GitSignsAdd({ fg = "#81C784" }),
GitSignsAddNr({ fg = "#C8E6C9" }),
GitSignsDelete({ fg = "#E53935" }),
GitSignsDeleteNr({ fg = "#FFCDD2" }),
GitSignsChange({ fg = "#FFA726" }),
GitSignsChangeNr({ fg = "#FFE0B2" }),
Hlargs({ fg = "#2274A5" }),
IlluminatedWordText({ bg = "#FFEE99" }),
NotifyBackground({ bg = "#FFF8D6" }),
NavicIcons({ fg = "#cc0000" }),
NavicIconsFile({ fg = "#cc0000" }),
NavicIconsModule({ fg = "#cc0000" }),
NavicIconsNamespace({ fg = "#cc0000" }),
NavicIconsPackage({ fg = "#cc0000" }),
NavicIconsClass({ fg = "#cc0000" }),
NavicIconsMethod({ fg = "#cc0000" }),
NavicIconsProperty({ fg = "#cc0000" }),
NavicIconsField({ fg = "#cc0000" }),
NavicIconsConstructor({ fg = "#cc0000" }),
NavicIconsEnum({ fg = "#cc0000" }),
NavicIconsInterface({ fg = "#cc0000" }),
NavicIconsFunction({ fg = "#cc0000" }),
NavicIconsVariable({ fg = "#cc0000" }),
NavicIconsConstant({ fg = "#cc0000" }),
NavicIconsString({ fg = "#cc0000" }),
NavicIconsNumber({ fg = "#cc0000" }),
NavicIconsBoolean({ fg = "#cc0000" }),
NavicIconsArray({ fg = "#cc0000" }),
NavicIconsObject({ fg = "#cc0000" }),
NavicIconsKey({ fg = "#cc0000" }),
NavicIconsKeyword({ fg = "#cc0000" }),
NavicIconsNull({ fg = "#cc0000" }),
NavicIconsEnumMember({ fg = "#cc0000" }),
NavicIconsStruct({ fg = "#cc0000" }),
NavicIconsEvent({ fg = "#cc0000" }),
NavicIconsOperator({ fg = "#cc0000" }),
NavicIconsTypeParameter({ fg = "#cc0000" }),
NavicText({ fg = "#cc0000", gui = "italic" }),
-- LspCodeLens({ fg = "#00ff00", gui = "undercurl" }),
-- LspSignatureActiveParameter({ fg = "#ff0000", bg = "#ffffcc" }),
NoiceCmdlinePopup({ bg = "#E1F5FE" }),
NoiceMini({ bg = "#FFF9C4" }),
PMenu({ bg = "#F7F5F0" }),
PMenuBorder({ bg = "#F7F5F0", fg = "#886622" }),
PMenuSel({ fg = "#FFFFFF", bg = "#1976D2" }),
PMenuSbar({ bg = "#90CAF9" }),
PMenuThumb({ bg = "#64B5F6" }),
StatusLine({ base = base.VertSplit, fg = "#BCAAA4" }),
StatusLineNC({ base = base.VertSplit, fg = "#BCAAA4" }),
TreesitterContext({ bg = "#f0f0f0", fg = "#BCAAA4", gui = "bold,italic" }),
TreesitterContextLineNumber({ bg = "#f0f0f0", fg = "#979770", gui = "bold,italic" }),
}
end)
-- Apply specs using lush tool-chain
lush.apply(lush.compile(specs))
vim.cmd("colorscheme zenbones")
end
return M

View file

@ -1,10 +0,0 @@
--glob=!/.git/
--glob=!/.terraform/
--pretty
--colors=column:fg:100,181,246
--colors=line:fg:100,181,246
--colors=path:fg:26,35,126
--colors=path:style:bold
--colors=match:style:nobold
--colors=match:bg:255,235,59
--colors=match:fg:0,0,0

View file

@ -1,22 +0,0 @@
[ui]
username =Daniel Lundin <daniel@arity.se>
[alias]
sw = switch
switch = !sl sl -M -T ':\033[31m{node|short} \033[1;33m{bookmarks}{if(bookmarks, " ")}{remotenames} {if(github_pull_request_number, "\033[1;37;41m PR #{github_pull_request_number} ")}\033[0;3;32m {date|age} \033[35;1;3mby {author|user} - \033[0;34;3m{desc|firstline}\033[0m' | sed -E -e '/31m[0-9abcdef]{12}/!d' -e 's/.+ ://' | fzf-tmux -p 90%,50% -y 0 --ansi --color=light | sed "s/ .*//" | xargs -r -n1 sl go && sl log -r . -T status
l = ll
ll = log -G -T '\033[31m{node|short} \033[3;32m{date|age} \033[35;1;3mby {author|person}\n \033[0;34;3m{desc|firstline}\033[0m\n\n'
[pager]
pager = delta --hunk-header-style "line-number file" --line-numbers --max-line-distance 0.9 --syntax-theme GitHub --inspect-raw-lines=false
[color]
sl.public = color70 bold
sl.draft = color208 bold
sl.current = color99 bold
sl.diff = red bold
[committemplate]
emptymsg = ""

View file

@ -1,61 +0,0 @@
add_newline = false
format = """\
$hostname\
$directory\
$git_branch\
$git_commit\
$git_state\
$git_status\
${custom.sl_status}\
($character)\
"""
right_format = """\
"""
[custom.sl_status]
command = '''~/bin/starship-sl-status'''
when = true
style = "italic fg:#79AE6F"
format = '[(🌱 $output )]($style)'
[character]
success_symbol = "%"
error_symbol = "[%](bold red)"
[line_break]
disabled = true
[directory]
fish_style_pwd_dir_length = 1
truncation_length = 1
truncate_to_repo = false
style = "italic bold"
[git_branch]
format = "[$symbol$branch]($style)"
style = "fg:#559955"
symbol = " "
truncation_length = 16
truncation_symbol = ""
[git_commit]
format = "[ $hash$tag]($style) "
style = "fg:#559955"
[git_state]
style = ""
[git_status]
format = '([\[$all_status$ahead_behind\]]($style))'
style = "dimmed"
[hostname]
ssh_only = false
format = "[$hostname](bold italic):"
disabled = false
[kubernetes]
disabled = false
style = ""

View file

@ -1,9 +0,0 @@
[Unit]
Description=dbus proxy for desktop notifications
[Service]
ExecStart=/usr/bin/xdg-dbus-proxy "$DBUS_SESSION_BUS_ADDRESS" %t/bus-notification --filter --talk=org.freedesktop.Notifications
Restart=always
[Install]
WantedBy=default.target

View file

@ -1,10 +0,0 @@
[Unit]
Description=Run tmux server
[Service]
Restart=always
StartLimitIntervalSec=0
ExecStart=/usr/bin/tmux -D -u
[Install]
WantedBy=default.target

View file

@ -1,3 +0,0 @@
include "linux-with-two-alt-keys"
keycode 58 = Control

View file

@ -1,158 +0,0 @@
local wezterm = require("wezterm")
function font_with_fallback(name, params)
local names = { name, "Noto Color Emoji", "Iosevka Nerd Font Mono" }
return wezterm.font_with_fallback(names, params)
end
local themeShelmanDark = {
colors = {
foreground = "#ded9ce",
background = "#171a23",
cursor_bg = "#FB8C00",
cursor_border = "#FB8C00",
split = "#444444",
ansi = { "#000000", "#ff605a", "#b1e869", "#ead89c", "#5da9f6", "#e86aff", "#82fff6", "#ded9ce" },
brights = { "#313131", "#f58b7f", "#dcf88f", "#eee5b2", "#a5c7ff", "#ddaaff", "#b6fff9", "#fefffe" },
tab_bar = {
background = "#000000",
active_tab = { bg_color = "#171a23", fg_color = "#c0b070", intensity = "Normal" },
inactive_tab = { bg_color = "#000000", fg_color = "#c0c0c0", intensity = "Half" },
inactive_tab_hover = { bg_color = "#333333", fg_color = "#909090", italic = true },
},
},
tab_bar_style = {
active_tab_left = wezterm.format({
{ Background = { Color = "#171a23" } },
{ Foreground = { Color = "#000000" } },
{ Text = " " },
}),
active_tab_right = wezterm.format({
{ Background = { Color = "#171a23" } },
{ Foreground = { Color = "#000000" } },
{ Text = " " },
}),
inactive_tab_left = wezterm.format({
{ Background = { Color = "#000000" } },
{ Foreground = { Color = "#171a23" } },
{ Text = " " },
}),
inactive_tab_right = wezterm.format({
{ Background = { Color = "#000000" } },
{ Foreground = { Color = "#171a23" } },
{ Text = "" },
}),
inactive_tab_hover_left = wezterm.format({
{ Background = { Color = "#333333" } },
{ Foreground = { Color = "#ffffff" } },
{ Text = " " },
}),
inactive_tab_hover_right = wezterm.format({
{ Background = { Color = "#333333" } },
{ Foreground = { Color = "#ffffff" } },
{ Text = " " },
}),
},
}
local themeShelmanLight = {
colors = {
foreground = "#000000",
background = "#fcfcfc",
cursor_bg = "#EA526F",
cursor_fg = "#ffffff",
cursor_border = "#cc0000",
split = "#444444",
selection_bg = "#FFCA28",
ansi = { "#212121", "#b7141e", "#457b23", "#f5971d", "#134eb2", "#550087", "#0e707c", "#eeeeee" },
brights = { "#424242", "#e83a3f", "#7aba39", "#fee92e", "#53a4f3", "#a94dbb", "#26bad1", "#d8d8d8" },
},
}
return {
colors = themeShelmanLight.colors,
font = font_with_fallback("Iosevka Shelman SS09", { weight = "Regular" }),
font_rules = {
{
italic = false,
intensity = "Half",
font = font_with_fallback("Iosevka Shelman SS09", { weight = "Thin" }),
},
{
italic = true,
intensity = "Normal",
font = font_with_fallback("Iosevka Shelman Curly Slab", { weight = "Light", italic = true }),
},
{
italic = true,
intensity = "Bold",
font = font_with_fallback("Iosevka Shelman SS15", { weight = "ExtraLight", italic = true }),
},
{
intensity = "Bold",
font = font_with_fallback("Iosevka Shelman SS09", { weight = "DemiBold" }),
},
},
freetype_load_target = "Light",
freetype_render_target = "HorizontalLcd",
--freetype_load_flags = "NO_HINTING",
--custom_block_glyphs = false,
warn_about_missing_glyphs = false,
bold_brightens_ansi_colors = false,
allow_square_glyphs_to_overflow_width = "Always",
font_size = 10.5,
line_height = 1.0,
cell_width = 0.9,
initial_cols = 128,
initial_rows = 45,
use_resize_increments = false,
window_background_opacity = 0.93,
window_padding = {
left = "0",
right = "0",
top = "0",
bottom = "0",
},
window_decorations = "RESIZE",
window_frame = {
border_left_width = "2px",
border_right_width = "2px",
border_bottom_height = "2px",
border_top_height = "2px",
border_left_color = "#cccccc",
border_right_color = "#cccccc",
border_bottom_color = "#cccccc",
border_top_color = "#cccccc",
},
default_cursor_style = "SteadyBlock",
cursor_thickness = "3px",
cursor_blink_rate = 300,
enable_wayland = true,
enable_tab_bar = false,
tab_bar_at_bottom = true,
show_tab_index_in_tab_bar = true,
enable_scroll_bar = false,
scrollback_lines = 5000,
alternate_buffer_wheel_scroll_speed = 2,
check_for_updates = false,
status_update_interval = 100,
audible_bell = "Disabled",
term = "wezterm",
disable_default_key_bindings = true,
keys = {
{ key = "c", mods = "ALT|SHIFT", action = wezterm.action({ CopyTo = "ClipboardAndPrimarySelection" }) },
{ key = "v", mods = "ALT|SHIFT", action = "Paste" },
{ key = "0", mods = "CTRL", action = "ResetFontSize" },
{ key = "-", mods = "CTRL", action = "DecreaseFontSize" },
{ key = "=", mods = "CTRL", action = "IncreaseFontSize" },
{ key = "Enter", mods = "ALT", action = "ToggleFullScreen" },
},
}

2
.envrc Normal file
View file

@ -0,0 +1,2 @@
# shellcheck shell=bash
use flake

View file

@ -1,123 +0,0 @@
[core]
excludesfile = "~/.gitignore"
pager = delta --line-numbers --max-line-distance 0.9
compression = 0
looseCompression = 0
[user]
useConfigOnly = true
[column]
ui = auto
[push]
default = tracking
[branch "main"]
rebase = true
[branch "master"]
rebase = true
[alias]
b = branch -va
cl = clone --filter=blob:none
d = diff --stat -p -C
ds = diff --staged --stat -p -C
dt = difftool
patch = !git --no-pager diff --no-color
co = checkout
st = status -sb
pullr = pull --rebase
sl = branchless smartlog
sync = branchless sync
sw = branchless switch
gerrit-new = !git fetch origin main && git checkout --detach origin/main
gerrit-push = !git push origin HEAD:refs/for/main
gerrit-push-wip = !git push origin HEAD:refs/for/main%wip
gerrit-push-ready = !git push origin HEAD:refs/for/main%ready
gerrit-replace = !git commit --amend -a && git push origin HEAD:refs/for/main
gerrit-config = !git fetch origin refs/meta/config:refs/remotes/origin/meta/config && git checkout FETCH_HEAD
gerrit-config-push = !git push origin HEAD:refs/meta/config
gp = gerrit-push
gpw = gerrit-push-wip
gpr = gerrit-push-ready
ll = log --graph --date=relative --topo-order --pretty='format:%C(yellow)%h%C(yellow)%d %Cblue%ar %Cgreenby %an%Creset -- %s'
lla = log --graph --date=relative --topo-order --pretty='format:%Cgreen%h %Cblue%ar %Credby %an%Creset -- %s' --all
guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"
serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/
identity = "! git config user.name \"$(git config user.$1.name)\"; git config user.email \"$(git config user.$1.email)\"; git config user.signingkey \"$(git config user.$1.signingkey)\"; :"
[color]
ui = auto
branch = auto
diff = auto
status = auto
[apply]
whitespace = nowarn
[pack]
threads = 0
[blame]
date = relative
[delta]
syntax-theme = GitHub
hunk-header-style = line-number syntax
[hub]
protocol = git
[http]
cookiefile = /home/dln/.gitcookies
[interactive]
diffFilter = delta --color-only --features=interactive
[credential]
helper = store
[commit]
gpgsign = false
[user]
name = Daniel Lundin
email = daniel@arity.se
[init]
defaultBranch = main
; [url "git@github.com:"]
; insteadOf = https://github.com/
[lfs]
concurrenttransfers = 32
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[diff]
tool = difft
# external = difft
[difftool]
prompt = false
[difftool "difft"]
cmd = difft --display inline "$LOCAL" "$REMOTE"
[scalar]
repo = /tmp/k2/src
[maintenance]
repo = /tmp/k2/src
[fetch]
showForcedUpdates = true

15
.gitignore vendored
View file

@ -1,14 +1 @@
*~ /result
*.a
*.class
/.idea
*.iml
*.ipr
*.iwr
*.iws
*.la
*.o
*.pyc
*.so
*.swp

View file

@ -1,4 +0,0 @@
enable-ssh-support
default-cache-ttl 3600
max-cache-ttl 3600
extra-socket /run/user/1000/gnupg/S.gpg-agent.extra

View file

@ -1,2 +0,0 @@
#use-agent
keyid-format LONG

View file

@ -1,11 +0,0 @@
set meta-flag on
set convert-meta off
set output-meta on
set completion-ignore-case on
set visible-stats on
set show-all-if-ambiguous on
set completion-query-items 150
#"\C-p": history-search-backward
#"\C-n": history-search-forward

View file

@ -1,13 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Firefox (Arity)
GenericName=Web Browser
Comment=Browse the Web
Exec=firefox %u -P Arity --name firefox-arity
Icon=firefox
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=firefox-arity
Categories=Network;WebBrowser;
Keywords=web;browser;internet;

View file

@ -1,13 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Firefox (Work)
GenericName=Web Browser
Comment=Browse the Web
Exec=firefox %u -P Work --new-instance --name firefox-work
Icon=firefox
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=firefox-work
Categories=Network;WebBrowser;
Keywords=web;browser;internet;

View file

@ -1,11 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Client Chrome
StartupWMClass=Google-chrome-beta-client
Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-client --class=Google-chrome-beta-client
StartupNotify=true
Terminal=false
Icon=google-chrome-beta
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;

View file

@ -1,11 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Private Chrome
StartupWMClass=Google-chrome-beta-private
Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-private --class=Google-chrome-beta-private
StartupNotify=true
Terminal=false
Icon=google-chrome-beta
Type=Application
Categories=Netprivate;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;

View file

@ -1,11 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Work Chrome
StartupWMClass=Google-chrome-beta-work
Exec=/usr/bin/google-chrome-beta %U --user-data-dir=.config/Google-chrome-beta-work --class=Google-chrome-beta-work
StartupNotify=true
Terminal=false
Icon=google-chrome-beta
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;

View file

@ -1,9 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Google Meet
StartupWMClass=meet.google.com
Exec=/usr/bin/google-chrome-stable --profile-directory='Profile 1' --app=https://meet.google.com
Terminal=false
Icon=camera-video
Type=Application
Categories=Network;Office

View file

@ -1,9 +0,0 @@
[Desktop Entry]
Version=1.0
Name=plex
StartupWMClass=plex.aarn.shelman.io
Exec=/usr/bin/google-chrome-stable --profile-directory='Profile 2' --app=https://plex.home:32400/web/index.html
Terminal=false
Icon=google-chrome
Type=Application
Categories=Audio;

View file

@ -1,11 +0,0 @@
[Desktop Entry]
Type=Application
Name=Spotify
GenericName=Music Player
Icon=spotify-client
TryExec=spotify
Exec=spotify --force-device-scale-factor=2 %U
Terminal=false
MimeType=x-scheme-handler/spotify;
Categories=Audio;Music;Player;AudioVideo;
StartupWMClass=spotify

View file

@ -1,10 +0,0 @@
[Desktop Entry]
Name=wezterm-dln-dev-secondary
GenericName=wezterm-dln-dev-secondary
StartupWMClass=org.wezfurlong.wezterm
Type=Application
TryExec=/usr/bin/wezterm
Icon=org.wezfurlong.wezterm
Terminal=false
Categories=System;TerminalEmulator;
Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new-session", "-As1", "-t0"}' --config font_size=9 --config=window_background_opacity=0.4 start --class=wezterm-dln-dev-secondary

View file

@ -1,11 +0,0 @@
[Desktop Entry]
Name=wezterm-dln-dev
GenericName=wezterm-dln-dev
StartupWMClass=org.wezfurlong.wezterm
Type=Application
TryExec=/usr/bin/wezterm
Icon=org.wezfurlong.wezterm
Terminal=false
Categories=System;TerminalEmulator;
Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev", "--", "tmux", "-u", "new", "-As0"}' start --class=wezterm-dln-dev
#Exec=/usr/bin/wezterm --config 'default_prog={"ssh", "-q", "dln-dev"}' start --class=wezterm-dln-dev

View file

@ -1,10 +0,0 @@
[Desktop Entry]
Name=wezterm-local
GenericName=wezterm-local
StartupWMClass=wezterm-local
Type=Application
TryExec=/usr/bin/wezterm
Icon=org.wezfurlong.wezterm
Terminal=false
Categories=System;TerminalEmulator;
Exec=/usr/bin/wezterm start --class=wezterm-local

View file

@ -1,9 +0,0 @@
[Desktop Entry]
Version=1.0
Name=YouTube Music (provar)
StartupWMClass=music.youtube.com
Exec=/usr/bin/google-chrome-stable --user-data-dir=$HOME/.config/google-chrome --profile-directory='Profile 2' --app=https://music.youtube.com --class=music.youtube.com
Terminal=false
Icon=google-chrome
Type=Application
Categories=Audio;

View file

@ -1,31 +0,0 @@
ForwardAgent yes
ServerAliveInterval 15
ServerAliveCountMax 3
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 1200
Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
AddressFamily inet
RequestTty yes
PreferredAuthentications=publickey
Host gitlab.com
IdentityAgent /dev/null
PKCS11Provider /usr/lib/pkcs11/libtpm2_pkcs11.so
Host 10.1.100.16
Host dln-dev
Hostname 10.1.100.16
IdentityAgent ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh
ForwardAgent yes
ForwardX11 no
ExitOnForwardFailure yes
Compression yes
LocalForward 127.0.0.1:3000 127.0.0.1:3000
LocalForward 127.0.0.1:3011 127.0.0.1:3011
LocalForward 127.0.0.1:8000 127.0.0.1:8000
LocalForward 127.0.0.1:8080 127.0.0.1:8080
# RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.extra
RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh ${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh
# RemoteForward ${XDG_RUNTIME_DIR}/gnupg/S.scdaemon ${XDG_RUNTIME_DIR}/gnupg/S.scdaemon
RemoteForward ${XDG_RUNTIME_DIR}/bus-notification ${XDG_RUNTIME_DIR}/bus-notification

View file

@ -1,3 +0,0 @@
if [[ -S "$SSH_AUTH_SOCK" && ! -h "$SSH_AUTH_SOCK" ]]; then
ln -sf "$SSH_AUTH_SOCK" $HOME/.ssh/ssh_auth_sock;
fi

View file

@ -1,84 +0,0 @@
set -g prefix ^o
set -g base-index 1
set -g display-panes-time 3000
set -s escape-time 10
set -g status on
set -g status-interval 30
set -g focus-events on
set -g allow-passthrough on
setw -g alternate-screen on
setw -g aggressive-resize on
setw -g automatic-rename off
setw -g mode-keys vi
set-option -g mouse on
# clipboard
set -g set-clipboard on
bind-key ] paste-buffer -p
set -g update-environment "BUILDCOMMAND GOPACKAGESDRIVER XAUTHORITY DISPLAY WINDOWID SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION"
set -g default-command zsh
set -g history-limit 10000
set -g default-terminal "wezterm"
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # Underline color
# Key bindings
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
bind -n M-1 select-window -t nvim
bind -n M-2 select-window -t 2
bind -n M-3 select-window -t 3
bind -n M-4 select-window -t 4
bind -n M-5 select-window -t 5
bind -n M-6 select-window -t 6
bind -n M-7 select-window -t 7
bind -n M-8 select-window -t 8
bind -n M-9 select-window -t 9
bind -n M-0 select-window -t 10
bind -n M-m send-keys -t 9 q C-u "clear; tmux clear-history -t 9" C-m C-p C-p C-p C-m
bind C-o send-keys C-o
bind r source-file ~/.tmux.conf
bind -n C-Right next-window
bind -n C-Left previous-window
bind C-s set-option -g status
bind K confirm kill-server
bind C-k clear-history
bind -n C-l send-keys C-l \; clear-history
bind-key -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 1 scroll-up
bind-key -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 1 scroll-down
bind-key / copy-mode \; send-key ?
bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer
bind-key -n C-\\ copy-mode \; send -X search-backward " % "\; send -X search-again
bind -n M-g display-popup -S 'bg=#F1F8E9,fg=#689F38' -s 'bg=#F1F8E9' -h '90%' -w '90%' -b rounded -d '#{pane_current_path}' -E "gitui"
bind -n M-e display-popup -S 'bg=#E3F2FD,fg=#0288D1' -s 'bg=#E3F2FD' -h '40%' -w '90%' -y 0 -b rounded -d '#{pane_current_path}' -e FZF=fzf -E "~/bin/tmux-edit-helper"
bind -n M-m display-popup -S 'bg=#FFF8E1,fg=#FF6F00' -s 'bg=#FFF8E1' -h '90%' -w '90%' -b rounded -d '#{pane_current_path}' -E "~/bin/tmux-build-helper"
setw -g window-status-format ""
setw -g window-status-current-format ""
setw -g window-status-separator ""
set -g status-style "fg=#cc0000,dotted-underscore,italics"
set -g status-position top
set -g status-left-length 0
set -g status-right-length 0
set -g status-left '[#I] #{pane_current_path}'
set -g status-right '%F | %R'
set -g status off
set -g set-titles on
set -g set-titles-string "#H - #T"
new -s0 -n 1 nvim --listen $XDG_RUNTIME_DIR/nvim.sock
new-window -n 2
new-window -n 3
new-window -n 4
new-window -n 5
new-window -n 6
new-window -n 7
new-window -n 8
new-window -n 9
new-window -n 0
# vim:set ft=tmux:

2
.vault
View file

@ -1,2 +0,0 @@
#token_helper = "/home/dln/bin/vault-token-helper"

247
.zshrc
View file

@ -1,247 +0,0 @@
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
command git clone --depth=1 https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
print -P "%F{33} %F{34}Installation successful.%f%b" || \
print -P "%F{160} The clone has failed.%f%b"
fi
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
zi ice wait lucid
zi load zsh-users/zsh-completions
zi ice wait lucid
zi load zsh-users/zsh-syntax-highlighting
zi ice wait lucid
zi load zsh-users/zsh-history-substring-search
## History
HISTSIZE=50000
SAVEHIST=50000
HISTFILE=~/.zsh_history
setopt append_history
setopt extended_history
setopt hist_expire_dups_first
setopt hist_fcntl_lock
setopt hist_ignore_all_dups
setopt hist_ignore_space
setopt HIST_IGNORE_SPACE
setopt hist_lex_words
setopt hist_reduce_blanks
setopt hist_save_no_dups
setopt hist_subst_pattern
setopt hist_verify
setopt share_history
export HISTORY_IGNORE="(ls *|cd *|rm *|pwd|reboot|exit|e *|*AWS*|*SECRET*|*PASSWORD*|*TOKEN*|*API*|*KEY*|*PASS*|*SECRETS*|*SECRET_KEY*|*SECRET_TOKEN*|*SECRET_KEY_BASE*|*SECRET_TOKEN_BASE*)"
## zsh settings
setopt pipe_fail
setopt auto_pushd
setopt no_beep
setopt no_rm_star_silent
setopt extended_glob
setopt ksh_glob
setopt null_glob
## Autosuggest
# ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#D7CCC8,italic"
# ZSH_AUTOSUGGEST_USE_ASYNC=1
# ZSH_AUTOSUGGEST_STRATEGY=(history completion)
export PATH=$HOME/bin:$PATH
redraw-prompt() {
local precmd
for precmd in $precmd_functions; do
$precmd
done
zle reset-prompt
}
zle -N redraw-prompt
_jump() {
_dir=$(fre --sorted | fzf-tmux --no-sort -p 90%,40% -y 0)
[ -n "$_dir" ] && pushd $_dir >>/dev/null
zle && zle redraw-prompt
}
zle -N _jump
fre_chpwd() {
fre --add "$(pwd)"
}
typeset -gaU chpwd_functions
chpwd_functions+=fre_chpwd
_cwd_gitroot() {
_gitroot=$(git rev-parse --show-toplevel 2>/dev/null || sl root 2>/dev/null || pwd)
_dir=$((echo "$_gitroot" && fd -td . "$_gitroot") | fzf-tmux -p 90%,40% -y 0)
[ -n "$_dir" ] && cd $_dir
zle && zle redraw-prompt
}
zle -N _cwd_gitroot
## Keybindings
bindkey -e
bindkey '^[[A' history-beginning-search-backward
bindkey '^[[B' history-beginning-search-forward
bindkey '^P' history-beginning-search-backward
bindkey '^N' history-beginning-search-forward
bindkey '^g' _jump
bindkey '^_' _cwd_gitroot
## Gnupg / gpg / ssh / yubikey
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
## Pager
export LESS="--mouse --wheel-lines=1 -nRXF"
## Clipboard OSC 52
function clip { echo -en "\x1b]52;c;$(base64 -w0)\x07" }
## Aliases
alias c='cut -c-${COLUMNS}'
alias e='tmux-edit-helper'
alias dotgit='git --work-tree $HOME --git-dir $HOME/.dot_git'
alias l=bat
alias lw='bat --wrap=never'
alias ls=exa
alias tail='tail -n $LINES'
alias timestamp='TZ=Z date "+%Y%m%dT%H%M%SZ"'
alias tree='exa --tree'
alias v=vgrep
alias ve='env EDITOR= vgrep -s'
alias xc=clip
alias w="history -1 | sed -e 's/[0-9]* //' | xargs viddy -n1"
## ripgrep
export RIPGREP_CONFIG_PATH=${HOME}/.config/rg/rg.conf
# "auto paging"
rg() {
/usr/bin/rg -p "$@" | bat
}
fix_cursor() {
echo -ne '\e[5 q'
}
precmd_functions+=(fix_cursor)
## Prompt
eval "$(starship init zsh)"
## vim
export EDITOR=nvim
## fzf
export FZF_TMUX=1
export FZF_COMPLETION_TRIGGER=";"
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
. /usr/share/fzf/completion.zsh
. /usr/share/fzf/key-bindings.zsh
## direnv
eval "$(direnv hook zsh)"
## pyenv
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
export PATH="/home/dln/.pyenv/shims:${PATH}"
export PYENV_SHELL=zsh
# command pyenv rehash 2>/dev/null # this is slow
pyenv() {
local command
command="${1:-}"
if [ "$#" -gt 0 ]; then
shift
fi
case "$command" in
activate|deactivate|rehash|shell)
eval "$(pyenv "sh-$command" "$@")"
;;
*)
command pyenv "$command" "$@"
;;
esac
}
## eksctl
if [ ! -f "${fpath[1]}/_eksctl" ]; then
command -v eksctl >/dev/null 2>&1 && eksctl completion zsh > "${fpath[1]}/_eksctl"
fi
## Kubernetes
if [ ! -f "${fpath[1]}/_kubectl" ]; then
command -v kubectl >/dev/null 2>&1 && kubectl completion zsh > "${fpath[1]}/_kubectl"
fi
export PATH=$HOME/.krew/bin:$PATH
## bazel
if [ ! -f "${fpath[1]}/_bazel" ]; then
curl -sLo "${fpath[1]}/_bazel" https://raw.githubusercontent.com/bazelbuild/bazel/master/scripts/zsh_completion/_bazel
fi
## sapling
if [ ! -f "${fpath[1]}/_sl" ]; then
# See: https://github.com/facebook/sapling/pull/369
curl -sLo "${fpath[1]}/_sl" https://github.com/facebook/sapling/raw/d6157db1ebc0868cf70805756e32541bd681bac2/eden/scm/contrib/zsh_completion_sl
fi
## Tekton cli
if [ ! -f "${fpath[1]}/_tkn" ]; then
command -v tkn >/dev/null 2>&1 && tkn completion zsh > "${fpath[1]}/_tkn"
fi
## kapp
if [ ! -f "${fpath[1]}/_kapp" ]; then
command -v kapp >/dev/null 2>&1 && kapp completion zsh --tty=false > "${fpath[1]}/_kapp"
fi
## kn
if [ ! -f "${fpath[1]}/_kn" ]; then
command -v kn >/dev/null 2>&1 && kn completion zsh > "${fpath[1]}/_kn"
fi
## talos cli
if [ ! -f "${fpath[1]}/_talosctl" ]; then
command -v talosctl >/dev/null 2>&1 && talosctl completion zsh > "${fpath[1]}/_talosctl"
fi
## Google Cloud
[ -f /opt/google-cloud-sdk/completion.zsh.inc ] && source /opt/google-cloud-sdk/completion.zsh.inc
## Golang
export PATH=$HOME/go/bin:$PATH
GOPROXY=https://athens.aarn.shelman.io
## Ansible
export ANSIBLE_NOCOWS=1
## Docker
export DOCKER_BUILDKIT=1
autoload -Uz compinit
compinit
autoload -Uz compdef
PROG=tea _CLI_ZSH_AUTOCOMPLETE_HACK=1 source "/home/dln/.config/tea/autocomplete.zsh"
## AWS
autoload -U +X bashcompinit && bashcompinit
complete -o nospace -C /usr/bin/mcli mcli
complete -C '/usr/bin/aws_completer' aws
# The next line updates PATH for the Google Cloud SDK.
if [ -f '/home/dln/google-cloud-sdk/path.zsh.inc' ]; then . '/home/dln/google-cloud-sdk/path.zsh.inc'; fi
# The next line enables shell command completion for gcloud.
if [ -f '/home/dln/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/dln/google-cloud-sdk/completion.zsh.inc'; fi

3
README.md Normal file
View file

@ -0,0 +1,3 @@
# Configuration and various sundries
IT in a box.

View file

@ -1,364 +0,0 @@
#!/usr/bin/env ruby
HELP = <<EOS
git-wtf displays the state of your repository in a readable, easy-to-scan
format. It's useful for getting a summary of how a branch relates to a remote
server, and for wrangling many topic branches.
git-wtf can show you:
- How a branch relates to the remote repo, if it's a tracking branch.
- How a branch relates to integration branches, if it's a feature branch.
- How a branch relates to the feature branches, if it's an integration
branch.
git-wtf is best used before a git push, or between a git fetch and a git
merge. Be sure to set color.ui to auto or yes for maximum viewing pleasure.
EOS
KEY = <<EOS
KEY:
() branch only exists locally
{} branch only exists on a remote repo
[] branch exists locally and remotely
x merge occurs both locally and remotely
~ merge occurs only locally
(space) branch isn't merged in
(It's possible for merges to occur remotely and not locally, of course, but
that's a less common case and git-wtf currently doesn't display anything
special for it.)
EOS
USAGE = <<EOS
Usage: git wtf [branch+] [options]
If [branch] is not specified, git-wtf will use the current branch. The possible
[options] are:
-l, --long include author info and date for each commit
-a, --all show all branches across all remote repos, not just
those from origin
-A, --all-commits show all commits, not just the first 5
-s, --short don't show commits
-k, --key show key
-r, --relations show relation to features / integration branches
--dump-config print out current configuration and exit
git-wtf uses some heuristics to determine which branches are integration
branches, and which are feature branches. (Specifically, it assumes the
integration branches are named "master", "next" and "edge".) If it guesses
incorrectly, you will have to create a .git-wtfrc file.
To start building a configuration file, run "git-wtf --dump-config >
.git-wtfrc" and edit it. The config file is a YAML file that specifies the
integration branches, any branches to ignore, and the max number of commits to
display when --all-commits isn't used. git-wtf will look for a .git-wtfrc file
starting in the current directory, and recursively up to the root.
IMPORTANT NOTE: all local branches referenced in .git-wtfrc must be prefixed
with heads/, e.g. "heads/master". Remote branches must be of the form
remotes/<remote>/<branch>.
EOS
COPYRIGHT = <<EOS
git-wtf Copyright 2008--2009 William Morgan <wmorgan at the masanjin dot nets>.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You can find the GNU General Public License at: http://www.gnu.org/licenses/
EOS
require 'yaml'
CONFIG_FN = ".git-wtfrc"
class Numeric; def pluralize s; "#{to_s} #{s}" + (self != 1 ? "s" : "") end end
if ARGV.delete("--help") || ARGV.delete("-h")
puts USAGE
exit
end
## poor man's trollop
$long = ARGV.delete("--long") || ARGV.delete("-l")
$short = ARGV.delete("--short") || ARGV.delete("-s")
$all = ARGV.delete("--all") || ARGV.delete("-a")
$all_commits = ARGV.delete("--all-commits") || ARGV.delete("-A")
$dump_config = ARGV.delete("--dump-config")
$key = ARGV.delete("--key") || ARGV.delete("-k")
$show_relations = ARGV.delete("--relations") || ARGV.delete("-r")
ARGV.each { |a| abort "Error: unknown argument #{a}." if a =~ /^--/ }
## search up the path for a file
def find_file fn
while true
return fn if File.exist? fn
fn2 = File.join("..", fn)
return nil if File.expand_path(fn2) == File.expand_path(fn)
fn = fn2
end
end
want_color = `git config color.wtf`
want_color = `git config color.ui` if want_color.empty?
$color = case want_color.chomp
when "true"; true
when "auto"; $stdout.tty?
end
def red s; $color ? "\033[31m#{s}\033[0m" : s end
def green s; $color ? "\033[32m#{s}\033[0m" : s end
def yellow s; $color ? "\033[33m#{s}\033[0m" : s end
def cyan s; $color ? "\033[36m#{s}\033[0m" : s end
def grey s; $color ? "\033[1;30m#{s}\033[0m" : s end
def purple s; $color ? "\033[35m#{s}\033[0m" : s end
## the set of commits in 'to' that aren't in 'from'.
## if empty, 'to' has been merged into 'from'.
def commits_between from, to
if $long
`git log --pretty=format:"- %s [#{yellow "%h"}] (#{purple "%ae"}; %ar)" #{from}..#{to}`
else
`git log --pretty=format:"- %s [#{yellow "%h"}]" #{from}..#{to}`
end.split(/[\r\n]+/)
end
def show_commits commits, prefix=" "
if commits.empty?
puts "#{prefix} none"
else
max = $all_commits ? commits.size : $config["max_commits"]
max -= 1 if max == commits.size - 1 # never show "and 1 more"
commits[0 ... max].each { |c| puts "#{prefix}#{c}" }
puts grey("#{prefix}... and #{commits.size - max} more (use -A to see all).") if commits.size > max
end
end
def ahead_behind_string ahead, behind
[ahead.empty? ? nil : "#{ahead.size.pluralize 'commit'} ahead",
behind.empty? ? nil : "#{behind.size.pluralize 'commit'} behind"].
compact.join("; ")
end
def widget merged_in, remote_only=false, local_only=false, local_only_merge=false
left, right = case
when remote_only; %w({ })
when local_only; %w{( )}
else %w([ ])
end
middle = case
when merged_in && local_only_merge; green("~")
when merged_in; green("x")
else " "
end
print left, middle, right
end
def show b
have_both = b[:local_branch] && b[:remote_branch]
pushc, pullc, oosync = if have_both
[x = commits_between(b[:remote_branch], b[:local_branch]),
y = commits_between(b[:local_branch], b[:remote_branch]),
!x.empty? && !y.empty?]
end
if b[:local_branch]
puts "Local branch: " + green(b[:local_branch].sub(/^heads\//, ""))
if have_both
if pushc.empty?
puts "#{widget true} in sync with remote"
else
action = oosync ? "push after rebase / merge" : "push"
puts "#{widget false} NOT in sync with remote (you should #{action})"
show_commits pushc unless $short
end
end
end
if b[:remote_branch]
puts "Remote branch: #{cyan b[:remote_branch]} (#{b[:remote_url]})"
if have_both
if pullc.empty?
puts "#{widget true} in sync with local"
else
action = pushc.empty? ? "merge" : "rebase / merge"
puts "#{widget false} NOT in sync with local (you should #{action})"
show_commits pullc unless $short
end
end
end
puts "\n#{red "WARNING"}: local and remote branches have diverged. A merge will occur unless you rebase." if oosync
end
def show_relations b, all_branches
ibs, fbs = all_branches.partition { |name, br| $config["integration-branches"].include?(br[:local_branch]) || $config["integration-branches"].include?(br[:remote_branch]) }
if $config["integration-branches"].include? b[:local_branch]
puts "\nFeature branches:" unless fbs.empty?
fbs.each do |name, br|
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
next if br[:ignore]
local_only = br[:remote_branch].nil?
remote_only = br[:local_branch].nil?
name = if local_only
purple br[:name]
elsif remote_only
cyan br[:name]
else
green br[:name]
end
## for remote_only branches, we'll compute wrt the remote branch head. otherwise, we'll
## use the local branch head.
head = remote_only ? br[:remote_branch] : br[:local_branch]
remote_ahead = b[:remote_branch] ? commits_between(b[:remote_branch], head) : []
local_ahead = b[:local_branch] ? commits_between(b[:local_branch], head) : []
if local_ahead.empty? && remote_ahead.empty?
puts "#{widget true, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is merged in"
elsif local_ahead.empty?
puts "#{widget true, remote_only, local_only, true} #{name} merged in (only locally)"
else
behind = commits_between head, (br[:local_branch] || br[:remote_branch])
ahead = remote_only ? remote_ahead : local_ahead
puts "#{widget false, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is NOT merged in (#{ahead_behind_string ahead, behind})"
show_commits ahead unless $short
end
end
else
puts "\nIntegration branches:" unless ibs.empty? # unlikely
ibs.sort_by { |v, br| v }.each do |v, br|
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
next if br[:ignore]
local_only = br[:remote_branch].nil?
remote_only = br[:local_branch].nil?
name = remote_only ? cyan(br[:name]) : green(br[:name])
ahead = commits_between v, (b[:local_branch] || b[:remote_branch])
if ahead.empty?
puts "#{widget true, local_only} merged into #{name}"
else
#behind = commits_between b[:local_branch], v
puts "#{widget false, local_only} NOT merged into #{name} (#{ahead.size.pluralize 'commit'} ahead)"
show_commits ahead unless $short
end
end
end
end
#### EXECUTION STARTS HERE ####
## find config file and load it
$config = { "integration-branches" => %w(heads/master heads/next heads/edge), "ignore" => [], "max_commits" => 5 }.merge begin
fn = find_file CONFIG_FN
if fn && (h = YAML::load_file(fn)) # yaml turns empty files into false
h["integration-branches"] ||= h["versions"] # support old nomenclature
h
else
{}
end
end
if $dump_config
puts $config.to_yaml
exit
end
## first, index registered remotes
remotes = `git config --get-regexp ^remote\.\*\.url`.split(/[\r\n]+/).inject({}) do |hash, l|
l =~ /^remote\.(.+?)\.url (.+)$/ or next hash
hash[$1] ||= $2
hash
end
## next, index followed branches
branches = `git config --get-regexp ^branch\.`.split(/[\r\n]+/).inject({}) do |hash, l|
case l
when /branch\.(.*?)\.remote (.+)/
name, remote = $1, $2
hash[name] ||= {}
hash[name].merge! :remote => remote, :remote_url => remotes[remote]
when /branch\.(.*?)\.merge ((refs\/)?heads\/)?(.+)/
name, remote_branch = $1, $4
hash[name] ||= {}
hash[name].merge! :remote_mergepoint => remote_branch
end
hash
end
## finally, index all branches
remote_branches = {}
`git show-ref`.split(/[\r\n]+/).each do |l|
sha1, ref = l.chomp.split " refs/"
if ref =~ /^heads\/(.+)$/ # local branch
name = $1
next if name == "HEAD"
branches[name] ||= {}
branches[name].merge! :name => name, :local_branch => ref
elsif ref =~ /^remotes\/(.+?)\/(.+)$/ # remote branch
remote, name = $1, $2
remote_branches["#{remote}/#{name}"] = true
next if name == "HEAD"
ignore = !($all || remote == "origin")
branch = name
if branches[name] && branches[name][:remote] == remote
# nothing
else
name = "#{remote}/#{branch}"
end
branches[name] ||= {}
branches[name].merge! :name => name, :remote => remote, :remote_branch => "#{remote}/#{branch}", :remote_url => remotes[remote], :ignore => ignore
end
end
## assemble remotes
branches.each do |k, b|
next unless b[:remote] && b[:remote_mergepoint]
b[:remote_branch] = if b[:remote] == "."
b[:remote_mergepoint]
else
t = "#{b[:remote]}/#{b[:remote_mergepoint]}"
remote_branches[t] && t # only if it's still alive
end
end
show_dirty = ARGV.empty?
targets = if ARGV.empty?
[`git symbolic-ref HEAD`.chomp.sub(/^refs\/heads\//, "")]
else
ARGV.map { |x| x.sub(/^heads\//, "") }
end.map { |t| branches[t] or abort "Error: can't find branch #{t.inspect}." }
targets.each do |t|
show t
show_relations t, branches if $show_relations || t[:remote_branch].nil?
end
modified = show_dirty && `git ls-files -m` != ""
uncommitted = show_dirty && `git diff-index --cached HEAD` != ""
if $key
puts
puts KEY
end
puts if modified || uncommitted
puts "#{red "NOTE"}: working directory contains modified files." if modified
puts "#{red "NOTE"}: staging area contains staged but uncommitted files." if uncommitted
# the end!

View file

@ -1,16 +0,0 @@
#!/bin/sh
set -ex
if [[ -z "$1" ]]; then
echo "Usage: $0 <branch name>"
exit 1
fi
hub sync
if git rev-parse --verify --quiet $1; then
git checkout $1
else
git checkout -b $1 main
git push -u origin $1
fi

View file

@ -1,5 +0,0 @@
#!/bin/bash
kubectl get pod --output json \
| jq -r '[.items[].metadata.labels]|map(to_entries[]|(.key) + "=" + .value)|unique|.[]' \
| fzf \
| xargs kubectl tail "$@" -l

View file

@ -1 +0,0 @@
/home/dln/src/github.com/dln/ktoolbox/ktoolbox

46
bin/pw
View file

@ -1,46 +0,0 @@
#!/bin/bash
#
# Author: Daniel Lundin <dln@arity.se>
#
# Convenience script to hide sensitive variables on the command line.
# Uses keyctl to store secrets in the keyring.
#
# Example usage: mycommand --user=foo --password=$(pw mypass)
set -eo pipefail
purge=0
ttl=${PW_TTL:-259200}
usage() { echo "Usage: $0 [-t SECONDS] [-f] SECRET_NAME" 1>&2; exit 1; }
while getopts ":ft:" o; do
case "${o}" in
f)
purge=1
;;
t)
ttl=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
var="$1"
shift || usage
[ -z "$1" ] || usage
key="pw.${var}"
if [ "${purge}" == "1" ]; then
keyctl purge user "${key}" >>/dev/null 2>&1 || true
fi
out=$(systemd-ask-password --accept-cached --keyname="${key}" "${var}:")
key_id=$(keyctl request user "${key}" 2>/dev/null)
keyctl timeout "$key_id" "$ttl"
printf "%s" "$out"

View file

@ -1,26 +0,0 @@
#!/usr/bin/env bash
set -xfeuo pipefail
state="${XDG_RUNTIME_DIR}/starship-sl-status"
checkout="${state}.checkout"
status="${state}.data"
if [[ "$PWD" != $(readlink -f "$state")* ]]; then
rm -f "$state"
root="$(sl root 2>/dev/null || true)"
ln -s "$root" "$state"
if [[ -z "${root}" ]]; then
echo >"${status}"
echo >"${checkout}"
exit 0
fi
fi
saved_cid=$(cat "${checkout}" 2>/dev/null || true)
root_cid=$(cat "${state}/.sl/checkoutidentifier" || true)
if [[ ${root_cid} != "${saved_cid}" ]]; then
echo "${root_cid}" >"${checkout}"
sl log -r . -T '{if(github_pull_request_number, "#{github_pull_request_number} @ ", if(bookmarks, "{bookmarks} @ "))}{node|short}{if(remotenames, ":{remotenames}")}' >"${status}"
fi
cat "$status" || true

View file

@ -1,4 +0,0 @@
#!/usr/bin/env bash
set -ef -o pipefail
eval "$(direnv export bash)"
eval "${BUILD_COMMAND:-echo 'BUILD_COMMAND not set'}" | bat --paging=always

View file

@ -1,24 +0,0 @@
#!/usr/bin/env bash
set -fe -o pipefail
eval "$(direnv export bash)"
if [ -n "$1" ]; then
_file=$(readlink -f "$@")
else
FZF=${FZF:-"fzf-tmux -p 90%,50% -y 0"}
_root=$(git rev-parse --show-toplevel 2>/dev/null || sl root 2>/dev/null || pwd)
_store=$(echo "$_root" | sha1sum | cut -d ' ' -f 1)
_file=$( ( (fre --store_name "$_store" --sorted | xargs -n 100 ls -d 2>/dev/null || true) && fd --type f --hidden --follow --exclude .git --exclude .sl --ignore-file "${_root}/.gitignore" . "$_root") | cat -n | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2- | sed -e "s#^${_root}/##" | $FZF --no-sort)
_file="${_root}/${_file}"
fre --store_name "$_store" --add "$_file"
fi
tmux select-window -t nvim 2>/dev/null ||
tmux new-window -S -n nvim \
-e "BUILD_COMMAND=$BUILD_COMMAND" \
-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
-e "GOFLAGS=$GOFLAGS" \
nvim --listen "$XDG_RUNTIME_DIR/nvim.sock"
nvim --server "$XDG_RUNTIME_DIR/nvim.sock" --remote "$_file"

View file

@ -1,5 +0,0 @@
#!/bin/bash
tmux select-window -t1
FILE="$1"
shift
exec nvr --remote "$@" $(readlink -f "$FILE")

View file

@ -1,24 +0,0 @@
#!/bin/bash
set -e
store=$1
if [ -z "$store" ]; then
echo "Usage: $0 [store-name]"
exit 1
fi
export TPM2_PKCS11_STORE=$HOME/.local/share/tpm2-pkcs11/${store}
echo "=> Initializing store ${TPM2_PKCS11_STORE}"
mkdir -p $TPM2_PKCS11_STORE
tpm2_ptool init
tpm2_ptool addtoken --pid=1 --label=ssh --sopin="$(systemd-ask-password SOPIN)" --userpin="$(systemd-ask-password USERPIN)"
echo
echo "=> Adding SSH key"
tpm2_ptool addkey --label=ssh --algorithm=ecc256 --userpin="$(systemd-ask-password USERPIN)"
echo
echo "Store path: $TPM2_PKCS11_STORE"
echo "SSH public key:"
ssh-keygen -D /usr/lib/pkcs11/libtpm2_pkcs11.so 2>>/dev/null

View file

@ -1,2 +0,0 @@
#!/bin/bash
echo "$@" | xclip -selection clipboard

View file

@ -1,55 +0,0 @@
#!/usr/bin/env bash
# Vault Token helper for the Linux key retention service.
#
# Since version 2.6, the Linux kernel has included a efficiently store
# authentication data on a per thread, per process, per user, or per session
# bases.
#
# Linux Key Management Utilities (keyutils) provides `keyctl` to control
# the facility from the shell.
#
# see https://www.kernel.org/doc/Documentation/security/keys/core.rst
# see https://www.kernel.org/doc/Documentation/security/keys.txt
# see https://lwn.net/Articles/210502/
# see https://www.ibm.com/developerworks/library/l-key-retention/index.html
#
# Vault allows an external programs to be configured as a token helper
# that can get, store, and erase tokens on behalf of the Vault client.
#
# see https://www.vaultproject.io/docs/commands/token-helper.html
#
# To use this script, make it executable and set your ~/.vault file to
# contain:
#
# token_helper = "/path/to/vault-token-helper.sh"
# Exit on error.
set -o errexit
# Exit on error inside any functions or subshells.
set -o errtrace
# Do not allow use of undefined vars.
set -o nounset
# Catch the error if any piped command fails.
set -o pipefail
desc=VAULT_TOKEN:${VAULT_ADDR}
case $1 in
get)
# If the key is not set, keyctl returns "request_key: Required key not available"
# on stderr and exits with a non-zero status. The implied
key_id=$(keyctl request user ${desc} || echo '')
[ -z ${key_id} ] && exit 0
keyctl pipe ${key_id}
;;
store)
# Vault sends the token on stdin but there is no linebreak, so EOF is reached
# which causes read to return a non-zero status.
read -r token || true
echo -n ${token} | keyctl padd user ${desc} @u
;;
erase)
keyctl purge user ${desc}
;;
esac

71
common/base.nix Normal file
View file

@ -0,0 +1,71 @@
{ pkgs, ... }:
{
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
kernelPackages = pkgs.linuxPackages_zen;
initrd.systemd.enable = true;
binfmt.emulatedSystems = [ "aarch64-linux" ];
};
# Temporary files
boot.tmp.useTmpfs = true;
systemd.services.nix-daemon = {
environment.TMPDIR = "/var/tmp";
};
system.switch = {
enable = false;
enableNg = true;
};
services.fstrim.enable = true;
services.fwupd.enable = true;
time.timeZone = "Europe/Stockholm";
environment.systemPackages = with pkgs; [
btrfs-progs
btrfs-snap
git
glibcLocales
qemu_kvm
qemu-utils
vim
zstd
];
# Use fish, but not in /etc/passwd . See https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell
programs.bash = {
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
shellInit = ''
export NIX_LD=$(nix eval --impure --raw --expr 'let pkgs = import <nixpkgs> {}; NIX_LD = pkgs.lib.fileContents "${pkgs.stdenv.cc}/nix-support/dynamic-linker"; in NIX_LD')
'';
};
services.avahi = {
nssmdns4 = true;
enable = true;
ipv4 = true;
ipv6 = true;
publish = {
enable = true;
addresses = true;
workstation = true;
};
};
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
}

11
common/default.nix Normal file
View file

@ -0,0 +1,11 @@
{
imports = [
./base.nix
./desktop.nix
./hardening.nix
./laptop.nix
./nix.nix
./plymouth.nix
./podman.nix
];
}

106
common/desktop.nix Normal file
View file

@ -0,0 +1,106 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib) mkIf mkEnableOption;
cfg = config.patagia.podman;
in
{
options.patagia.desktop.enable = mkEnableOption "Desktop environment and common applications";
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ gnome-ssh-askpass4 ];
# Excluding some GNOME applications from the default install
environment.gnome.excludePackages =
(with pkgs; [
gnome-connections
gnome-photos
gnome-tour
snapshot
])
++ (with pkgs; [
atomix # puzzle game
baobab # disk usage analyzer
cheese # webcam tool
epiphany # web browser
geary # email reader
gnome-clocks
gnome-contacts
gnome-disk-utility
gnome-logs
gnome-music
gnome-terminal
hitori # sudoku game
iagno # go game
simple-scan
tali # poker game
yelp # help viewer
]);
fonts = {
fontDir.enable = true;
fontconfig = {
allowBitmaps = false;
antialias = true;
defaultFonts = {
serif = [ "Liberation Serif" ];
sansSerif = [ "Inter" ];
};
hinting.enable = true;
hinting.style = "slight";
subpixel.rgba = "rgb";
};
packages = with pkgs; [
inter
liberation_ttf
monaspace
nerd-fonts.symbols-only
noto-fonts
noto-fonts-cjk-sans
noto-fonts-color-emoji
roboto
ubuntu_font_family
];
};
programs.ssh.askPassword = "${pkgs.gnome-ssh-askpass4}/bin/gnome-ssh-askpass4";
programs.ssh.startAgent = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
services.gnome.gnome-keyring.enable = true;
services.printing.enable = true;
services.displayManager.defaultSession = "gnome";
services.xserver = {
enable = true;
displayManager.gdm.enable = true;
displayManager.gdm.autoSuspend = false;
desktopManager.gnome.enable = true;
xkb.layout = "se";
xkb.variant = "us";
};
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
};
}

43
common/hardening.nix Normal file
View file

@ -0,0 +1,43 @@
{
config,
lib,
pkgs,
...
}:
{
nix.settings.allowed-users = [
"@wheel"
"root"
];
boot.specialFileSystems = lib.mkIf (
!config.security.rtkit.enable && !config.security.polkit.enable
) { "/proc".options = [ "hidepid=2" ]; };
boot.kernel.sysctl."kernel.dmesg_restrict" = 1;
environment.systemPackages = [ pkgs.doas-sudo-shim ];
security = {
doas = {
enable = true;
extraRules = [
{
groups = [ "wheel" ];
keepEnv = true;
persist = true;
}
];
};
sudo.enable = false;
};
services.openssh = {
settings.PasswordAuthentication = false;
settings.KbdInteractiveAuthentication = false;
# prevents mutable /home/$user/.ssh/authorized_keys from being loaded to ensure that all user keys are config managed
# authorizedKeysFiles = lib.mkForce [ "/etc/ssh/authorized_keys.d/%u" ];
};
users.users.root.hashedPassword = "!";
}

19
common/laptop.nix Normal file
View file

@ -0,0 +1,19 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib) mkIf mkEnableOption;
in
{
options.patagia.laptop.enable = mkEnableOption "Laptop tools and configuration";
config = mkIf config.patagia.laptop.enable {
environment.systemPackages = with pkgs; [ gnomeExtensions.battery-health-charging ];
services.fprintd.enable = true;
};
}

57
common/nix.nix Normal file
View file

@ -0,0 +1,57 @@
{
inputs,
outputs,
lib,
config,
pkgs,
...
}:
{
nix =
let
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
in
{
settings = {
auto-optimise-store = true;
experimental-features = "nix-command flakes";
flake-registry = "";
# Workaround for https://github.com/NixOS/nix/issues/9574
nix-path = config.nix.nixPath;
substituters = [
"https://cache-nixos-org.aarn.patagia.net/"
];
trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
extra-substituters = [
"https://nix-community.cachix.org"
];
extra-trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
channel.enable = false;
registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
};
nixpkgs = {
overlays = [
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
];
config.allowUnfree = true;
};
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 14d --keep 5";
};
programs.nix-ld.enable = true;
environment.systemPackages = with pkgs; [
nvd
];
}

45
common/plymouth.nix Normal file
View file

@ -0,0 +1,45 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib) mkIf mkEnableOption;
cfg = config.patagia.plymouth;
in
{
options.patagia.plymouth.enable = mkEnableOption "Fancy boot splash";
config = mkIf cfg.enable {
boot = {
consoleLogLevel = 0;
initrd.verbose = false;
# Hide the OS choice for bootloaders.
# It's still possible to open the bootloader list by pressing any key
# It will just not appear on screen unless a key is pressed
loader.timeout = 0;
kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
"udev.log_priority=3"
];
plymouth = {
enable = true;
theme = "spinner_alt";
themePackages = with pkgs; [
(adi1090x-plymouth-themes.override { selected_themes = [ "spinner_alt" ]; })
];
};
};
};
}

43
common/podman.nix Normal file
View file

@ -0,0 +1,43 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib) mkIf mkEnableOption;
cfg = config.patagia.podman;
in
{
options.patagia.podman.enable = mkEnableOption "Podman";
config = mkIf cfg.enable {
environment.extraInit = ''
if [ -z "$DOCKER_HOST" -a -n "$XDG_RUNTIME_DIR" ]; then
export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock"
fi
'';
virtualisation = {
containers = {
enable = true;
storage.settings = {
storage = {
driver = "overlay";
runroot = "/run/containers/storage";
graphroot = "/var/lib/containers/storage";
rootless_storage_path = "/tmp/containers-$USER";
options.overlay.mountopt = "nodev,metacopy=on";
};
};
};
oci-containers.backend = "podman";
podman = {
enable = true;
dockerCompat = true;
};
};
};
}

View file

@ -0,0 +1,54 @@
# Bindings
bind \cg __zoxide_zi_repaint
bind \cJ forward-char
bind \cn history-prefix-search-forward
bind \cp history-prefix-search-backward
bind \e\[109\;5u execute # C-m in ghostty
# Settings
set fish_greeting
set fish_emoji_width 2
# Colors
set fish_color_command --bold
set fish_color_comment --italics --dim
set fish_color_autosuggestion --italics --bold --dim
set fish_color_cancel
set fish_color_command --bold
set fish_color_comment --italics --dim
set fish_color_cwd normal
set fish_color_cwd_root normal
set fish_color_end
set fish_color_error
set fish_color_escape
set fish_color_gray 6c7086
set fish_color_history_current
set fish_color_host normal
set fish_color_host_remote yellow
set fish_color_keyword
set fish_color_match
set fish_color_normal normal
set fish_color_operator
set fish_color_option
set fish_color_param normal
set fish_color_quote --italics
set fish_color_redirection
set fish_color_search_match -r
set fish_color_selection -r
set fish_color_status normal
set fish_color_string --italics
set fish_color_user normal
set fish_color_valid_path
set fish_pager_color_background
set fish_pager_color_completion normal
set fish_pager_color_description --dim
set fish_pager_color_prefix --underline
set fish_pager_color_progress --dim
set fish_pager_color_secondary_background
set fish_pager_color_secondary_completion
set fish_pager_color_secondary_description
set fish_pager_color_secondary_prefix
set fish_pager_color_selected_background -r
set fish_pager_color_selected_completion
set fish_pager_color_selected_description
set fish_pager_color_selected_prefix

View file

@ -0,0 +1,55 @@
## Semantic prompt (for Wezterm)
set _fishprompt_aid "fish"$fish_pid
set _fishprompt_started 0
# empty if running; or a numeric exit code; or CANCEL
set _fishprompt_postexec ""
functions -c fish_prompt _fishprompt_saved_prompt
set _fishprompt_prompt_count 0
set _fishprompt_disp_count 0
function _fishprompt_start --on-event fish_prompt
set _fishprompt_prompt_count (math $_fishprompt_prompt_count + 1)
# don't use post-exec, because it is called *before* omitted-newline output
if [ -n "$_fishprompt_postexec" ]
printf "\033]133;D;%s;aid=%s\007" "$_fishprompt_postexec" $_fishprompt_aid
end
printf "\033]133;A;aid=%s;cl=m\007" $_fishprompt_aid
end
function fish_prompt
set _fishprompt_disp_count (math $_fishprompt_disp_count + 1)
printf "\033]133;P;k=i\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_prompt))
set _fishprompt_started 1
set _fishprompt_postexec ""
end
function _fishprompt_preexec --on-event fish_preexec
if [ "$_fishprompt_started" = 1 ]
printf "\033]133;C;\007"
end
set _fishprompt_started 0
end
function _fishprompt_postexec --on-event fish_postexec
set _fishprompt_postexec $status
_fishprompt_start
end
function __fishprompt_cancel --on-event fish_cancel
set _fishprompt_postexec CANCEL
_fishprompt_start
end
function _fishprompt_exit --on-process %self
if [ "$_fishprompt_started" = 1 ]
printf "\033]133;Z;aid=%s\007" $_fishprompt_aid
end
end
if functions -q fish_right_prompt
functions -c fish_right_prompt _fishprompt_saved_right_prompt
function fish_right_prompt
printf "\033]133;P;k=r\007%b\033]133;B\007" (string join "\n" (_fishprompt_saved_right_prompt))
end
end

View file

@ -0,0 +1,70 @@
function __jj_in_repo
jj --ignore-working-copy --quiet root >>/dev/null 2>&1
end
function vcs_root
jj workspace root --ignore-working-copy 2>/dev/null || git rev-parse --show-toplevel 2>/dev/null || pwd
end
function vcs_broot
br (vcs_root)
commandline -f repaint
end
function vcs_jump
set _dir (vcs_root)
if [ "$_dir" = "$PWD" ]
set _dir (br -f --conf "$HOME/.config/broot/conf.toml")
end
[ -n "$_dir" ] && pushd $_dir >>/dev/null
commandline -f repaint
end
function vcs_status
if __jj_in_repo
echo
printf '\e[38;5;240m\u2504%.0s\e[0m' (seq 1 (tput cols)) '\n'
jj show --stat
printf '\e[38;5;240m\u2504%.0s\e[0m' (seq 1 (tput cols)) '\n'
jj log --ignore-working-copy --limit=20 -T builtin_log_comfortable -r "(main..@) | (main..@)-"
else
git status -sb
end
commandline -f repaint
end
function vcs_diff
if __jj_in_repo
jj show $argv
else
git diff --stat -p -C --color-words $argv
end
commandline -f repaint
end
function vcs_log
if __jj_in_repo
jj log --ignore-working-copy $argv
else
git diff --stat -p -C --color-words $argv
end
commandline -f repaint
end
# Abbreviations
abbr -a d vcs_diff
abbr -a s vcs_status
# Bindings
bind \c_ vcs_jump
bind \ea vcs_log
bind \ee vcs_broot
bind \eS vcs_diff
bind \es vcs_status
# jj completions
COMPLETE=fish jj | source

3
files/scripts/git-signing-key Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
ssh-add -L | awk '/^sk-ssh-/ { print "key::" $1 " " $2 }'

294
files/scripts/test-term.sh Executable file
View file

@ -0,0 +1,294 @@
echo -ne '\e[0mnormal\e[0m\t\t\t'
echo -e '\e[7m reverse \e[0m'
echo -ne '\e[2mdim\e[0m\t\t\t'
echo -e '\e[7;2m reverse dim \e[0m'
echo -ne '\e[1mbold\e[0m\t\t\t'
echo -e '\e[7;1m reverse bold \e[0m'
echo -ne '\e[3mitalic\e[0m\t\t\t'
echo -e '\e[7;3m reverse italic \e[0m'
echo -ne '\e[2;3mdim italic\e[0m\t\t'
echo -e '\e[7;2;3m reverse dim italic \e[0m'
echo -ne '\e[1;3mbold italic\e[0m\t\t'
echo -e '\e[7;1;3m reverse bold italic \e[0m'
echo
echo -e '\e[4munderline\e[0m'
echo -e '\e[3;4mitalic underline\e[0m'
echo -e '\e[4:1mthis is also underline \e[0m'
echo -e '\e[21mdouble underline \e[0m'
echo -e '\e[4:2mthis is also double underline \e[0m'
echo -e '\e[4:3mcurly underline \e[0m'
echo -e '\e[21m\e[58;5;42m256-color underline \e[0m'
echo -e '\e[4:3m\e[58;2;240;143;104mtruecolor underline (*)\e[0m'
echo -e "\e[58:2::255:0:0m\e[4:1msingle underline \e[0m"
echo -e "\e[4:2mdouble underline \e[58:2::255:0:0m and with color\e[0m"
echo -e "\e[4:3mcurly underline \e[58:2::255:0:0m and with color\e[0m"
echo -e "\e[4:4mdotted underline \e[58:2::255:0:0m and with color\e[0m"
echo -e "\e[4:5mdashed underline \e[58:2::255:0:0m and with color\e[0m"
echo
echo -e '\e[5mblink \e[0m'
echo -e '\e[8minvisible\e[0m <- invisible (but copy-pasteable)'
echo -e '\e[9mstrikethrough\e[0m'
echo -e '\e[53moverline \e[0m'
echo -e '\e[51mframed \e[0m'
echo -e '\e[52mencircled \e[0m'
echo -e '\e[31mred\e[0m'
echo -e '\e[91mbright red\e[0m'
echo -e '\e[38:5:42m256-color, de jure standard (ITU-T T.416)\e[0m'
echo -e '\e[38;5;42m256-color, de facto standard (commonly used)\e[0m'
echo -e '\e[38:2::240:143:104mtruecolor, de jure standard (ITU-T T.416) \e[0m'
echo -e '\e[38;2;240;143;104mtruecolor, de facto standard (commonly used)\e[0m'
echo -e '\e[46mcyan background\e[0m'
echo -e '\e[106mbright cyan background\e[0m'
echo -e '\e[48:5:42m256-color background, de jure standard (ITU-T T.416)\e[0m'
echo -e '\e[48;5;42m256-color background, de facto standard (commonly used)\e[0m'
echo -e '\e[48:2::240:143:104mtruecolor background, de jure standard (ITU-T T.416) \e[0m'
echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format (might be removed at some point)\e[0m'
echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[0m'
echo
echo "Emoji: 🚀 💩 😁 🍖 🔥 🔷 ❤️ "
echo
echo "Nerdfonts:    󱓼 󱓺 󱓻            󱠇 󰲬  󰍎  󰬟  "
echo "   󱄅 󰣇       "
echo
echo "Geometrical:"
echo -e '◆ ◇ ◈ ● ○ ◉ ◎ ◍ ◌'
echo -e '■ □ ▢ ▣ ▤ ▥ ▦ ▧ ▨ ▩'
echo -e '◧ ◨ ◩ ◪ ◫ ◬ ◭ ◮ △ ▲ ▱ ▰ ▽ ▼ ▾ ▿'
echo -e '◠ ◡ ◢ ◣ ◤ ◥ ◦ ◧ ◨ ◩ ◪ ◫ ◬ ◭ ◮ ◯ ◰ ◱ ◲ ◳ ◴ ◵ ◶ ◷ ◸ ◹ ◺ ◻ ◼ ◽ ◾ ◿'
echo "Arrows:"
echo -e '▲ ▶ ▼ ◀ △ ▷ ▽ ◁'
echo -e '← → ↑ ↓ ↔ ↔ ↕ ↖ ↗ ↙ ↘ ↠ ↣ ↦ ↧ ↨ ↩ ↪ ↫ ↬ ↭ ↮ ↯ ↰ ↱ ↲ ↳ ↴ ↵ ↶ ↷ ↸ ↹ ↺ ↻ ↼ ↽ ↾ ↿ ↼ ↽ ↾ ↿'
echo -e '⇄ ↔ ⇀ ⇂ ⇄ ⇆ ⇌ ⇎ ⇐ ⇑ ⇓ ⇕ ⇖ ⇗ ⇘ ⇙ ⇚ ⇛ ⇜ ⇝ ⇞ ⇟'
echo
echo "Blocks:"
echo -e '▄ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▀ ▔ ▏ ▎ ▍ ▌ ▋ ▊ ▉ ▐ ▕ ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ ░ ▒ ▓ 🮘 🮙 🮐 '
echo -e '▄ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▀ ▔ ▏ ▎ ▍ ▌ ▋ ▊ ▉ ▐ ▕ ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ ░ ▒ ▓ 🮘 🮙 🮐 '
echo -e '▄ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▀ ▔ ▏ ▎ ▍ ▌ ▋ ▊ ▉ ▐ ▕ ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ ░ ▒ ▓ 🮘 🮙 🮐 '
echo
echo -e '───── ━━━━━ ┄┄┄┄┄ ┅┅┅┅┅ ┈┈┈┈┈ ┉┉┉┉┉ ╌╌╌╌╌ ╍╍╍╍╍ │ ┃ ┆ ┇ ┊ ┋ ╎ ╏ ║ ╵ ╷ ╹ ╻ '
echo -e '───── ━━━━━ ┄┄┄┄┄ ┅┅┅┅┅ ┈┈┈┈┈ ┉┉┉┉┉ ╌╌╌╌╌ ╍╍╍╍╍ │ ┃ ┆ ┇ ┊ ┋ ╎ ╏ ║ ╵ ╷ ╹ ╻ '
echo -e '───── ━━━━━ ┄┄┄┄┄ ┅┅┅┅┅ ┈┈┈┈┈ ┉┉┉┉┉ ╌╌╌╌╌ ╍╍╍╍╍ │ ┃ ┆ ┇ ┊ ┋ ╎ ╏ ║ ╵ ╷ ╹ ╻ '
echo
echo -e '╭──────────────╮ ┌─┬─┬─┬─┐ ╔═╦═╦═╦═╗ ┏━┳━┳━┳━┓ '
echo -e '│ border chars │ │ ├─┼─┤ │ ║ ╠═╬═╣ ║ ┃ ┣━╋━┫ ┃ '
echo -e '╰──────────────╯ └─┴─┴─┴─┘ ╚═╩═╩═╩═╝ ┗━┻━┻━┻━┛ '
echo
echo "Ligatures:"
echo "-<< -< -<- <-- <--- <<- <- -> ->> --> ---> ->- >- >>- <-> <--> <---> <----> <!--"
echo "=<< =< =<= <== <=== <<= <= => =>> ==> ===> =>= >= >>= <=> <==> <===> <====> <!---"
echo "[| |] {| |} <=< >=> <~~ <~ ~> ~~> :: ::: \/ /\ == != /= ~= <> === !== =/= =!= :>"
echo ":= :- :+ <* <*> *> <| <|> |> <. <.> .> +: -: =: <***> __ (* comm *) ++ +++ |- -|"
echo
echo 24-bit colors:
# This file was originally taken from iterm2 https://github.com/gnachman/iTerm2/blob/master/tests/24-bit-color.sh
#
# This file echoes a bunch of 24-bit color codes
# to the terminal to demonstrate its functionality.
# The foreground escape sequence is ^[38;2;<r>;<g>;<b>m
# The background escape sequence is ^[48;2;<r>;<g>;<b>m
# <r> <g> <b> range from 0 to 255 inclusive.
# The escape sequence ^[0m returns output to default
setBackgroundColor() {
printf '\x1b[48;2;%s;%s;%sm' $1 $2 $3
}
resetOutput() {
echo -en "\x1b[0m\n"
}
# Gives a color $1/255 % along HSV
# Who knows what happens when $1 is outside 0-255
# Echoes "$red $green $blue" where
# $red $green and $blue are integers
# ranging between 0 and 255 inclusive
rainbowColor() {
let h=$1/43
let f=$1-43*$h
let t=$f*255/43
let q=255-t
if [ $h -eq 0 ]; then
echo "255 $t 0"
elif [ $h -eq 1 ]; then
echo "$q 255 0"
elif [ $h -eq 2 ]; then
echo "0 255 $t"
elif [ $h -eq 3 ]; then
echo "0 $q 255"
elif [ $h -eq 4 ]; then
echo "$t 0 255"
elif [ $h -eq 5 ]; then
echo "255 0 $q"
else
# execution should never reach here
echo "0 0 0"
fi
}
for i in $(seq 0 127); do
setBackgroundColor $i 0 0
echo -en " "
done
resetOutput
for i in $(seq 255 -1 128); do
setBackgroundColor $i 0 0
echo -en " "
done
resetOutput
for i in $(seq 0 127); do
setBackgroundColor 0 $i 0
echo -n " "
done
resetOutput
for i in $(seq 255 -1 128); do
setBackgroundColor 0 $i 0
echo -n " "
done
resetOutput
for i in $(seq 0 127); do
setBackgroundColor 0 0 $i
echo -n " "
done
resetOutput
for i in $(seq 255 -1 128); do
setBackgroundColor 0 0 $i
echo -n " "
done
resetOutput
for i in $(seq 0 127); do
setBackgroundColor $(rainbowColor $i)
echo -n " "
done
resetOutput
for i in $(seq 255 -1 128); do
setBackgroundColor $(rainbowColor $i)
echo -n " "
done
resetOutput
## Color test
# Tom Hale, 2016. MIT Licence.
# Print out 256 colours, with each number printed in its corresponding colour
# See http://askubuntu.com/questions/821157/print-a-256-color-test-pattern-in-the-terminal/821163#821163
set -eu # Fail on errors or undeclared variables
printable_colours=256
# Return a colour that contrasts with the given colour
# Bash only does integer division, so keep it integral
function contrast_colour {
local r g b luminance
colour="$1"
if (( colour < 16 )); then # Initial 16 ANSI colours
(( colour == 0 )) && printf "15" || printf "0"
return
fi
# Greyscale # rgb_R = rgb_G = rgb_B = (number - 232) * 10 + 8
if (( colour > 231 )); then # Greyscale ramp
(( colour < 244 )) && printf "15" || printf "0"
return
fi
# All other colours:
# 6x6x6 colour cube = 16 + 36*R + 6*G + B # Where RGB are [0..5]
# See http://stackoverflow.com/a/27165165/5353461
# r=$(( (colour-16) / 36 ))
g=$(( ((colour-16) % 36) / 6 ))
# b=$(( (colour-16) % 6 ))
# If luminance is bright, print number in black, white otherwise.
# Green contributes 587/1000 to human perceived luminance - ITU R-REC-BT.601
(( g > 2)) && printf "0" || printf "15"
return
# Uncomment the below for more precise luminance calculations
# # Calculate percieved brightness
# # See https://www.w3.org/TR/AERT#color-contrast
# # and http://www.itu.int/rec/R-REC-BT.601
# # Luminance is in range 0..5000 as each value is 0..5
# luminance=$(( (r * 299) + (g * 587) + (b * 114) ))
# (( $luminance > 2500 )) && printf "0" || printf "15"
}
# Print a coloured block with the number of that colour
function print_colour {
local colour="$1" contrast
contrast=$(contrast_colour "$1")
printf "\e[48;5;%sm" "$colour" # Start block of colour
printf "\e[38;5;%sm%3d" "$contrast" "$colour" # In contrast, print number
printf "\e[0m " # Reset colour
}
# Starting at $1, print a run of $2 colours
function print_run {
local i
for (( i = "$1"; i < "$1" + "$2" && i < printable_colours; i++ )) do
print_colour "$i"
done
printf " "
}
# Print blocks of colours
function print_blocks {
local start="$1" i
local end="$2" # inclusive
local block_cols="$3"
local block_rows="$4"
local blocks_per_line="$5"
local block_length=$((block_cols * block_rows))
# Print sets of blocks
for (( i = start; i <= end; i += (blocks_per_line-1) * block_length )) do
printf "\n" # Space before each set of blocks
# For each block row
for (( row = 0; row < block_rows; row++ )) do
# Print block columns for all blocks on the line
for (( block = 0; block < blocks_per_line; block++ )) do
print_run $(( i + (block * block_length) )) "$block_cols"
done
(( i += block_cols )) # Prepare to print the next row
printf "\n"
done
done
}
echo
echo "ANSI 4-bit colors:"
echo
print_run 0 16 # The first 16 colours are spread over the whole spectrum
echo
echo
echo "ANSI 8-bit colors:"
print_blocks 16 231 6 6 3 # 6x6x6 colour cube between 16 and 231 inclusive
print_blocks 232 255 12 2 1 # Not 50, but 24 Shades of Grey

542
flake.lock Normal file
View file

@ -0,0 +1,542 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1736143030,
"narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"neovim-nightly-overlay",
"hercules-ci-effects",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github"
},
"original": {
"id": "flake-parts",
"type": "indirect"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"ghostty": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs-stable": "nixpkgs-stable",
"nixpkgs-unstable": "nixpkgs-unstable",
"zig": "zig"
},
"locked": {
"lastModified": 1736911212,
"narHash": "sha256-OLly4X2kN1tDb2gMYcWeim6uJECPoc52ltJsz1iD5Ug=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "ff9414d9ea7b16a375d41cde8f6f193de7e5db72",
"type": "github"
},
"original": {
"owner": "ghostty-org",
"repo": "ghostty",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat_3",
"gitignore": "gitignore",
"nixpkgs": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1735882644,
"narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "a5a961387e75ae44cc20f0a57ae463da5e959656",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"neovim-nightly-overlay",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"hercules-ci-effects": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1735695978,
"narHash": "sha256-cwk53OX1S1bCFY09zydubZNmmwcx9l5XEba8mVYuNE4=",
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"rev": "f6233b5cfbada692d93a73d6ed35bdbfd0fdb9c4",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1736785676,
"narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"jujutsu": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1735928141,
"narHash": "sha256-KN5rfdDj3vB/GNVw4YZU4tJv2BnUQiQdOz1kEQyketI=",
"owner": "dln",
"repo": "jj",
"rev": "cb103fb4692c4e2b90c4663804b81a5ff1e49c06",
"type": "github"
},
"original": {
"owner": "dln",
"ref": "openssh",
"repo": "jj",
"type": "github"
}
},
"neovim-nightly-overlay": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"hercules-ci-effects": "hercules-ci-effects",
"neovim-src": "neovim-src",
"nixpkgs": "nixpkgs_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1736924666,
"narHash": "sha256-1Mnw9hNMmsnfZuNbeTgmRev99vLZ9FsgrfCChjwnzSk=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "7e61ee6d94536d30888c2fbeb1e9d53f4aa3f8b8",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"type": "github"
}
},
"neovim-src": {
"flake": false,
"locked": {
"lastModified": 1736864394,
"narHash": "sha256-QEbgudJG4M9kVmuhGDEG2EP397zAbPmnZ5DX2GFwZCI=",
"owner": "neovim",
"repo": "neovim",
"rev": "e8a6c1b02122852da83dc52184e78369598d8240",
"type": "github"
},
"original": {
"owner": "neovim",
"repo": "neovim",
"type": "github"
}
},
"nix-index-database": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1736652904,
"narHash": "sha256-8uolHABgroXqzs03QdulHp8H9e5kWQZnnhcda1MKbBM=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "271e5bd7c57e1f001693799518b10a02d1123b12",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-index-database",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1731890469,
"narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5083ec887760adfe12af64830a66807423a859a7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1733423277,
"narHash": "sha256-TxabjxEgkNbCGFRHgM/b9yZWlBj60gUOUnRT/wbVQR8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "e36963a147267afc055f7cf65225958633e536bf",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "release-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1736867362,
"narHash": "sha256-i/UJ5I7HoqmFMwZEH6vAvBxOrjjOJNU739lnZnhUln8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9c6b49aeac36e2ed73a8c472f1546f6d9cf1addc",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1733229606,
"narHash": "sha256-FLYY5M0rpa5C2QAE3CKLYAM6TwbKicdRK6qNrSHlNrE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "566e53c2ad750c84f6d31f9ccb9d00f823165550",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable_2": {
"locked": {
"lastModified": 1736848588,
"narHash": "sha256-9B6fQqphF3j9lpcxQnKyIUgp3NyGi7ikb9CjCYqixcY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "357cd3dfdb8993af11268d755d53357720675e66",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1736848588,
"narHash": "sha256-9B6fQqphF3j9lpcxQnKyIUgp3NyGi7ikb9CjCYqixcY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "357cd3dfdb8993af11268d755d53357720675e66",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1736798957,
"narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"ghostty": "ghostty",
"home-manager": "home-manager",
"jujutsu": "jujutsu",
"neovim-nightly-overlay": "neovim-nightly-overlay",
"nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs_3",
"nixpkgs-stable": "nixpkgs-stable_2",
"nixpkgs-unstable": "nixpkgs-unstable_2"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"jujutsu",
"nixpkgs"
]
},
"locked": {
"lastModified": 1732242723,
"narHash": "sha256-NWI8csIK0ujFlFuEXKnoc+7hWoCiEtINK9r48LUUMeU=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "a229311fcb45b88a95fdfa5cecd8349c809a272a",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"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"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1736154270,
"narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"zig": {
"inputs": {
"flake-compat": [
"ghostty"
],
"flake-utils": "flake-utils",
"nixpkgs": [
"ghostty",
"nixpkgs-stable"
]
},
"locked": {
"lastModified": 1717848532,
"narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=",
"owner": "mitchellh",
"repo": "zig-overlay",
"rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43",
"type": "github"
},
"original": {
"owner": "mitchellh",
"repo": "zig-overlay",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

91
flake.nix Normal file
View file

@ -0,0 +1,91 @@
{
description = "NixOS configuration";
nixConfig = {
substituters = [
"https://cache-nixos-org.aarn.patagia.net/"
];
extra-substituters = [
"https://nix-community.cachix.org"
];
extra-trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
inputs = {
ghostty.url = "github:ghostty-org/ghostty";
jujutsu.url = "github:dln/jj/openssh";
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nix-index-database.url = "github:nix-community/nix-index-database";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
};
outputs =
inputs@{
self,
nix-index-database,
nixpkgs,
home-manager,
...
}:
let
inherit (self) outputs;
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
mkHost =
modules:
nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs outputs;
};
modules = [ ./common ] ++ modules;
};
mkHome =
modules:
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = {
inherit inputs outputs;
};
modules = [
./home/common
nix-index-database.hmModules.nix-index
] ++ modules;
};
in
{
overlays = import ./overlays { inherit inputs outputs; };
devShell.${system} = pkgs.mkShell {
packages = with pkgs; [
just
nh
nil
nixd
nixfmt-rfc-style
];
};
nixosConfigurations = {
dinky = mkHost [ ./hosts/dinky ];
nemo = mkHost [ ./hosts/nemo ];
pearl = mkHost [ ./hosts/pearl ];
};
homeConfigurations = {
"dln@dinky" = mkHome [ ./home/dln/dinky.nix ];
"dln@nemo" = mkHome [ ./home/dln/nemo.nix ];
"dln@pearl" = mkHome [ ./home/dln/pearl.nix ];
};
};
}

80
home/common/atuin.nix Normal file
View file

@ -0,0 +1,80 @@
{ lib, pkgs, ... }:
{
programs.atuin = {
enable = true;
enableFishIntegration = true;
settings = {
ctrl_n_shortcuts = true;
enter_accept = true;
filter_mode_shell_up_key_binding = "session";
history_filter = [ ];
inline_height = 8;
prefers_reduced_motion = true;
search_mode_shell_up_key_binding = "prefix";
show_help = false;
style = "compact";
sync_address = "https://atuin.patagia.net";
sync.records = true;
daemon = {
enabled = true;
socket_path = "/run/user/1000/atuin.socket"; # FIXME: remove hard coded uid
systemd_socket = true;
};
stats.common_subcommands = [
"cargo"
"git"
"go"
"jj"
"just"
"kubectl"
"nix"
"npm"
"pnpm"
"talosctl"
"task"
"yarn"
];
stats.common_prefix = [
"doas"
"sudo"
];
};
};
systemd.user.services.atuin-daemon = {
Unit = {
Description = "atuin shell history daemon";
Requires = [ "atuin-daemon.socket" ];
};
Service = {
ExecStart = "${lib.getExe pkgs.atuin} daemon";
Environment = [ "ATUIN_LOG=info" ];
Restart = "on-failure";
RestartSteps = 5;
RestartMaxDelaySec = 10;
};
Install = {
Also = [ "atuin-daemon.socket" ];
WantedBy = [ "default.target" ];
};
};
systemd.user.sockets.atuin-daemon = {
Unit = {
Description = "Unix socket activation for atuin shell history daemon";
};
Socket = {
ListenStream = "%t/atuin.socket";
SocketMode = "0600";
RemoveOnStop = true;
};
Install = {
WantedBy = [ "sockets.target" ];
};
};
}

63
home/common/broot.nix Normal file
View file

@ -0,0 +1,63 @@
{
config,
lib,
pkgs,
...
}:
{
programs.broot = {
enable = true;
enableFishIntegration = true;
settings = {
content_search_max_file_size = "10MB";
enable_kitty_keyboard = lib.mkForce true;
icon_theme = "nerdfont";
lines_before_match_in_preview = 1;
lines_after_match_in_preview = 1;
quit_on_last_cancel = true;
show_selection_mark = true;
special_paths = {
"~/media" = {
list = "never";
sum = "never";
};
"~/.config" = {
show = "always";
};
"trav" = {
show = "always";
list = "always";
sum = "never";
};
};
true_colors = true;
verbs = [
{
invocation = "broot_home";
key = "ctrl-7";
external = "br $HOME";
from_shell = true;
leave_broot = true;
}
{
invocation = "edit";
key = "enter";
shortcut = "e";
external = "edit {file}";
apply_to = "text_file";
from_shell = true;
leave_broot = true;
}
{
invocation = "nvim";
key = "enter";
apply_to = "text_file";
external = "edit {file}";
from_shell = true;
leave_broot = true;
}
];
};
};
}

24
home/common/default.nix Normal file
View file

@ -0,0 +1,24 @@
{ lib, ... }:
{
imports = [
./atuin.nix
./broot.nix
./devel.nix
./fish.nix
./ghostty.nix
./gnome.nix
./k8s.nix
./nix.nix
./nvim
./scripts.nix
./ssh.nix
./tmux.nix
./utils.nix
./vcs.nix
./web.nix
];
options.patagia.desktop.enable = lib.mkEnableOption "Desktop environment";
options.patagia.laptop.enable = lib.mkEnableOption "Laptop";
options.patagia.oled.enable = lib.mkEnableOption "Darker darks on oled screens";
}

17
home/common/devel.nix Normal file
View file

@ -0,0 +1,17 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
age-plugin-fido2-hmac
comma
dogdns
file
just
nix-output-monitor
passage
rage
];
home.sessionVariables = {
GOPROXY = "https://athena.patagia.net";
};
}

130
home/common/fish.nix Normal file
View file

@ -0,0 +1,130 @@
{ lib, pkgs, ... }:
{
programs.fish = {
enable = true;
plugins = [
{
name = "transient";
src = pkgs.fishPlugins.transient-fish.src;
}
];
functions = {
confirm = {
description = "Ask for confirmation";
argumentNames = [ "message" ];
body = ''
read -l -p 'printf "\\e[31;1m$message\\e[0m (y/N) "' confirm
test "$confirm" = 'y'
'';
};
poweroff = {
description = "Wraps poweroff to first prompt for confirmation";
wraps = "poweroff";
body = ''confirm " Really poweroff $(hostname)?" && command poweroff $argv'';
};
reboot = {
description = "Wraps reboot to first prompt for confirmation";
wraps = "reboot";
body = ''confirm " Really reboot $(hostname)?" && command reboot $argv'';
};
shutdown = {
description = "Wraps shutdown to first prompt for confirmation";
wraps = "shutdown";
body = ''confirm " Really shutdown $(hostname)?" && command shutdown $argv'';
};
e = {
description = "Open a file in already running nvim";
argumentNames = [ "file" ];
body = ''
nvim-remote --remote (readlink -f "$file")
'';
};
jl.body = ''
jj log --color=always --no-graph -T builtin_log_oneline -r 'all()' | fzf --ansi --reverse --wrap --preview 'jj show --tool=difftu {1}' --preview-window=down,70% --color=light
'';
__zoxide_zi_repaint.body = ''
__zoxide_zi
commandline -f repaint
'';
fish_jj_prompt.body = ''
if not command -sq jj || not jj root --quiet &>/dev/null
return 1
end
jj log --ignore-working-copy --no-graph --color never -r @ -T '
surround(
" \e[2;3m",
"\e[0m",
separate(
" ",
surround(
"\e[0;2;3m",
"\e[0m",
coalesce(
surround(
"\e[1;2;3m",
"\e[0m",
if(
description.first_line().substr(0, 80).starts_with(description.first_line()),
description.first_line().substr(0, 80),
description.first_line().substr(0, 79) ++ ""
)
),
""
),
),
surround("\e[0;1;95m ", "\e[0;2;3m", change_id.shortest()),
surround("\e[0;35m󰸕 ", "\e[0m", bookmarks.join("")),
surround("\e[0;34m ", "\e[0;2;3m", commit_id.shortest()),
if(conflict, "󰂭"),
if(empty, ""),
if(divergent, ""),
if(hidden, "󰘓"),
)
)
'
'';
fish_prompt.body = ''
echo -e "\033[s\033[$LINES;1H\033[1;2;38;5;238m$(string pad -c '' -w $COLUMNS (fish_jj_prompt || fish_vcs_prompt))\033[0m\033[u"
string join "" -- (set_color --dim) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color --bold normal) ' ' (set_color normal)
'';
transient_prompt_func.body = ''
echo
string join "" -- (set_color --bold) ' ' (set_color normal)
'';
rg.body = ''
if status is-interactive
command rg -p $argv --json | delta
else
command rg $argv
end
'';
};
interactiveShellInit = lib.concatStringsSep "\n" [
(builtins.readFile ../../files/config/fish/config.fish)
(builtins.readFile ../../files/config/fish/semantic-prompt.fish)
(builtins.readFile ../../files/config/fish/vcs.fish)
];
shellAbbrs = {
l = "bat";
top = "btm --basic --enable_cache_memory --battery";
ts = "TZ=Z date '+%Y%m%dT%H%M%SZ'";
w = "viddy $history[1]";
xc = "fish_clipboard_copy";
};
};
}

164
home/common/ghostty.nix Normal file
View file

@ -0,0 +1,164 @@
{
config,
inputs,
lib,
pkgs,
...
}:
{
config = lib.mkIf config.patagia.desktop.enable {
programs.ghostty = {
enable = true;
enableFishIntegration = true;
package = inputs.ghostty.packages.${pkgs.system}.default;
settings = {
font-size = 12.5;
font-family = "TX-02";
font-family-bold-italic = "Monaspace Xenon";
font-style-bold = "Bold";
font-style-italic = "Light Oblique";
font-style-bold-italic = "ExtraLight Italic";
font-synthetic-style = false;
adjust-cursor-thickness = 4;
adjust-underline-position = 5;
adjust-underline-thickness = -2;
mouse-hide-while-typing = true;
unfocused-split-opacity = 1.0;
shell-integration = "fish";
gtk-tabs-location = "hidden";
gtk-titlebar = true;
gtk-titlebar-hide-when-maximized = true;
window-padding-balance = true;
window-padding-color = "extend";
window-theme = "system";
theme = "light:PatagiaLight,dark:PatagiaDark";
keybind = [
"alt+shift+c=copy_to_clipboard"
"alt+shift+v=paste_from_clipboard"
"ctrl+i=text:\\x09"
"ctrl+m=text:\\x0D"
"ctrl+tab=goto_split:previous"
"ctrl+[=text:\\x1B"
"super+enter=toggle_fullscreen"
];
};
};
xdg.configFile."ghostty/themes/PatagiaDark".text =
let
background = if config.patagia.oled.enable then "#000000" else "#14151a";
in
''
background = "${background}"
foreground = #b7bec7
cursor-color = #e7e7b7
selection-background = #84979f
selection-foreground = #000000
palette = 0=#000000
palette = 1=#ff0035
palette = 2=#85ff00
palette = 3=#ffc900
palette = 4=#00a7ff
palette = 5=#cb01ff
palette = 6=#00e0ff
palette = 7=#b7bec7
palette = 8=#444444
palette = 9=#ff8c88
palette = 10=#baff94
palette = 11=#ffe090
palette = 12=#88ccff
palette = 13=#e38dff
palette = 14=#97eeff
palette = 15=#ffffff
'';
xdg.configFile."ghostty/themes/PatagiaLight".text = ''
background = #fefeff
foreground = #222222
cursor-color = #aa0000
selection-background = #ffe6a4
selection-foreground = #483600
palette = 0=#000000
palette = 1=#9e001d
palette = 2=#306300
palette = 3=#deae00
palette = 4=#00669e
palette = 5=#7d009e
palette = 6=#008a9e
palette = 7=#f7f7f7
palette = 8=#b0b0b0
palette = 9=#ff0035
palette = 10=#509e00
palette = 11=#ffc900
palette = 12=#00a7ff
palette = 13=#cb01ff
palette = 14=#00e0ff
palette = 15=#ffffff
'';
xdg.desktopEntries = {
ghostty-secondary = {
categories = [
"System"
"TerminalEmulator"
];
exec = ''
ghostty --class=com.mitchellh.ghostty-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" -e bash
'';
genericName = "Ghostty Secondary";
icon = "com.mitchellh.ghostty";
name = "Ghostty Secondary";
settings = {
StartupWMClass = "com.mitchellh.ghostty-secondary";
TryExec = "ghostty";
};
terminal = false;
type = "Application";
};
ghostty-devel = {
categories = [
"System"
"TerminalEmulator"
];
exec = ''
ghostty --class=com.mitchellh.ghostty-devel --command="ssh -t devel" --initial-command="ssh -t devel"
'';
genericName = "Ghostty (devel)";
icon = "com.mitchellh.ghostty";
name = "Ghostty (devel)";
settings = {
StartupWMClass = "com.mitchellh.ghostty-devel";
TryExec = "ghostty";
};
terminal = false;
type = "Application";
};
ghostty-devel-secondary = {
categories = [
"System"
"TerminalEmulator"
];
exec = ''
ghostty --class=com.mitchellh.ghostty-devel-secondary --font-style="ExtraCondensed" --font-style-bold="Bold ExtraCondensed" --font-style-italic="ExtraCondensed Oblique" --command="ssh -t devel" --initial-command="ssh -t devel"
'';
genericName = "Ghostty Secondary (devel)";
icon = "com.mitchellh.ghostty";
name = "Ghostty Secondary (devel)";
settings = {
StartupWMClass = "com.mitchellh.ghostty-devel-secondary";
TryExec = "ghostty";
};
terminal = false;
type = "Application";
};
};
};
}

194
home/common/gnome.nix Normal file
View file

@ -0,0 +1,194 @@
{
config,
lib,
pkgs,
...
}:
with lib.hm.gvariant;
{
config = lib.mkIf config.patagia.desktop.enable {
home.packages = with pkgs; [
gnome-tweaks
gnome-pomodoro
gnomeExtensions.desktop-clock
gnomeExtensions.emoji-copy
gnomeExtensions.just-perfection
];
dconf.settings = {
"org/gnome/desktop/background" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png";
picture-uri-dark = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-d.png";
primary-color = "#77767B";
secondary-color = "#000000";
};
"org/gnome/desktop/screensaver" = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png";
primary-color = "#77767B";
secondary-color = "#000000";
};
"org/gnome/desktop/wm/keybindings" = {
close = [ "<Super>q" ];
toggle-on-all-workspaces = [ "<Super>s" ];
toggle-maximized = [ "<Super>m" ];
maximize-vertically = [ "<Super>Up" ];
minimize = [ "<Super>comma" ];
move-to-center = [ "<Super>c" ];
switch-applications = [ "<Super>Tab" ];
switch-windows = [ "<Alt>Tab" ];
move-to-workspace-1 = [ "<Shift>F1" ];
move-to-workspace-2 = [ "<Shift>F2" ];
move-to-workspace-3 = [ "<Shift>F3" ];
move-to-workspace-4 = [ "<Shift>F4" ];
move-to-workspace-5 = [ "<Shift>F5" ];
move-to-workspace-6 = [ "<Shift>F6" ];
move-to-workspace-7 = [ "<Shift>F7" ];
move-to-workspace-8 = [ "<Shift>F8" ];
move-to-workspace-9 = [ "<Shift>F9" ];
switch-to-workspace-1 = [ "F1" ];
switch-to-workspace-2 = [ "F2" ];
switch-to-workspace-3 = [ "F3" ];
switch-to-workspace-4 = [ "F4" ];
switch-to-workspace-5 = [ "F5" ];
switch-to-workspace-6 = [ "F6" ];
switch-to-workspace-7 = [ "F7" ];
switch-to-workspace-8 = [ "F8" ];
switch-to-workspace-9 = [ "F9" ];
};
"org/gnome/desktop/input-sources" = {
mru-sources = [
(mkTuple [
"xkb"
"us"
])
];
sources = [
(mkTuple [
"xkb"
"se+us"
])
];
xkb-options = [ "caps:ctrl_modifier" ];
};
"org/gnome/desktop/interface" = {
enable-animations = false;
enable-hot-corners = false;
show-battery-percentage = true;
font-antialiasing = "grayscale";
font-hinting = "slight";
font-name = "Inter Variable 11";
document-font-name = "Inter Variable 11";
monospace-font-name = "BerkeleyMono Nerd Font 11";
toolkit-accessibility = false;
};
"org/gnome/desktop/search-providers" = {
disabled = [
"org.gnome.Contacts.desktop"
"org.gnome.Nautilus.desktop"
"org.gnome.Calendar.desktop"
"org.gnome.clocks.desktop"
"org.gnome.Epiphany.desktop"
];
sort-order = [
"org.gnome.Contacts.desktop"
"org.gnome.Documents.desktop"
"org.gnome.Nautilus.desktop"
"org.gnome.Settings.desktop"
"org.gnome.Calculator.desktop"
"org.gnome.Calendar.desktop"
"org.gnome.clocks.desktop"
"org.gnome.seahorse.Application.desktop"
"org.gnome.Weather.desktop"
"org.gnome.Characters.desktop"
];
};
"org/gnome/desktop/wm/preferences" = {
focus-mode = "sloppy";
num-workspaces = 10;
resize-with-right-button = true;
};
"org/gnome/GWeather4" = {
temperature-unit = "centigrade";
};
"org/gnome/Weather" = {
locations = [
(mkVariant (mkTuple [
(mkUint32 2)
(mkVariant (mkTuple [
"Stockholm-Arlanda Airport"
"ESSA"
false
[
(mkTuple [
1.0410888988146176
0.31328660073298215
])
]
[
(mkTuple [
1.0410888988146176
0.31328660073298215
])
]
]))
]))
];
};
"org/gnome/desktop/calendar" = {
show-weekdate = true;
};
"org/gnome/mutter" = {
center-new-windows = true;
edge-tiling = true;
};
"org/gnome/settings-daemon/plugins/color" = {
night-light-schedule-automatic = false;
night-light-schedule-from = 0.0;
night-light-schedule-to = 0.0;
night-light-temperature = mkUint32 3575;
};
"org/gnome/shell" = {
enabled-extensions = [
"emoji-copy@felipeftn"
"just-perfection-desktop@just-perfection"
];
};
"org/gnome/shell/extensions/emoji-copy" = {
emoji-keybind = [ "<Super>e" ];
};
"org/gnome/shell/extensions/just-perfection" = {
animation = 0;
notification-banner-position = 2;
osd-position = 6;
panel = false;
panel-in-overview = true;
startup-status = 0;
switcher-popup-delay = false;
top-panel-position = 0;
};
"org/gnome/tweaks" = {
show-extensions-notice = false;
};
};
};
}

176
home/common/k8s.nix Normal file
View file

@ -0,0 +1,176 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
kail
kapp
krew
kubectl
kubectl-cnpg
kubectl-neat
kubectl-view-secret
kubectx
kubelogin-oidc
kubernetes-helm
kustomize
];
programs.k9s = {
enable = true;
settings.k9s = {
liveViewAutoRefresh = false;
refreshRate = 2;
maxConnRetry = 5;
readOnly = false;
noExitOnCtrlC = false;
skipLatestRevCheck = false;
disablePodCounting = false;
imageScans.enable = false;
logger = {
tail = 100;
buffer = 5000;
sinceSeconds = -1;
textWrap = false;
showTime = false;
};
shellPod.image = "alpine:3";
thresholds = {
cpu = {
critical = 90;
warn = 70;
};
memory = {
critical = 90;
warn = 70;
};
};
ui = {
crumbsless = true;
defaultsToFullScreen = true;
enableMouse = false;
headless = true;
logoless = true;
noIcons = false;
reactive = false;
skin = "dieter";
};
};
views = {
views = {
"v1/pods" = {
columns = [
"NAME"
"PF"
"READY"
"STATUS"
"NODE"
"AGE"
"RESTARTS"
"IP"
"CPU"
"MEM"
"CPU/R:L"
"MEM/R:L"
"%CPU/R"
"%CPU/L"
"%MEM/R"
"%MEM/L"
];
};
};
};
skins.dieter.k9s = {
body = {
fgColor = "default";
bgColor = "default";
logoColor = "default";
};
prompt = {
fgColor = "default";
bgColor = "default";
suggestColor = "default";
};
info = {
fgColor = "default";
sectionColor = "default";
};
dialog = {
fgColor = "default";
bgColor = "default";
buttonFgColor = "default";
buttonBgColor = "default";
buttonFocusFgColor = "white";
buttonFocusBgColor = "darkblue";
labelFgColor = "default";
fieldFgColor = "default";
};
frame = {
border = {
fgColor = "default";
focusColor = "default";
};
menu = {
fgColor = "default";
keyColor = "default";
numKeyColor = "default";
};
crumbs = {
fgColor = "default";
bgColor = "default";
activeColor = "default";
};
status = {
newColor = "default";
modifyColor = "default";
addColor = "default";
errorColor = "red";
highlightColor = "default";
killColor = "default";
completedColor = "default";
};
title = {
fgColor = "default";
bgColor = "default";
highlightColor = "default";
counterColor = "default";
filterColor = "default";
};
};
views = {
table = {
fgColor = "default";
bgColor = "default";
cursorFgColor = "teal";
cursorBgColor = "darkblue";
header = {
fgColor = "default";
bgColor = "default";
sorterColor = "blue";
};
};
xray = {
fgColor = "default";
bgColor = "default";
cursorColor = "blue";
graphicColor = "blue";
};
yaml = {
keyColor = "default";
colonColor = "default";
valueColor = "default";
};
logs = {
fgColor = "default";
bgColor = "default";
indicator = {
fgColor = "default";
bgColor = "default";
toggleOnColor = "default";
toggleOffColor = "default";
};
};
};
};
};
}

19
home/common/nix.nix Normal file
View file

@ -0,0 +1,19 @@
{
pkgs,
outputs,
...
}:
{
nixpkgs = {
config.allowUnfree = true;
overlays = [
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
];
};
programs.home-manager.enable = true;
systemd.user.startServices = "sd-switch";
}

View file

@ -0,0 +1,69 @@
require 'blink-cmp'.setup({
keymap = {
preset = 'enter',
['<Tab>'] = { 'select_next', 'fallback' },
['<S-Tab>'] = { 'select_prev', 'fallback' },
['<PageDown>'] = { 'scroll_documentation_down', 'fallback' },
['<PageUp>'] = { 'scroll_documentation_up', 'fallback' },
},
completion = {
accept = {
auto_brackets = { enabled = true, },
},
documentation = {
auto_show = true,
auto_show_delay_ms = 800,
window = { border = 'rounded', },
},
ghost_text = { enabled = false },
list = {
selection = {
preselect = false,
auto_insert = false
},
},
menu = {
auto_show = true,
border = 'rounded',
direction_priority = { 'n' },
draw = {
components = {
kind_icon = {
ellipsis = false,
text = function(ctx)
local kind_icon, _, _ = require('mini.icons').get('lsp', ctx.kind)
return kind_icon
end,
-- Optionally, you may also use the highlights from mini.icons
highlight = function(ctx)
local _, hl, _ = require('mini.icons').get('lsp', ctx.kind)
return hl
end,
}
}
}
}
},
fuzzy = {
prebuilt_binaries = {
download = false
},
},
signature = {
enabled = true,
window = { border = 'rounded', },
},
sources = {
default = { 'lsp' },
cmdline = {},
providers = {},
},
})

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