Compare commits

...

414 Commits

Author SHA1 Message Date
f9856a27b9 chore(nvim): drop mini.jump, mini.move, update docs 2025-01-22 16:26:45 +02:00
b36b52ad57 chore(config): brew bundle update 2025-01-22 15:13:47 +02:00
1e60ccf49b chore(ssh): ignore submodule changes, tweak config 2025-01-22 15:12:59 +02:00
renovate[bot]
9ca9439b9a chore(deps): update node.js to v22.13.1 (#69)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-22 09:34:00 +02:00
6d30ae7e84 chore(config): aerospace - add phpstorm 2025-01-21 14:08:06 +02:00
031e124663 chore(ssh): ft=sshconfig to turingpi config 2025-01-20 14:51:37 +02:00
bb50c9fe18 chore(scripts): macos default tweaks 2025-01-20 14:50:05 +02:00
8e608de501 chore(config): aerospace tweaks 2025-01-20 14:47:22 +02:00
github-actions[bot]
8917b7736b chore: update pre-commit hooks (#68)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-01-20 11:49:36 +02:00
18ff879f1d chore(config): tms colors, depth from 10 to 3 2025-01-17 13:25:32 +02:00
c5a258d7be feat(docs): alias docs and update script 2025-01-17 13:07:15 +02:00
7525f1f71d feat(dfm): dfm apt helper commands 2025-01-16 16:19:45 +02:00
3b665bdba0 chore(nvim): tweaks to lsp, autocommands, sessions 2025-01-16 16:18:50 +02:00
99477364bd chore(bin): t - filters, sorting, tweak checks 2025-01-16 16:17:42 +02:00
github-actions[bot]
629fdf6d4c chore: update pre-commit hooks (#67) 2025-01-16 07:10:21 +02:00
1288599b1f feat(docs): aerospace keybindings and update code 2025-01-15 15:33:01 +02:00
be3a68fecb fix(nvim): intelephense license loading 2025-01-14 07:23:51 +02:00
101e4da1d6 feat(bin): x-env-list, list ENV with protection 2025-01-14 07:01:22 +02:00
23430a609a chore(bin): dfm cleanup, tweaks 2025-01-14 06:59:36 +02:00
bb0d56e403 chore(config): wezterm config tweaks 2025-01-14 06:59:00 +02:00
d3b08bdf4f chore(config): add laravel shortcuts 2025-01-14 06:58:40 +02:00
e1ec501c55 chore(config): add local version of git-root cmd 2025-01-14 06:57:40 +02:00
f92c3407f0 feat(nvim): reintro noice.nvim 2025-01-14 06:56:56 +02:00
b5971439b6 feat(nvim): drop lspsaga.nvim 2025-01-14 06:56:29 +02:00
8ea8a2797a chore(nvim): keymap tweaks 2025-01-14 06:55:57 +02:00
b0f9222482 chore(nvim): move flash.nvim keymap defs 2025-01-14 06:52:34 +02:00
825ccc1031 chore(nvim): drop tokyonight customizations 2025-01-14 06:50:59 +02:00
dab7a8a38a chore(nvim): lsp sign definitions, icons, settings 2025-01-14 06:50:15 +02:00
1dbc7ae5cd chore(nvim): move mason tools to visible place 2025-01-14 06:47:24 +02:00
7038da568e chore(nvim): add support for intelephense license 2025-01-14 06:46:10 +02:00
bfcaa26070 chore(nvim): trouble.nvim related tweaks 2025-01-14 06:42:18 +02:00
f6488aecce chore(nvim): tweaks to options, cleanup 2025-01-14 06:39:36 +02:00
ad166e8012 feat(bin): t, add support for existing sessions 2025-01-14 05:56:19 +02:00
2a76a414a0 feat(config): split tmux config, add helpers 2025-01-14 05:50:19 +02:00
bb8ddf0bba chore(config): aerospace, add preview to floaters 2025-01-14 05:47:57 +02:00
bf3e746010 chore(base): add .ignore to limit searched files 2025-01-14 05:47:18 +02:00
github-actions[bot]
b9957e4f0e chore: update pre-commit hooks (#66)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-01-13 12:56:43 +02:00
e1deba4ccf chore(config): antidote, remove tmux plugin 2025-01-12 15:39:48 +02:00
36e4de3035 chore(nvim): add lazydev to blink.cmp completions 2025-01-10 22:13:00 +02:00
3eab1faeab chore(config): alias changes, remove .dx, add .o 2025-01-10 22:02:29 +02:00
1eb4098646 chore(shell): p10k aws, go and nvm section color 2025-01-10 22:01:05 +02:00
f7db8cae15 chore(shell): p10k config docs line width 2025-01-10 22:00:04 +02:00
97dd3dc21d chore(nvim): blink.cmp LuaSnip support, cleanup 2025-01-10 21:57:58 +02:00
6da6797f1b chore(config): tmux config tweaks
moved config around, did cleanup and moved TMUX_TMPDIR
under XDG_STATE_HOME. added the state/tmux folder creation
to the dotbot install config.
2025-01-10 21:56:39 +02:00
github-actions[bot]
88356f1392 chore: update pre-commit hooks (#65)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-01-10 01:26:03 +02:00
174bb842e9 chore(config): tmux config tweaks 2025-01-08 18:10:03 +02:00
f6e7590118 chore(hosts): remove ref to non-existent Brewfile 2025-01-08 03:35:15 +02:00
498996a6e2 chore(config): remove antigen config 2025-01-08 03:34:13 +02:00
0961985fb4 fix(nvim): vim-textobj-xmlattr init 2025-01-08 03:32:22 +02:00
293452604d feat(ci): add codeowners file 2025-01-08 03:31:53 +02:00
renovate[bot]
9582f18c7d chore(deps): update node.js to v22.13.0 (#64)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-08 03:23:14 +02:00
051e3604ee feat(bin): x-localip - show active interfaces ips 2025-01-07 21:45:03 +02:00
09d62dd159 feat(nvim): plugins, fixes, helpers
Plugins:
- voldikss/vim-floaterm
- vim-test/vim-test
- tpope/vim-projectionist
- phpactor/phpactor
- catgoose/nvim-colorizer.lua

Fixes:
- lsp diagnostics config
- lsp diagnostics icons
- neo-tree configuration fixes
- tokyonight.nvim color scheme tweaks

Lots of tweaks to options.lua
2025-01-07 21:41:56 +02:00
8a3763e168 chore(config): zed config tweaks 2025-01-07 21:29:49 +02:00
c37793f649 chore(config): tmux config tweaks, new settings 2025-01-07 21:29:25 +02:00
7bc7230990 chore(config): cleanup aliases, shellcheck fixes 2025-01-07 21:23:26 +02:00
067df4e34b feat(bin): t, custom tmux session manager
- drops tms bindings from tmux config, wasn't using them
- drops t alias for tail -f, clashed with t script
2025-01-07 21:22:27 +02:00
4d28499423 chore(config): tmux config tweaks
- undercurl support
- underscore colors
- nvim split aware moving
- detach-on-destroy off
- session name display in status-right
- escape-time to zero
- default terminal to use $TERM
2025-01-07 15:58:16 +02:00
b685af82fb chore(brew): update brewfile 2025-01-07 15:05:05 +02:00
github-actions[bot]
b8a4b82431 chore: update pre-commit hooks (#63) 2025-01-06 13:44:20 +02:00
0b03acebd8 feat(config): tmux plugin tmux-fzf-url 2025-01-02 22:22:59 +02:00
d172b86cb8 chore(docs): update nvim, tmux, wezterm keymaps 2025-01-02 17:46:07 +02:00
f910dfb9ac chore(nvim): add lazy dev path, enable profiling 2025-01-02 17:36:53 +02:00
ee95d57ba0 chore(config): aerospace tweaks 2025-01-02 17:34:48 +02:00
f8a317f3c7 chore(dfm): install script cleanup 2025-01-02 15:18:48 +02:00
3762e10932 chore(config): aerospace docker desktop layout 2025-01-02 14:53:59 +02:00
afda96902b chore(config): ghostty tweaks 2025-01-02 14:53:20 +02:00
3060b6ad66 chore(nvim): mason tools, sessionopts 2025-01-02 14:15:06 +02:00
github-actions[bot]
4f154cf509 chore: update pre-commit hooks (#62)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-01-02 11:41:43 +02:00
863d803483 feat(config): zed config 2024-12-30 17:53:56 +02:00
07bb2b56d1 feat(config): glow config 2024-12-30 17:51:47 +02:00
84a753100e feat(config): ghostty config 2024-12-30 17:51:26 +02:00
c8b01f3fda chore(config): aerospace tweaks 2024-12-30 17:50:47 +02:00
8e6a110aac chore(ci): pre-commit - detect-aws-creds 2024-12-30 17:49:50 +02:00
a8baa1671f chore(config): fix terminfo, add ghostty inits 2024-12-30 17:27:45 +02:00
2ccdd042f6 chore: sort gitignore, echo submodule ignore status 2024-12-30 17:26:35 +02:00
github-actions[bot]
8cf43ed555 chore: update pre-commit hooks (#60)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-30 15:05:15 +02:00
e22094e0da fix(dfm): asdf plugin-install, docs translations 2024-12-30 11:26:54 +02:00
6186c5cba4 chore(config): tmux ignore md5 in window name 2024-12-28 19:02:55 +02:00
c453dcbf84 chore(nvim): statusline tweaks 2024-12-28 19:02:14 +02:00
4daaa62aed feat(dfm): scripts/install-* to autocomplete, docs 2024-12-28 19:01:45 +02:00
f56d5682d1 chore(nvim): shellscript formatting with shfmt 2024-12-28 18:59:59 +02:00
439638b686 chore(config): tweaks to aerospace config 2024-12-28 18:59:38 +02:00
a8a473a46d chore: shfmt, cleanup 2024-12-28 18:59:09 +02:00
eb91a43bbd feat(asdf): drop asdf-plugin-manager, use dotbot-asdf 2024-12-28 16:58:31 +02:00
github-actions[bot]
193fae662e chore: update pre-commit hooks (#58)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-27 05:18:32 +02:00
github-actions[bot]
117ca1a944 chore: update pre-commit hooks (#57)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-25 15:31:39 +02:00
1f1a6d42ad fix(ci): update-submodules cron syntax 2024-12-25 15:30:49 +02:00
cca265cd99 chore(ci): update update-submodules schedule 2024-12-25 15:15:53 +02:00
cc6abb53ba chore(ci): update pre-commit-autoupdate 2024-12-25 14:34:38 +02:00
ab34c148a6 feat(bin): age tools (#20)
* wip: ae for encryption, ad for decryption
* feat: finished ad and ae, created a for both uses
2024-12-24 09:31:25 +02:00
github-actions[bot]
910b29ed9f chore: update pre-commit hooks (#56) 2024-12-24 06:50:02 +02:00
3fb0a75a62 feat(asdf): update automation, versions, plugins 2024-12-24 00:59:50 +02:00
github-actions[bot]
f73abb508b chore: update pre-commit hooks (#55)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-23 13:00:01 +02:00
github-actions[bot]
1dd3d952cf chore: update pre-commit hooks (#54)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-22 02:07:59 +02:00
1ffd6e1569 feat(nvim): update blink config 2024-12-20 22:54:17 +02:00
a76033a48a chore(deps): update Brewfile 2024-12-20 18:55:14 +02:00
34dc18883e chore(config): aerospace tweaks 2024-12-20 18:14:57 +02:00
832d8b94f3 chore(nvim): add the awesome youtube video to mini 2024-12-20 12:37:00 +02:00
c40eb765f8 chore(config): tweak aerospace config 2024-12-20 12:06:37 +02:00
github-actions[bot]
1bb7e9076b chore: update pre-commit hooks (#53)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-20 10:11:10 +02:00
ivuorinen
17821dfefa chore(git): Update submodules (automated)
asdf 54d15e3
antidote
dotbot v1.20.4
2024-12-20 03:09:26 +00:00
19327947ed chore(config): tweak aerospace config 2024-12-19 12:48:41 +02:00
2356fc4c61 chore(deps): update asdf submodule 2024-12-19 12:48:26 +02:00
45219deccb fix(nvim): nvmdef - fix log levels for now 2024-12-19 12:46:53 +02:00
5471aba1a4 chore(nvim): autosession, configs, tweaks 2024-12-19 12:42:20 +02:00
github-actions[bot]
6f6ee3611c chore: update pre-commit hooks (#52)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-19 12:24:10 +02:00
ivuorinen
d8f9cdf265 chore(git): Update submodules (automated)
asdf 9c12b79
antidote
2024-12-19 03:14:30 +00:00
abb6de05be feat(config): AeroSpace config 2024-12-18 17:22:26 +02:00
60ef48e918 feat(nvim): consolidate code related plugins 2024-12-18 17:12:30 +02:00
e58c79a3c3 fix(dotbot): fix installer config 2024-12-18 17:11:50 +02:00
d47f21286d feat(nvim): drop opts defined in mini.basics 2024-12-18 14:27:03 +02:00
3f108c9353 feat(nvim): use full mini.nvim instead of subrepos 2024-12-18 14:16:19 +02:00
github-actions[bot]
4a68146786 chore: update pre-commit hooks (#51)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-18 09:56:47 +02:00
github-actions[bot]
cf79e61943 chore: update pre-commit hooks (#50)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-12-17 09:16:33 +02:00
43dcb303a0 chore(dfm): improved colors helper 2024-12-16 08:25:29 +02:00
1b03f0bbd6 chore(config): add container arch to actrc 2024-12-16 05:04:38 +02:00
8a52c9a97e chore(nvim): fixed mason formatters, config 2024-12-16 05:04:01 +02:00
8e84c3aef7 chore(lint): fixed stylua and linted nvim configs 2024-12-16 05:02:25 +02:00
acd2f7fc6d chore(config): move personal cheat db to last 2024-12-16 03:55:26 +02:00
1e4aa1558a chore(ci): add renovate-config-validator 2024-12-16 03:54:41 +02:00
b314c0ba76 feat(nvim): nvm-default package (#49) 2024-12-12 10:21:25 +02:00
ece46561c4 chore(nvim): configs, keymaps, utils.lua, docs 2024-12-12 02:13:00 +02:00
196d217c34 feat(shell): switch zsh to use p10k 2024-12-11 14:14:05 +02:00
7d2fc55791 chore(nvim): <leader>ba (close all except current) 2024-12-10 09:11:42 +02:00
74fb12f093 chore(lint): tweaks, few pre-commit hook fixes 2024-12-10 09:11:12 +02:00
ivuorinen
d7988bcad7 chore(git): Update submodules (automated)
antidote
dotbot v1.20.3
2024-12-10 03:20:15 +00:00
320ae35dcd feat(nvim): sessions & tweaks to configs 2024-12-10 01:13:52 +02:00
0964253be5 chore(nvim): tweaks and fixes 2024-12-09 13:00:45 +02:00
Ismo Vuorinen
f3f7ecc522 feat(nvim): reworked cmp, lsp and bunch of stuff (#48)
* feat(nvim): reworked cmp, lsp and bunch of stuff

* chore: del disabled plugins, do coderabbit fixes

* chore: tweak settings, remove duplication

* chore: next round of refactoring

* feat: replaced lualine w/ mini.statusline, tweaks

* chore: cleanup, options and keymap stuff
2024-12-09 10:30:15 +02:00
ivuorinen
b88de0c3ae chore(git): Update submodules (automated)
antidote
dotbot v1.20.2
2024-12-09 03:20:33 +00:00
c5e6860595 chore(deps): updated yarn packages 2024-12-05 21:24:05 +02:00
b5a3c34fc3 chore(lint): dfm lints 2024-12-05 21:23:48 +02:00
87c89cf828 chore(config): "disable" pure exec time counter 2024-12-05 09:19:33 +02:00
renovate[bot]
8d57c9425e fix(container): update image python (3.13.0 → 3.13.1) (#47)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 09:15:53 +02:00
renovate[bot]
cfe97d81a7 chore(deps): update node.js to v22.12.0 (#46) 2024-12-04 00:12:09 +02:00
2f13ad324a fix(scripts): add_plugins shouldn't change versions 2024-12-03 20:30:59 +02:00
github-actions[bot]
d203fc9d51 chore: update pre-commit hooks (#45) 2024-12-02 07:55:44 +02:00
bf279b6def chore(shell): tweak pure colors 2024-11-28 03:13:46 +02:00
87926f8d9b chore(lint): config/exports linting 2024-11-28 02:54:42 +02:00
6b056f6072 chore(nvim): plugin changes, new keymaps, augroup 2024-11-28 02:50:07 +02:00
823cdbc07f chore(ssh): add baal to demons 2024-11-28 02:48:55 +02:00
0f6157eb04 feat(shell): cleanup and switched to pure prompt 2024-11-28 02:48:09 +02:00
721fe614a7 feat: drop oh-my-posh 2024-11-26 03:08:54 +02:00
5ea16d4653 chore(nvim): add leader sf for file finder 2024-11-25 17:22:22 +02:00
900e6a8f85 chore(shell): cleanup and antidote plugins 2024-11-25 13:54:14 +02:00
16673de789 chore(config): add antidote to tmux ignored list 2024-11-25 13:10:46 +02:00
c732a75184 fix(config): antidote plugins, configs 2024-11-25 13:10:11 +02:00
github-actions[bot]
96280e6e9b chore: update pre-commit hooks (#44)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-11-24 12:15:24 +02:00
5ab0f89765 feat(nvim): mini.nvim plugins + cleanup 2024-11-22 17:58:52 +02:00
d585d61537 chore(config): tweaks to configs and scripts 2024-11-22 17:54:37 +02:00
746646ae55 feat(shell): switched to antidote, asdf changes 2024-11-22 17:53:46 +02:00
dependabot[bot]
6e69ec6410 chore(deps): bump cross-spawn from 7.0.3 to 7.0.6 (#43)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-21 10:16:24 +02:00
af123e5138 chore(deps): update brewfile 2024-11-19 11:20:24 +02:00
3879289559 feat(tmux): removal of tmux-resurrect 2024-11-18 11:42:58 +02:00
392628e733 fix(shell): fixes to zsh and bash configs 2024-11-16 16:30:57 +02:00
aa70eab5fb fix(nvim): disable statuscol on certain ft and bt 2024-11-12 05:22:01 +02:00
e5311ca285 fix(nvim): finally a working colorcolumn 2024-11-12 05:21:26 +02:00
d5618c9b5f chore(config): tweaks to nvim config, autogroups 2024-11-09 19:49:21 +02:00
d091f5a88f feat(base): add tms bundle to antigen 2024-11-09 19:48:12 +02:00
cb9195e3ad chore(config): asdf, add libtmux to python 2024-11-09 19:47:42 +02:00
c91cc387b6 chore(docs): update working on readme 2024-11-09 19:47:02 +02:00
083091ea46 chore(deps): update asdf tool-versions, plugins 2024-11-08 15:59:54 +02:00
7ff74f0e15 feat(dfm): add asdf helpers 2024-11-08 15:36:47 +02:00
9d1f62fcca feat(dfm): more helpers, enable multiple commands 2024-11-08 15:35:56 +02:00
a563e82e33 chore(base): add lando, eza fix if missing 2024-11-08 15:33:43 +02:00
62ff7836e7 chore(config): wezterm config formatting, fonts 2024-11-08 15:32:04 +02:00
88cb573027 chore(config): update oh-my-posh cfg, completions 2024-11-08 15:31:29 +02:00
82772d8208 feat(config): tms configs 2024-11-07 10:04:33 +02:00
github-actions[bot]
240035569c chore: update pre-commit hooks (#42)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-11-06 13:56:19 +02:00
renovate[bot]
9697c200f9 chore(deps): update node to v22.11.0 (#41) 2024-11-01 13:04:20 +02:00
fd11f9966b chore(config): tmux-sessionizer bindings 2024-10-25 13:03:53 +03:00
722b3c0cde chore(scripts): tweak install-asdf, add update 2024-10-25 12:42:38 +03:00
4fcb9d9741 chore(config): fzf default opts 2024-10-25 12:42:38 +03:00
fc232f26f7 chore(config): update tmux config 2024-10-25 12:42:38 +03:00
8b078309cf chore(nvim): dashboard tweaks, add q for fast quit 2024-10-25 12:42:38 +03:00
5a8f990e52 chore(nvim): which-key tweaks 2024-10-25 12:42:38 +03:00
c76c5d08b0 chore(nvim): treesitter config tweaks 2024-10-25 12:42:38 +03:00
b2857e226c chore(nvim): telescope config tweaks 2024-10-25 12:42:38 +03:00
dfbac0c736 chore(nvim): lsp config tweaks, add neoconf, ts_ls 2024-10-25 12:42:38 +03:00
fdd713908c chore(nvim): cmp tweaks, add luasnip snippets 2024-10-25 12:42:37 +03:00
60210c9bec chore(deps): cleanup oh-my-posh config 2024-10-25 12:42:37 +03:00
eaf8d2bdca chore(config): update direnv config 2024-10-25 12:42:37 +03:00
cc00055626 chore(deps): update tool-versions & cargo-package
# Conflicts:
#	base/tool-versions
2024-10-25 12:42:34 +03:00
renovate[bot]
567de68844 feat(github-action): update actions/setup-python ( v5.2.0 → v5.3.0 )
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-24 23:17:20 +00:00
github-actions[bot]
ed0b229757 chore: update pre-commit hooks (#40)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-10-22 09:09:53 +03:00
c8b6243c0b chore(deps): update asdf dependencies 2024-10-17 23:47:05 +03:00
renovate[bot]
21a92eb145 chore(deps): update node to v22.10.0 (#39)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-17 23:38:09 +03:00
8ec317f582 chore: tweaks and cleanup 2024-10-17 23:29:40 +03:00
renovate[bot]
42201d8b68 feat(github-release): update python ( 3.12.7 → 3.13.0 ) (#38)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 10:36:55 +03:00
github-actions[bot]
0c003ae5b9 chore: update pre-commit hooks (#37)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-10-06 15:53:15 +03:00
d383031ec8 chore(docs): update nvim keybindings 2024-10-04 14:50:09 +03:00
renovate[bot]
fa5e5f16da feat(github-action)!: Update peter-evans/create-pull-request ( v6 → v7 ) (#36)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 10:43:47 +03:00
f82396236e chore(asdf): removed eza, lazygit. updated deps. 2024-10-03 01:52:46 +03:00
b127c2514d feat(nvim): another configuration tweak round
added snippets!
2024-10-03 01:51:39 +03:00
renovate[bot]
b06ac3bc0f feat(github-action)!: Update peter-evans/create-pull-request ( v5 → v6 ) (#35)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 01:21:03 +03:00
renovate[bot]
7e4ea90a05 fix(github-release): update python ( 3.12.6 → 3.12.7 ) (#34)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-02 23:35:20 +03:00
github-actions[bot]
d264a33d21 chore: update pre-commit hooks (#33)
Co-authored-by: ivuorinen <ivuorinen@users.noreply.github.com>
2024-10-01 09:26:30 +03:00
224ee56461 fix(workflow): pre-commit, run in the cloud 2024-10-01 08:51:27 +03:00
renovate[bot]
8147490c65 feat(github-action)!: Update peter-evans/create-pull-request ( v4 → v5 ) (#32)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 08:28:44 +03:00
renovate[bot]
c6d501347a feat(github-action)!: Update actions/setup-python ( v4.8.0 → v5.2.0 ) (#31)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 08:20:22 +03:00
renovate[bot]
d8044f2b6a feat(github-action)!: Update actions/checkout ( v3 → v4 ) (#30)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 08:12:02 +03:00
renovate[bot]
1b3fe6d12e feat(github-action): update actions/setup-python ( v4.5.0 → v4.8.0 )
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 21:05:17 +00:00
76b66d8c61 feat(workflow): pre-commit autoupdate 2024-09-30 21:41:56 +03:00
9c8644de17 feat(nvim): cleanup, fixes and helpers 2024-09-30 21:41:35 +03:00
120345b562 chore(nvim): ignore spell file changes 2024-09-30 02:49:16 +03:00
8accd4a60b chore(nvim): clear spell file 2024-09-30 02:42:19 +03:00
8fb03660ad chore(asdf): use system eza 2024-09-30 02:41:53 +03:00
8b2dc74f2a chore(brew): remove upstream removed font casks 2024-09-30 02:41:35 +03:00
8fa63e63bb chore(nvim): cleanup, formatting, fixes 2024-09-30 02:40:01 +03:00
4ca5b63b75 chore(nvim): more tweaks, cleanup and docs 2024-09-26 22:47:12 +03:00
5a59872377 chore(nvim): prefer telescope over fzf, cleanup 2024-09-26 14:16:28 +03:00
38419eda28 feat(nvim): refactoring, docs, keybinds, others 2024-09-26 13:38:31 +03:00
fc85dbaa6c chore(deps): pre-commit hooks update 2024-09-25 15:02:21 +03:00
250e7f5666 feat(nvim): keymaps tweaks, cleanup, docs 2024-09-25 14:52:56 +03:00
8f96922033 chore(asdf): add fzf to go packages 2024-09-25 14:49:26 +03:00
4c4de2dc26 chore(config): tweaks to path, show script name 2024-09-25 14:48:59 +03:00
b8c163e028 chore(deps): update tool-versions 2024-09-25 14:43:29 +03:00
0a974c2a17 chore(asdf): move eza to cargo packages 2024-09-25 14:43:11 +03:00
fd8d72ab38 chore(nvim): cleanup and keybindings 2024-09-23 16:25:54 +03:00
0908a23231 chore(asdf): add sops global version 2024-09-23 10:27:04 +03:00
2e070eed83 chore(docs): update nvim keybindings 2024-09-23 10:26:40 +03:00
e22762255d feat(nvim): configuration, refactoring, fixes 2024-09-23 09:52:11 +03:00
093f58f129 feat: removed nvim-lazy, nvim-kickstart 2024-09-22 04:31:44 +03:00
9b6e39b4af feat(nvim): plugins, cleanup, ign lazy-lock.json 2024-09-22 04:26:02 +03:00
Ismo Vuorinen
6f1e1a0416 feat(nvim): new nvim config (#28)
* feat(nvim): clean config, work in progress
* feat: refactored plugins and configs
* feat: stylua config, ufo, lsp refactor, cleanup
* feat: renamed nvim to nvim-lazy, added alias
* feat: renamed nvim-clean to be nvim, updated alias
2024-09-22 03:52:02 +03:00
36e0f36e06 chore: move to .tool-versions 2024-09-19 17:02:14 +03:00
e2c37d29e8 chore: more cleanup, linting and fixes 2024-09-19 12:40:16 +03:00
78716fa8ce feat(config): few handy date aliases 2024-09-19 09:49:59 +03:00
81e9b20eb6 chore(config): cleanup and removal of duplicates 2024-09-19 09:49:35 +03:00
renovate[bot]
94e58b307b chore(deps): update node to v22.9.0 (#27)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-18 02:43:47 +03:00
98aca096a9 feat(lint): add pre-commit config, yamlignore 2024-09-18 02:29:59 +03:00
121e31c7d4 chore(config): add-submodules.sh to dotbot config 2024-09-18 02:28:58 +03:00
f6bcd10ac5 chore(config): update exports 2024-09-18 02:27:30 +03:00
619c772fcc chore(config): tweak direnv config, hide output 2024-09-18 02:26:34 +03:00
746d44151c chore(workflow): cleanup new-release, tweak cron 2024-09-18 02:24:31 +03:00
b9585209be chore(deps): update yarn packages, fix prettier 2024-09-18 02:23:44 +03:00
930dcf00c4 Revert "chore(config): remove tmux dark-notify"
This reverts commit bb8e3bba56.
2024-09-17 00:17:08 +03:00
bb8e3bba56 chore(config): remove tmux dark-notify 2024-09-17 00:15:47 +03:00
6431c2e6dc chore(nvim): update nvim-kickstart 2024-09-17 00:15:03 +03:00
248eca1ae6 chore(config): tweak rector function 2024-09-17 00:14:46 +03:00
4b1ab2e1b8 chore(nvim): update lazyvim 2024-09-17 00:14:11 +03:00
c0f537439b chore(config): tweak tmux aliases 2024-09-17 00:13:50 +03:00
9ab132d37c chore(config): disable alacritty dark-notify 2024-09-17 00:13:20 +03:00
2b9ddc232b chore(config): tweak oh-my-posh config 2024-09-16 16:42:34 +03:00
1a244ce0b1 chore(deps): asdf update 2024-09-16 09:12:46 +03:00
fdc0f45b23 chore(workflows): tweak gh workflows 2024-09-16 09:12:30 +03:00
3fa90eef3b chore(bin): dfm, update install-* scripts 2024-09-15 17:46:42 +03:00
7ea7c12f0b chore(nvim): update lazyvim 2024-09-15 17:46:13 +03:00
f76492b942 chore(deps): update asdf deps, rearrange order 2024-09-15 17:45:58 +03:00
7947340663 chore(config): alias and shared git config 2024-09-15 17:00:04 +03:00
300c48b1e9 feat(bin): x-term-colors to test term colors 2024-09-15 16:59:38 +03:00
772527cc66 chore(asdf): update versions, clean plugins 2024-09-15 16:58:51 +03:00
renovate[bot]
370fdcbcbe fix(container): update image python ( 3.12.5 → 3.12.6 ) (#26)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-10 09:21:57 +03:00
b32c86bac2 chore(deps): update nvim-kickstart submodule 2024-09-05 10:44:25 +03:00
8d85809b1c fix(dfm): asdf install parameter + asdf updates 2024-09-05 10:36:10 +03:00
7fc40e3eab chore(nvim): update keymaps, update lazyvim 2024-09-04 13:20:59 +03:00
renovate[bot]
1aca769ebf chore(deps): update node to v22.8.0 (#25) 2024-09-04 12:43:33 +03:00
57df4edf6c chore(config): add .phpactor.json to .gitignore 2024-08-29 14:47:28 +03:00
240ac35aa8 chore(config): add brew autocompletion to fpath 2024-08-29 14:46:38 +03:00
ad0ba59b67 chore(deps): upgrade asdf package versions 2024-08-29 14:46:05 +03:00
bbc26e66dd chore: disable antigen tmux, add xdg-ninja alias 2024-08-29 13:19:22 +03:00
1803d41969 feat(config): rework exports, fix virtualenv location 2024-08-29 13:18:17 +03:00
34d547433f feat(asdf): rework installer, add python, markdownlint-cli2 2024-08-29 13:16:20 +03:00
dff4b9a9c5 feat(config): direnv config 2024-08-29 13:15:11 +03:00
c33404eb27 chore(lint): markdown linting fixes, ignore file 2024-08-29 13:14:27 +03:00
99e7578d60 feat(config): oh-my-posh autoupgrade 2024-08-29 13:13:21 +03:00
d8011728c7 chore(config): no more cheat theme 2024-08-29 13:12:30 +03:00
2f67d4a2e2 fix(shell): eza works now, oh-my-zsh was the cause 2024-08-29 13:11:56 +03:00
dependabot[bot]
ef37681087 chore(deps): bump micromatch from 4.0.7 to 4.0.8 (#24) 2024-08-25 11:26:14 +03:00
renovate[bot]
0c014033d1 chore(deps): update @ivuorinen/base-configs to 2.0.0 (#23) 2024-08-25 10:04:17 +03:00
renovate[bot]
14635009d2 chore(deps): update node to v22.7.0 (#22)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-23 09:26:17 +03:00
70118fee52 chore(deps): update asdf tool-versions 2024-08-21 10:54:44 +03:00
ivuorinen
0dce28ea6a chore(git): Update submodules (automated)
asdf v0.14.1
2024-08-20 03:06:19 +00:00
ba15f82302 chore: tweak bashrc, zshrc, alias and exports 2024-08-20 01:24:14 +03:00
d4972ea30d chore(deps): update asdf tool-versions 2024-08-19 11:32:42 +03:00
ed7263dfee chore(shell): disable tmux autostart 2024-08-17 17:39:29 +03:00
4cda063305 chore(config): exports now loaded from .config 2024-08-14 23:46:14 +03:00
d251ea9cdc fix(config): wezterm now sends alt correctly 2024-08-14 23:45:28 +03:00
bc4e906ff6 chore(dfm): check for fd and shfmt 2024-08-10 13:05:38 +03:00
75c36bacf9 chore(docs): update nvim keymaps 2024-08-10 13:04:31 +03:00
e7cda5ac0c feat: wezterm config and docs generator 2024-08-10 13:02:41 +03:00
41024b1eb5 chore(deps): update nvm/node version to 22.6.0 2024-08-09 19:36:24 +03:00
74afeb61c8 chore(nvim): update nvim-kickstart submodule 2024-08-09 19:33:18 +03:00
104bc369bc chore(brew): update and cleanup brewfile 2024-08-09 19:32:56 +03:00
57e63847ce feat(config): gnupg configuration 2024-08-09 19:32:07 +03:00
2dc08e5e51 chore(shell): cleanup zshenv and zshrc 2024-08-09 19:31:25 +03:00
989b5b5111 feat: add ruby 3.3.4 2024-08-09 19:30:17 +03:00
24a5dd1ff6 feat: direnv, move tool-versions to base 2024-08-09 18:59:34 +03:00
5826e35853 chore(deps): update asdf tool-versions 2024-07-30 00:34:14 +03:00
e329868568 fix(bin): alacritty automatic theme changing 2024-07-30 00:22:07 +03:00
dc76fa8914 chore(meta): add .luarc.json 2024-07-28 15:36:04 +03:00
3413365d41 chore(bin): tweak x-path-* scripts 2024-07-28 15:35:50 +03:00
37299f4893 chore(config): tweak exports 2024-07-28 15:35:34 +03:00
71a78c6e0c chore(config): remove herd config 2024-07-26 14:18:24 +03:00
3f8a4deb05 chore(deps): update asdf tool-versions 2024-07-26 14:17:47 +03:00
ffe288aba3 chore(deps): update nvim-kickstart config 2024-07-26 14:17:35 +03:00
28a1fc2831 chore(deps): update asdf tool-versions 2024-07-23 05:09:54 +03:00
28aae89f70 chore: cleanup and fixes 2024-07-23 05:09:30 +03:00
e8fe5c570b chore(meta): update renovate.json 2024-07-23 03:46:08 +03:00
26f6024292 feat(bin): update scripts to function format 2024-07-23 03:45:22 +03:00
4e4692321b chore(deps): update asdf tool-versions 2024-07-23 03:44:06 +03:00
3ea221ccf9 chore(config): tweak cheat config 2024-07-23 03:43:48 +03:00
e7774c4ab1 chore(docs): update nvim keybindings 2024-07-23 03:43:32 +03:00
1f2ca90ca5 feat!: refactor base, config, dfm and scripts 2024-07-23 03:43:12 +03:00
adecceda7a chore(scripts): eval scripts/shared.sh 2024-07-17 10:04:16 +03:00
8a3b2e703c feat(hosts): air wallpaper 2024-07-17 09:43:41 +03:00
1ee726e30c chore(shell): remove nvm plugin from zshrc 2024-07-17 09:43:18 +03:00
9857c8eb00 feat(asdf): move rust to asdf 2024-07-17 09:41:41 +03:00
a919d9544e chore: tweaks and reworked README 2024-07-17 09:40:53 +03:00
7bc7921a17 chore: rename scripts/shared 2024-07-17 09:39:57 +03:00
735807f245 chore: cleanup 2024-07-16 23:02:13 +03:00
6d531e2d40 chore(deps): update asdf packages 2024-07-16 23:01:52 +03:00
77f89c0f48 feat(asdf): manage go packages with asdf 2024-07-16 23:01:38 +03:00
7f3c7b7e1c feat: prettier-plugin-sh + tweaks and codefixes 2024-07-16 23:00:36 +03:00
fc16b8231e feat!: asdf is now a git submodule 2024-07-16 22:58:29 +03:00
64a626d5c4 chore(asdf): update deps 2024-07-13 20:56:39 +00:00
54816c2ce9 chore(shell): new aliases 2024-07-13 16:21:43 +03:00
3acaea5611 chore(asdf): update packages 2024-07-10 09:48:31 +00:00
e4a313abe7 chore(asdf): update packages 2024-07-10 11:05:30 +03:00
0b1c75cbdd chore(dotbot): create gnupg folder 2024-07-09 03:33:28 +03:00
cab0f4da49 chore(asdf): update asdfrc 2024-07-09 03:33:02 +03:00
cef15eddce chore(asdf): update tools, fix installer 2024-07-09 03:20:50 +03:00
f8987818b8 chore(asdf): cleanup 2024-07-08 10:15:48 +03:00
renovate[bot]
15d1f6a59a fix(github-action): update amannn/action-semantic-pull-request ( v5.5.2 → v5.5.3 )
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-06 17:43:58 +00:00
ba586fca7d feat(workflows): semantic-pr 2024-07-06 20:43:21 +03:00
Ismo Vuorinen
d93bc7aae3 feat(asdf): asdf and configuration (#19)
* chore(shell): configuration tweaks
* feat(asdf): add asdf, settings & most of the deps
2024-07-06 20:19:15 +03:00
77b0428cec chore(docs): update nvim keybindings 2024-06-30 14:17:35 +03:00
387432b27b chore(ssh): vine now accepts my id_rsa key 2024-06-25 20:38:59 +03:00
88fa706b75 chore(docs): update nvim keybindings 2024-06-25 09:53:48 +03:00
96ce9fec0c chore(docs): update tmux keybinding 2024-06-25 01:43:10 +03:00
66d5fbc8ac chore(meta): add light and dark modes to readme 2024-06-25 01:42:23 +03:00
cc3ceb4176 chore(meta): update screenshots 2024-06-25 01:30:29 +03:00
0f9c69bb65 chore(meta): update oh-my-posh screenshot 2024-06-25 01:25:24 +03:00
c754746b9f chore(scripts): extract oh-my-posh screenshotter 2024-06-25 01:24:44 +03:00
df5cab6a88 fix(scripts): some typoes in scripts/shared.sh 2024-06-25 01:23:22 +03:00
b9ddba4666 fix(scripts): oh-my-posh config path 2024-06-25 01:16:38 +03:00
77e92ef15e chore(scripts): tweak ntfy download path 2024-06-25 01:15:52 +03:00
383bc2b052 chore(scripts): tweak cargo updates 2024-06-25 01:15:15 +03:00
0e109c3da3 fix(config): oh-my-posh: remove shell_integration 2024-06-25 01:14:16 +03:00
50abd5aa30 feat(alacritty): update theme automagically 2024-06-23 01:23:37 +03:00
082e27fb0a chore(nvim-kickstart): update submodule 2024-06-23 01:22:26 +03:00
e05e68f5d1 fix(bin): msgr typo 2024-06-20 00:36:23 +03:00
074c169e3c feat(alacritty): theme changing improvements 2024-06-20 00:36:01 +03:00
636ea749ac chore(nvim): update lazyvim.json 2024-06-19 15:41:25 +03:00
da2a2e0f81 chore(nvim-kickstart): update submodule 2024-06-19 15:34:00 +03:00
0ef12b61ac feat(alacritty): change theme based on dark-notify 2024-06-19 15:31:44 +03:00
c6fc3db52f chore(alacritty): clean up config 2024-06-19 15:31:03 +03:00
1bde81a673 chore(shell): update omp cfg path to dotfiles 2024-06-18 08:50:10 +03:00
d60248f356 chore(tmux): tweak light status-current-style bg 2024-06-17 16:18:34 +03:00
40e8b9443b chore(tmux): cleanup, fixes, theme tweaks 2024-06-17 03:55:03 +03:00
8a032a2804 chore(deps): update yarn packages 2024-06-17 03:53:30 +03:00
367be373c4 fix(zsh): bring back tmux and zsh-titles 2024-06-17 03:53:13 +03:00
cf2f98d5c0 chore(zsh): tweak config 2024-06-16 08:52:44 +03:00
a3704f7db9 chore(ssh): add turing nodes to ssh config 2024-06-15 15:40:50 +03:00
7c359ffea0 chore(tmux): tweak config 2024-06-15 15:40:01 +03:00
9542624323 chore(zsh): tweak zshrc and move omp conf to omp/ 2024-06-15 15:39:41 +03:00
ivuorinen
b0d74bad1a chore(git): Update submodules (automated)
tmux/tmux-dark-notify v0.1.1
2024-06-13 03:04:48 +00:00
fcade15933 chore(nvim): update nvim-kickstart 2024-06-09 16:00:01 +03:00
6860909d39 chore(brew): Update bundle 2024-06-09 15:58:11 +03:00
493ad17c15 feat: antidot
Cleans up your $HOME from those pesky dotfiles
2024-06-09 15:57:41 +03:00
ivuorinen
0495ac1ea8 chore(git): Update submodules (automated)
tmux/tmux-dark-notify v0.1.0
2024-06-08 03:04:45 +00:00
9b5d372a74 chore: tweaks, updates 2024-06-07 11:38:44 +03:00
9d04343a26 chore(tmux): update tmux-dark-notify 2024-06-07 11:38:30 +03:00
ivuorinen
4aa0fba682 chore(git): Update submodules (automated)
tmux/tmux-dark-notify v0.1.0
2024-06-07 03:05:14 +00:00
ad6482b34a chore(nvim): update nvim-kickstart 2024-06-06 22:56:40 +03:00
113e27734a chore(nvim): config tweaks, lazyvim updates 2024-06-06 22:54:45 +03:00
378abfe896 feat(tmux): tmux-dark-notify + themes 2024-06-06 22:53:28 +03:00
eadf1e5c84 chore(nvim): update nvim-kickstart 2024-06-06 21:09:02 +03:00
ea4d185fb4 chore(brew): Update bundle 2024-06-06 21:06:58 +03:00
22bd8ca870 chore(alacritty): hide_when_typing = false 2024-06-06 10:45:34 +03:00
7ee81b005c chore(tmux): tweak visual bell and activity msg 2024-06-06 10:45:34 +03:00
3faf8224e8 chore(nvim): update nvim-kickstart submodule 2024-06-04 14:39:27 +03:00
d028f37c00 chore(nvim): update lazyvim.json extras 2024-06-04 14:39:02 +03:00
1df05ac0ba feat: ssh config for demons 2024-06-03 12:38:54 +03:00
e54e202281 chore(tmux): update config 2024-06-02 21:12:27 +03:00
c226943aa9 chore(nvim): update lazyvim packages 2024-06-02 21:11:56 +03:00
dda4b65458 fix: huskyrc nvm location 2024-05-22 16:47:14 +03:00
7d564d0b4d feat: if exports-secrets exists, source it 2024-05-22 16:46:34 +03:00
bc30e5f7a6 chore(config): tweak alacritty configuration 2024-05-16 12:19:56 +03:00
9e2f7e8f1b chore(config): change alacritty decorations to Full 2024-05-16 02:20:31 +03:00
7b47e49804 chore(config): ssh add ServerAlive settings 2024-05-16 02:17:12 +03:00
1be7649122 chore(tmux): tweak config, move status to left 2024-05-16 02:16:00 +03:00
453d54bc7f chore(config): tweak alacritty config 2024-04-26 12:45:02 +03:00
7ede7b9ac1 chore: update kickstart.nvim 2024-04-22 08:56:49 +03:00
a90743a09c feat(bin): x-gh-get-latest-* release and version helpers 2024-04-21 14:56:41 +03:00
185d28e587 feat: kickstart.nvim, and aliases 2024-04-21 14:55:36 +03:00
renovate[bot]
37f023351d chore(deps): update yarn to v1.22.22
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-17 05:10:25 +00:00
39523e9234 chore: add packageManager to package.json 2024-04-16 12:20:06 +03:00
dependabot[bot]
1f8fc0d289 chore(deps): bump tar from 6.2.0 to 6.2.1 (#16) 2024-04-12 08:48:11 +03:00
c083d2a20a feat(dfm): Add brew leaves and clean commands 2024-04-08 02:51:32 +03:00
75c6a0bccd chore(shell): update exports-apps to include pyenv 2024-04-08 02:49:48 +03:00
5ce86b3229 chore(nvim): update lazyvim.json 2024-04-08 02:49:08 +03:00
885189e4ff chore(nvim): update lazyvim.json 2024-03-09 10:21:32 +02:00
8f3f4d7ed9 chore(brew): update brewfile, add env to skip mas 2024-03-09 10:21:05 +02:00
03a1b5fb85 chore(brew): Remove unused formula and casks 2024-03-06 09:59:44 +02:00
7b83f6e943 chore(deps): upgraded yarn packages 2024-03-06 09:11:40 +02:00
261ff41e28 feat(nvim): neo-tree should show interesting files 2024-03-04 20:57:27 +02:00
36ad2a2ad9 chore(config): Cleanup 2024-03-03 16:39:22 +02:00
ivuorinen
a4d5b87272 chore(git): Update submodules (automated)
tmux/tmux-continuum v3.1.0
2024-03-02 03:04:30 +00:00
f953bff183 chore(git): Update submodules 2024-03-01 13:39:17 +02:00
aba33a20a4 fix: Use pyenv instead of local/bin/python hack 2024-03-01 12:43:53 +02:00
a20e1e1419 fix(tmux): Use tilde instead of $HOME in tmux.conf 2024-03-01 12:42:59 +02:00
8328f4cd19 feat(tmux): Use my fork of tmux-window-name 2024-03-01 12:42:04 +02:00
4383b130a9 chore(brew): Clean up and update Brewfile 2024-03-01 12:11:56 +02:00
8143999f2a chore: update cheat/tldr submodule 2024-02-23 20:31:28 +02:00
523bec769f feat(config): add tldr to cheat as a submodule 2024-02-21 14:21:29 +02:00
dee215a29e chore(config): remove tldr from cheatsheets 2024-02-21 14:15:20 +02:00
755ac0fa2c feat(config): alias for trivy_scan using docker 2024-02-21 13:44:09 +02:00
a69f1f9f9c chore(deps): updated yarn packages 2024-02-19 03:31:15 +02:00
934ecb2335 chore(tmux): tweak configuration 2024-02-19 03:28:29 +02:00
4b6b887ca8 feat(shell): use oh-my-posh if available 2024-02-12 14:15:37 +02:00
fb0b9044eb chore(shell): tweak git segment in ohmyposh config 2024-02-08 23:05:09 +02:00
74ca882192 chore(shell): tweaked oh-my-posh git output 2024-02-08 14:46:43 +02:00
227 changed files with 13888 additions and 7804 deletions

View File

@@ -1 +1 @@
extends @ivuorinen/browserslist-config
extends @ivuorinen/browserslist-config

View File

@@ -8,6 +8,12 @@ indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
max_line_length = 100
[*.lua]
max_line_length = 120
[*.php]
indent_size = 4
@@ -19,7 +25,9 @@ indent_size = 1
indent_size = 1
indent_style = tab
[{local/bin/*,**/*.sh,**/zshrc,config/*}]
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
indent_size = 2
tab_width = 2
shell_variant = bash # --language-variant
binary_next_line = true
switch_case_indent = true # --case-indent
@@ -27,3 +35,9 @@ space_redirects = true
keep_padding = false
function_next_line = true # --func-next-line
# Ignore the entire "third_party" directory when calling shfmt on directories,
# such as "shfmt -l -w .". When formatting files directly,
# like "shfmt -w third_party/foo.sh" or "shfmt --filename=third_party/foo.sh",
# the ignore logic is applied only when the --apply-ignore flag is given.
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**,config/tmux/plugins/**}]
ignore = true

1
.envrc Normal file
View File

@@ -0,0 +1 @@
use asdf

5
.gitattributes vendored
View File

@@ -220,8 +220,3 @@ git/* text
**/alias text
ssh/* text
# Git Crypt special files
*-secret filter=git-crypt diff=git-crypt
*.key filter=git-crypt diff=git-crypt
secrets/** filter=git-crypt diff=git-crypt

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
* @ivuorinen

68
.github/README.md vendored
View File

@@ -6,7 +6,10 @@ aware of yet. As I find more interesting tools, configs and other stuff,
this repository will live accordingly.
Please for the love of everything good do not use these 1:1 as your own dotfiles,
fork or download the repo as a zip and go from there with your own configs.
fork or download the repository as a zip and go from there with your own configs.
It would be nice if you'd add an issue linking to your fork or repo so I can
see what interesting stuff you've done with it. Sharing is caring.
## Setup
@@ -23,7 +26,11 @@ fork or download the repo as a zip and go from there with your own configs.
## The looks
![screenshot of tmux with nvim editing this repo](./screenshots/tmux-nvim.png)
![screenshot of the oh-my-posh shell](./screenshots/oh-my-posh.png)
![screenshot of light version of tmux with nvim editing this repository](./screenshots/tmux-nvim-kickstart-light.png)
![screenshot of dark version of tmux with nvim editing this repository](./screenshots/tmux-nvim-kickstart-dark.png)
## Interesting files and locations
@@ -31,7 +38,7 @@ fork or download the repo as a zip and go from there with your own configs.
| Path | Description |
| ------------------- | -------------------------------------------- |
| `.github` | GitHub Repository configuration files. |
| `.github` | GitHub Repository configuration files, meta. |
| `hosts/{hostname}/` | Configs that should apply to that host only. |
| `local/bin` | Helper scripts that I've collected or wrote. |
| `scripts` | Setup scripts. |
@@ -45,9 +52,11 @@ fork or download the repo as a zip and go from there with your own configs.
| `local/` | `.local/` | XDG Base folder: `bin`, `share` and `state` |
| `ssh/` | `.ssh/` | SSH Configurations. |
### dfm - the dotfiles manager
### `dfm` - the dotfiles manager
`.local/bin/dfm` is a shell script that has some tools that help with dotfiles management.
[`.local/bin/dfm`][dfm] is a shell script that has some tools that help with dotfiles management.
Running `dfm` gives you a list of available commands.
## Configuration
@@ -62,51 +71,8 @@ The folder structure follows [XDG Base Directory Specification][xdg] where possi
| `$XDG_DATA_HOME` | `$HOME/.local/share` | User-specific data files |
| `$XDG_STATE_HOME` | `$HOME/.local/state` | App state that should persist between restarts |
#### XDG_BIN_HOME (`$HOME/.local/bin`)
`$XDG_BIN_HOME` defines directory that contains local binaries.
User-specific executable files may be stored in `$HOME/.local/bin`.
Distributions should ensure this directory shows up in the UNIX `$PATH`
environment variable, at an appropriate place.
#### XDG_DATA_HOME (`$HOME/.local/share`)
`$XDG_DATA_HOME` defines the base directory relative to which
user-specific _data files_ should be stored.
If `$XDG_DATA_HOME` is either not set or empty,
a default equal to `$HOME/.local/share` should be used.
#### XDG_CONFIG_HOME (`$HOME/.config`)
`$XDG_CONFIG_HOME` defines the base directory relative to which
user-specific _configuration files_ should be stored.
If `$XDG_CONFIG_HOME` is either not set or empty,
a default equal to `$HOME/.config` should be used.
#### XDG_STATE_HOME (`$HOME/.local/state`)
`$XDG_STATE_HOME` defines the base directory relative to which
user-specific _state files_ should be stored.
If `$XDG_STATE_HOME` is either not set or empty,
a default equal to `$HOME/.local/state` should be used.
The `$XDG_STATE_HOME` contains _state data_ that should
_persist between (application) restarts_, but that is not important or
portable enough to the user that it should be stored in `$XDG_DATA_HOME`.
- It may contain:
- actions history (logs, history, recently used files, …)
- current state of the application that can be reused
on a restart (view, layout, open files, undo history, …)
#### XDG_DATA_DIRS
`$XDG_DATA_DIRS` defines the preference-ordered set of base directories
to search for data files in addition to the `$XDG_DATA_HOME` base directory.
The directories in `$XDG_DATA_DIRS` should be seperated with a colon ':'.
Please see [docs/folders.md][docs-folders] for more information.
[dfm]: https://github.com/ivuorinen/dotfiles/blob/main/local/bin/dfm
[docs-folders]: https://github.com/ivuorinen/dotfiles/blob/main/docs/folders.md
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

View File

@@ -1,4 +1,4 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["local>ivuorinen/.github:renovate-config"]
"extends": ["local>ivuorinen/renovate-config"]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@@ -1,3 +1,4 @@
---
name: Debug Changelog # Workflow name displayed on GitHub
on:
workflow_dispatch: # Trigger manually

View File

@@ -1,3 +1,4 @@
---
name: reviewdog
on: [push]
jobs:

View File

@@ -1,21 +1,24 @@
name: Release Daily State # Workflow name displayed on GitHub
---
name: Release Daily State
on:
workflow_dispatch: # Trigger manually
workflow_dispatch:
schedule:
- cron: '30 20 * * *' # UTC is 2-3 hours behind Europe/Helsinki, my timezone
permissions:
contents: write
- cron: '0 21 * * *' # 00:00 at Europe/Helsinki
jobs:
new-daily-release:
runs-on: self-hosted
permissions:
contents: write
outputs:
created: ${{ steps.daily-version.outputs.created }}
version: ${{ steps.daily-version.outputs.version }}
steps:
- uses: actions/checkout@v4 # Checkout our working repository
- uses: actions/checkout@v4
- name: Create tag if necessary
uses: fregante/daily-version-action@v2
id: daily-version
- name: Create changelog text
if: steps.daily-version.outputs.created
id: changelog
@@ -23,6 +26,7 @@ jobs:
with:
token: ${{ secrets.GITHUB_TOKEN }}
config_file: .github/tag-changelog-config.js
- name: Create release
if: steps.daily-version.outputs.created
uses: actions/create-release@latest

View File

@@ -0,0 +1,24 @@
---
name: Pre-commit autoupdate
on:
schedule:
# At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1,4"
workflow_dispatch:
jobs:
auto-update:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5.3.0
- run: pip install pre-commit && pre-commit autoupdate
- uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: update/pre-commit-hooks
title: "chore: update pre-commit hooks"
commit-message: "chore: update pre-commit hooks"
body: Update versions of pre-commit hooks to latest version.

19
.github/workflows/semantic-pr.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
---
name: Semantic PR
on:
pull_request_target:
types:
- opened
- edited
- synchronize
jobs:
semantic-pr:
runs-on: self-hosted
steps:
- uses: amannn/action-semantic-pull-request@v5.5.3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
validateSingleCommit: true

View File

@@ -1,13 +1,16 @@
---
name: Update submodules
on:
schedule: [{ cron: 0 3 * * * }]
schedule:
# At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1,4"
workflow_dispatch:
permissions:
contents: write
issues: write
pull-requests: write
jobs:
update-submodules:
permissions:
contents: write
issues: write
pull-requests: write
runs-on: self-hosted
steps:
- name: Checkout repository

37
.gitignore vendored
View File

@@ -1,24 +1,35 @@
Brewfile.lock.json
config/nvim/lazy-lock.json
*.log
!.gitkeep
*-secret
*.bak
*.log
*.socket
*cache
.env
.idea
.nfs*
.vscode
Brewfile.lock.json
antidote_plugins.zsh
config/alacritty/theme-active.toml
config/cheat/cheatsheets/pure-bash-bible/*
config/cheat/cheatsheets/tldr/*
config/git/credentials
config/gnupg/S.*
config/gnupg/private-keys-v1.d
config/gnupg/s
config/iterm2/AppSupport
config/npm/npmrc
config/nvim/lazy-lock.json
config/nvim/spell/*
!config/nvim/spell/.gitkeep
config/zed/*
!config/zed/settings.json
config/zsh/.zcompdump
iTermServer-*
lazy-lock.json
local/share/fonts/*
local/bin/asdf/plugins/*
lock
node_modules
ssh/local.d/*
!ssh/local.d/.gitkeep
!.gitkeep
.env
local/share/fonts/*
node_modules
.nfs*
*.socket
iTermServer-*
lock
config/iterm2/AppSupport

46
.gitmodules vendored
View File

@@ -1,4 +1,4 @@
# vim: set expandtab:
# vim: noexpandtab filetype=gitconfig
[submodule "dotbot"]
path = tools/dotbot
url = https://github.com/anishathalye/dotbot.git
@@ -23,35 +23,69 @@
path = config/tmux/plugins/tmux-continuum
url = https://github.com/tmux-plugins/tmux-continuum
ignore = dirty
[submodule "tmux/tmux-resurrect"]
path = config/tmux/plugins/tmux-resurrect
url = https://github.com/tmux-plugins/tmux-resurrect
ignore = dirty
[submodule "tmux/tmux-sensible"]
path = config/tmux/plugins/tmux-sensible
url = https://github.com/tmux-plugins/tmux-sensible.git
ignore = dirty
[submodule "tmux/tmux-sessionist"]
path = config/tmux/plugins/tmux-sessionist
url = https://github.com/tmux-plugins/tmux-sessionist.git
ignore = dirty
[submodule "tmux/tmux-yank"]
path = config/tmux/plugins/tmux-yank
url = https://github.com/tmux-plugins/tmux-yank.git
ignore = dirty
[submodule "tmux/tmux-window-name"]
path = config/tmux/plugins/tmux-window-name
url = https://github.com/ofirgall/tmux-window-name.git
url = https://github.com/ivuorinen/tmux-window-name.git
ignore = dirty
[submodule "dotbot-pip"]
path = tools/dotbot-pip
url = https://github.com/sobolevn/dotbot-pip.git
ignore = dirty
[submodule "tmux/tmux-suspend"]
path = config/tmux/plugins/tmux-suspend
url = https://github.com/MunifTanjim/tmux-suspend.git
ignore = dirty
[submodule "tmux/tmux-mode-indicator"]
path = config/tmux/plugins/tmux-mode-indicator
url = https://github.com/MunifTanjim/tmux-mode-indicator.git
ignore = dirty
[submodule "tmux/tmux-current-pane-hostname"]
path = config/tmux/plugins/tmux-current-pane-hostname
url = https://github.com/soyuka/tmux-current-pane-hostname.git
ignore = dirty
[submodule "cheat-tldr"]
path = config/cheat/cheatsheets/tldr
url = https://github.com/ivuorinen/cheatsheet-tldr.git
ignore = dirty
[submodule "tmux/tmux-dark-notify"]
path = config/tmux/plugins/tmux-dark-notify
url = https://github.com/erikw/tmux-dark-notify.git
ignore = dirty
[submodule "asdf"]
path = local/bin/asdf
url = https://github.com/asdf-vm/asdf.git
ignore = dirty
[submodule "antidote"]
path = tools/antidote
url = https://github.com/mattmc3/antidote.git
shallow = true
ignore = dirty
[submodule "dotbot-asdf"]
path = tools/dotbot-asdf
url = https://github.com/sobolevn/dotbot-asdf
ignore = dirty

View File

@@ -1,6 +1,7 @@
.git/**
config/cheat/cheatsheets/community/**
tools/dotbot/**
node_modules
tools/antidote/**
tools/dotbot-brew/**
tools/dotbot-include/**
node_modules
tools/dotbot/**

5
.luarc.json Normal file
View File

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

View File

@@ -1,6 +1,8 @@
# only care about files that are under our control
# only care about files that are directly under our control
config/cheat/cheatsheets/community/*
config/cheat/cheatsheets/tldr/*
config/tmux/plugins/*
local/bin/asdf/*
tools/*
node_modules/*

2
.nvmrc
View File

@@ -1 +1 @@
lts/*
22.13.1

59
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,59 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: requirements-txt-fixer
- id: detect-aws-credentials
- id: detect-private-key
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
- id: check-case-conflict
- id: check-merge-conflict
- id: check-executables-have-shebangs
- id: check-shebang-scripts-are-executable
- id: check-symlinks
- id: check-toml
- id: check-xml
- id: check-yaml
args: [--allow-multiple-documents]
- id: end-of-file-fixer
- id: mixed-line-ending
args: [--fix=auto]
- id: pretty-format-json
args: [--autofix, --no-sort-keys]
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.43.0
hooks:
- id: markdownlint
args: [-c, .markdownlint.json, --fix]
- repo: https://github.com/adrienverge/yamllint
rev: v1.35.1
hooks:
- id: yamllint
- repo: https://github.com/koalaman/shellcheck-precommit
rev: v0.10.0
hooks:
- id: shellcheck
- repo: https://github.com/scop/pre-commit-shfmt
rev: v3.10.0-2
hooks:
- id: shfmt
- repo: https://github.com/rhysd/actionlint
rev: v1.7.7
hooks:
- id: actionlint
- repo: https://github.com/renovatebot/pre-commit-hooks
rev: 39.117.2
hooks:
- id: renovate-config-validator
- repo: https://github.com/JohnnyMorganz/StyLua
rev: v2.0.2
hooks:
- id: stylua # or stylua-system / stylua-github

View File

@@ -1,8 +1,14 @@
# vim: ft=gitignore
.mypy_cache/*
tools/dotbot*
local/bin/antigen.zsh
config/cheat/cheatsheets/community
config/tmux/plugins/*
lazy-lock.json
Brewfile.lock.json
config/cheat/cheatsheets/community
config/cheat/cheatsheets/tldr
config/fzf/*
config/nvim/*
config/tmux/plugins/*
config/zsh/*
lazy-lock.json
local/bin/antigen.zsh
local/bin/asdf
tools/antidote/*
tools/dotbot*

View File

@@ -1 +1 @@
3.12
3.13.1

View File

@@ -24,3 +24,7 @@ disable=SC1091
# SC2174: When used with -p, -m only applies to the deepest directory.
# https://github.com/koalaman/shellcheck/wiki/SC2174
disable=SC2174
# SC2016: Expressions don't expand in single quotes, use double quotes for that.
# https://www.shellcheck.net/wiki/SC2016
disable=SC2016

View File

@@ -9,18 +9,25 @@ git submodule add --name dotbot-include \
-f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
git submodule add --name dotbot-pip \
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
git submodule add --name dotbot-asdf \
-f https://github.com/sobolevn/dotbot-asdf tools/dotbot-asdf
# other repos
git submodule add --name cheat-community \
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
git submodule add --name cheat-tldr \
-f https://github.com/ivuorinen/cheatsheet-tldr.git config/cheat/cheatsheets/tldr
git submodule add --name asdf \
-f https://github.com/asdf-vm/asdf.git local/bin/asdf
git submodule add --name antidote \
--depth 1 \
-f https://github.com/mattmc3/antidote.git tools/antidote
# tmux plugin manager and plugins
git submodule add --name tmux/tmux-continuum \
-f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum
git submodule add --name tmux/tmux-mode-indicator \
-f https://github.com/MunifTanjim/tmux-mode-indicator.git config/tmux/plugins/tmux-mode-indicator
git submodule add --name tmux/tmux-resurrect \
-f https://github.com/tmux-plugins/tmux-resurrect config/tmux/plugins/tmux-resurrect
git submodule add --name tmux/tmux-sensible \
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
git submodule add --name tmux/tmux-sessionist \
@@ -28,20 +35,28 @@ git submodule add --name tmux/tmux-sessionist \
git submodule add --name tmux/tmux-suspend \
-f https://github.com/MunifTanjim/tmux-suspend.git config/tmux/plugins/tmux-suspend
git submodule add --name tmux/tmux-window-name \
-f https://github.com/ofirgall/tmux-window-name.git config/tmux/plugins/tmux-window-name
-f https://github.com/ivuorinen/tmux-window-name.git config/tmux/plugins/tmux-window-name
git submodule add --name tmux/tmux-yank \
-f https://github.com/tmux-plugins/tmux-yank.git config/tmux/plugins/tmux-yank
git submodule add --name tmux/tmux-current-pane-hostname \
-f https://github.com/soyuka/tmux-current-pane-hostname.git config/tmux/plugins/tmux-current-pane-hostname
git submodule add --name tmux/tmux-dark-notify \
-f https://github.com/erikw/tmux-dark-notify.git config/tmux/plugins/tmux-dark-notify
# Takes submodules and sets them to ignore all changes
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
echo "Ignoring submodule changes for submodule.${MODULE}..."
git config "submodule.${MODULE}.ignore" all
done
# Mark certain repositories shallow
git config -f .gitmodules submodule.antidote.shallow true
# remove old submodules
[ -d "config/tmux/plugins/tpm" ] && rm -rf config/tmux/plugins/tpm
[ -d "config/tmux/plugins/tmux" ] && rm -rf config/tmux/plugins/tmux
[ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus
[ -d "config/tmux/plugins/tmux-resurrect" ] && rm -rf config/tmux/plugins/tmux-resurrect
[ -d "tools/dotbot-crontab" ] && rm -rf tools/dotbot-crontab
[ -d "tools/dotbot-snap" ] && rm -rf tools/dotbot-snap
[ -d "config/nvim-kickstart" ] && rm -rf config/nvim-kickstart

View File

@@ -1,27 +1,15 @@
# this is my bashrc config. there are many like it, but this one is mine.
# shellcheck shell=bash
# Defaults
export DOTFILES="$HOME/.dotfiles"
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$PATH"
export SHARED_SCRIPTS_SOURCED=0
# Explicitly set XDG folders
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
source "$DOTFILES/config/shared.sh"
# custom variables
export XDG_BIN_HOME="$HOME/.local/bin"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_RUNTIME_DIR="$HOME/.local/run"
# Paths
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$HOME/.local/go/bin:$XDG_DATA_HOME/cargo/bin:$PATH"
source "$DOTFILES/config/exports"
source "$DOTFILES/config/functions"
source "$DOTFILES/config/alias"
x-load-configs
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
fi
# shellcheck source=../config/fzf/fzf.bash
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
@@ -30,9 +18,10 @@ x-load-configs
# Import ssh keys in keychain
ssh-add -A 2>/dev/null
x-have rbenv && {
eval "$(rbenv init - bash)"
x-have antidot && {
eval "$(antidot init)"
}
eval "$(starship init bash)"
source "$DOTFILES/config/alias"
PROMPT_DIRTRIM=3
PROMPT_COMMAND='PS1_CMD1=$(git branch --show-current 2>/dev/null)'
PS1='\[\e[95m\]\u\[\e[0m\]@\[\e[38;5;22;2m\]\h\[\e[0m\] \[\e[38;5;33m\]\w\[\e[0m\] \[\e[92;2m\]${PS1_CMD1}\n\[\e[39m\]➜\[\e[0m\] '

2
base/envrc Normal file
View File

@@ -0,0 +1,2 @@
use node
use asdf

View File

@@ -1,6 +1,4 @@
#!/bin/env bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.config/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

6
base/ignore Normal file
View File

@@ -0,0 +1,6 @@
Applications/
Library/
Movies/
Music/
Pictures/
Google Drive/

1
base/nvmrc Normal file
View File

@@ -0,0 +1 @@
lts/*

19
base/tool-versions Normal file
View File

@@ -0,0 +1,19 @@
golang 1.23.4
rust 1.83.0
direnv 2.35.0
fd 10.2.0
1password-cli 2.30.3
age 1.2.1
dotenv-linter 3.3.0
editorconfig-checker 2.8.0
github-cli 2.64.0
hadolint 2.12.0
kubectl 1.32.0
pre-commit 4.0.1
ripgrep 14.1.1
shellcheck 0.10.0
shfmt 3.10.0
terragrunt 0.71.1
tf-summarize 0.3.14
yamllint 1.35.1
yq 4.44.6

View File

@@ -1,19 +0,0 @@
# shellcheck shell=bash
# vim: filetype=zsh
export PATH="$HOME/.local/bin:$HOME/.dotfiles/local/bin:$HOME/.local/go/bin:$PATH"
export DOTFILES="$HOME/.dotfiles"
# Explicitly set XDG folders
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
# custom variables
export XDG_BIN_HOME="$HOME/.local/bin"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_RUNTIME_DIR="$HOME/.local/run"
source "$DOTFILES/config/exports"

138
base/zshrc Executable file → Normal file
View File

@@ -1,104 +1,62 @@
# this is my zsh config. there are many like it, but this one is mine.
# https://zsh.sourceforge.io/Intro/intro_3.html
# shellcheck shell=bash
# export VERBOSE=1
# export DEBUG=1
autoload -U promptinit; promptinit
export DOTFILES="$HOME/.dotfiles"
LOCAL_SHARE="$HOME/.local/share"
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$LOCAL_SHARE/nvim/mason/bin:$LOCAL_SHARE/bob/nvim-bin:$LOCAL_SHARE/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
export SHARED_SCRIPTS_SOURCED=0
# Explicitly set XDG folders
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
source "$DOTFILES/config/shared.sh"
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
# custom variables
export XDG_BIN_HOME="$HOME/.local/bin"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_RUNTIME_DIR="$HOME/.local/run"
ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$HOME/.local/go/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
source "$DOTFILES/config/zsh/antidote.zsh"
# source "$DOTFILES/config/zsh/prompt.zsh"
x-load-configs
# Function to source FZF configuration
source_fzf_config()
{
local fzf_config="${DOTFILES}/config/fzf/fzf.zsh"
if [[ -f "$fzf_config" ]]; then
# shellcheck source=config/fzf/fzf.zsh
source "$fzf_config"
fi
}
export COMPLETION_WAITING_DOTS=true
# Function to set up tmux window name plugin if tmux is active
setup_tmux_window_name_plugin()
{
if [[ -n "$TMUX" ]]; then
local tmux_window_name_plugin="$TMUX_PLUGINS/tmux-window-name/scripts/rename_session_windows.py"
if [[ -f "$tmux_window_name_plugin" ]]; then
tmux_window_name()
{
($tmux_window_name_plugin &)
}
add-zsh-hook chpwd tmux_window_name
tmux_window_name
fi
fi
}
if type brew &> /dev/null; then
eval "$(brew shellenv)"
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
if [[ -n $GHOSTTY_RESOURCES_DIR ]]; then
source "$GHOSTTY_RESOURCES_DIR"/shell-integration/zsh/ghostty-integration
fi
export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
source_fzf_config
setup_tmux_window_name_plugin
x-have antidot && eval "$(antidot init)"
# Add completion scripts to zsh path
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
autoload -Uz compinit bashcompinit
compinit -d $ZSH_COMPDUMP
bashcompinit
# Try to load antigen, if present
ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
# shellcheck source=../../.local/bin/antigen.zsh
[[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH"
# antigen is present
antigen use oh-my-zsh
export ZSH_TMUX_AUTOSTART=true
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
export ZSH_TMUX_UNICODE=true
export ZSH_TMUX_AUTOQUIT=false
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
export NVM_DIR="$XDG_CONFIG_HOME/nvm"
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
# z, the zsh version
export ZSHZ_DATA="$XDG_STATE_HOME/z"
antigen bundle z
# these should be always available
antigen bundle tmux
antigen bundle colored-man-pages
antigen bundle command-not-found
antigen bundle ssh-agent
antigen bundle jreese/zsh-titles
antigen bundle zsh-users/zsh-completions
# these should be available if there's need
# x-have brew && antigen bundle brew
# x-have php && antigen bundle php
x-have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
# nvm is a strange beast
zstyle ':omz:plugins:nvm' autoload yes
antigen bundle nvm
# antigen bundle "$DOTFILES/config/zsh/plugins/nvm-auto-use"
# nice to have stuff
# antigen bundle gcloud
# this needs to be the last item
antigen bundle zsh-users/zsh-syntax-highlighting
antigen apply
# shellcheck source=../config/fzf/fzf.zsh
[ -f "${DOTFILES}/config/fzf/fzf.zsh" ] \
&& source "${DOTFILES}/config/fzf/fzf.zsh"
x-have rbenv && {
eval "$(rbenv init - zsh)"
}
# Run only if tmux is active
[[ -n "$TMUX" ]] && {
# Autoupdate tmux window name
TMUX_WINDOW_NAME_PLUGIN="$DOTFILES/config/tmux/plugins/tmux-window-name/scripts/rename_session_windows.py"
[ -f "$TMUX_WINDOW_NAME_PLUGIN" ] && {
tmux-window-name()
{
($TMUX_WINDOW_NAME_PLUGIN &)
}
add-zsh-hook chpwd tmux-window-name
tmux-window-name
}
}
# eval "$(starship init zsh)"
eval "$(oh-my-posh init zsh --config $XDG_CONFIG_HOME/oh-my-posh.omp.json)"
source "$DOTFILES/config/alias"
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
export P10K_CONFIG="$DOTFILES/config/zsh/p10k.zsh"
[[ ! -f "$P10K_CONFIG" ]] || source "$P10K_CONFIG"

View File

@@ -1,3 +1,4 @@
--container-architecture linux/amd64
-P ubuntu-latest=catthehacker/ubuntu:act-latest
-P ubuntu-22.04=catthehacker/ubuntu:act-22.04
-P ubuntu-20.04=catthehacker/ubuntu:act-20.04

View File

@@ -0,0 +1,244 @@
# Start AeroSpace at login
start-at-login = false
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
# The 'accordion-padding' specifies the size of accordion padding
# You can set 0 to disable the padding feature
accordion-padding = 10
# Possible values: tiles|accordion
default-root-container-layout = 'tiles'
# Possible values: horizontal|vertical|auto
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
# tall monitor (anything higher than wide) gets vertical orientation
default-root-container-orientation = 'auto'
# Mouse follows focus when focused monitor changes
# Drop it from your config, if you don't like this behavior
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
# Fallback value (if you omit the key): on-focused-monitor-changed = []
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
# Also see: https://nikitabobko.github.io/AeroSpace/goodness#disable-hide-app
automatically-unhide-macos-hidden-apps = true
# [[on-window-detected]]
# if.app-id = 'com.apple.systempreferences'
# if.app-name-regex-substring = 'settings'
# if.window-title-regex-substring = 'substring'
# if.workspace = 'workspace-name'
# if.during-aerospace-startup = true
# check-further-callbacks = true
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
[[on-window-detected]]
if.app-name-regex-substring = 'settings' # All settings
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.systempreferences' # macOS System Preferences
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.1password.1password' # 1Password
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.jetbrains.PhpStorm' # PhpStorm
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.finder' # Finder
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.Preview' # Preview
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.mail' # Mail
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.DanPristupov.Fork' # Fork
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.flexibits.fantastical2.mac' # Fantastical
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'org.whispersystems.signal-desktop' # Signal
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.tidal.desktop' # TIDAL
run = ['layout floating', 'move-node-to-workspace 2'] # Float and move to workspace 2
[[on-window-detected]]
if.app-id = 'com.apple.TV' # Apple TV app
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.setapp.DesktopClient' # Setapp
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.electron.dockerdesktop' # Docker Desktop
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'md.obsidia' # Obsidian
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.todoist.mac.Todoist' # Todoist
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.apple.backup.launcher' # TimeMachine
run = ['layout floating']
# Possible values: (qwerty|dvorak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
[key-mapping]
preset = 'qwerty'
# Gaps between windows (inner-*) and between monitor edges (outer-*).
# Possible values:
# - Constant: gaps.outer.top = 8
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
# In this example, 24 is a default value when there is no match.
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
[gaps]
inner.horizontal = 5
inner.vertical = 5
outer.top = [{ monitor.'^built-in retina display$' = 0 }, 0]
outer.right = 0
outer.bottom = 0
outer.left = 0
# 'main' binding mode declaration
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
# 'main' binding mode must be always presented
# Fallback value (if you omit the key): mode.main.binding = {}
[mode.main.binding]
cmd-h = [] # Disable "hide application"
cmd-alt-h = [] # Disable "hide others"
# All possible keys:
# - Letters. a, b, c, ..., z
# - Numbers. 0, 1, 2, ..., 9
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
# - F-keys. f1, f2, ..., f20
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
# keypadMinus, keypadMultiply, keypadPlus
# - Arrows. left, down, up, right
# All possible modifiers: cmd, alt, ctrl, shift
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
# alt-enter = '''exec-and-forget osascript -e '
# tell application "Terminal"
# do script
# activate
# end tell'
# '''
# alt-cmd-shift-f = 'fullscreen'
# alt-shift-f = 'layout floating'
# alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
alt-h = 'focus left'
alt-j = 'focus down'
alt-k = 'focus up'
alt-l = 'focus right'
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
alt-shift-1 = 'workspace 1' # Main
alt-shift-2 = 'workspace 2' # Media
ctrl-shift-1 = 'move-node-to-workspace 1' # Move node to Main
ctrl-shift-2 = 'move-node-to-workspace 2' # Move node to Media
alt-shift-tab = 'workspace-back-and-forth' # Switch between workspaces
ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
alt-a = 'mode apps'
alt-s = 'mode service'
alt-m = 'mode move'
# ╭──────────────────────────────────────────────────────────╮
# │ alt-m │
# ╰──────────────────────────────────────────────────────────╯
[mode.move.binding]
esc = ['reload-config', 'mode main']
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
1 = ['move-node-to-workspace 1 --focus-follows-window']
2 = ['move-node-to-workspace 2 --focus-follows-window']
# See: https://nikitabobko.github.io/AeroSpace/commands#move
h = 'move left'
j = 'move down'
k = 'move up'
l = 'move right'
# See: https://nikitabobko.github.io/AeroSpace/commands#join-with
shift-h = 'join-with left'
shift-j = 'join-with down'
shift-k = 'join-with up'
shift-l = 'join-with right'
# https://nikitabobko.github.io/AeroSpace/commands#resize
ctrl-h = 'resize smart -70'
ctrl-l = 'resize smart +70'
shift-left = 'resize smart +70'
shift-right = 'resize smart -70'
# https://nikitabobko.github.io/AeroSpace/commands#flatten-workspace-tree
r = ['flatten-workspace-tree', 'mode main'] # reset layout
# ╭──────────────────────────────────────────────────────────╮
# │ alt-a │
# ╰──────────────────────────────────────────────────────────╯
[mode.apps.binding]
esc = ['reload-config', 'mode main']
b = ['exec-and-forget open -a /Applications/Brave Browser.app', 'mode main'] # Browser
c = ['exec-and-forget open -a /Applications/Ferdium.app', 'mode main'] # Chat
g = ['exec-and-forget open -a /Applications/Ghostty.app', 'mode main'] # Ghostty
o = ['exec-and-forget open -a /Applications/Obsidian.app', 'mode main'] # Obsidian
s = ['exec-and-forget open -a /Applications/Slack.app', 'mode main'] # Slack
t = ['exec-and-forget open -a /Applications/TIDAL.app', 'mode main'] # Tidal
w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main'] # WezTerm
# ╭──────────────────────────────────────────────────────────╮
# │ alt-s │
# ╰──────────────────────────────────────────────────────────╯
[mode.service.binding]
esc = ['reload-config', 'mode main'] # reload config
r = ['flatten-workspace-tree', 'mode main'] # reset layout
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
backspace = ['close-all-windows-but-current', 'mode main']

View File

@@ -1,344 +1,51 @@
[colors]
draw_bold_text_with_bright_colors = true
[colors.bright]
black = "0x414868"
blue = "0x7aa2f7"
cyan = "0x7dcfff"
green = "0x9ece6a"
magenta = "0xbb9af7"
red = "0xf7768e"
white = "0xc0caf5"
yellow = "0xe0af68"
[colors.normal]
black = "0x1d202f"
blue = "0x7aa2f7"
cyan = "0x7dcfff"
green = "0x9ece6a"
magenta = "0xbb9af7"
red = "0xf7768e"
white = "0xa9b1d6"
yellow = "0xe0af68"
[colors.primary]
background = "0x24283b"
foreground = "0xc0caf5"
import = [
# Default to night if the copied one doesn't exist.
"~/.dotfiles/config/alacritty/theme-night.toml",
"~/.config/alacritty/theme-active.toml"
]
[env]
TERM = "xterm-256color"
[colors]
draw_bold_text_with_bright_colors = true
[font]
size = 14.0
[font.bold]
family = "JetBrainsMonoNL Nerd Font Mono"
style = "Bold"
[font.glyph_offset]
x = 0
y = 0
[font.normal]
family = "JetBrainsMonoNL Nerd Font Mono"
style = "ExtraLight"
[font.italic]
family = "JetBrainsMonoNL Nerd Font Mono"
style = "Italic"
[font.normal]
[font.bold]
family = "JetBrainsMonoNL Nerd Font Mono"
style = "ExtraLight"
style = "Bold"
[font.offset]
x = 0
y = 0
[[keyboard.bindings]]
action = "Paste"
key = "V"
mods = "Command"
[[keyboard.bindings]]
action = "Copy"
key = "C"
mods = "Command"
[[keyboard.bindings]]
action = "Quit"
key = "Q"
mods = "Command"
[[keyboard.bindings]]
action = "Quit"
key = "W"
mods = "Command"
[[keyboard.bindings]]
action = "SpawnNewInstance"
key = "N"
mods = "Command"
[[keyboard.bindings]]
chars = "\u001BOH"
key = "Home"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1~"
key = "Home"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOF"
key = "End"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[4~"
key = "End"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001B[5;2~"
key = "PageUp"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[5;5~"
key = "PageUp"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[5~"
key = "PageUp"
[[keyboard.bindings]]
chars = "\u001B[6;2~"
key = "PageDown"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[6;5~"
key = "PageDown"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[6~"
key = "PageDown"
[[keyboard.bindings]]
chars = "\u001B[1;2D"
key = "Left"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5D"
key = "Left"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3D"
key = "Left"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[D"
key = "Left"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOD"
key = "Left"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2C"
key = "Right"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5C"
key = "Right"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3C"
key = "Right"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[C"
key = "Right"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOC"
key = "Right"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2A"
key = "Up"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5A"
key = "Up"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3A"
key = "Up"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[A"
key = "Up"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOA"
key = "Up"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2B"
key = "Down"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5B"
key = "Down"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3B"
key = "Down"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[B"
key = "Down"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOB"
key = "Down"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[Z"
key = "Tab"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001BOP"
key = "F1"
[[keyboard.bindings]]
chars = "\u001BOQ"
key = "F2"
[[keyboard.bindings]]
chars = "\u001BOR"
key = "F3"
[[keyboard.bindings]]
chars = "\u001BOS"
key = "F4"
[[keyboard.bindings]]
chars = "\u001B[15~"
key = "F5"
[[keyboard.bindings]]
chars = "\u001B[17~"
key = "F6"
[[keyboard.bindings]]
chars = "\u001B[18~"
key = "F7"
[[keyboard.bindings]]
chars = "\u001B[19~"
key = "F8"
[[keyboard.bindings]]
chars = "\u001B[20~"
key = "F9"
[[keyboard.bindings]]
chars = "\u001B[21~"
key = "F10"
[[keyboard.bindings]]
chars = "\u001B[23~"
key = "F11"
[[keyboard.bindings]]
chars = "\u001B[24~"
key = "F12"
[[keyboard.bindings]]
key = "Back"
action = "ReceiveChar"
[[keyboard.bindings]]
chars = "\u001B[2~"
key = "Insert"
[[keyboard.bindings]]
chars = "\u001B[3~"
key = "Delete"
[[keyboard.bindings]]
chars = "\u0002&"
key = "W"
mods = "Command"
[[keyboard.bindings]]
chars = "\u0002c"
key = "T"
mods = "Command"
[[keyboard.bindings]]
chars = "\u0002n"
key = "RBracket"
mods = "Command|Shift"
[[keyboard.bindings]]
chars = "\u0002p"
key = "LBracket"
mods = "Command|Shift"
[[keyboard.bindings]]
chars = "\u0002o"
key = "RBracket"
mods = "Command"
[[keyboard.bindings]]
chars = "\u0002;"
key = "LBracket"
mods = "Command"
[[keyboard.bindings]]
chars = "\u0002/"
key = "F"
mods = "Command"
[[mouse.bindings]]
action = "PasteSelection"
mouse = "Middle"
[selection]
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
save_to_clipboard = true
[window]
decorations = "none"
decorations = "Full"
dynamic_title = true
opacity = 0.98
blur = true
[window.dimensions]
columns = 200
lines = 100
lines = 75
[window.padding]
x = 5

View File

@@ -0,0 +1,40 @@
# TokyoNight Alacritty Colors: Day
# Default colors
[colors.primary]
background = '#e1e2e7'
foreground = '#3760bf'
#[colors.cursor]
#cursor = '#3760bf'
#text = '#e1e2e7'
# Normal colors
[colors.normal]
black = '#e9e9ed'
red = '#f52a65'
green = '#587539'
yellow = '#8c6c3e'
blue = '#2e7de9'
magenta = '#9854f1'
cyan = '#007197'
white = '#6172b0'
# Bright colors
[colors.bright]
black = '#a1a6c5'
red = '#f52a65'
green = '#587539'
yellow = '#8c6c3e'
blue = '#2e7de9'
magenta = '#9854f1'
cyan = '#007197'
white = '#3760bf'
# Indexed Colors
[[colors.indexed_colors]]
index = 16
color = '#b15c00'
[[colors.indexed_colors]]
index = 17
color = '#c64343'

View File

@@ -0,0 +1,40 @@
# TokyoNight Alacritty Colors: Storm
# Default colors
[colors.primary]
background = '#24283b'
foreground = '#c0caf5'
#[colors.cursor]
#cursor = '#c0caf5'
#text = '#24283b'
# Normal colors
[colors.normal]
black = '#1d202f'
red = '#f7768e'
green = '#9ece6a'
yellow = '#e0af68'
blue = '#7aa2f7'
magenta = '#bb9af7'
cyan = '#7dcfff'
white = '#a9b1d6'
# Bright colors
[colors.bright]
black = '#414868'
red = '#f7768e'
green = '#9ece6a'
yellow = '#e0af68'
blue = '#7aa2f7'
magenta = '#bb9af7'
cyan = '#7dcfff'
white = '#c0caf5'
# Indexed Colors
[[colors.indexed_colors]]
index = 16
color = '#ff9e64'
[[colors.indexed_colors]]
index = 17
color = '#db4b4b'

View File

@@ -1,6 +1,4 @@
#!/usr/bin/env bash
# shellcheck source="../scripts/shared.sh"
# shellcheck disable=1091,2139
# Color the grep output
alias grep="grep --color"
@@ -14,8 +12,27 @@ alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
# Get git repository root path
get_git_root()
{
# check that we are in a git repository
if git rev-parse --is-inside-work-tree &> /dev/null; then
git rev-parse --show-toplevel
else
>&2 msgr err "Not in a git repository"
fi
}
# cd to git root directory
alias cdgr='cd "$(git root)"'
alias cdgr='cd "$(get_git_root)"'
# interesting folders, and shortcuts
alias .='cd $HOME'
alias .b='cd $XDG_BIN_HOME'
alias .c='cd $HOME/Code'
alias .d='cd $DOTFILES'
alias .l='cd $HOME/.local'
alias .o='cd $HOME/Code/ivuorinen/obsidian/'
# Shortcuts for listing
alias ll="ls -la"
@@ -25,13 +42,10 @@ alias l="ls -a"
alias cd..="cd .."
alias sl="ls"
# List only directories
alias lsd="ls -lF | grep '^d'"
# IP addresses
alias x-ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en1"
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //'"
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //' | sort"
# Show/hide hidden files in Finder
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder"
@@ -46,10 +60,17 @@ alias flush="dscacheutil -flushcache"
# Update locatedb
alias updatedb="sudo /usr/libexec/locate.updatedb"
# tmux: automatically attach or create session with name 'main'
alias tmux='tmux new-session -A -s main'
# tmux: attach or create new session
alias ta='tmux attach || tmux'
# Date helpers
alias isodate="date +'%Y-%m-%d'"
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
alias x-timestamp="date +'%s'"
# nvim aliases
alias vi='nvim'
alias vim='nvim'
# xdg-ninja aliases for better experience
alias xdg='xdg-ninja --skip-ok --skip-unsupported'
# watch with: differences, precise, beep and color
alias watchx='watch -dpbc'
@@ -59,8 +80,6 @@ alias zapds='find . -name ".DS_Store" -print -delete'
alias zappyc="find . -type f -name '*.pyc' -ls -delete"
# Run all zaps
alias zapall="zapds && zappyc"
# tail with follow flag on
alias t='tail -f'
# directory usage, return only the total
alias dn='du -chd1'
# Mirror site with wget
@@ -68,6 +87,7 @@ alias mirror_site='wget -m -k -K -E -e robots=off'
# Mirror stdout to stderr, useful for seeing data going through a pipe
alias peek='tee >(cat 1>&2)'
# Runs Gitlab code quality scanner
alias code_scanner='docker run
--env SOURCE_CODE="$PWD"
--volume "${PWD}":/code
@@ -75,18 +95,25 @@ alias code_scanner='docker run
registry.gitlab.com/gitlab-org/ci-cd/codequality:"${CODEQUALITY_VERSION:-latest}"
/code'
# Runs trivy container image scanner
alias trivy_scan='docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy'
# Opens dotfiles with $EDITOR
alias zedit='$EDITOR ~/.dotfiles'
# Open irssi with my configurations
alias irssi='irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi'
# Configures wget to use correct wget-hsts file
alias wget='wget --hsts-file=$XDG_DATA_HOME/wget-hsts'
# Configures svn to use correct config directory
alias svn='svn --config-dir $XDG_CONFIG_HOME/subversion'
alias irssi="irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi"
# Laravel artisan shortcut
alias art='[ -f artisan ] && php artisan || php vendor/bin/artisan'
alias wget="wget --hsts-file=$XDG_DATA_HOME/wget-hsts"
alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion"
# Laravel Sail shortcut
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
if [[ $(uname) == 'Darwin' ]]; then
# Laravel Sail shortcut
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
# Flush Directory Service cache
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
@@ -97,65 +124,17 @@ if [[ $(uname) == 'Darwin' ]]; then
# Also, clear Apple's System Logs to improve shell startup speed
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
x-set-php-aliases
# Using herd for php now, so this is not needed anymore
# x-set-php-aliases
fi
# Alacritty preexec hook to update dynamic title
preexec()
{
print -Pn "\e]0;$1%~\a"
}
# Update dotfiles
dfu()
{
(
cd "$DOTFILES" && git pull --ff-only && ./install -q
)
}
# Weather in Tampere, or other city
weather()
{
# https://github.com/chubin/wttr.in#usage
local city="${1:-Tampere}"
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
}
# Docker
ssh-docker()
{
docker exec -it "$@" bash
}
# Rector project to php version 8.2 by default.
rector()
{
local php="${1:-82}"
docker run -v "$(pwd)":/project rector/rector:latest process \
"/project/$1" \
--set "php${php}" \
--autoload-file /project/vendor/autoload.php
}
# Commit everything
commit()
{
commitMessage="$*"
if [ "$commitMessage" = "" ]; then
commitMessage="Automated commit"
fi
git add .
eval "git commit -a -m '${commitMessage}'"
}
scheduler()
{
while :; do
php artisan schedule:run
echo "Sleeping 60 seconds..."
sleep 60
done
}
X_ALIAS_FILES=(
"$HOME/.config/alias-secret"
"$HOME/.config/alias-$(hostname)"
"$HOME/.config/alias-$(hostname)-secret"
)
for aliasFile in "${X_ALIAS_FILES[@]}"; do
# shellcheck source=$HOME/.config/alias-secret
[ -f "$aliasFile" ] && source "$aliasFile" && msgr ok "Sourced $aliasFile"
done
unset X_ALIAS_FILES

3
config/asdf-direnv/zshrc Normal file
View File

@@ -0,0 +1,3 @@
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
export ASDF_DIRENV_BIN="$(asdf where direnv)/bin/direnv"
eval "$($ASDF_DIRENV_BIN hook zsh)"

5
config/asdf/asdfrc Normal file
View File

@@ -0,0 +1,5 @@
# See the docs for explanations: https://asdf-vm.com/manage/configuration.html
legacy_version_file=yes
use_release_candidates=no
concurrency=auto

View File

@@ -0,0 +1,25 @@
// A cargo subcommand for checking and applying
// updates to installed executables
cargo-update
// Cargo cache management utility
cargo-cache
// An incremental parsing system for programming tools
tree-sitter-cli
// a subprocess caching utility
bkt
// a structural diff that understands syntax
difftastic
// A simple, fast and user-friendly alternative to 'find'
fd-find
// recursively searches directories for a
// regex pattern while respecting your gitignore
ripgrep
// A version manager for neovim
bob-nvim
// bottom, btm - A cross-platform graphical process/system monitor with
// a customizable interface and a multitude of features.
bottom
// A modern alternative to ls
eza
// Tmux Sessionizer: A tool for opening git repositories as tmux sessions
tmux-sessionizer

1
config/asdf/gem-packages Normal file
View File

@@ -0,0 +1 @@
bundler

View File

@@ -0,0 +1,21 @@
// These are golang packages I use,
// so they should be available with all versions
// Git Profile allows you to switch between user profiles in git repos
github.com/dotzero/git-profile@v1.4.0
// An extensible command line tool or library to format yaml files.
github.com/google/yamlfmt/cmd/yamlfmt@v0.13.0
// Parsing HTML at the command line
github.com/ericchiang/pup@v0.4.0
// HTML to Markdown converter
github.com/suntong/html2md@v1.5.0
// cheat allows you to create and view interactive cheatsheets on the cli.
github.com/cheat/cheat/cmd/cheat@4.4.2
// Render markdown on the CLI, with pizzazz! 💅
github.com/charmbracelet/glow@v1.5.1
// Static checker for GitHub Actions workflow files
github.com/rhysd/actionlint/cmd/actionlint@v1.7.1
// Cleans up your $HOME from those pesky dotfiles
github.com/doron-cohen/antidot@v0.6.3
// FZF is a general-purpose command-line fuzzy finder.
github.com/junegunn/fzf@latest

7
config/asdf/npm-packages Normal file
View File

@@ -0,0 +1,7 @@
blade-formatter
corepack
editorconfig-checker
github-release-notes
neovim
npm
stylelint-lsp

View File

@@ -0,0 +1,20 @@
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
age https://github.com/threkk/asdf-age.git 396bdf6
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git b5862c1
direnv https://github.com/asdf-community/asdf-direnv.git 6ff3dbe
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
golang https://github.com/asdf-community/asdf-golang.git e2527a3
hadolint https://github.com/devlincashman/asdf-hadolint.git c8eb88b
kubectl https://github.com/asdf-community/asdf-kubectl.git 2fb3b57
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
rust https://github.com/code-lever/asdf-rust.git 95acf4f
shellcheck https://github.com/luizm/asdf-shellcheck.git 66200ff
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
terragrunt https://github.com/ohmer/asdf-terragrunt.git 29f2935
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
yamllint https://github.com/ericcornelissen/asdf-yamllint.git e4cfb17
yq https://github.com/sudermanjr/asdf-yq.git 772992f

View File

@@ -0,0 +1,4 @@
ansible
pipenv
neovim
libtmux

View File

@@ -0,0 +1,73 @@
---
tags: [printf, bash, zsh]
---
# printf
The printf command accepts the following syntax:
`printf [-v var] [format specifiers] [arguments]`
- [-v var]
The optional -v flag assigns the output to the [var]
variable instead of printing it in standard output.
- [format specifiers]
Format specifiers are strings that determine the methods of
formatting specifiers. The following section includes a
list of accepted specifiers.
- [arguments]
Arguments can be any value or variable, and the [format specifiers]
point to the [arguments]. If there are more arguments than format
specifiers, the format string is reused until it interprets
the last argument.
If there are fewer format specifiers than arguments, number formats
are set to zero (0), while string formats are set to null (empty).
## printf Specifiers
Format Description
------ -----------
%c Treat the arguments as a single character.
%d Treat the input as a decimal (integer) number (base 10).
%e Treats the input as an exponential floating-point number.
%f Treat the input as a floating-point number.
%i Treat the input as an integer number (base 10).
%o Treats the input as an octal number (base 8).
%s Treat the input as a string of characters.
%u Treat the input as an unsigned decimal (integer) number.
%x Treats the input as a hexadecimal number (base 16).
%% Print a percent sign.
%Wd Print the W integer X digits wide.
%(format)T Outputs a date-time string resulting from using format as a
format string for strftime. The corresponding argument can
be the number of seconds since Epoch (January 1, 1970, 00:00),
-1 (the current time), or -2 (shell startup time).
Not specifying an argument uses the current time as the default value.
\% Print a percent sign.
\n Prints a newline character.
\t Print a tab character.
Some format specifiers accept format modifiers that modify their actions.
Enter the modifiers between the % character and the character that
specifies the format.
Available format modifiers are:
<N>. Enter a number that specifies a minimum field width.
If the output text is shorter, it's padded with spaces.
If the text is longer, the field expands.
. (dot). When used with a field width modifier, the field doesn't
expand for longer text. Instead, the text is truncated.
-. Left-aligns the printed text. The default alignment is right.
0. Pads the numbers with zeros instead of spaces.
<space>. Pads a positive number with a space, and a negative
number with a minus (-).
+. Prints all numbers signed (+ for positive, - for negative).
'. For decimal conversions, applies the thousands grouping
separator to the integer portion of the output according
to the current LC_NUMERIC file.

View File

@@ -3,11 +3,11 @@
# editor: $EDITOR
# Should 'cheat' always colorize output?
colorize: true
colorize: false
# Which 'chroma' colorscheme should be applied to the output?
# Options are available here:
# https://github.com/alecthomas/chroma/tree/master/styles
style: 'catppuccin'
# style: 'tokyonight-day'
# Which 'chroma' "formatter" should be applied?
# One of: "terminal", "terminal256", "terminal16m"
formatter: terminal256
@@ -61,20 +61,21 @@ cheatpaths:
path: ~/.config/cheat/cheatsheets/community
tags: [community]
readonly: true
- name: pure-bash-bible
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
tags: [pure-bash-bible]
readonly: true
- name: tldr
path: ~/.dotfiles/config/cheat/cheatsheets/tldr/tldr
tags: [tldr]
readonly: true
# If you have personalized cheatsheets, list them last. They will take
# precedence over the more global cheatsheets.
- name: personal
path: ~/.dotfiles/config/cheat/cheatsheets/personal
tags: [personal]
readonly: false
- name: pure-bash-bible
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
tags: [pure-bash-bible]
readonly: true
- name: tldr
path: ~/.dotfiles/config/cheat/cheatsheets/tldr
tags: [tldr]
readonly: true
# While it requires no configuration here, it's also worth noting that
# cheat will automatically append directories named '.cheat' within the
# current working directory to the 'cheatpath'. This can be very useful if

13
config/direnv/direnv.toml Normal file
View File

@@ -0,0 +1,13 @@
[global]
disable_stdin = false
load_dotenv = true
hide_env_diff = false
[whitelist]
prefix = [
"~/Code/"
]
exact = [
"~/.dotfiles/.envrc"
]

View File

@@ -0,0 +1,4 @@
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
use_asdf() {
source_env "$(asdf direnv envrc "$@")"
}

View File

@@ -2,48 +2,101 @@
# shellcheck shell=bash
# vim: filetype=zsh
# Set XDG directories if not already set
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
[ -z "$XDG_DATA_HOME" ] && export XDG_DATA_HOME="$HOME/.local/share"
[ -z "$XDG_CACHE_HOME" ] && export XDG_CACHE_HOME="$HOME/.cache"
[ -z "$XDG_STATE_HOME" ] && export XDG_STATE_HOME="$HOME/.local/state"
[ -z "$XDG_BIN_HOME" ] && export XDG_BIN_HOME="$HOME/.local/bin"
[ -z "$XDG_RUNTIME_DIR" ] && export XDG_RUNTIME_DIR="$HOME/.local/run"
# if DOTFILES is not set, set it to the default location
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
# zsh completions directory
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
# Add zsh completions to FPATH, compinit will be called later
FPATH="$ZSH_COMPLETIONS:$FPATH"
if ! command -v msg &> /dev/null; then
# Function to print messages if VERBOSE is enabled
# $1 - message (string)
msg()
{
[[ $VERBOSE -eq 1 ]] && msgr msg "-> $1"
return 0
}
fi
# Cache commands using bkt if installed
if command -v bkt >&/dev/null; then
if command -v bkt &> /dev/null; then
bkt()
{
command bkt --cache-dir="$XDG_CACHE_HOME/bkt" "$@"
}
else
# If bkt isn't installed skip its arguments and just execute directly.
# If bkt isn't installed, skip its arguments and just execute directly.
# Optionally write a msg to stderr suggesting users install bkt.
bkt()
{
while [[ "$1" == --* ]]; do shift; done
while [[ $1 == --* ]]; do shift; done
"$@"
}
fi
# shorthand for checking if the system has the bin in path,
# this version does not use caching
# usage: have_command php && php -v
# Shorthand for checking if the system has the bin in path,
# this version does not use caching.
# Usage: have_command php && php -v
have_command()
{
command -v "$1" >&/dev/null
[ -z "$1" ] && {
echo "Usage: have_command <command>"
return 1
}
command -v "$1" &> /dev/null
}
# shorthand for checking if the system has the bin in path,
# this version uses caching
# usage: have php && php -v
# Shorthand for checking if the system has the bin in path,
# this version uses caching.
# Usage: have php && php -v
have()
{
bkt -- which "$1" >&/dev/null
bkt -- which "$1" &> /dev/null
}
# Function to run dark-notify and change alacritty theme
# It uses flock to prevent running multiple instances.
# Install flock with `brew install flock` on macOS.
darknotify_alacritty()
{
x-have flock && [[ -f /tmp/dark-notify-alacritty.lock ]] && return
x-have dark-notify && {
# subprocess is used to prevent the command from showing it was backgrounded
(
flock /tmp/dark-notify-alacritty.lock dark-notify \
-c "$HOME/.dotfiles/local/bin/x-change-alacritty-theme" &
) &> /dev/null
}
return 0
}
# darknotify_alacritty
# Function to list installed Homebrew packages using bkt caching
brew_installed()
{
bkt -- brew list
}
# shorthand for checking if brew package is installed
# usage: have_brew php && php -v
# Shorthand for checking if a Homebrew package is installed
# Usage: have_brew php && php -v
have_brew()
{
! x-have brew && return 125
! have brew && return 125
if bkt -- brew list "$1" &> /dev/null; then
return 0
@@ -52,5 +105,401 @@ have_brew()
fi
}
source "$DOTFILES/config/exports-shell"
source "$DOTFILES/config/exports-apps"
# Alacritty preexec hook to update dynamic title
preexec()
{
print -n -P "\e]0;$1%~\a"
}
# Update dotfiles
dfu()
{
(
cd "$DOTFILES" && git rebase --ff --autostash && ./install
)
}
# Weather in Tampere, or other city
weather()
{
# https://github.com/chubin/wttr.in#usage
local city="${1:-Tampere}"
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
}
# Docker
ssh_docker()
{
docker exec -it "$@" bash
}
# Rector project to php version 8.2 by default.
rector()
{
local php="${1:-82}"
docker run -v "$(pwd)":/project rector/rector:latest process \
"/project/" \
--set "php${php}" \
--autoload-file /project/vendor/autoload.php
}
# Commit everything
commit()
{
local commitMessage="$*"
if [ -z "$commitMessage" ]; then
commitMessage="Automated commit"
fi
git add .
git commit -a -m "$commitMessage"
}
scheduler()
{
while :; do
php artisan schedule:run
echo "Sleeping 60 seconds..."
sleep 60
done
}
# Run command silently
# Usage: silent uptime
silent()
{
"$@" >&/dev/null
}
# Check if a file contains non-ascii characters
nonascii()
{
LC_ALL=C grep -n '[^[:print:][:space:]]' "${@}"
}
# Remove non-ascii characters from string
# Usage: strip_nonascii "string"
strip_nonascii()
{
# shellcheck disable=SC2001
echo "$1" | LC_ALL=C sed 's/[^[:print:][:space:]]//g'
}
# Slugify a string
# Usage: slugify "string"
slugify()
{
echo "$1" | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr '[:upper:]' '[:lower:]'
}
# https://stackoverflow.com/a/85932
fn_exists()
{
declare -f -F "$1" > /dev/null
return $?
}
# Creates a random string
rnd()
{
echo $RANDOM | md5sum | head -c 20
}
# return sha256sum for file
# $1 - filename (string)
get_sha256sum()
{
sha256sum "$1" | head -c 64
}
# Replaceable file
#
# $1 - filename (string)
# $2 - filename (string)
#
# Returns 1 when replaceable, 0 when not replaceable.
replacable()
{
FILE1="$1"
FILE2="$2"
[[ ! -r $FILE1 ]] && {
[[ $VERBOSE -eq 1 ]] && msgr err "File 1 ($FILE1) does not exist"
return 0
}
[[ ! -r $FILE2 ]] && {
[[ $VERBOSE -eq 1 ]] && msgr err "File 2 ($FILE2) does not exist, replaceable"
return 1
}
FILE1_HASH=$(get_sha256sum "$FILE1")
FILE2_HASH=$(get_sha256sum "$FILE2")
[[ $FILE1_HASH == "" ]] && {
[[ $VERBOSE -eq 1 ]] && msgr err "Could not get hash for file 1 ($FILE1)"
return 0
}
[[ $FILE2_HASH == "" ]] && {
[[ $VERBOSE -eq 1 ]] && msgr err "Could not get hash for file 2 ($FILE2), replaceable"
return 1
}
[[ $FILE1_HASH == "$FILE2_HASH" ]] && {
[[ $VERBOSE -eq 1 ]] && msgr ok "Files match, not replaceable: $FILE1"
return 0
}
[[ $VERBOSE -eq 1 ]] && msgr warn "Files do not match ($FILE1_HASH != $FILE2_HASH), replaceable"
return 1
}
export COMPLETION_WAITING_DOTS=true
# Bash completion file location
export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion"
# History env variables
export HIST_STAMPS="yyyy-mm-dd"
export HISTFILE="${XDG_STATE_HOME}/zsh/history"
# Larger bash history (allow 32³ entries; default is 500)
export HISTSIZE=32768
export HISTFILESIZE=$HISTSIZE
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
export HISTCONTROL=ignoreboth
# Make some commands not show up in history
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
# And include the parameter for ZSH
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
# Less history location
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
# Highlight section titles in manual pages
# export LESS_TERMCAP_md="$ORANGE"
# zsh autoloaded terminfo
# export TERMINFO="${XDG_DATA_HOME}/terminfo"
# export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
# Don't clear the screen after quitting a manual page
export MANPAGER="less -X"
# Always enable colored `grep` output
export GREP_OPTIONS="--color=auto"
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
hash shopt 2> /dev/null && shopt -s checkwinsize
# shellcheck disable=SC2155
export SHORT_HOST=$(hostname -s)
# asdf
# https://github.com/asdf-vm/asdf
msg "Setting up asdf configuration"
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
if [[ -d $ASDF_DIR ]]; then
[[ -d $ASDF_DIR/completions ]] && FPATH="$ASDF_DIR/completions:$FPATH"
[[ -d $ASDF_DIR/plugins ]] && FPATH="$ASDF_DIR/plugins:$FPATH"
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
export ASDF_DATA_DIR="${ASDF_DIR}"
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
export ASDF_LOG_FILE="${XDG_CACHE_HOME}/asdf/asdf.log"
export ASDF_FORCE_PREPEND=yes
## Default package files
export ASDF_CRATE_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/cargo-packages"
export ASDF_GEM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/gem-packages"
export ASDF_GOLANG_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/golang-packages"
export ASDF_NPM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/npm-packages"
export ASDF_PYTHON_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/python-packages"
## Plugin configuration
export ASDF_DIRENV_IGNORE_MISSING_PLUGINS=1
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
export ASDF_NODEJS_LEGACY_FILE_DYNAMIC_STRATEGY="latest_available"
## Add asdf to path
export PATH="${ASDF_DIR}/bin:${PATH}"
source "$ASDF_DIR/asdf.sh"
fi
# Antidote configuration
# https://getantidote.github.io/
msg "Setting up Antidote configuration"
export ANTIDOTE_DIR="$DOTFILES/tools/antidote"
export ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
export ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
# Ansible configuration
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
msg "Setting up Ansible configuration"
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
x-dc "$ANSIBLE_HOME"
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
# aws
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
msg "Setting up AWS configuration"
export AWS_CONFIG_FILE="${XDG_STATE_HOME}/aws/config"
export AWS_SHARED_CREDENTIALS_FILE="${XDG_STATE_HOME}/aws/credentials"
export AWS_DATA_PATH="${XDG_DATA_HOME}/aws"
export AWS_DEFAULT_REGION="eu-west-1"
export AWS_DEFAULT_OUTPUT="table"
export AWS_CONFIGURE_KEYS=true
export AWS_CONFIGURE_REGION=true
export AWS_CONFIGURE_OUTPUT=true
export AWS_CONFIGURE_PROFILE=true
export AWS_CONFIGURE_PROMPT=true
export AWS_CONFIGURE_PROMPT_DEFAULT="default"
# bob manages nvim versions
msg "Setting up bob configuration"
x-path-prepend "$XDG_DATA_HOME/bob/nvim-bin"
# bkt (shell command caching tool) configuration
msg "Setting up bkt configuration"
export BKT_TTL=1m
# brew, https://docs.brew.sh/Manpage
msg "Setting up Homebrew configuration"
export HOMEBREW_NO_ANALYTICS=true
export HOMEBREW_NO_ENV_HINTS=true
export HOMEBREW_BUNDLE_MAS_SKIP=true
export HOMEBREW_BUNDLE_FILE="$XDG_CONFIG_HOME/homebrew/Brewfile"
x-have brew && {
# Add brew autocompletion to fpath
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
eval "$(brew shellenv)"
}
# composer, https://getcomposer.org/
msg "Setting up Composer configuration"
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
export PATH="$COMPOSER_BIN:$PATH"
# direnv, https://direnv.net/
# https://direnv.net/docs/hook.html
# Set the hook to show the direnv message in a different color
# export DIRENV_LOG_FORMAT=$'\033[2mdirenv: %s\033[0m'
export DIRENV_LOG_FORMAT=
# docker, https://docs.docker.com/engine/reference/commandline/cli/
msg "Setting up Docker configuration"
export DOCKER_CONFIG="${XDG_CONFIG_HOME}/docker"
x-dc "$DOCKER_CONFIG"
# Docker: Disable snyk ad
export DOCKER_SCAN_SUGGEST=false
# fzf
export FZF_BASE="${XDG_CONFIG_HOME}/fzf"
export FZF_DEFAULT_OPTS='--height 40% --tmux bottom,40% --layout reverse --border top'
# GnuPG
# https://gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html
msg "Setting up GnuPG configuration"
export GNUPGHOME="${XDG_DATA_HOME}/gnupg"
# Go
# https://golang.org/doc/code.html
msg "Setting up Go configuration"
export GOPATH="$XDG_DATA_HOME/go"
export GOBIN="$XDG_BIN_HOME"
# Lando
export PATH="$HOME/.lando/bin${PATH+:$PATH}" #landopath
# NPM: Add npm packages to path
msg "Setting up NPM configuration"
x-have node && {
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
export PATH="$NVM_NODE_BIN_DIR:$PATH"
}
# oh-my-posh (omp) configuration
msg "Setting up oh-my-posh configuration"
export OHMYPOSH_CFG="$DOTFILES/config/omp/own.toml"
# op (1Password cli) is present
msg "Setting up 1Password CLI configuration"
export OP_CACHE="$XDG_STATE_HOME/1password"
# Python
#
# pyenv, python environments
msg "Setting up Python configuration"
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
## for MichaelAquilina/zsh-autoswitch-virtualenv
export AUTOSWITCH_VIRTUAL_ENV_DIR="$WORKON_HOME"
export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
x-have pyenv && eval "$(pyenv init -)"
# Rust / cargo
msg "Setting up Rust/Cargo configuration"
export RUST_WITHOUT=rust-docs
# screen
# https://www.gnu.org/software/screen/manual/screen.html
msg "Setting up screen configuration"
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
# sonarlint
# https://www.sonarlint.org/
msg "Setting up Sonarlint configuration"
export SONARLINT_USER_HOME="$XDG_DATA_HOME/sonarlint"
# terraform
# https://www.terraform.io/docs/cli/config/config-file.html
# https://www.terraform.io/docs/cli/config/environment-variables.html
msg "Setting up Terraform configuration"
export TF_DATA_DIR="$XDG_STATE_HOME/terraform"
export TF_CLI_CONFIG_FILE="$XDG_CONFIG_HOME/terraform/terraformrc"
export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
# tmux
# https://tmux.github.io/
msg "Setting up tmux configuration"
export TMUX_TMPDIR="$XDG_STATE_HOME/tmux"
export TMUX_CONF_DIR="$XDG_CONFIG_HOME/tmux"
export TMUX_PLUGINS="$TMUX_CONF_DIR/plugins"
export TMUX_CONF="$TMUX_CONF_DIR/tmux.conf"
## These settings are for zsh-tmux
export ZSH_TMUX_AUTOSTART=false
export ZSH_TMUX_CONFIG="$TMUX_CONF"
export ZSH_TMUX_UNICODE=true
export ZSH_TMUX_AUTOQUIT=false
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
# tms, https://github.com/jrmoulton/tmux-sessionizer
export TMS_CONFIG_FILE="${XDG_CONFIG_HOME}/tms/config.toml"
# wakatime, https://github.com/wakatime/wakatime-cli
msg "Setting up Wakatime configuration"
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
x-dc "$WAKATIME_HOME"
# Misc
msg "Setting up miscellaneous configuration"
export ZSHZ_DATA="$XDG_STATE_HOME/z"
export CHEAT_USE_FZF=true
export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
X_EXPORTS_FILES=(
"$HOME/.config/exports-secret"
"$HOME/.config/exports-$(hostname)"
"$HOME/.config/exports-$(hostname)-secret"
)
for exportFile in "${X_EXPORTS_FILES[@]}"; do
# shellcheck source=$HOME/.config/exports-secret
[ -f "$exportFile" ] && source "$exportFile" && msg "Sourced $exportFile"
done
unset X_EXPORTS_FILES

View File

@@ -1,121 +0,0 @@
#!/usr/bin/env bash
# shellcheck shell=bash
# shellcheck enable=external-sources
# shellcheck disable=1091,2139
# vim: filetype=bash
# Antigen configuration
# https://github.com/zsh-users/antigen/wiki/Configuration
export ADOTDIR="$XDG_DATA_HOME/antigen"
export ANTIGEN_CACHE="$XDG_CACHE_HOME/antigen"
export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate"
export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
# Ansible configuration
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
x-dc "$ANSIBLE_HOME"
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
export ANDROID_HOME="$XDG_DATA_HOME/android"
# bob manages nvim versions
export PATH="$XDG_DATA_HOME/bob/nvim-bin:$PATH"
# bkt (shell command caching tool) configuration
export BKT_TTL=1m
# brew, https://docs.brew.sh/Manpage
export HOMEBREW_NO_ENV_HINTS=true
# composer, https://getcomposer.org/
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
export PATH="$COMPOSER_BIN:$PATH"
# docker, https://docs.docker.com/engine/reference/commandline/cli/
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
x-dc "$DOCKER_CONFIG"
# Docker: Disable snyk ad
export DOCKER_SCAN_SUGGEST=false
# ffmpeg
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
x-have ffmpeg && x-dc "$FFMPEG_DATADIR"
# GnuPG
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
# Go
export GOPATH="$XDG_DATA_HOME/go"
export GOBIN="$XDG_BIN_HOME"
# nb, https://xwmx.github.io/nb/
export NBRC_PATH="$XDG_CONFIG_HOME/nbrc"
export NB_DIR="$XDG_STATE_HOME/nb"
# NPM: Add npm packages to path
x-have node && {
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
export PATH="$NVM_NODE_BIN_DIR:$PATH"
}
# op (1Password cli) is present
export OP_CACHE="$XDG_STATE_HOME/1password"
# Python
#
# pyenv, python environments
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
x-have pyenv && {
export PATH="$PYENV_ROOT/shims:$PATH"
eval "$(pyenv init -)"
}
# Ruby
#
# including: bundler, rbenv
export GEM_HOME="${XDG_DATA_HOME}"/gem
export GEM_SPEC_CACHE="${XDG_CACHE_HOME}"/gem
export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
export RBENV_ROOT="$XDG_STATE_HOME/rbenv"
x-dc "$RBENV_ROOT"
x-have gem && export PATH="${GEM_HOME}/bin:$PATH"
# Rust / cargo
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
export CARGO_HOME="$XDG_DATA_HOME/cargo"
export PATH="$CARGO_HOME/bin:$PATH"
# screen
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
# sonarlint
export SONARLINT_USER_HOME="$XDG_DATA_HOME/sonarlint"
# terraform
# https://www.terraform.io/docs/cli/config/config-file.html
# https://www.terraform.io/docs/cli/config/environment-variables.html
export TF_DATA_DIR="$XDG_STATE_HOME/terraform"
export TF_CLI_CONFIG_FILE="$XDG_CONFIG_HOME/terraform/terraformrc"
export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
# tldr / tealdeer
export TEALDEER_CONFIG_DIR="$XDG_CONFIG_HOME/tealdeer/"
# tmux
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
# wakatime, https://github.com/wakatime/wakatime-cli
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
x-dc "$WAKATIME_HOME"
# Misc
export BAT_THEME="ansi"
export CHEAT_USE_FZF=true
export SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history

View File

@@ -1,19 +1,25 @@
# lakka exports
## LUA
x-have luarocks && $(luarocks path --bin)
if command -v luarocks &> /dev/null; then
eval "$(luarocks path --bin)"
fi
export PATH="$HOME/.local/go/bin:$PATH"
alias logrotate='/usr/sbin/logrotate -s $HOME/logs/state'
alias logrotate='/usr/sbin/logrotate -s "$HOME/logs/state"'
alias nano='nano -wS -$'
alias gpg=gpg2
ACME_PATH="$HOME/.acme.sh"
# shellcheck source=$HOME/.acme.sh/acme.sh.env
[[ -s "$ACME_PATH/acme.sh.env" ]] && . "$ACME_PATH/acme.sh.env"
if [[ -s "$ACME_PATH/acme.sh.env" ]]; then
source "$ACME_PATH/acme.sh.env"
fi
export RVM_PATH="$HOME/.rvm"
export PATH="$RVM_PATH/bin:$PATH"
# shellcheck source=$HOME/.rvm/scripts/rvm
[[ -s "$RVM_PATH/scripts/rvm" ]] && source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*
if [[ -s "$RVM_PATH/scripts/rvm" ]]; then
source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*
fi

View File

@@ -1,40 +0,0 @@
#!/usr/bin/env bash
# shellcheck shell=bash
# shellcheck disable=1091,2046
# vim: filetype=bash
# Bash completion file location
export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion"
# History env variables
export HIST_STAMPS="yyyy-mm-dd"
# Larger bash history (allow 32³ entries; default is 500)
export HISTSIZE=32768
export HISTFILESIZE=$HISTSIZE
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
export HISTCONTROL=ignoreboth
# Make some commands not show up in history
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
# And include the parameter for ZSH
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
# Less history location
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
# Highlight section titles in manual pages
# export LESS_TERMCAP_md="$ORANGE"
# zsh autoloaded terminfo
export TERMINFO="${XDG_DATA_HOME}/terminfo"
export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
# Don't clear the screen after quitting a manual page
export MANPAGER="less -X"
# Always enable colored `grep` output
export GREP_OPTIONS="--color=auto"
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
hash shopt 2> /dev/null && shopt -s checkwinsize

View File

@@ -1,3 +0,0 @@
#!/usr/bin/env bash
#
# shell functions

15
config/ghostty/config Normal file
View File

@@ -0,0 +1,15 @@
# vim: ft=ghostty
theme = "light:tokyonight-day,dark:tokyonight-storm"
font-family = "JetBrainsMono Nerd Font Mono"
background-blur-radius = 15
background-opacity = 0.95
clipboard-read = allow
clipboard-write = allow
cursor-style = bar
custom-shader-animation = true
gtk-single-instance = true
mouse-hide-while-typing = true
shell-integration-features = true
window-theme = system

View File

@@ -11,3 +11,5 @@
[include]
path = ~/.config/git/overrides/config
[advice]
detachedHead = false

View File

@@ -19,3 +19,5 @@ wp_*.sh
auth.json
dfm.sh
.scannerwork
.phpactor.json
.zsh_history

View File

@@ -17,11 +17,12 @@
llog = log --pretty=fuller
logs = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit
nah = !git reset --hard && git clean -df
recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r"
reset-origin = !git fetch origin && git reset --hard origin/master && git clean -f -d
reset-upstream = !git fetch upstream && git reset --hard upstream/master && git clean -f -d
recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r"
rl = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
tagdate = log --date-order --graph --tags --simplify-by-decoration --pretty=format:\"%ai %h %d\"
undo = reset --soft HEAD^
undo-commit = reset HEAD~ --soft
[filter "lfs"]
@@ -30,15 +31,6 @@
process = git-lfs filter-process
required = true
[diff]
tool = difftastic
[difftool]
prompt = false
[difftool "difftastic"]
cmd = difft "$LOCAL" "$REMOTE"
[color]
ui = true
diff = auto

6
config/glow/glow.yml Normal file
View File

@@ -0,0 +1,6 @@
# mouse support (TUI-mode only)
mouse: false
# use pager to display markdown
pager: true
# word-wrap at width
width: 80

View File

@@ -0,0 +1,2 @@
disable-ipv6
enable-ssh-support

View File

@@ -0,0 +1,2 @@
disable-ipv6
enable-ssh-support

View File

@@ -1,26 +1,42 @@
tap "1password/tap"
tap "anchore/grype"
tap "cormacrelf/tap"
tap "ddosify/tap"
tap "dm3ch/tap"
tap "doron-cohen/tap"
tap "gesquive/tap"
tap "github/gh"
tap "homebrew/autoupdate"
tap "homebrew/bundle"
tap "homebrew/cask-fonts"
tap "homebrew/services"
tap "jesseduffield/lazygit"
tap "k8sgpt-ai/k8sgpt"
tap "keith/formulae"
tap "mongodb/brew"
tap "nikitabobko/tap"
tap "pantheon-systems/external"
tap "reviewdog/tap"
tap "shivammathur/extensions"
tap "shivammathur/php"
tap "snyk/tap"
tap "teamookla/speedtest"
tap "xwmx/taps"
# Run your GitHub Actions locally
brew "act"
# Simple, modern, secure file encryption
brew "age"
# Mozilla CA certificate store
brew "ca-certificates"
# Mozilla CA bundle for Python
brew "certifi"
# Cryptography and SSL/TLS Toolkit
brew "openssl@3"
# Cryptographic recipes and primitives for Python
brew "cryptography"
# YAML Parser
brew "libyaml"
# Automate deployment, configuration, and upgrading
brew "ansible"
# Checks ansible playbooks for practices and behaviour
brew "ansible-lint"
# Generic-purpose lossless compression algorithm by Google
@@ -45,10 +61,10 @@ brew "apr"
brew "apr-util"
# Password hashing library and CLI utility
brew "argon2"
# Open Source Kubernetes Marketplace
brew "arkade"
# Automatic configure script builder
brew "autoconf"
# Tool for generating GNU Standards-compliant Makefiles
brew "automake"
# GNU multiple precision arithmetic library
brew "gmp"
# GNU File, Shell, and Text utilities
@@ -57,20 +73,22 @@ brew "coreutils"
brew "asdf"
# Spell checker with better logic than ispell
brew "aspell"
# Interpreted, interactive, object-oriented programming language
brew "python@3.11"
# Collection of over 500 reusable autoconf macros
brew "autoconf-archive"
# Package compiler and linker metadata toolkit
brew "pkgconf"
# Automated text file generator
brew "autogen"
# Official Amazon AWS command-line interface
brew "awscli"
# Bourne-Again SHell, a UNIX command interpreter
brew "bash"
# Clone of cat(1) with syntax highlighting and Git integration
brew "bat"
# C/C++ and Java libraries for Unicode and globalization
brew "icu4c"
# Yet another cross-platform graphical process/system monitor
brew "bottom"
# Switch Apache / Valet / CLI configs between PHP versions
brew "brew-php-switcher"
# Bash Automated Testing System
brew "bats-core"
# Parser generator
brew "bison"
# Software library to render fonts
brew "freetype"
# XML-based font configuration API for X Windows
@@ -79,46 +97,24 @@ brew "fontconfig"
brew "gettext"
# Core application library for C
brew "glib"
# Manage compile and link flags for libraries
brew "pkg-config"
# Prevent cloud misconfigurations during build-time for IaC tools
brew "checkov"
# Human-friendly and fast alternative to cut and (sometimes) awk
brew "choose-rust"
# Cross-platform make
brew "cmake"
# Get, unpack, build, and install modules from CPAN
brew "cpanminus"
# Open source suite of directory software
brew "openldap"
# Get a file from an HTTP, HTTPS or FTP server
brew "curl"
# Diff that understands syntax
brew "difftastic"
# Tool for exploring each layer in a docker image
brew "dive"
# Lightweight DNS forwarder and DHCP server
brew "dnsmasq"
# Command-line DNS client
brew "dog"
# Lightning-fast linter for .env files written in Rust
brew "dotenv-linter"
# Tool to verify that your files are in harmony with your .editorconfig
brew "editorconfig-checker", link: false
# Useful examples at the command-line
brew "eg-examples"
# OpenType text shaping engine
brew "harfbuzz"
# Development kit for the Java programming language
brew "openjdk"
# Spellchecker wrapping library
brew "enchant"
# Run arbitrary commands when files change
brew "entr"
# Perl lib for reading and writing EXIF metadata
brew "exiftool"
# Simple, fast and user-friendly alternative to find
brew "fd"
# Banner-like program prints strings as ASCII art
brew "figlet"
# Lock file during command
brew "flock"
# Libraries to talk to Microsoft SQL Server and Sybase databases
brew "freetds"
# Monitor a directory for changes and run a shell command
@@ -128,9 +124,15 @@ brew "fzf"
# Graphics library to dynamically manipulate images
brew "gd"
# Disk usage analyzer with console interface written in Go
brew "gdu", link: false
brew "gdu"
# GitHub command-line tool
brew "gh"
# OpenType text shaping engine
brew "harfbuzz"
# Secure hashing function
brew "libb2"
# Framework for layout and rendering of i18n text
brew "pango"
# Distributed revision control system
brew "git"
# Enable transparent encryption/decryption of files in a git repo
@@ -139,8 +141,6 @@ brew "git-crypt"
brew "git-extras"
# See your latest local git branches, formatted real fancy
brew "git-recent"
# Open-source GitLab command-line tool
brew "glab"
# Render markdown on the CLI
brew "glow"
# GNU implementation of the famous stream editor
@@ -159,8 +159,6 @@ brew "gpgme"
brew "gpg-tui"
# Image manipulation
brew "netpbm"
# Framework for layout and rendering of i18n text
brew "pango"
# Library to render SVG files using Cairo
brew "librsvg"
# Graph visualization software from AT&T and Bell Labs
@@ -169,66 +167,68 @@ brew "graphviz"
brew "grep"
# Popular GNU data compression program
brew "gzip"
# Smarter Dockerfile linter to validate best practices
brew "hadolint"
# Text-based UI library
brew "ncurses"
# Improved top (interactive process viewer)
brew "htop"
# Website copier/offline browser
brew "httrack"
# Configurable static site generator
brew "hugo"
# Portable abstraction of the hierarchical topology of modern architectures
brew "hwloc"
# ISO/IEC 23008-12:2017 HEIF file format decoder and encoder
brew "libheif"
# Tools and libraries to manipulate images in many formats
brew "imagemagick"
# Modular IRC client
brew "irssi"
# Image manipulation library
brew "jpeg"
# Lightweight and flexible command-line JSON processor
brew "jq"
# JSON parser for C
brew "json-c"
# Network authentication protocol
brew "krb5"
# Lazier way to manage everything docker
brew "lazydocker"
# Tool to detect/remediate misconfig and security risks of GitHub/GitLab assets
brew "legitify"
# BSD-style licensed readline alternative
brew "libedit"
# Conversion library
brew "libiconv"
# Postgres C API library
brew "libpq"
# Linguistic software and Finnish dictionary
brew "libvoikko"
# Rainbows and unicorns in your console!
brew "lolcat"
# Version of the SSL/TLS protocol forked from OpenSSL
brew "libressl"
# Multi-platform support library with a focus on asynchronous I/O
brew "libuv"
# GNOME XML library
brew "libxml2"
# Package manager for the Lua programming language
brew "luarocks"
# LZMA-based compression program similar to gzip or bzip2
brew "lzip"
# Swiss Army Knife for macOS
brew "m-cli"
# Mac App Store command-line interface
brew "mas"
# Mongrel of mail user agents (part elm, pine, mush, mh, etc.)
brew "mutt"
# Collection of tools that nobody wrote when UNIX was young
brew "moreutils"
# NCurses Disk Usage
brew "ncdu"
# Ambitious Vim-fork focused on extensibility and agility
brew "neovim"
# HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
brew "nginx"
# Port scanning utility for large networks
brew "nmap"
# Manage multiple Node.js versions
brew "nvm"
# Development kit for the Java programming language
brew "openjdk@11"
# Generate clients, server & docs from an OpenAPI spec (v2, v3)
brew "openapi-generator"
# Swiss-army knife of markup format conversion
brew "pandoc"
# Highly capable, feature-rich programming language
brew "perl"
# Libraries for security-enabled client and server applications
brew "nss"
# Open source suite of directory software
brew "openldap"
# Cryptography and SSL/TLS Toolkit
brew "openssl@1.1"
# ISO-C API and CLI for generating UUIDs
brew "ossp-uuid"
# General-purpose scripting language
brew "php@8.1"
# Coreutils progress viewer
brew "progress"
# Simple Python style checker in one Python file
brew "pycodestyle"
brew "php"
# General-purpose scripting language
brew "php@8.2"
# General-purpose scripting language
brew "php@8.3"
# Python version management
brew "pyenv"
# Migrate pip packages from one Python version to another
@@ -236,35 +236,17 @@ brew "pyenv-pip-migrate"
# Pyenv plugin to manage virtualenv
brew "pyenv-virtualenv"
# Interpreted, interactive, object-oriented programming language
brew "python@3.10"
# Interpreted, interactive, object-oriented programming language
brew "python@3.8"
brew "python@3.11"
# Install various Ruby versions and implementations
brew "ruby-build"
# Ruby version manager
brew "rbenv"
# RC file (dotfile) management
brew "rcm"
# Search tool like grep and The Silver Searcher
brew "ripgrep"
# Generate C-based recognizers from regular expressions
brew "re2c"
# Static analysis and lint tool, for (ba)sh scripts
brew "shellcheck"
# Autoformat shell script source code
brew "shfmt"
# Support CI generation of SBOMs via golang tooling
brew "spdx-sbom-generator"
# Version control system designed to be a better CVS
brew "subversion"
# Feature-rich console based todo list manager
brew "task"
# Terminal user interface for taskwarrior
brew "taskwarrior-tui"
# Very fast implementation of tldr in Rust
brew "tealdeer"
# Send macOS User Notifications from the command-line
brew "terminal-notifier"
# Thin wrapper for Terraform e.g. for locking state
brew "terragrunt"
# Tool which checks for the support of TLS/SSL ciphers and flaws
brew "testssl"
# Terraform version manager inspired by rbenv
@@ -273,111 +255,71 @@ brew "tfenv"
brew "tflint"
# Static analysis security scanner for your terraform code
brew "tfsec"
# Programmatically correct mistyped console commands
brew "thefuck"
# Terminal multiplexer
brew "tmux"
# Display directories as trees (with optional color/HTML output)
brew "tree"
# Vulnerability scanner for container images, file systems, and Git repos
brew "trivy"
# Modern watch command
brew "viddy"
# Tool for creating isolated virtual python environments
brew "virtualenv"
# Command-line interface to the WakaTime api
brew "wakatime-cli"
# Executes a program periodically, showing output fullscreen
brew "watch"
# Watch files and take action when they change
brew "watchman"
# Internet file retriever
brew "wget"
# Personal information dashboard for your terminal
brew "wtfutil"
# Check your $HOME for unwanted files and directories
brew "xdg-ninja", args: ["HEAD"]
# Hackable, minimal, fast TUI file explorer
brew "xplr"
# JavaScript package manager
brew "yarn"
# A vulnerability scanner for container images and filesystems
brew "anchore/grype/grype"
# High-performance load testing tool, written in Golang.
brew "ddosify/tap/ddosify"
# General-purpose lossless data-compression library
brew "zlib"
# Watcher for macOS 10.14+ light/dark mode changes
brew "cormacrelf/tap/dark-notify"
# Cleans up your $HOME from those pesky dotfiles
brew "doron-cohen/tap/antidot"
# lets you quickly switch between multiple git user profiles
brew "gesquive/tap/git-user"
# A simple terminal UI for git commands, written in Go
brew "jesseduffield/lazygit/lazygit"
brew "keith/formulae/reminders-cli"
# High-performance, schema-free, document-oriented database
brew "mongodb/brew/mongodb-community"
# Imagick PHP extension
brew "shivammathur/extensions/imagick@8.2"
# Terminus is Pantheon's Command-line Interface (CLI)
brew "pantheon-systems/external/terminus"
# Automated code review tool integrated with any code analysis tools regardless of programming language.
brew "reviewdog/tap/reviewdog"
# Igbinary PHP extension
brew "shivammathur/extensions/igbinary@8.3"
# Imagick PHP extension
brew "shivammathur/extensions/imagick@8.3"
# Mcrypt PHP extension
brew "shivammathur/extensions/mcrypt@8.3"
# Msgpack PHP extension
brew "shivammathur/extensions/msgpack@8.3"
# PCOV PHP extension
brew "shivammathur/extensions/pcov@8.3"
# Redis PHP extension
brew "shivammathur/extensions/redis@8.3"
# Uuid PHP extension
brew "shivammathur/extensions/uuid@8.3"
# Xdebug PHP extension
brew "shivammathur/extensions/xdebug@7.4"
# Xdebug PHP extension
brew "shivammathur/extensions/xdebug@8.0"
# Xdebug PHP extension
brew "shivammathur/extensions/xdebug@8.1"
# Yaml PHP extension
brew "shivammathur/extensions/yaml@8.3"
# General-purpose scripting language
brew "shivammathur/php/php"
brew "shivammathur/php/php-debug"
# General-purpose scripting language
brew "shivammathur/php/php@7.4"
# General-purpose scripting language
brew "shivammathur/php/php@8.0"
# Ookla Speedtest
brew "teamookla/speedtest/speedtest"
# Command-line interface for 1Password
cask "1password-cli"
# GPU-accelerated terminal emulator
cask "alacritty"
# Automatic tiling window manager similar to xmonad
cask "amethyst"
# Turn audio CDs and files into audiobooks
cask "audiobook-builder"
brew "shivammathur/php/php@8.0", link: true
# Find & fix known vulnerabilities in open-source dependencies
brew "snyk/tap/snyk"
# AeroSpace is an i3-like tiling window manager for macOS
cask "aerospace"
# Text editor
cask "coda"
# Universal database tool and SQL client
cask "dbeaver-community"
# Database version management tool
cask "dbngin"
# App to build and share containerized applications and microservices
# App to build and share containerised applications and microservices
cask "docker"
# UI toolkit for building applications for mobile, web and desktop
cask "flutter"
# Unofficial overcast.fm podcast app
cask "fog"
# Typeface made for developers
cask "font-jetbrains-mono"
# Developer targeted fonts with a high number of glyphs
cask "font-jetbrains-mono-nerd-font"
cask "font-lato"
cask "font-open-sans"
# Font with a mechanical skeleton and the forms are largely geometric
cask "font-roboto"
cask "font-source-code-pro"
cask "font-source-code-pro-for-powerline"
cask "font-source-sans-pro"
cask "font-source-serif-pro"
# Open Source Webfont Converter
cask "fontplop"
# GIT client
cask "fork"
# Set of tools to manage resources and applications hosted on Google Cloud
cask "google-cloud-sdk"
# HTTP and GraphQL Client
cask "insomnia"
# JetBrains tools manager
@@ -386,18 +328,12 @@ cask "jetbrains-toolbox"
cask "keybase"
# Kubernetes IDE
cask "lens"
# Keep all tasks from your todo apps on your menu bar
cask "monofocus"
# Reverse proxy, secure introspectable tunnels to localhost
cask "ngrok"
# Simple application that will prevent iTunes or Apple Music from launching
cask "notunes"
# Knowledge base that works on top of a local folder of plain text Markdown files
cask "obsidian"
# Scheduling application focusing on organization
cask "omnifocus"
# Collaboration platform for API development
cask "postman"
# Display image info and preview unsupported formats in QuickLook
cask "qlimagesize"
# Quick Look generator for Markdown files
@@ -412,12 +348,6 @@ cask "quicklookase"
cask "quitter"
# Control your tools with a few keystrokes
cask "raycast"
# Move and resize windows using keyboard shortcuts or snap areas
cask "rectangle"
# GUI for rsync
cask "rsyncosx"
# GUI for rsync
cask "rsyncui"
# MySQL/MariaDB database management
cask "sequel-ace"
# Plugin for AWS CLI to start and end sessions that connect to managed instances
@@ -432,11 +362,21 @@ cask "soundsource"
cask "suspicious-package"
# Quicklook extension for source files
cask "syntax-highlight"
# Python IDE for beginners
cask "thonny"
# To-do list
cask "todoist"
# Configuration application for the Ultimate Hacking Keyboard
cask "uhk-agent"
# Open-source code editor
cask "visual-studio-code"
# Multimedia player
cask "vlc"
# Spell-checking service for Finnish
cask "voikkospellservice"
# Rust-based terminal
cask "warp"
# GPU-accelerated cross-platform terminal emulator and multiplexer
cask "wezterm"
# Application for generating TOTP and HOTP codes
cask "yubico-authenticator"
# Multiplayer code editor
cask "zed"

53
config/htop/htoprc Normal file
View File

@@ -0,0 +1,53 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
htop_version=3.3.0
config_reader_min_version=3
fields=0 48 17 18 38 39 2 46 47 49 1
hide_kernel_threads=1
hide_userland_threads=0
hide_running_in_container=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=0
highlight_deleted_exe=1
shadow_distribution_path_prefix=0
highlight_megabytes=1
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=0
header_margin=1
screen_tabs=1
detailed_cpu_time=0
cpu_count_from_one=0
show_cpu_usage=1
show_cpu_frequency=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
enable_mouse=1
delay=15
hide_function_bar=0
header_layout=two_50_50
column_meters_0=LeftCPUs2 Memory Swap
column_meter_modes_0=1 1 1
column_meters_1=RightCPUs2 Tasks LoadAverage Uptime
column_meter_modes_1=1 2 2 2
tree_view=0
sort_key=46
tree_sort_key=0
sort_direction=-1
tree_sort_direction=1
tree_view_always_by_pid=0
all_branches_collapsed=0
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT STATE PERCENT_CPU PERCENT_MEM TIME Command
.sort_key=PERCENT_CPU
.tree_sort_key=PID
.tree_view_always_by_pid=0
.tree_view=0
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=0

73
config/ideavim/ideavimrc Normal file
View File

@@ -0,0 +1,73 @@
"" Source your .vimrc
"source ~/.vimrc
"" -- Suggested options --
" Show a few lines of context around the cursor. Note that this makes the
" text scroll if you mouse-click near the start or end of the window.
set scrolloff=5
" Don't use Ex mode, use Q for formatting.
map Q gq
"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t
"" Map \r to the Reformat Code action
"map \r <Action>(ReformatCode)
"" Map <leader>d to start debug
"map <leader>d <Action>(Debug)
"" Map \b to toggle the breakpoint on the current line
"map \b <Action>(ToggleLineBreakpoint)
" Find more examples here: https://jb.gg/share-ideavimrc
" https://github.com/ville6000/dotfiles/blob/main/vimrc
set nocompatible " disable compatibility mode with vi
filetype off " disable filetype detection (but re-enable later, see below)
set encoding=utf-8 " UTF-8
set number " Show line numbers
set laststatus=2 " Always show statusline (even with only single window)
set showmatch " Highlight matching brace
set visualbell " Use visual bell (no beeping)
set hlsearch " Highlight all search results
set smartcase " Enable smart-case search
set ignorecase " Always case-insensitive
set incsearch " Searches for strings incrementally
set cindent " Use 'C' style program indenting
set expandtab " Use spaces instead of tabs
set shiftwidth=4 " Number of auto-indent spaces
set smartindent " Enable smart-indent
set smarttab " Enable smart-tabs
set softtabstop=4 " Number of spaces per Tab
set ruler " Show row and column ruler information
set cursorline " Highlight current line
set undolevels=1000 " Number of undo levels
set backspace=indent,eol,start " Backspace behaviour
set so=5
" move vertically by visual line (don't skip wrapped lines)
nmap j gj
nmap k gk
syntax enable
filetype plugin indent on
call plug#begin('~/.vim/plugged')
Plug 'ayu-theme/ayu-vim'
Plug 'ctrlpvim/ctrlp.vim'
call plug#end()
set termguicolors
set background=dark
let ayucolor="dark"
colorscheme ayu
if has('gui_running')
set macligatures
set guifont=JetBrainsMono:h14
endif

20
config/nvim/.editorconfig Normal file
View File

@@ -0,0 +1,20 @@
# EditorConfig is awesome: https://editorconfig.org
# top-most EditorConfig file
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 2
max_line_length = 120
trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = false
[*.json]
max_line_length = off

View File

@@ -1,8 +1,3 @@
tt.*
.tests
doc/tags
debug
.repro
foo.*
*.log
data
spell/*
!spell/.gitkeep

View File

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

View File

@@ -1,15 +0,0 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"lua_ls": {
"enabled": true
}
}
}
}

View File

@@ -1,10 +1,11 @@
column_width = 120
column_width = 80
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
call_parentheses = "Always"
quote_style = "AutoPreferSingle"
call_parentheses = "None"
collapse_simple_statement = "Always"
[sort_requires]
enabled = true

View File

@@ -1,4 +0,0 @@
# 💤 LazyVim
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.

View File

@@ -1,2 +1,71 @@
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")
-- ╭─────────────────────────────────────────────────────────╮
-- │ ivuorinen's Neovim configuration │
-- ╰─────────────────────────────────────────────────────────╯
-- ── Install lazylazy ────────────────────────────────────────────────
-- https://github.com/folke/lazy.nvim
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not vim.uv.fs_stat(lazypath) then
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system {
'git',
'clone',
'--filter=blob:none',
'--branch=stable',
lazyrepo,
lazypath,
}
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ 'Failed to clone lazy.nvim:\n', 'ErrorMsg' },
{ out, 'WarningMsg' },
{ '\nPress any key to exit...' },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- ── Add ~/.local/bin to the PATH ────────────────────────────────────
vim.fn.setenv(
'PATH',
vim.fn.expand '$HOME/.local/bin' .. ':' .. vim.fn.expand '$PATH'
)
require 'options'
require 'autogroups'
-- ── Load plugins ────────────────────────────────────────────────────
require('lazy').setup(
-- Automatically load plugins from lua/plugins
'plugins',
-- Lazy Configuration
{
checker = {
-- Automatically check for updates
enabled = true,
-- We don't want to be notified about updates
notify = false,
},
change_detection = {
-- No need to notify about changes
notify = false,
},
dev = {
path = '~/Code/nvim', -- Load wip plugins from this path
},
install = {
colorscheme = { vim.g.colors_theme },
},
profiling = {
loader = true,
},
}
)
require('nvm-default').setup()
require 'keymaps'
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,29 +0,0 @@
{
"extras": [
"lazyvim.plugins.extras.coding.copilot",
"lazyvim.plugins.extras.coding.yanky",
"lazyvim.plugins.extras.editor.aerial",
"lazyvim.plugins.extras.editor.leap",
"lazyvim.plugins.extras.editor.symbols-outline",
"lazyvim.plugins.extras.formatting.black",
"lazyvim.plugins.extras.formatting.prettier",
"lazyvim.plugins.extras.lang.docker",
"lazyvim.plugins.extras.lang.go",
"lazyvim.plugins.extras.lang.json",
"lazyvim.plugins.extras.lang.markdown",
"lazyvim.plugins.extras.lang.python",
"lazyvim.plugins.extras.lang.tailwind",
"lazyvim.plugins.extras.lang.terraform",
"lazyvim.plugins.extras.lang.typescript",
"lazyvim.plugins.extras.lang.yaml",
"lazyvim.plugins.extras.linting.eslint",
"lazyvim.plugins.extras.ui.edgy",
"lazyvim.plugins.extras.ui.mini-animate",
"lazyvim.plugins.extras.util.dot",
"lazyvim.plugins.extras.vscode"
],
"news": {
"NEWS.md": "2123"
},
"version": 2
}

View File

@@ -0,0 +1,107 @@
-- ╭─────────────────────────────────────────────────────────╮
-- │ Autogroups │
-- ╰─────────────────────────────────────────────────────────╯
local augroup = vim.api.nvim_create_augroup -- Create/get autocommand group
local autocmd = vim.api.nvim_create_autocmd -- Create autocommand
-- Highlight on yank
-- See `:help vim.highlight.on_yank()`
autocmd('TextYankPost', {
callback = function() vim.highlight.on_yank() end,
group = augroup('YankHighlight', { clear = true }),
pattern = '*',
})
-- Set the numberwidth to the maximum line number.
--
-- This fixes the issue where the line numbers jump
-- around when moving between lines relative line numbers enabled.
autocmd({ 'BufEnter', 'BufWinEnter', 'TabEnter' }, {
callback = function()
local max_line_count = vim.fn.line '$'
-- Only adjust if the file is large enough to matter
if max_line_count > 99 then
vim.opt.numberwidth = #tostring(max_line_count) + 1
end
end,
})
-- Windows to close with "q"
autocmd('FileType', {
group = augroup('close_with_q', { clear = true }),
pattern = {
'PlenaryTestPopup',
'checkhealth',
'dbout',
'gitsigns.blame',
'grug-far',
'help',
'lspinfo',
'man',
'neotest-output',
'neotest-output-panel',
'neotest-summary',
'notify',
'qf',
'spectre_panel',
'startuptime',
'tsplayground',
},
callback = function(event)
vim.bo[event.buf].buflisted = false
vim.keymap.set('n', 'q', '<cmd>close<cr>', {
buffer = event.buf,
silent = true,
desc = 'Quit buffer',
})
end,
})
-- make it easier to close man-files when opened inline
autocmd('FileType', {
group = augroup('man_unlisted', { clear = true }),
pattern = { 'man' },
callback = function(event) vim.bo[event.buf].buflisted = false end,
})
-- wrap and check for spell in text filetypes
autocmd('FileType', {
group = augroup('wrap_spell', { clear = true }),
pattern = {
'text',
'plaintex',
'typst',
'gitcommit',
'markdown',
'asciidoc',
'rst',
'tex',
},
callback = function()
vim.opt_local.wrap = true
vim.opt_local.spell = true
end,
})
-- Fix conceallevel for json files
autocmd({ 'FileType' }, {
group = augroup('json_conceal', { clear = true }),
pattern = { 'json', 'jsonc', 'json5' },
callback = function() vim.opt_local.conceallevel = 0 end,
})
-- Set filetype for SSH config directory
-- Pattern handles directories with files like:
-- .dotfiles/ssh/config.d/*, .ssh/config.local, .ssh/config.work
autocmd({ 'BufRead', 'BufNewFile' }, {
desc = 'Set filetype for SSH config directory',
pattern = {
'*/?.ssh/{config|shared}.d/*',
'*/?.ssh/config.local',
'*/?.ssh/config.work',
},
command = 'set filetype=sshconfig',
})
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,3 +0,0 @@
-- Autocmds are automatically loaded on the VeryLazy event
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
-- Add any additional autocmds here

View File

@@ -1,22 +0,0 @@
-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here
local wk = require("which-key")
-- ╭──────────────────────────────────────────────────────────╮
-- │ Comment box │
-- ╰──────────────────────────────────────────────────────────╯
wk.register({
["<Leader>"] = {
b = {
c = {
name = "□ Comment boxes",
b = { "<Cmd>CBccbox<CR>", "Box Title" },
t = { "<Cmd>CBllline<CR>", "Titled Line" },
l = { "<Cmd>CBline<CR>", "Simple Line" },
m = { "<Cmd>CBllbox14<CR>", "Marked" },
d = { "<Cmd>CBd<CR>", "Remove a box" },
},
},
},
})

View File

@@ -1,63 +0,0 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
-- bootstrap lazy.nvim
-- stylua: ignore
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
end
vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
require("lazy").setup({
spec = {
-- add LazyVim and import its plugins
{
"LazyVim/LazyVim",
import = "lazyvim.plugins",
opts = {
colorscheme = "tokyonight",
},
},
{
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
opts = {
style = "night",
transparent = true,
sidebars = { "qf", "vista_kind", "terminal", "packer" },
styles = {
sidebars = "transparent",
floats = "transparent",
},
dim_inactive = true,
lualine_bold = true,
},
},
{ import = "plugins" },
},
defaults = {
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
lazy = false,
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
-- have outdated releases, which may break your Neovim install.
-- version = false, -- always use the latest git commit
version = "*", -- try installing the latest stable version for plugins that support semver
},
install = { colorscheme = { "tokyonight" } },
checker = { enabled = true }, -- automatically check for plugin updates
performance = {
rtp = {
-- disable some rtp plugins
disabled_plugins = {
"gzip",
-- "matchit",
-- "matchparen",
-- "netrwPlugin",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
})

View File

@@ -1,13 +0,0 @@
-- Options are automatically loaded before lazy.nvim startup
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
-- Add any additional options here
local opt = vim.opt
opt.number = true
opt.relativenumber = true
opt.modeline = true
vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" }
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et

182
config/nvim/lua/keymaps.lua Normal file
View File

@@ -0,0 +1,182 @@
-- vim: set ft=lua ts=2 sw=2 tw=0 et cc=130 :
require 'utils'
-- ╭─────────────────────────────────────────────────────────╮
-- │ Keymaps │
-- ╰─────────────────────────────────────────────────────────╯
-- ── Disable arrow keys in normal mode ───────────────────────────────
K.n('<left>', ':echo "Use h to move!!"<CR>')
K.n('<right>', ':echo "Use l to move!!"<CR>')
K.n('<up>', ':echo "Use k to move!!"<CR>')
K.n('<down>', ':echo "Use j to move!!"<CR>')
-- ── Splits ──────────────────────────────────────────────────────────
K.n('<C-w>,', ':vertical resize -10<CR>', { desc = 'V Resize -' })
K.n('<C-w>.', ':vertical resize +10<CR>', { desc = 'V Resize +' })
K.n('<C-w>-', ':resize -10<CR>', { desc = 'H Resize -' })
K.n('<C-w>+', ':resize +10<CR>', { desc = 'H Resize +' })
K.n('<C-w>=', '<C-w>=', { desc = 'Equal Size Splits' })
-- ── Deal with word wrap ─────────────────────────────────────────────
K.n(
'k',
"v:count == 0 ? 'gk' : 'k'",
{ desc = 'Move up', noremap = true, expr = true }
)
K.n(
'j',
"v:count == 0 ? 'gj' : 'j'",
{ desc = 'Move down', noremap = true, expr = true }
)
-- ── Text manipulation ───────────────────────────────────────────────
K.d('<', { 'n', 'v' }, '<gv', 'Indent Left')
K.d('>', { 'n', 'v' }, '>gv', 'Indent Right')
K.d('<C-k>', { 'n', 'v' }, ":m '<-2<CR>gv=gv", 'Move Block Up')
K.d('<C-j>', { 'n', 'v' }, ":m '>+1<CR>gv=gv", 'Move Block Down')
-- ── Other operations ────────────────────────────────────────────────
K.nl('o', function() require('snacks').gitbrowse() end, 'Open repo in browser')
K.n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
K.n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
-- ── ToggleTerm ──────────────────────────────────────────────────────
K.d('<F1>', 'n', ':FloatermToggle<CR>', 'Toggle Floaterm')
K.d('<F1>', 'i', '<Esc>:FloatermToggle<CR>', 'Toggle Floaterm')
K.d('<F1>', 't', '<C-\\><C-n>:FloatermToggle<CR>', 'Toggle Floaterm')
-- ── Test operations ─────────────────────────────────────────────────
K.nl('an', ':silent TestNearest<CR>', 'Test Nearest')
K.nl('af', ':silent TestFile<CR>', 'Test File')
K.nl('as', ':silent TestSuite<CR>', 'Test Suite')
K.nl('al', ':silent TestLast<CR>', 'Test Last')
K.nl('av', ':silent TestVisit<CR>', 'Test Visit')
-- ── PHPActor Operations ─────────────────────────────────────────────
K.nl('apm', ':PhpactorContextMenu<cr>', 'PHPactor: Context Menu')
K.nl('apn', ':PhpactorClassNew<cr>', 'PHPactor: Class New')
K.nl('aps', ':PhpactorClassSearch<cr>', 'PHPactor: Class Search')
K.nl('apt', ':PhpactorTransform<cr>', 'PHPactor: Transform')
-- ── Buffer operations ───────────────────────────────────────────────
-- Mappings for buffer management operations like switching, deleting, etc.
-- Convention: All mappings start with 'b' followed by the operation
K.nl('ba', ':%bd|e#|bd#<cr>', 'Close all except current')
K.nl('bd', ':lua MiniBufremove.delete()<CR>', 'Delete')
K.nl('bh', ':bprev<cr>', 'Prev')
K.nl('bj', ':bfirst<cr>', 'First')
K.nl('bk', ':blast<cr>', 'Last')
K.nl('bl', ':bnext<cr>', 'Next')
K.nl('bw', ':lua MiniBufremove.wipeout()<CR>', 'Wipeout')
-- ── Code & LSP operations ───────────────────────────────────────────
-- Mappings for code and LSP operations like code actions, formatting, etc.
-- Convention: All mappings start with 'c' followed by the operation
-- unless it's a generic operation like signature help or hover
local b = function() return require 'telescope.builtin' end
local lws = function() return b().lsp_workspace_symbols() end
local ldws = function() return b().lsp_dynamic_workspace_symbols() end
K.n('<C-l>', ':lua vim.lsp.buf.signature_help()<CR>', { desc = 'Signature' })
K.n('K', ':lua vim.lsp.buf.hover()<CR>', { desc = 'Hover Documentation' })
K.ld('ca', 'n', ':lua vim.lsp.buf.code_action()<CR>', 'Code Action')
K.ld('cci', 'n', function() b().lsp_incoming_calls() end, 'Incoming calls')
K.ld('cco', 'n', function() b().lsp_outgoing_calls() end, 'Outgoing calls')
K.ld('cd', 'n', function() b().lsp_definitions() end, 'Definitions')
K.ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format')
K.ld('cg', 'n', ':lua require("neogen").generate()<CR>', 'Generate annotations')
K.ld('ci', 'n', function() b().lsp_implementations() end, 'Implementations')
K.ld('cp', 'n', function() b().lsp_type_definitions() end, 'Type Definition')
K.ld('cr', 'n', vim.lsp.buf.rename, 'Rename')
K.ld('cs', 'n', ':Telescope lsp_document_symbols<CR>', 'LSP Document Symbols')
K.ld('ct', 'n', function() b().treesitter() end, 'treesitter')
K.ld('cws', 'n', function() lws() end, 'Workspace Symbols')
K.ld('cwd', 'n', function() ldws() end, 'Dynamic Workspace Symbols')
-- ── CommentBox operations ───────────────────────────────────────────
-- Mappings for creating and managing comment boxes
-- Convention: All mappings start with 'cb' followed by the box type
K.nl('cbb', '<Cmd>CBccbox<CR>', 'CB: Box Title')
K.nl('cbd', '<Cmd>CBd<CR>', 'CB: Remove a box')
K.nl('cbl', '<Cmd>CBline<CR>', 'CB: Simple Line')
K.nl('cbm', '<Cmd>CBllbox14<CR>', 'CB: Marked')
K.nl('cbt', '<Cmd>CBllline<CR>', 'CB: Titled Line')
-- ── Telescope operations ────────────────────────────────────────────
-- Mappings for Telescope operations like finding files, buffers, etc.
-- Convention: All mappings start with 's' followed by the operation
-- unless it's a generic operation like searching or finding buffers
local fuzzy_search = function()
require('telescope.builtin').find_files(
require('telescope.themes').get_dropdown {
winblend = 20,
previewer = true,
}
)
end
local lazy_plugins = function()
return require('telescope').extensions.lazy_plugins.lazy_plugins()
end
K.nl('f', ':Telescope fd --hidden=true<cr>', 'Find Files')
K.nl(',', ':Telescope buffers<cr>', 'Find existing buffers')
K.nl('/', function() fuzzy_search() end, 'Fuzzily search in current buffer')
K.nl('sc', ':Telescope commands<cr>', 'Commands')
K.nl('sd', ':Telescope diagnostics<cr>', 'Search Diagnostics')
K.nl('sg', ':Telescope live_grep<cr>', 'Search by Grep')
K.nl('sh', ':Telescope help_tags<cr>', 'Help tags')
K.nl('sk', ':Telescope keymaps<cr>', 'Search Keymaps')
K.nl('sl', ':Telescope luasnip<CR>', 'Search LuaSnip')
K.nl('so', ':Telescope oldfiles<CR>', 'Old Files')
K.nl('sp', function() lazy_plugins() end, 'Lazy Plugins')
K.nl('sq', ':Telescope quickfix<cr>', 'Quickfix')
K.nl('ss', ':Telescope treesitter<cr>', 'Treesitter')
K.nl('sw', ':Telescope grep_string<cr>', 'Grep String')
K.nl('sx', ':Telescope import<cr>', 'Telescope: Import')
-- ── Trouble operations ──────────────────────────────────────────────
-- Convention is 'x' followed by the operation
K.nl('xd', ':Trouble diagnostics<cr>', 'Document Diagnostics')
K.nl('xl', ':Trouble loclist<cr>', 'Location List')
K.nl('xq', ':Trouble quickfix<cr>', 'Quickfix')
K.nl('xw', ':Trouble workspace_diagnostics<cr>', 'Workspace Diagnostics')
K.nl('xx', ':Trouble diagnostics<cr>', 'Diagnostic')
-- ── Toggle settings ─────────────────────────────────────────────────
-- Convention is 't' followed by the operation
K.nl('tc', ':CloakToggle<cr>', 'Cloak: Toggle')
K.nl('te', ':Neotree toggle<cr>', 'Toggle Neotree')
K.nl('tl', ToggleBackground, 'Toggle Light/Dark Mode')
K.nl('tn', ':Noice dismiss<cr>', 'Noice: Dismiss Notification')
-- ── Quit operations ─────────────────────────────────────────────────
-- Convention is 'q' followed by the operation
K.nl('qf', ':q<CR>', 'Quicker close split')
K.nl('qq', function()
if vim.fn.confirm('Force save and quit?', '&Yes\n&No', 2) == 1 then
vim.cmd 'wq!'
end
end, 'Quit with force saving')
K.nl('qw', ':wq<CR>', 'Write and quit')
K.nl('qQ', function()
if vim.fn.confirm('Force quit without saving?', '&Yes\n&No', 2) == 1 then
vim.cmd 'q!'
end
end, 'Force quit without saving')
-- ── Flash.nvim keymaps ──────────────────────────────────────────────
local nxo = { 'n', 'x', 'o' }
local fj = function() return require('flash').jump() end
local ft = function() return require('flash').treesitter() end
local fx = function() return require('flash').toggle() end
K.d('zk', nxo, fj, { desc = 'Flash' })
K.d('Zk', nxo, ft, { desc = 'Flash Treesitter' })
K.d('<m-s>', 'c', fx, { desc = 'Toggle Flash Search' })
-- That concludes the keymaps section of the config.

View File

@@ -0,0 +1,122 @@
-- Get nvm default version and use it in node_host_prog
-- and g.copilot_node_command.
--
-- This module automatically configures Neovim to use the default Node.js version
-- from NVM. It requires a working NVM installation and 'default' alias to be set,
-- and also neovim npm package to be installed.
--
-- You can install the neovim package by running:
-- npm i --global neovim
--
-- Usage:
-- require('nvm-default').setup({
-- add_to_path = true, -- optional: add NVM bin directory to PATH
-- nvm_path = "~/.nvm", -- optional: custom NVM installation path
-- notify_level = "info" -- optional: notification level
-- })
local M = {}
M.name = 'nvm-default.nvim'
M.version = '0.1.0' -- x-release-please-version
-- Helper function to run a shell command
---@param cmd string Run a shell command
---@return string? Return the result of the command
local function run_command(cmd)
local result = vim.fn.system(cmd)
return vim.v.shell_error == 0 and result:gsub('%s+$', '') or nil
end
-- Helper function to show a notification
---@param msg string Show a message
---@param level "info"|"warn"|"error"|"trace" Notification level
local function n(msg, level)
if msg == nil then msg = M.name .. ': No message provided' end
if level == nil then level = 'trace' end
local log_level = vim.log.levels.INFO
if level == 'info' then
log_level = vim.log.levels.INFO
elseif level == 'warn' then
log_level = vim.log.levels.WARN
elseif level == 'error' then
log_level = vim.log.levels.ERROR
elseif level == 'trace' then
log_level = vim.log.levels.TRACE
end
vim.notify(M.name .. ': ' .. msg, log_level)
end
---@class NvmDefaultOptions
---@field add_to_path boolean Add found NVM bin directory to PATH
---@field nvm_path string Where nvm installation is located
---@field notify_level number|"info"|"warn"|"error"|"trace" Notification level filter
-- Default options
---@type NvmDefaultOptions
M.defaults = {
add_to_path = vim.g.nvm_default_add_to_path or true,
nvm_path = vim.fn.expand(os.getenv 'NVM_DIR' or '~/.nvm'),
notify_level = vim.g.nvm_default_notify_level or 'info',
}
-- Fetch the NVM default version or fallback to node version
---@param opts? NvmDefaultOptions Plugin options
function M.setup(opts)
local options = vim.tbl_deep_extend('force', M.defaults, opts or {})
local nvm_path = options.nvm_path
local node_version = run_command(
string.format('. %s/nvm.sh && nvm version default', nvm_path)
) or run_command(string.format('. %s/nvm.sh && nvm version node', nvm_path))
if node_version and node_version:match '^v' then
-- Set vim.g.node_host_prog and vim.g.copilot_node_command
local current_nvm_version_path =
string.format('%s/versions/node/%s', nvm_path, node_version)
local current_nvm_node_bin_path =
string.format('%s/bin', current_nvm_version_path)
local current_nvm_node_bin =
string.format('%s/node', current_nvm_node_bin_path)
local neovim_node_host_bin_path =
string.format('%s/neovim-node-host', current_nvm_node_bin_path)
-- Collect missing files and directories errors for error output
local missing = {}
-- If node_dir isn't there, stop and show error
if not vim.fn.isdirectory(current_nvm_version_path) then
table.insert(missing, 'Node.js directory: ' .. current_nvm_version_path)
end
-- If node_bin isn't there, stop and show error
if not vim.fn.filereadable(current_nvm_node_bin) then
table.insert(missing, 'Node.js binary: ' .. current_nvm_node_bin)
end
if not vim.fn.filereadable(neovim_node_host_bin_path) then
table.insert(missing, 'Neovim host binary: ' .. neovim_node_host_bin_path)
end
if #missing > 0 then
n('Missing required files:\n- ' .. table.concat(missing, '\n- '), 'error')
return
end
-- Add to PATH if requested. Can be turned off by setting if it messes with
-- other tools.
if options.add_to_path then
vim.env.PATH = current_nvm_node_bin_path .. ':' .. vim.env.PATH
end
vim.g.node_host_prog = neovim_node_host_bin_path
vim.g.copilot_node_command = current_nvm_node_bin
else
n('Unable to determine the Node.js version from nvm.', 'error')
end
end
return M

View File

@@ -0,0 +1,66 @@
-- ╭─────────────────────────────────────────────────────────╮
-- │ neovim configuration options │
-- ╰─────────────────────────────────────────────────────────╯
-- See `:help vim.opt`
-- `:help vim.g`
-- For more options, you can see `:help option-list`
local g = vim.g -- A table to store global variables
local o = vim.opt -- A table to store global options
local a = vim.api -- A table to store API functions
-- vim.global
g.mapleader = ' ' -- Space as the leader key
g.maplocalleader = ' ' -- Space as the local leader key
g.colors_theme = 'tokyonight' -- Set the colorscheme
g.colors_variant_light = 'tokyonight-day' -- Set the light variant
g.colors_variant_dark = 'tokyonight-storm' -- Set the dark variant
g.editorconfig = true -- Make sure editorconfig support is enabled
g.loaded_perl_provider = 0 -- Disable perl provider
g.loaded_ruby_provider = 0 -- Disable ruby provider
g.loaded_java_provider = 0 -- Disable java provider
-- vim.options
-- Most of the good defaults are provided by `mini.basics`
-- See: lua/plugins/mini.lua
o.confirm = true -- Confirm before closing unsaved buffers
o.ignorecase = true -- Ignore case in search patterns
o.inccommand = 'split' -- Preview substitutions live, as you type!
o.list = true -- Show invisible characters
o.listchars = { tab = '» ', trail = '·', nbsp = '' }
o.number = true -- Show line numbers
o.numberwidth = 3 -- Set the width of the number column
o.relativenumber = true -- Show relative line numbers
o.scrolloff = 8 -- Show context around cursor
o.sidescrolloff = 8 -- Show context around cursor
o.signcolumn = 'yes' -- Keep signcolumn on by default
o.spell = true -- Enable spell checking
o.spelllang = 'en_us' -- Set the spell checking language
o.splitbelow = true -- split to the bottom
o.splitright = true -- vsplit to the right
o.termguicolors = true -- Enable GUI colors
o.timeoutlen = 250 -- Decrease mapped sequence wait time
o.updatetime = 250 -- 250 ms = 2,5 seconds
-- Session options
-- This is a comma separated list of options that will be
-- saved when a session ends.
local so = 'buffers,curdir,folds,tabpages,winsize,winpos,terminal,localoptions'
o.sessionoptions = so
o.wildmode = 'longest:full,full' -- Command-line completion mode
-- Enable the colorcolumn
a.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
-- Sync clipboard between OS and Neovim.
-- Schedule the setting after `UiEnter` because it can increase startup-time.
-- See `:help 'clipboard'`
vim.schedule(function()
local c = vim.env.SSH_TTY and '' or 'unnamedplus'
o.clipboard = c
end)
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,125 @@
return {
-- Performant, batteries-included completion plugin for Neovim
-- https:/github.com/saghen/blink.cmp
{
'saghen/blink.cmp',
version = '*',
lazy = false, -- lazy loading handled internally
dependencies = {
-- Compatibility layer for using nvim-cmp sources on blink.cmp
-- https://github.com/Saghen/blink.compat
{
'saghen/blink.compat',
version = '*',
-- lazy.nvim will automatically load the plugin when it's required by blink.cmp
opts = {
-- make sure to set opts so that lazy.nvim calls blink.compat's setup
impersonate_nvim_cmp = true,
},
},
{ 'L3MON4D3/LuaSnip', version = 'v2.*' },
-- Set of preconfigured snippets for different languages.
-- https://github.com/rafamadriz/friendly-snippets
{ 'rafamadriz/friendly-snippets' },
-- Lua plugin to turn github copilot into a cmp source
-- https://github.com/giuxtaposition/blink-cmp-copilot
{
'giuxtaposition/blink-cmp-copilot',
dependencies = {
-- Fully featured & enhanced replacement for copilot.vim complete
-- with API for interacting with Github Copilot
-- https://github.com/zbirenbaum/copilot.lua
{
'zbirenbaum/copilot.lua',
cmd = 'Copilot',
build = ':Copilot setup',
event = { 'InsertEnter', 'LspAttach' },
opts = {
fix_pairs = true,
suggestion = { enabled = false },
panel = { enabled = false },
filetypes = {
markdown = true,
},
},
},
},
},
},
---@module 'blink.cmp'
opts = {
snippets = { preset = 'luasnip' },
-- 'default' for mappings similar to built-in completion
-- 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate)
-- 'enter' for mappings similar to 'super-tab' but with 'enter' to accept
-- see the "default configuration" section below for full documentation on how to define
-- your own keymap.
keymap = {
preset = 'super-tab',
-- Use Ctrl-x to trigger auto completion
['<C-x>'] = { 'show', 'show_documentation', 'hide_documentation' },
},
appearance = {
-- Sets the fallback highlight groups to nvim-cmp's highlight groups
-- Useful for when your theme doesn't support blink.cmp
-- will be removed in a future release
use_nvim_cmp_as_default = true,
-- Set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = vim.g.nerd_font_variant or 'mono',
},
completion = {
menu = {
draw = {
columns = {
{ 'label', 'label_description', gap = 1 },
{ 'kind_icon', 'kind', gap = 1 },
},
},
},
documentation = {
auto_show = true,
},
ghost_text = {
enabled = false,
},
},
-- default list of enabled providers defined so that you can extend it
-- elsewhere in your config, without redefining it, via `opts_extend`
sources = {
default = {
'lazydev',
'lsp',
'snippets',
'copilot',
'path',
'buffer',
},
providers = {
copilot = {
name = 'copilot',
module = 'blink-cmp-copilot',
},
lazydev = {
name = 'LazyDev',
module = 'lazydev.integrations.blink',
-- make lazydev completions top priority (see `:h blink.cmp`)
score_offset = 100,
},
},
},
-- experimental signature help support
signature = { enabled = true },
},
-- allows extending the enabled_providers array elsewhere in your config
-- without having to redefine it
opts_extend = { 'sources.completion.enabled_providers' },
},
}

View File

@@ -0,0 +1,211 @@
return {
-- A better annotation generator.
-- Supports multiple languages and annotation conventions.
-- https://github.com/danymat/neogen
{
'danymat/neogen',
version = '*',
opts = { enabled = true, snippet_engine = 'luasnip' },
},
-- Terminal manager for (neo)vim
-- https://github.com/voldikss/vim-floaterm
{
'voldikss/vim-floaterm',
cmd = { 'FloatermToggle' },
init = function()
vim.g.floaterm_width = 0.8
vim.g.floaterm_height = 0.8
end,
},
-- Run your tests at the speed of thought
-- https://github.com/vim-test/vim-test
{
'vim-test/vim-test',
dependencies = { 'voldikss/vim-floaterm' },
config = function()
vim.cmd [[
function! PhpUnitTransform(cmd) abort
return join(map(split(a:cmd), 'v:val == "--colors" ? "--colors=always" : v:val'))
endfunction
let g:test#custom_transformations = {'phpunit': function('PhpUnitTransform')}
let g:test#transformation = 'phpunit'
" let test#php#phpunit#options = '--colors=always'
let test#php#pest#options = '-v'
let test#javascript#jest#options = '--color'
function! FloatermStrategy(cmd)
execute 'silent FloatermSend q'
execute 'silent FloatermKill'
execute 'FloatermNew! '.a:cmd.' | less -X'
endfunction
let g:test#custom_strategies = {'floaterm': function('FloatermStrategy')}
let g:test#strategy = 'floaterm'
]]
end,
},
-- Cloak allows you to overlay *'s over defined patterns in defined files.
-- https://github.com/laytan/cloak.nvim
{
'laytan/cloak.nvim',
version = '*',
opts = {
enabled = true,
cloak_character = '*',
-- The applied highlight group (colors) on the cloaking, see `:h highlight`.
highlight_group = 'Comment',
patterns = {
{
-- Match any file starting with ".env".
-- This can be a table to match multiple file patterns.
file_pattern = {
'.env*',
'wrangler.toml',
'.dev.vars',
},
-- Match an equals sign and any character after it.
-- This can also be a table of patterns to cloak,
-- example: cloak_pattern = { ":.+", "-.+" } for yaml files.
cloak_pattern = '=.+',
},
},
},
},
-- projectionist.vim: Granular project configuration
-- https://github.com/tpope/vim-projectionist
{
'tpope/vim-projectionist',
dependencies = 'tpope/vim-dispatch',
config = function()
vim.g.projectionist_heuristics = {
artisan = {
['*'] = {
start = 'php artisan serve',
console = 'php artisan tinker',
},
['app/*.php'] = {
type = 'source',
alternate = {
'tests/Unit/{}Test.php',
'tests/Feature/{}Test.php',
},
},
['tests/Feature/*Test.php'] = {
type = 'test',
alternate = 'app/{}.php',
},
['tests/Unit/*Test.php'] = {
type = 'test',
alternate = 'app/{}.php',
},
['app/Models/*.php'] = {
type = 'model',
},
['app/Http/Controllers/*.php'] = {
type = 'controller',
},
['routes/*.php'] = {
type = 'route',
},
['database/migrations/*.php'] = {
type = 'migration',
},
},
['src/&composer.json'] = {
['src/*.php'] = {
type = 'source',
alternate = {
'tests/{}Test.php',
},
},
['tests/*Test.php'] = {
type = 'test',
alternate = 'src/{}.php',
},
},
['app/&composer.json'] = {
['app/*.php'] = {
type = 'source',
alternate = {
'tests/{}Test.php',
},
},
['tests/*Test.php'] = {
type = 'test',
alternate = 'app/{}.php',
},
},
}
end,
},
-- A vim text object for XML/HTML attributes.
-- https://github.com/whatyouhide/vim-textobj-xmlattr
{
'whatyouhide/vim-textobj-xmlattr',
dependencies = { 'kana/vim-textobj-user' },
},
-- Describe the regexp under the cursor
-- https://github.com/bennypowers/nvim-regexplainer
{
'bennypowers/nvim-regexplainer',
event = 'BufEnter',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'MunifTanjim/nui.nvim',
},
opts = {
-- automatically show the explainer when the cursor enters a regexp
auto = true,
},
},
-- Clarify and beautify your comments using boxes and lines.
-- https://github.com/LudoPinelli/comment-box.nvim
{
'LudoPinelli/comment-box.nvim',
event = 'BufEnter',
opts = {},
},
-- Plugin to improve viewing Markdown files in Neovim
-- https://github.com/MeanderingProgrammer/render-markdown.nvim
{
'MeanderingProgrammer/render-markdown.nvim',
event = 'BufEnter',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'nvim-tree/nvim-web-devicons',
},
ft = 'markdown',
opts = {},
},
{
'ray-x/go.nvim',
dependencies = { -- optional packages
'ray-x/guihua.lua',
'neovim/nvim-lspconfig',
'nvim-treesitter/nvim-treesitter',
},
config = function() require('go').setup() end,
event = { 'CmdlineEnter' },
ft = { 'go', 'gomod' },
build = ':lua require("go.install").update_all_sync()', -- if you need to install/update all binaries
},
-- Mainly a PHP Language Server with more features than you can shake a stick at
-- https://github.com/phpactor/phpactor
{
'phpactor/phpactor',
build = 'composer install --no-dev --optimize-autoloader',
ft = 'php',
},
}

View File

@@ -1,126 +0,0 @@
return {
-- A better annotation generator. Supports multiple languages and annotation conventions.
-- https://github.com/danymat/neogen
{
"danymat/neogen",
dependencies = "nvim-treesitter/nvim-treesitter",
version = "*",
cmd = "Neogen",
opts = {
snippet_engine = "luasnip",
languages = {
lua = { template = { annotation_convention = "ldoc" } },
typescript = { template = { annotation_convention = "tsdoc" } },
typescriptreact = { template = { annotation_convention = "tsdoc" } },
},
},
keys = {
{
"<leader>ba",
desc = "Annotations / Comments",
},
{
"<leader>baa",
function()
require("neogen").generate({ type = "current" })
end,
desc = "Current",
},
{
"<leader>bac",
function()
require("neogen").generate({ type = "class" })
end,
desc = "Class",
},
{
"<leader>baf",
function()
require("neogen").generate({ type = "func" })
end,
desc = "Function",
},
{
"<leader>bat",
function()
require("neogen").generate({ type = "type" })
end,
desc = "Type",
},
{
"<leader>baF",
function()
require("neogen").generate({ type = "file" })
end,
desc = "File",
},
},
},
{
"laytan/tailwind-sorter.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-lua/plenary.nvim" },
build = "cd formatter && npm i && npm run build",
config = true,
opts = {
on_save_enabled = true,
},
},
-- Describe the regexp under the cursor
-- https://github.com/bennypowers/nvim-regexplainer
{
"bennypowers/nvim-regexplainer",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"MunifTanjim/nui.nvim",
},
opts = {
-- automatically show the explainer when the cursor enters a regexp
auto = true,
},
},
-- Clarify and beautify your comments using boxes and lines.
-- https://github.com/LudoPinelli/comment-box.nvim
{ "LudoPinelli/comment-box.nvim", opts = {} },
-- Mason
-- https://github.com/williamboman/mason.nvim
{
"williamboman/mason.nvim",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"actionlint",
"ansible-language-server",
"ansible-lint",
"bash-language-server",
"blade-formatter",
"cfn-lint",
"codeql",
"codespell",
"commitlint",
"diagnostic-languageserver",
"docker-compose-language-service",
"dockerfile-language-server",
"editorconfig-checker",
"fixjson",
"flake8",
"html-lsp",
"jq",
"jsonlint",
"luacheck",
"nginx-language-server",
"php-cs-fixer",
"phpcs",
"phpmd",
"semgrep",
"shellcheck",
"shfmt",
"sonarlint-language-server",
"stylelint",
"stylua",
"yamllint",
})
end,
},
-- Vim plugin for automatic time tracking and metrics generated from your programming activity.
-- https://github.com/wakatime/vim-wakatime
{ "wakatime/vim-wakatime", lazy = false, enabled = true },
}

View File

@@ -1,266 +0,0 @@
-- since this is just an example spec, don't actually load anything here and return an empty spec
-- stylua: ignore
if true then return {} end
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
--
-- In your plugin files, you can:
-- * add extra plugins
-- * disable/enabled LazyVim plugins
-- * override the configuration of LazyVim plugins
return {
-- add gruvbox
{ "ellisonleao/gruvbox.nvim" },
-- Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "gruvbox",
},
},
-- change trouble config
{
"folke/trouble.nvim",
-- opts will be merged with the parent spec
opts = { use_diagnostic_signs = true },
},
-- disable trouble
{ "folke/trouble.nvim", enabled = false },
-- add symbols-outline
{
"simrat39/symbols-outline.nvim",
cmd = "SymbolsOutline",
keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
config = true,
},
-- override nvim-cmp and add cmp-emoji
{
"hrsh7th/nvim-cmp",
dependencies = { "hrsh7th/cmp-emoji" },
---@param opts cmp.ConfigSchema
opts = function(_, opts)
local cmp = require("cmp")
opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
end,
},
-- change some telescope options and a keymap to browse plugin files
{
"nvim-telescope/telescope.nvim",
keys = {
-- add a keymap to browse plugin files
-- stylua: ignore
{
"<leader>fp",
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
desc = "Find Plugin File",
},
},
-- change some options
opts = {
defaults = {
layout_strategy = "horizontal",
layout_config = { prompt_position = "top" },
sorting_strategy = "ascending",
winblend = 0,
},
},
},
-- add telescope-fzf-native
{
"telescope.nvim",
dependencies = {
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
config = function()
require("telescope").load_extension("fzf")
end,
},
},
-- add pyright to lspconfig
{
"neovim/nvim-lspconfig",
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- pyright will be automatically installed with mason and loaded with lspconfig
pyright = {},
},
},
},
-- add tsserver and setup with typescript.nvim instead of lspconfig
{
"neovim/nvim-lspconfig",
dependencies = {
"jose-elias-alvarez/typescript.nvim",
init = function()
require("lazyvim.util.lsp").on_attach(function(_, buffer)
-- stylua: ignore
vim.keymap.set("n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
end)
end,
},
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
-- tsserver will be automatically installed with mason and loaded with lspconfig
tsserver = {},
},
-- you can do any additional lsp server setup here
-- return true if you don't want this server to be setup with lspconfig
---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
setup = {
-- example to setup with typescript.nvim
tsserver = function(_, opts)
require("typescript").setup({ server = opts })
return true
end,
-- Specify * to use this function as a fallback for any server
-- ["*"] = function(server, opts) end,
},
},
},
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
{ import = "lazyvim.plugins.extras.lang.typescript" },
-- add more treesitter parsers
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"bash",
"html",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"query",
"regex",
"tsx",
"typescript",
"vim",
"yaml",
},
},
},
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
-- would overwrite `ensure_installed` with the new value.
-- If you'd rather extend the default config, use the code below instead:
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
-- add tsx and treesitter
vim.list_extend(opts.ensure_installed, {
"tsx",
"typescript",
})
end,
},
-- the opts function can also be used to change the default opts:
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function(_, opts)
table.insert(opts.sections.lualine_x, "😄")
end,
},
-- or you can return new options to override all the defaults
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function()
return {
--[[add your custom lualine config here]]
}
end,
},
-- use mini.starter instead of alpha
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
-- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
{ import = "lazyvim.plugins.extras.lang.json" },
-- add any tools you want to have installed below
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"stylua",
"shellcheck",
"shfmt",
"flake8",
},
},
},
-- Use <tab> for completion and snippets (supertab)
-- first: disable default <tab> and <s-tab> behavior in LuaSnip
{
"L3MON4D3/LuaSnip",
keys = function()
return {}
end,
},
-- then: setup supertab in cmp
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-emoji",
},
---@param opts cmp.ConfigSchema
opts = function(_, opts)
local has_words_before = function()
unpack = unpack or table.unpack
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
local luasnip = require("luasnip")
local cmp = require("cmp")
opts.mapping = vim.tbl_extend("force", opts.mapping, {
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
-- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
-- this way you will only jump inside the snippet region
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
})
end,
},
}

View File

@@ -0,0 +1,170 @@
return {
-- A collection of small QoL plugins for Neovim
-- https://github.com/folke/snacks.nvim
{
'folke/snacks.nvim',
priority = 1000,
lazy = false,
opts = {
bigfile = { enabled = true },
gitbrowse = { enabled = true },
quickfile = { enabled = true },
statuscolumn = {
enabled = true,
left = { 'mark', 'sign' }, -- priority of signs on the left (high to low)
right = { 'fold', 'git' }, -- priority of signs on the right (high to low)
folds = {
open = true, -- show open fold icons
git_hl = false, -- use Git Signs hl for fold icons
},
git = {
-- patterns to match Git signs
patterns = { 'GitSign', 'MiniDiffSign' },
},
refresh = 50, -- refresh at most every 50ms
},
words = { enabled = true },
styles = {
notification = {
wo = { wrap = true }, -- Wrap notifications
},
},
},
},
-- Highly experimental plugin that completely
-- replaces the UI for messages, cmdline and the popupmenu.
-- https://github.com/folke/noice.nvim
{
'folke/noice.nvim',
event = 'VeryLazy',
opts = {
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
['vim.lsp.util.convert_input_to_markdown_lines'] = true,
['vim.lsp.util.stylize_markdown'] = true,
['cmp.entry.get_documentation'] = true, -- requires hrsh7th/nvim-cmp
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
routes = {
{
filter = {
event = 'msg_show',
kind = '',
find = 'written',
},
opts = { skip = true },
},
{
filter = {
event = 'msg_show',
any = {
{ find = '%d+L, %d+B' },
{ find = '; after #%d+' },
{ find = '; before #%d+' },
{ find = "' added to" },
},
},
view = 'mini',
},
{
filter = {
event = 'lsp',
kind = 'progress',
cond = function(message)
local client = vim.tbl_get(message.opts, 'progress', 'client')
return client == 'lua_ls'
end,
},
opts = { skip = true },
},
},
views = {
cmdline_popup = {
border = {
style = 'none',
padding = { 1, 2 },
},
filter_options = {},
win_options = {
winhighlight = 'NormalFloat:NormalFloat,FloatBorder:FloatBorder',
},
},
},
},
dependencies = {
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
'MunifTanjim/nui.nvim',
-- OPTIONAL:
-- `nvim-notify` is only needed, if you want to use the notification view.
-- If not available, we use `mini` as the fallback
'rcarriga/nvim-notify',
},
},
-- A pretty diagnostics, references, telescope results,
-- quickfix and location list to help you solve all the
-- trouble your code is causing.
-- https://github.com/folke/trouble.nvim
{
'folke/trouble.nvim',
lazy = false,
cmd = 'Trouble',
dependencies = { 'nvim-tree/nvim-web-devicons' },
opts = {
auto_preview = true,
auto_fold = true,
auto_close = true,
use_lsp_diagnostic_signs = true,
keys = {
j = 'next',
k = 'prev',
},
modes = {
diagnostics = {
auto_open = true,
},
test = {
mode = 'diagnostics',
preview = {
type = 'split',
relative = 'win',
position = 'right',
size = 0.3,
},
},
cascade = {
mode = 'diagnostics', -- inherit from diagnostics mode
filter = function(items)
local severity = vim.diagnostic.severity.HINT
for _, item in ipairs(items) do
severity = math.min(severity, item.severity)
end
return vim.tbl_filter(
function(item) return item.severity == severity end,
items
)
end,
},
},
},
},
-- Navigate your code with search labels, enhanced
-- character motions and Treesitter integration
-- https://github.com/folke/flash.nvim
{
'folke/flash.nvim',
event = 'VeryLazy',
opts = {},
},
}

View File

@@ -1,47 +0,0 @@
return {
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"php",
})
end,
},
{
"williamboman/mason.nvim",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"phpactor",
})
end,
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
phpactor = {},
},
},
},
{
"mfussenegger/nvim-dap",
optional = true,
dependencies = {
"williamboman/mason.nvim",
opts = function(_, opts)
if type(opts.ensure_installed) == "table" then
table.insert(opts.ensure_installed, "php-debug-adapter")
end
end,
},
opts = function()
local dap = require("dap")
local path = require("mason-registry").get_package("php-debug-adapter"):get_install_path()
dap.adapters.php = {
type = "executable",
command = "node",
args = { path .. "/extension/out/phpDebug.js" },
}
end,
},
}

View File

@@ -0,0 +1,372 @@
-- ╭─────────────────────────────────────────────────────────╮
-- │ LSP Setup and configuration │
-- ╰─────────────────────────────────────────────────────────╯
require 'utils'
-- LSP Servers are installed and configured by lsp-setup.nvim
-- Mason formatters Conform uses to format files
-- These are automatically configured by zapling/mason-conform.nvim
local lsp_servers = {
bashls = {},
-- csharp_ls = {},
diagnosticls = {},
gopls = {
settings = {
gopls = {
hints = {
rangeVariableTypes = true,
parameterNames = true,
constantValues = true,
assignVariableTypes = true,
compositeLiteralFields = true,
compositeLiteralTypes = true,
functionTypeParameters = true,
},
},
},
},
html = {},
intelephense = {
init_options = {
licenceKey = GetIntelephenseLicense(),
},
},
jsonls = {},
lua_ls = {
settings = {
Lua = {
completion = {
callSnippet = 'Replace',
},
diagnostics = {
globals = {
'vim',
},
disable = {
-- Ignore lua_ls noisy `missing-fields` warnings
'missing-fields',
},
},
hint = {
enable = true,
arrayIndex = 'Auto',
await = true,
paramName = 'All',
paramType = true,
semicolon = 'SameLine',
setType = false,
},
},
},
},
tailwindcss = {},
ts_ls = {
settings = {
typescript = {
inlayHints = {
includeInlayParameterNameHints = 'all',
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
includeInlayFunctionParameterTypeHints = true,
includeInlayVariableTypeHints = true,
includeInlayVariableTypeHintsWhenTypeMatchesName = false,
includeInlayPropertyDeclarationTypeHints = true,
includeInlayFunctionLikeReturnTypeHints = true,
includeInlayEnumMemberValueHints = true,
},
},
},
},
vimls = {},
volar = {
settings = {
typescript = {
inlayHints = {
enumMemberValues = {
enabled = true,
},
functionLikeReturnTypes = {
enabled = true,
},
propertyDeclarationTypes = {
enabled = true,
},
parameterTypes = {
enabled = true,
suppressWhenArgumentMatchesName = true,
},
variableTypes = {
enabled = true,
},
},
},
},
},
}
-- Mason tools to automatically install and configure.
-- These are automatically configured by WhoIsSethDaniel/mason-tool-installer.nvim
local mason_tools = {
'actionlint',
'editorconfig-checker',
'goimports',
'gotests',
'phpcbf',
'phpmd',
'phpstan',
'pint',
'prettierd',
'semgrep',
'shellcheck',
'shfmt',
'staticcheck',
'stylua',
'trivy',
'vint',
'yamlfmt',
}
return {
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis
-- https://github.com/folke/lazydev.nvim
{
'folke/lazydev.nvim',
ft = 'lua',
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
-- load assert and describe paths
{ path = 'luassert/library', words = { 'assert' } },
{ path = 'busted/library', words = { 'describe' } },
},
},
},
-- Meta type definitions for the Lua platform Luvit.
-- https://github.com/Bilal2453/luvit-meta
{ 'Bilal2453/luvit-meta', lazy = true },
-- A simple wrapper for nvim-lspconfig and mason-lspconfig
-- to easily setup LSP servers.
-- https://github.com/junnplus/lsp-setup.nvim
{
'junnplus/lsp-setup.nvim',
dependencies = {
-- Quickstart configs for Nvim LSP
-- https://github.com/neovim/nvim-lspconfig
{ 'neovim/nvim-lspconfig' },
-- Portable package manager for Neovim that runs everywhere Neovim runs.
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
-- https://github.com/williamboman/mason.nvim
{
'williamboman/mason.nvim',
version = '*',
cmd = 'Mason',
run = ':MasonUpdate',
opts = {},
},
-- Extensible UI for Neovim notifications and LSP progress messages.
-- https://github.com/j-hui/fidget.nvim
{
'j-hui/fidget.nvim',
version = '*',
opts = {},
},
-- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
-- https://github.com/williamboman/mason-lspconfig.nvim
{ 'williamboman/mason-lspconfig.nvim' },
-- Install and upgrade third party tools automatically
-- https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim
{
'WhoIsSethDaniel/mason-tool-installer.nvim',
version = '*',
opts = {
auto_install = true,
auto_update = true,
ensure_installed = mason_tools,
},
},
-- JSON schemas for Neovim
-- https://github.com/b0o/SchemaStore.nvim
{ 'b0o/schemastore.nvim' },
-- Performant, batteries-included completion plugin for Neovim
-- https://github.com/saghen/blink.cmp
-- See lua/plugins/blink.lua for configs
{ 'saghen/blink.cmp' },
},
opts = {
default_mappings = false,
mappings = {
gd = 'lua require"telescope.builtin".lsp_definitions()',
gi = 'lua require"telescope.builtin".lsp_implementations()',
gr = 'lua require"telescope.builtin".lsp_references()',
},
inlay_hints = {
enabled = true,
},
servers = lsp_servers,
},
config = function(_, opts)
require('lazydev').setup()
require('lsp-setup').setup(opts)
local cmp = require 'blink.cmp'
local lspconfig = require 'lspconfig'
for server, config in pairs(opts.servers) do
-- passing config.capabilities to blink.cmp merges with the capabilities in your
-- `opts[server].capabilities, if you've defined it
config.capabilities = cmp.get_lsp_capabilities(config.capabilities)
lspconfig[server].setup(config)
end
lspconfig.lua_ls.on_init = function(client)
if client.workspace_folders then
local path = client.workspace_folders[1].name
if
vim.loop.fs_stat(path .. '/.luarc.json')
or vim.loop.fs_stat(path .. '/.luarc.jsonc')
then
return
end
end
client.config.settings.Lua =
vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
-- Tell the language server which version of Lua you're using
-- (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
},
-- Make the server aware of Neovim runtime files
workspace = {
checkThirdParty = false,
library = {
vim.env.VIMRUNTIME,
},
},
})
end
lspconfig.jsonls.settings = {
json = {
schemas = require('schemastore').json.schemas(),
validate = { enable = true },
},
yaml = {
schemaStore = {
-- You must disable built-in SchemaStore support if you want to use
-- this plugin and its advanced options like `ignore`.
enable = false,
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
url = '',
},
schemas = require('schemastore').yaml.schemas(),
validate = { enable = true },
},
}
-- Diagnostic configuration
local signs = {
{ name = 'DiagnosticSignError', text = '' }, -- Error icon
{ name = 'DiagnosticSignWarn', text = '' }, -- Warning icon
{ name = 'DiagnosticSignHint', text = '' }, -- Hint icon
{ name = 'DiagnosticSignInfo', text = '' }, -- Information icon
}
local function ensure_sign_defined(name, sign_opts)
if vim.tbl_isempty(vim.fn.sign_getdefined(name)) then
vim.fn.sign_define(name, sign_opts)
end
end
for _, sign in ipairs(signs) do
ensure_sign_defined(sign.name, {
text = sign.text,
texthl = sign.texthl or sign.name,
numhl = sign.numhl or sign.name,
})
end
---@type vim.diagnostic.Opts
local diagnostics_config = {
signs = {
active = signs, -- show signs
},
update_in_insert = false,
underline = true,
severity_sort = true,
virtual_text = true,
}
vim.diagnostic.config(diagnostics_config)
-- end of junnplus/lsp-setup config
end,
},
-- Lightweight yet powerful formatter plugin for Neovim
-- https://github.com/stevearc/conform.nvim
{
'stevearc/conform.nvim',
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
keys = {
{
'<leader>cf',
function()
require('conform').format { async = true, lsp_format = 'fallback' }
end,
mode = '',
desc = 'Format buffer',
},
},
opts = {
notify_on_error = false,
---@type nil|conform.FormatOpts|fun(bufnr: integer): nil|conform.FormatOpts
format_on_save = function(bufnr)
-- Disable "format_on_save lsp_fallback" for languages that don't
-- have a well standardized coding style. You can add additional
-- languages here or re-enable it for the disabled ones.
local disable_filetypes = { c = true, cpp = true }
local lsp_format_opt
if disable_filetypes[vim.bo[bufnr].filetype] then
lsp_format_opt = 'never'
else
lsp_format_opt = 'fallback'
end
-- Disable autoformat for files in a certain path
local bufname = vim.api.nvim_buf_get_name(bufnr)
if bufname:match '/node_modules/' then return end
return {
timeout_ms = 500,
lsp_format = lsp_format_opt,
}
end,
formatters_by_ft = {
lua = { 'stylua' },
sh = { 'shfmt' },
bash = { 'shfmt' },
php = { 'phpcbf' },
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
-- You can use 'stop_after_first' to run the first available formatter from the list
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
},
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
},
-- Automatically install formatters registered with conform.nvim via mason.nvim
-- https://github.com/zapling/mason-conform.nvim
{ 'zapling/mason-conform.nvim', opts = {} },
}

View File

@@ -0,0 +1,241 @@
return {
-- Library of 40+ independent Lua modules improving overall Neovim
-- (version 0.8 and higher) experience with minimal effort
--
-- https://github.com/echasnovski/mini.nvim
-- https://github.com/echasnovski/mini.nvim/tree/main?tab=readme-ov-file#modules
--
-- YouTube: Text editing with 'mini.nvim' - Neovimconf 2024 - Evgeni Chasnovski
-- https://www.youtube.com/watch?v=cNK5kYJ7mrs
{
'echasnovski/mini.nvim',
version = '*',
priority = 1001,
config = function()
-- Presets for common options and mappings
-- h: MiniBasics.config
require('mini.basics').setup {
options = {
basics = true,
extra_ui = true,
},
mappings = {
basic = true,
option_toggle_prefix = [[<leader>tm]],
},
}
-- Animate common Neovim actions
-- Replaced anuvyklack/windows.nvim
require('mini.animate').setup()
-- Buffer removing (unshow, delete, wipeout), which saves window layout
-- Replaced famiu/bufdelete.nvim
require('mini.bufremove').setup()
-- Show next key clues
-- Replaced folke/which-key.nvim
local miniclue = require 'mini.clue'
miniclue.setup {
window = {
config = {
width = 'auto',
},
},
triggers = {
-- Leader triggers
{ mode = 'n', keys = '<Leader>' },
{ mode = 'x', keys = '<Leader>' },
-- Built-in completion
{ mode = 'i', keys = '<C-x>' },
-- `g` key
{ mode = 'n', keys = 'g' },
{ mode = 'x', keys = 'g' },
-- Marks
{ mode = 'n', keys = "'" },
{ mode = 'n', keys = '`' },
{ mode = 'x', keys = "'" },
{ mode = 'x', keys = '`' },
-- Registers
{ mode = 'n', keys = '"' },
{ mode = 'x', keys = '"' },
{ mode = 'i', keys = '<C-r>' },
{ mode = 'c', keys = '<C-r>' },
-- Window commands
{ mode = 'n', keys = '<C-w>' },
-- `z` key
{ mode = 'n', keys = 'z' },
{ mode = 'x', keys = 'z' },
},
-- These mark the sections in the popup
clues = {
miniclue.gen_clues.builtin_completion(),
miniclue.gen_clues.g(),
miniclue.gen_clues.marks(),
miniclue.gen_clues.registers(),
miniclue.gen_clues.windows(),
miniclue.gen_clues.z(),
{ mode = 'n', keys = '<Leader>a', desc = '+Automation' },
{ mode = 'n', keys = '<Leader>b', desc = '+Buffers' },
{ mode = 'n', keys = '<Leader>c', desc = '+Code' },
{ mode = 'n', keys = '<Leader>cb', desc = '+CommentBox' },
{ mode = 'n', keys = '<Leader>cc', desc = '+Calls' },
{ mode = 'n', keys = '<Leader>q', desc = '+Quit' },
{ mode = 'n', keys = '<Leader>s', desc = '+Telescope' },
{ mode = 'n', keys = '<Leader>t', desc = '+Toggle' },
{ mode = 'n', keys = '<Leader>tm', desc = '+Mini' },
{ mode = 'n', keys = '<Leader>x', desc = '+Trouble' },
{ mode = 'n', keys = '<leader>z', desc = '+TreeSitter' },
{ mode = 'n', keys = '<leader>zg', desc = '+Goto' },
{ mode = 'n', keys = '<Leader>?', desc = '+Help' },
{ mode = 'n', keys = 'd', desc = '+Diagnostics' },
{ mode = 'n', keys = 'y', desc = '+Yank' },
},
}
-- Comment lines
-- Replaced numToStr/Comment.nvim
require('mini.comment').setup()
-- Highlight cursor word and its matches
require('mini.cursorword').setup()
-- Work with diff hunks
-- Replaced lewis6991/gitsigns.nvim
require('mini.diff').setup()
-- Git integration
require('mini.git').setup()
-- Highlight patterns in text
-- Replaced folke/todo-comments.nvim
local hp = require 'mini.hipatterns'
hp.setup {
highlighters = {
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE', 'BUG', 'PERF' words
fixme = {
pattern = '%f[%w]()FIXME:?%s*()%f[%W]',
group = 'MiniHipatternsFixme',
},
hack = {
pattern = '%f[%w]()HACK:?%s*()%f[%W]',
group = 'MiniHipatternsHack',
},
todo = {
pattern = '%f[%w]()TODO:?%s*()%f[%W]',
group = 'MiniHipatternsNote',
},
note = {
pattern = '%f[%w]()NOTE()%f[%W]',
group = 'MiniHipatternsNote',
},
bug = {
pattern = '%f[%w]()BUG:?%s*()%f[%W]',
group = 'MiniHipatternsHack',
},
perf = {
pattern = '%f[%w]()PERF:?%s*()%f[%W]',
group = 'MiniHipatternsNote',
},
},
-- Highlight hex color strings (`#rrggbb`) using that color
hex_color = hp.gen_highlighter.hex_color(),
}
-- Icons
require('mini.icons').setup {
file = {
['.keep'] = { glyph = '󰊢', hl = 'MiniIconsGrey' },
['devcontainer.json'] = { glyph = '', hl = 'MiniIconsAzure' },
},
filetype = {
dotenv = { glyph = '', hl = 'MiniIconsYellow' },
},
}
-- Visualize and work with indent scope
-- Replaced lukas-reineke/indent-blankline.nvim
require('mini.indentscope').setup()
-- Text edit operators
-- g= - Evaluate text and replace with output
-- gx - Exchange text regions
-- gm - Multiply (duplicate) text
-- gr - Replace text with register
-- gs - Sort text
require('mini.operators').setup()
-- Session management (read, write, delete)
require('mini.sessions').setup {
autowrite = true,
directory = vim.g.sessions_dir or vim.fn.stdpath 'data' .. '/sessions',
file = '',
}
-- Split and join arguments, lists, and other sequences
-- Replaced Wansmer/treesj
require('mini.splitjoin').setup()
-- Fast and flexible start screen
-- Replaced glepnir/dashboard-nvim
local starter = require 'mini.starter'
starter.setup {
items = {
starter.sections.telescope(),
starter.sections.builtin_actions(),
starter.sections.sessions(5, true),
},
content_hooks = {
starter.gen_hook.adding_bullet(),
starter.gen_hook.indexing('all', { 'Builtin actions' }),
starter.gen_hook.aligning('center', 'center'),
},
}
-- Minimal and fast statusline module with opinionated default look
-- Replaced nvim-lualine/lualine.nvim
local sl = require 'mini.statusline'
sl.setup {
use_icons = true,
set_vim_settings = true,
content = {
active = function()
local mode, mode_hl = sl.section_mode { trunc_width = 120 }
local git = sl.section_git { trunc_width = 9999 }
local diagnostics = sl.section_diagnostics { trunc_width = 9999 }
local filename = sl.section_filename { trunc_width = 9999 }
local fileinfo = sl.section_fileinfo { trunc_width = 9999 }
local location = sl.section_location { trunc_width = 9999 }
return sl.combine_groups {
{ hl = mode_hl, strings = { mode } },
{ hl = 'statuslineDevinfo', strings = { git, diagnostics } },
'%<', -- Mark general truncate point
{ hl = 'statuslineFilename', strings = { filename } },
'%=', -- End left alignment
{ hl = 'statuslineFileinfo', strings = { fileinfo } },
{ hl = mode_hl, strings = { location } },
}
end,
},
}
-- Fast and feature-rich surround actions
-- Replaced kylechui/nvim-surround
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
-- - sd' - [S]urround [D]elete [']quotes
-- - sr)' - [S]urround [R]eplace [)] [']
require('mini.surround').setup()
-- Work with trailing whitespace
require('mini.trailspace').setup()
end,
},
}

View File

@@ -0,0 +1,107 @@
-- Neo-tree is a Neovim plugin to browse the file system
-- https://github.com/nvim-neo-tree/neo-tree.nvim
return {
'nvim-neo-tree/neo-tree.nvim',
version = '*',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
'MunifTanjim/nui.nvim',
{
-- This plugins prompts the user to pick a window and returns
-- the window id of the picked window
-- https://github.com/s1n7ax/nvim-window-picker
's1n7ax/nvim-window-picker',
version = '2.*',
opts = {
filter_rules = {
include_current_win = false,
autoselect_one = true,
-- filter using buffer options
bo = {
-- if the file type is one of following, the window will be ignored
filetype = { 'neo-tree', 'neo-tree-popup', 'notify' },
-- if the buffer type is one of following, the window will be ignored
buftype = { 'terminal', 'quickfix' },
},
},
},
},
},
cmd = 'Neotree',
opts = {
close_if_last_window = true,
hide_root_node = true,
popup_border_style = 'rounded',
enable_git_status = true,
enable_diagnostics = true,
sources = {
'filesystem',
'buffers',
'document_symbols',
},
source_selector = {
winbar = true,
statusline = false,
separator = { left = '', right = '' },
show_separator_on_edge = true,
highlight_tab = 'SidebarTabInactive',
highlight_tab_active = 'SidebarTabActive',
highlight_background = 'StatusLine',
highlight_separator = 'SidebarTabInactiveSeparator',
highlight_separator_active = 'SidebarTabActiveSeparator',
},
event_handlers = {
{
event = 'file_opened',
handler = function(file_path)
require('neo-tree.command').execute { action = 'close' }
end,
},
},
default_component_configs = {
indent = {
padding = 0,
},
name = {
use_git_status_colors = true,
highlight_opened_files = true,
},
},
git_status = {
symbols = {
-- Change type
added = '',
modified = '',
deleted = '',
renamed = '󰁕',
-- Status type
untracked = '',
ignored = '',
unstaged = '󰄱',
staged = '',
conflict = '',
},
},
filesystem = {
window = {
mappings = {
['<Esc>'] = 'close_window',
['q'] = 'close_window',
['<cr>'] = 'open_with_window_picker',
},
},
filtered_items = {
hide_dotfiles = false,
hide_hidden = true, -- only works on Windows for hidden files/directories
never_show = {
'.DS_Store',
},
hide_by_name = {
'node_modules',
'.git',
},
},
},
},
}

View File

@@ -1,20 +0,0 @@
return {
"neovim/nvim-lspconfig",
opts = {
servers = {
eslint = {},
tflint = {},
},
setup = {
eslint = function()
require("lazyvim.util.lsp").on_attach(function(client)
if client.name == "eslint" then
client.server_capabilities.documentFormattingProvider = true
elseif client.name == "tsserver" then
client.server_capabilities.documentFormattingProvider = false
end
end)
end,
},
},
}

View File

@@ -0,0 +1,44 @@
return {
{
'rmagatti/auto-session',
lazy = false,
version = '*',
opts = {
suppressed_dirs = {
'/',
'~/',
'~/Downloads',
'~/Library',
},
bypass_save_filetypes = {
'PlenaryTestPopup',
'alpha',
'checkhealth',
'dashboard',
'dbout',
'gitsigns.blame',
'grug-far',
'help',
'lspinfo',
'man',
'neo-tree',
'neotest-output',
'neotest-output-panel',
'neotest-summary',
'notify',
'qf',
'spectre_panel',
'startuptime',
'trouble',
'tsplayground',
},
-- log_level = 'debug',
},
},
{
'nvim-lua/plenary.nvim',
version = '*',
lazy = false,
},
}

View File

@@ -1,53 +0,0 @@
return {
-- Use <tab> for completion and snippets (supertab)
-- first: disable default <tab> and <s-tab> behavior in LuaSnip
{
"L3MON4D3/LuaSnip",
keys = function()
return {}
end,
},
-- then: setup supertab in cmp
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-emoji",
},
---@param opts cmp.ConfigSchema
opts = function(_, opts)
local has_words_before = function()
unpack = unpack or table.unpack
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
local luasnip = require("luasnip")
local cmp = require("cmp")
opts.mapping = vim.tbl_extend("force", opts.mapping, {
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
-- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
-- this way you will only jump inside the snippet region
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
})
end,
},
}

View File

@@ -0,0 +1,105 @@
return {
-- Fuzzy Finder (files, lsp, etc)
-- https://github.com/nvim-telescope/telescope.nvim
'nvim-telescope/telescope.nvim',
version = '*',
lazy = false,
dependencies = {
{ 'nvim-lua/plenary.nvim' },
{ 'nvim-telescope/telescope-symbols.nvim' },
-- Telescope plugin for file browsing
{ 'nvim-telescope/telescope-file-browser.nvim' },
-- A Telescope picker to quickly access configurations
-- of plugins managed by lazy.nvim.
-- https://github.com/polirritmico/telescope-lazy-plugins.nvim
{ 'polirritmico/telescope-lazy-plugins.nvim' },
-- Neovim plugin. Telescope.nvim extension that adds LuaSnip integration.
-- https://github.com/benfowler/telescope-luasnip.nvim
{ 'benfowler/telescope-luasnip.nvim' },
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
-- Only load if `make` is available
{
'nvim-telescope/telescope-fzf-native.nvim',
build = 'make',
cond = vim.fn.executable 'make' == 1,
},
-- Import modules with ease
-- https://github.com/piersolenski/telescope-import.nvim
{ 'piersolenski/telescope-import.nvim' },
},
config = function()
local t = require 'telescope'
local a = require 'telescope.actions'
local open_with_trouble = require('trouble.sources.telescope').open
local add_to_trouble = require('trouble.sources.telescope').add
-- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
t.setup {
defaults = {
layout_strategy = 'horizontal',
pickers = {
find_files = {
theme = 'dropdown',
},
},
mappings = {
i = {
['<C-u>'] = false,
['<C-j>'] = a.move_selection_next,
['<C-k>'] = a.move_selection_previous,
['<C-d>'] = a.move_selection_previous,
['<C-t>'] = open_with_trouble,
['<C-q>'] = add_to_trouble,
},
n = {
['<C-t>'] = open_with_trouble,
['<C-q>'] = add_to_trouble,
},
},
},
extensions = {
lazy_plugins = {
-- Must be a valid path to the file containing the lazy spec and setup() call.
lazy_config = vim.fn.stdpath 'config' .. '/init.lua',
},
import = {
-- Imports can be added at a specified line whilst keeping the cursor in place
insert_at_top = true,
-- Optionally support additional languages or modify existing languages...
custom_languages = {
{
-- The filetypes that ripgrep supports (find these via `rg --type-list`)
extensions = { 'js', 'ts' },
-- The Vim filetypes
filetypes = { 'vue' },
-- Optionally set a line other than 1
insert_at_line = 2, ---@type function|number
-- The regex pattern for the import statement
regex = [[^(?:import(?:[\"'\s]*([\w*{}\n, ]+)from\s*)?[\"'\s](.*?)[\"'\s].*)]],
},
},
},
},
}
-- Load extensions
pcall(t.load_extension, 'git_worktree')
pcall(t.load_extension, 'lazy_plugins')
pcall(t.load_extension, 'luasnip')
pcall(t.load_extension, 'import')
-- Enable telescope fzf native, if installed
pcall(t.load_extension, 'fzf')
-- [[ Telescope Keymaps ]]
-- See `:help telescope.builtin`
-- See `:help telescope.keymap`
end,
}

View File

@@ -1,23 +1,67 @@
-- Highlight, edit, and navigate code
-- https://github.com/nvim-treesitter/nvim-treesitter
return {
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"bash",
"html",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"query",
"regex",
"tsx",
"typescript",
"vim",
"yaml",
})
end,
'nvim-treesitter/nvim-treesitter',
version = false, -- last release is way too old and doesn't work on Windows
build = function()
pcall(require('nvim-treesitter.install').update { with_sync = true })
end,
dependencies = {
'nvim-treesitter/nvim-treesitter-textobjects',
'nvim-treesitter/nvim-treesitter-refactor',
'nvim-treesitter/nvim-treesitter-context',
'JoosepAlviste/nvim-ts-context-commentstring',
},
opts = {
auto_install = true, -- Auto install the parser generators
sync_install = false, -- Sync install the parser generators, install async
-- Add languages to be installed here that you want installed for treesitter
ensure_installed = {
'bash',
'json',
'jsonc',
'lua',
'luadoc',
'markdown',
'markdown_inline',
'query',
'regex',
'vim',
'vimdoc',
'yaml',
},
highlight = { enable = true },
indent = { enable = true },
textobjects = {
select = {
enable = true,
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
},
},
},
config = function(_, opts)
require('nvim-treesitter.configs').setup(opts)
vim.api.nvim_create_autocmd({ 'FileType' }, {
callback = function()
-- Set foldmethod to treesitter if available
if require('nvim-treesitter.parsers').has_parser() then
vim.opt.foldmethod = 'expr'
vim.opt.foldexpr = 'nvim_treesitter#foldexpr()'
else
-- Otherwise, set foldmethod to syntax
vim.opt.foldmethod = 'syntax'
end
vim.opt.foldlevel = 9 -- Open all folds by default
vim.opt.foldnestmax = 99 -- Maximum fold nesting
end,
})
end,
}

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