mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 20:45:31 +00:00
Compare commits
235 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9697c200f9 | ||
| fd11f9966b | |||
| 722b3c0cde | |||
| 4fcb9d9741 | |||
| fc232f26f7 | |||
| 8b078309cf | |||
| 5a8f990e52 | |||
| c76c5d08b0 | |||
| b2857e226c | |||
| dfbac0c736 | |||
| fdd713908c | |||
| 60210c9bec | |||
| eaf8d2bdca | |||
| cc00055626 | |||
|
|
567de68844 | ||
|
|
ed0b229757 | ||
| c8b6243c0b | |||
|
|
21a92eb145 | ||
| 8ec317f582 | |||
|
|
42201d8b68 | ||
|
|
0c003ae5b9 | ||
| d383031ec8 | |||
|
|
fa5e5f16da | ||
| f82396236e | |||
| b127c2514d | |||
|
|
b06ac3bc0f | ||
|
|
7e4ea90a05 | ||
|
|
d264a33d21 | ||
| 224ee56461 | |||
|
|
8147490c65 | ||
|
|
c6d501347a | ||
|
|
d8044f2b6a | ||
|
|
1b3fe6d12e | ||
| 76b66d8c61 | |||
| 9c8644de17 | |||
| 120345b562 | |||
| 8accd4a60b | |||
| 8fb03660ad | |||
| 8b2dc74f2a | |||
| 8fa63e63bb | |||
| 4ca5b63b75 | |||
| 5a59872377 | |||
| 38419eda28 | |||
| fc85dbaa6c | |||
| 250e7f5666 | |||
| 8f96922033 | |||
| 4c4de2dc26 | |||
| b8c163e028 | |||
| 0a974c2a17 | |||
| fd8d72ab38 | |||
| 0908a23231 | |||
| 2e070eed83 | |||
| e22762255d | |||
| 093f58f129 | |||
| 9b6e39b4af | |||
|
|
6f1e1a0416 | ||
| 36e0f36e06 | |||
| e2c37d29e8 | |||
| 78716fa8ce | |||
| 81e9b20eb6 | |||
|
|
94e58b307b | ||
| 98aca096a9 | |||
| 121e31c7d4 | |||
| f6bcd10ac5 | |||
| 619c772fcc | |||
| 746d44151c | |||
| b9585209be | |||
| 930dcf00c4 | |||
| bb8e3bba56 | |||
| 6431c2e6dc | |||
| 248eca1ae6 | |||
| 4b1ab2e1b8 | |||
| c0f537439b | |||
| 9ab132d37c | |||
| 2b9ddc232b | |||
| 1a244ce0b1 | |||
| fdc0f45b23 | |||
| 3fa90eef3b | |||
| 7ea7c12f0b | |||
| f76492b942 | |||
| 7947340663 | |||
| 300c48b1e9 | |||
| 772527cc66 | |||
|
|
370fdcbcbe | ||
| b32c86bac2 | |||
| 8d85809b1c | |||
| 7fc40e3eab | |||
|
|
1aca769ebf | ||
| 57df4edf6c | |||
| 240ac35aa8 | |||
| ad0ba59b67 | |||
| bbc26e66dd | |||
| 1803d41969 | |||
| 34d547433f | |||
| dff4b9a9c5 | |||
| c33404eb27 | |||
| 99e7578d60 | |||
| d8011728c7 | |||
| 2f67d4a2e2 | |||
|
|
ef37681087 | ||
|
|
0c014033d1 | ||
|
|
14635009d2 | ||
| 70118fee52 | |||
|
|
0dce28ea6a | ||
| ba15f82302 | |||
| d4972ea30d | |||
| ed7263dfee | |||
| 4cda063305 | |||
| d251ea9cdc | |||
| bc4e906ff6 | |||
| 75c36bacf9 | |||
| e7cda5ac0c | |||
| 41024b1eb5 | |||
| 74afeb61c8 | |||
| 104bc369bc | |||
| 57e63847ce | |||
| 2dc08e5e51 | |||
| 989b5b5111 | |||
| 24a5dd1ff6 | |||
| 5826e35853 | |||
| e329868568 | |||
| dc76fa8914 | |||
| 3413365d41 | |||
| 37299f4893 | |||
| 71a78c6e0c | |||
| 3f8a4deb05 | |||
| ffe288aba3 | |||
| 28a1fc2831 | |||
| 28aae89f70 | |||
| e8fe5c570b | |||
| 26f6024292 | |||
| 4e4692321b | |||
| 3ea221ccf9 | |||
| e7774c4ab1 | |||
| 1f2ca90ca5 | |||
| adecceda7a | |||
| 8a3b2e703c | |||
| 1ee726e30c | |||
| 9857c8eb00 | |||
| a919d9544e | |||
| 7bc7921a17 | |||
| 735807f245 | |||
| 6d531e2d40 | |||
| 77f89c0f48 | |||
| 7f3c7b7e1c | |||
| fc16b8231e | |||
| 64a626d5c4 | |||
| 54816c2ce9 | |||
| 3acaea5611 | |||
| e4a313abe7 | |||
| 0b1c75cbdd | |||
| cab0f4da49 | |||
| cef15eddce | |||
| f8987818b8 | |||
|
|
15d1f6a59a | ||
| ba586fca7d | |||
|
|
d93bc7aae3 | ||
| 77b0428cec | |||
| 387432b27b | |||
| 88fa706b75 | |||
| 96ce9fec0c | |||
| 66d5fbc8ac | |||
| cc3ceb4176 | |||
| 0f9c69bb65 | |||
| c754746b9f | |||
| df5cab6a88 | |||
| b9ddba4666 | |||
| 77e92ef15e | |||
| 383bc2b052 | |||
| 0e109c3da3 | |||
| 50abd5aa30 | |||
| 082e27fb0a | |||
| e05e68f5d1 | |||
| 074c169e3c | |||
| 636ea749ac | |||
| da2a2e0f81 | |||
| 0ef12b61ac | |||
| c6fc3db52f | |||
| 1bde81a673 | |||
| d60248f356 | |||
| 40e8b9443b | |||
| 8a032a2804 | |||
| 367be373c4 | |||
| cf2f98d5c0 | |||
| a3704f7db9 | |||
| 7c359ffea0 | |||
| 9542624323 | |||
|
|
b0d74bad1a | ||
| fcade15933 | |||
| 6860909d39 | |||
| 493ad17c15 | |||
|
|
0495ac1ea8 | ||
| 9b5d372a74 | |||
| 9d04343a26 | |||
|
|
4aa0fba682 | ||
| ad6482b34a | |||
| 113e27734a | |||
| 378abfe896 | |||
| eadf1e5c84 | |||
| ea4d185fb4 | |||
| 22bd8ca870 | |||
| 7ee81b005c | |||
| 3faf8224e8 | |||
| d028f37c00 | |||
| 1df05ac0ba | |||
| e54e202281 | |||
| c226943aa9 | |||
| dda4b65458 | |||
| 7d564d0b4d | |||
| bc30e5f7a6 | |||
| 9e2f7e8f1b | |||
| 7b47e49804 | |||
| 1be7649122 | |||
| 453d54bc7f | |||
| 7ede7b9ac1 | |||
| a90743a09c | |||
| 185d28e587 | |||
|
|
37f023351d | ||
| 39523e9234 | |||
|
|
1f8fc0d289 | ||
| c083d2a20a | |||
| 75c6a0bccd | |||
| 5ce86b3229 | |||
| 885189e4ff | |||
| 8f3f4d7ed9 | |||
| 03a1b5fb85 | |||
| 7b83f6e943 | |||
| 261ff41e28 | |||
| 36ad2a2ad9 | |||
|
|
a4d5b87272 | ||
| f953bff183 | |||
| aba33a20a4 | |||
| a20e1e1419 | |||
| 8328f4cd19 | |||
| 4383b130a9 |
@@ -1 +1 @@
|
||||
extends @ivuorinen/browserslist-config
|
||||
extends @ivuorinen/browserslist-config
|
||||
|
||||
@@ -19,7 +19,7 @@ indent_size = 1
|
||||
indent_size = 1
|
||||
indent_style = tab
|
||||
|
||||
[{local/bin/*,**/*.sh,**/zshrc,config/*}]
|
||||
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
|
||||
shell_variant = bash # --language-variant
|
||||
binary_next_line = true
|
||||
switch_case_indent = true # --case-indent
|
||||
@@ -27,3 +27,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/**}]
|
||||
ignore = true
|
||||
|
||||
5
.gitattributes
vendored
5
.gitattributes
vendored
@@ -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
|
||||
|
||||
|
||||
64
.github/README.md
vendored
64
.github/README.md
vendored
@@ -8,6 +8,9 @@ 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.
|
||||
|
||||
It would be nice if you'd add an issue linking to your fork or repo so I can
|
||||
see what interesing stuff you've done with it. Sharing is caring.
|
||||
|
||||
## Setup
|
||||
|
||||
### First time setup
|
||||
@@ -23,7 +26,11 @@ fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
## The looks
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 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. |
|
||||
@@ -47,7 +54,9 @@ fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
### 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
|
||||
|
||||
2
.github/renovate.json
vendored
2
.github/renovate.json
vendored
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["local>ivuorinen/.github:renovate-config"]
|
||||
"extends": ["local>ivuorinen/renovate-config"]
|
||||
}
|
||||
|
||||
BIN
.github/screenshots/oh-my-posh.png
vendored
BIN
.github/screenshots/oh-my-posh.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 45 KiB |
BIN
.github/screenshots/tmux-nvim-kickstart-dark.png
vendored
Normal file
BIN
.github/screenshots/tmux-nvim-kickstart-dark.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 85 KiB |
BIN
.github/screenshots/tmux-nvim-kickstart-light.png
vendored
Normal file
BIN
.github/screenshots/tmux-nvim-kickstart-light.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 87 KiB |
1
.github/workflows/changelog.yml
vendored
1
.github/workflows/changelog.yml
vendored
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: Debug Changelog # Workflow name displayed on GitHub
|
||||
on:
|
||||
workflow_dispatch: # Trigger manually
|
||||
|
||||
1
.github/workflows/linters.yml
vendored
1
.github/workflows/linters.yml
vendored
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: reviewdog
|
||||
on: [push]
|
||||
jobs:
|
||||
|
||||
16
.github/workflows/new-release.yml
vendored
16
.github/workflows/new-release.yml
vendored
@@ -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
|
||||
|
||||
23
.github/workflows/pre-commit-autoupdate.yml
vendored
Normal file
23
.github/workflows/pre-commit-autoupdate.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
name: Pre-commit autoupdate
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
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
19
.github/workflows/semantic-pr.yml
vendored
Normal 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
|
||||
9
.github/workflows/update-submodules.yml
vendored
9
.github/workflows/update-submodules.yml
vendored
@@ -1,13 +1,14 @@
|
||||
---
|
||||
name: Update submodules
|
||||
on:
|
||||
schedule: [{ cron: 0 3 * * * }]
|
||||
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
|
||||
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
Brewfile.lock.json
|
||||
lazy-lock.json
|
||||
config/nvim/lazy-lock.json
|
||||
*.log
|
||||
*-secret
|
||||
@@ -10,6 +11,7 @@ config/cheat/cheatsheets/tldr/*
|
||||
config/git/credentials
|
||||
config/npm/npmrc
|
||||
config/zsh/.zcompdump
|
||||
config/alacritty/theme-active.toml
|
||||
ssh/local.d/*
|
||||
!ssh/local.d/.gitkeep
|
||||
!.gitkeep
|
||||
@@ -21,4 +23,9 @@ node_modules
|
||||
iTermServer-*
|
||||
lock
|
||||
config/iterm2/AppSupport
|
||||
config/gnupg/S.*
|
||||
config/gnupg/s
|
||||
config/gnupg/private-keys-v1.d
|
||||
config/nvim/spell/*
|
||||
!config/nvim/spell/.gitkeep
|
||||
|
||||
|
||||
8
.gitmodules
vendored
8
.gitmodules
vendored
@@ -41,7 +41,7 @@
|
||||
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
|
||||
@@ -58,3 +58,9 @@
|
||||
[submodule "cheat-tldr"]
|
||||
path = config/cheat/cheatsheets/tldr
|
||||
url = https://github.com/ivuorinen/cheatsheet-tldr.git
|
||||
[submodule "tmux/tmux-dark-notify"]
|
||||
path = config/tmux/plugins/tmux-dark-notify
|
||||
url = https://github.com/erikw/tmux-dark-notify.git
|
||||
[submodule "asdf"]
|
||||
path = local/bin/asdf
|
||||
url = https://github.com/asdf-vm/asdf.git
|
||||
|
||||
5
.luarc.json
Normal file
5
.luarc.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"diagnostics.globals": [
|
||||
"vim"
|
||||
]
|
||||
}
|
||||
@@ -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/*
|
||||
|
||||
|
||||
50
.pre-commit-config.yaml
Normal file
50
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,50 @@
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
args: [--markdown-linebreak-ext=md]
|
||||
- id: check-case-conflict
|
||||
- id: check-merge-conflict
|
||||
- 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.42.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
args: [-c, .markdownlint.yaml, --fix]
|
||||
|
||||
- repo: https://github.com/adrienverge/yamllint
|
||||
rev: v1.35.1
|
||||
hooks:
|
||||
- id: yamllint
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: v4.0.0-alpha.8
|
||||
hooks:
|
||||
- id: prettier
|
||||
|
||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||
rev: v0.10.0.1
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
|
||||
- repo: https://github.com/scop/pre-commit-shfmt
|
||||
rev: v3.10.0-1
|
||||
hooks:
|
||||
- id: shfmt
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.3
|
||||
hooks:
|
||||
- id: actionlint
|
||||
@@ -1,8 +1,12 @@
|
||||
.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-kickstart/*
|
||||
config/tmux/plugins/*
|
||||
config/zsh/*
|
||||
lazy-lock.json
|
||||
local/bin/antigen.zsh
|
||||
local/bin/asdf
|
||||
tools/dotbot*
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
3.12
|
||||
@@ -2,8 +2,8 @@ column_width = 120
|
||||
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]
|
||||
|
||||
2
.tool-versions
Normal file
2
.tool-versions
Normal file
@@ -0,0 +1,2 @@
|
||||
python 3.13.0
|
||||
nodejs 22.11.0
|
||||
0
.yamlignore
Normal file
0
.yamlignore
Normal file
@@ -15,6 +15,8 @@ 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
|
||||
|
||||
# tmux plugin manager and plugins
|
||||
git submodule add --name tmux/tmux-continuum \
|
||||
@@ -30,11 +32,13 @@ 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
|
||||
@@ -47,3 +51,4 @@ done
|
||||
[ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus
|
||||
[ -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
|
||||
|
||||
32
base/bashrc
32
base/bashrc
@@ -1,27 +1,11 @@
|
||||
# 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"
|
||||
|
||||
# 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
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
# shellcheck source=../config/fzf/fzf.bash
|
||||
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
|
||||
@@ -30,12 +14,10 @@ x-load-configs
|
||||
# Import ssh keys in keychain
|
||||
ssh-add -A 2>/dev/null
|
||||
|
||||
x-have rbenv && {
|
||||
eval "$(rbenv init - bash)"
|
||||
x-have oh-my-posh && {
|
||||
eval "$(oh-my-posh init bash --config "$DOTFILES/config/omp/own.toml")"
|
||||
}
|
||||
|
||||
# eval "$(starship init bash)"
|
||||
x-have oh-my-posh && {
|
||||
eval "$(oh-my-posh init bash --config $XDG_CONFIG_HOME/oh-my-posh.omp.json)"
|
||||
x-have antidot && {
|
||||
eval "$(antidot init)"
|
||||
}
|
||||
source "$DOTFILES/config/alias"
|
||||
|
||||
1
base/envrc
Normal file
1
base/envrc
Normal file
@@ -0,0 +1 @@
|
||||
use asdf
|
||||
@@ -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
|
||||
|
||||
28
base/tool-versions
Normal file
28
base/tool-versions
Normal file
@@ -0,0 +1,28 @@
|
||||
asdf-plugin-manager 1.4.0
|
||||
nodejs 23.0.0
|
||||
golang 1.23.2
|
||||
python 3.12.7
|
||||
ruby 3.3.4
|
||||
rust 1.82.0
|
||||
direnv 2.35.0
|
||||
fd 10.2.0
|
||||
1password-cli 2.30.0
|
||||
age 1.2.0
|
||||
bottom 0.10.2
|
||||
dotenv-linter 3.3.0
|
||||
editorconfig-checker 2.8.0
|
||||
github-cli 2.59.0
|
||||
hadolint 2.12.0
|
||||
kubectl 1.31.1
|
||||
pipx 1.7.1
|
||||
pre-commit 4.0.1
|
||||
ripgrep 14.1.1
|
||||
shellcheck 0.10.0
|
||||
shfmt 3.9.0
|
||||
terragrunt 0.67.15
|
||||
tf-summarize 0.3.11
|
||||
yamllint 1.35.1
|
||||
yq 4.44.3
|
||||
bats 1.11.0
|
||||
gitleaks 8.18.4
|
||||
delta 0.18.1
|
||||
19
base/zshenv
19
base/zshenv
@@ -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"
|
||||
167
base/zshrc
167
base/zshrc
@@ -1,106 +1,101 @@
|
||||
# this is my zsh config. there are many like it, but this one is mine.
|
||||
# shellcheck shell=bash
|
||||
|
||||
# export VERBOSE=1
|
||||
# export DEBUG=1
|
||||
|
||||
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"
|
||||
|
||||
# custom variables
|
||||
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
eval "$(oh-my-posh init zsh --config "$DOTFILES/config/omp/own.toml")"
|
||||
|
||||
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"
|
||||
# Function to load antigen if available
|
||||
load_antigen()
|
||||
{
|
||||
local antigen_zsh_path="$XDG_BIN_HOME/antigen.zsh"
|
||||
# shellcheck source=../../.local/bin/antigen.zsh
|
||||
if [[ -f "$antigen_zsh_path" ]]; then
|
||||
source "$antigen_zsh_path"
|
||||
|
||||
x-load-configs
|
||||
antigen use oh-my-zsh
|
||||
|
||||
export COMPLETION_WAITING_DOTS=true
|
||||
# Disable ls colors to avoid issues with eza
|
||||
export DISABLE_LS_COLORS=true
|
||||
|
||||
if type brew &> /dev/null; then
|
||||
eval "$(brew shellenv)"
|
||||
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
|
||||
fi
|
||||
export ZSH_TMUX_AUTOSTART=false
|
||||
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 ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
||||
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
||||
zstyle ':omz:plugins:eza' 'dirs-first' yes
|
||||
zstyle ':omz:plugins:eza' 'git-status' yes
|
||||
zstyle ':omz:plugins:eza' 'icons' yes
|
||||
zstyle ':omz:plugins:eza' 'ls' yes
|
||||
zstyle ':omz:plugins:eza' 'prompt' yes
|
||||
|
||||
# Add completion scripts to zsh path
|
||||
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
|
||||
if [[ "$OSTYPE" == darwin* ]]; then
|
||||
zstyle :omz:plugins:ssh-agent keychain yes
|
||||
fi
|
||||
zstyle :omz:plugins:ssh-agent lazy yes
|
||||
zstyle :omz:plugins:ssh-agent quiet yes
|
||||
|
||||
# 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"
|
||||
# z, the zsh version
|
||||
export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
antigen bundle z
|
||||
|
||||
# antigen is present
|
||||
antigen use oh-my-zsh
|
||||
# these should be always available
|
||||
antigen bundle jreese/zsh-titles
|
||||
antigen bundle brew
|
||||
antigen bundle colored-man-pages
|
||||
antigen bundle zsh-users/zsh-completions
|
||||
antigen bundle eza
|
||||
|
||||
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)"
|
||||
# this needs to be the last item
|
||||
antigen bundle zsh-users/zsh-syntax-highlighting
|
||||
antigen apply
|
||||
fi
|
||||
}
|
||||
|
||||
# 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
|
||||
}
|
||||
# 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
|
||||
}
|
||||
|
||||
# eval "$(starship init zsh)"
|
||||
x-have oh-my-posh && {
|
||||
eval "$(oh-my-posh init zsh --config $XDG_CONFIG_HOME/oh-my-posh.omp.json)"
|
||||
# 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="$DOTFILES/config/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
|
||||
}
|
||||
source "$DOTFILES/config/alias"
|
||||
|
||||
main()
|
||||
{
|
||||
load_antigen
|
||||
source_fzf_config
|
||||
setup_tmux_window_name_plugin
|
||||
if x-have antidot; then
|
||||
eval "$(antidot init)"
|
||||
fi
|
||||
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -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
|
||||
|
||||
40
config/alacritty/theme-day.toml
Normal file
40
config/alacritty/theme-day.toml
Normal 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'
|
||||
40
config/alacritty/theme-night.toml
Normal file
40
config/alacritty/theme-night.toml
Normal 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'
|
||||
100
config/alias
100
config/alias
@@ -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"
|
||||
@@ -17,6 +15,14 @@ alias ....="cd ../../.."
|
||||
# cd to git root directory
|
||||
alias cdgr='cd "$(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 .dx="cd $DOTFILES;ks"
|
||||
alias .l="cd $HOME/.local"
|
||||
|
||||
# Shortcuts for listing
|
||||
alias ll="ls -la"
|
||||
alias l="ls -a"
|
||||
@@ -46,10 +52,24 @@ alias flush="dscacheutil -flushcache"
|
||||
# Update locatedb
|
||||
alias updatedb="sudo /usr/libexec/locate.updatedb"
|
||||
|
||||
# Date helpers
|
||||
alias isodate="date +'%Y-%m-%d'"
|
||||
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
|
||||
alias x-timestamp="date +'%s'"
|
||||
|
||||
# tmux: automatically attach or create session with name 'main'
|
||||
alias tmux='tmux new-session -A -s main'
|
||||
alias tm='command tmux new-session -A -s main'
|
||||
# tmux: attach or create new session
|
||||
alias ta='tmux attach || tmux'
|
||||
alias ta='command tmux attach || command tmux'
|
||||
|
||||
# nvim
|
||||
alias c='nvim'
|
||||
alias ks='nvim'
|
||||
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'
|
||||
@@ -99,65 +119,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" && msg "Sourced $aliasFile"
|
||||
done
|
||||
unset X_ALIAS_FILES
|
||||
|
||||
3
config/asdf-direnv/zshrc
Normal file
3
config/asdf-direnv/zshrc
Normal 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
5
config/asdf/asdfrc
Normal 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
|
||||
25
config/asdf/cargo-packages
Normal file
25
config/asdf/cargo-packages
Normal 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
1
config/asdf/gem-packages
Normal file
@@ -0,0 +1 @@
|
||||
bundler
|
||||
21
config/asdf/golang-packages
Normal file
21
config/asdf/golang-packages
Normal 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
|
||||
@@ -3,5 +3,5 @@ corepack
|
||||
editorconfig-checker
|
||||
github-release-notes
|
||||
neovim
|
||||
npm
|
||||
stylelint-lsp
|
||||
|
||||
29
config/asdf/plugin-versions
Normal file
29
config/asdf/plugin-versions
Normal file
@@ -0,0 +1,29 @@
|
||||
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 c721275
|
||||
bats https://github.com/timgluz/asdf-bats.git 299551f
|
||||
bottom https://github.com/carbonteq/asdf-btm.git fd8a55a
|
||||
delta https://github.com/andweeb/asdf-delta.git 501318b
|
||||
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
|
||||
gitleaks https://github.com/jmcvetta/asdf-gitleaks.git 0cc0d7e
|
||||
golang https://github.com/asdf-community/asdf-golang.git e2527a3
|
||||
hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230
|
||||
kubectl https://github.com/asdf-community/asdf-kubectl.git 2fb3b57
|
||||
nodejs https://github.com/asdf-vm/asdf-nodejs.git c36e6f0
|
||||
php https://github.com/asdf-community/asdf-php.git 52c669a
|
||||
pipx https://github.com/yozachar/asdf-pipx.git 31db618
|
||||
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
||||
python https://github.com/asdf-community/asdf-python a3a0185
|
||||
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
||||
ruby https://github.com/asdf-vm/asdf-ruby.git e955978
|
||||
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 4a6651a
|
||||
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git 2f825d9
|
||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||
4
config/asdf/python-packages
Normal file
4
config/asdf/python-packages
Normal file
@@ -0,0 +1,4 @@
|
||||
ansible
|
||||
pipenv
|
||||
semgrep
|
||||
neovim
|
||||
Submodule config/cheat/cheatsheets/tldr updated: b0c7acbdc0...a60bdfc18c
@@ -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
|
||||
|
||||
13
config/direnv/direnv.toml
Normal file
13
config/direnv/direnv.toml
Normal file
@@ -0,0 +1,13 @@
|
||||
[global]
|
||||
disable_stdin = false
|
||||
load_dotenv = true
|
||||
hide_env_diff = false
|
||||
|
||||
[whitelist]
|
||||
prefix = [
|
||||
"~/Code/"
|
||||
]
|
||||
exact = [
|
||||
"~/.dotfiles/.envrc"
|
||||
]
|
||||
|
||||
4
config/direnv/lib/use_asdf.sh
Normal file
4
config/direnv/lib/use_asdf.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
|
||||
use_asdf() {
|
||||
source_env "$(asdf direnv envrc "$@")"
|
||||
}
|
||||
460
config/exports
460
config/exports
@@ -2,14 +2,53 @@
|
||||
# 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"
|
||||
|
||||
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"
|
||||
|
||||
# Load bash completions if available for zsh
|
||||
if [[ -n "$ZSH_VERSION" ]]; then
|
||||
autoload bashcompinit
|
||||
bashcompinit
|
||||
fi
|
||||
|
||||
# Load asdf
|
||||
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)
|
||||
source "$ASDF_DIR/asdf.sh"
|
||||
fi
|
||||
export PATH="$ASDF_DIR/bin:$ASDF_DIR/shims:$PATH"
|
||||
|
||||
if ! command -v msg &> /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "-> $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()
|
||||
{
|
||||
@@ -18,32 +57,55 @@ else
|
||||
}
|
||||
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 +114,373 @@ 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 pull --ff-only && ./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()
|
||||
{
|
||||
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 A-Z a-z
|
||||
}
|
||||
|
||||
# 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 ]] && msg_err "File 1 ($FILE1) does not exist"
|
||||
return 0
|
||||
}
|
||||
[[ ! -r "$FILE2" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_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 ]] && msg_err "Could not get hash for file 1 ($FILE1)"
|
||||
return 0
|
||||
}
|
||||
[[ $FILE2_HASH = "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "Could not get hash for file 2 ($FILE2), replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
[[ "$FILE1_HASH" == "$FILE2_HASH" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_ok "Files match, not replaceable: $FILE1"
|
||||
return 0
|
||||
}
|
||||
|
||||
[[ $VERBOSE -eq 1 ]] && msg_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
|
||||
|
||||
export SHORT_HOST=$(hostname -s)
|
||||
|
||||
# Antigen configuration
|
||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
||||
msg "Setting up Antigen 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
|
||||
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"
|
||||
|
||||
# asdf
|
||||
# https://github.com/asdf-vm/asdf
|
||||
msg "Setting up asdf configuration"
|
||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
||||
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}"
|
||||
|
||||
# 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_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"
|
||||
|
||||
# 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"
|
||||
|
||||
# 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_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
|
||||
# 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 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
|
||||
[ -f "$exportFile" ] && source "$exportFile" && msg "Sourced $exportFile"
|
||||
done
|
||||
unset X_EXPORTS_FILES
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# shell functions
|
||||
@@ -19,3 +19,4 @@ wp_*.sh
|
||||
auth.json
|
||||
dfm.sh
|
||||
.scannerwork
|
||||
.phpactor.json
|
||||
|
||||
@@ -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
|
||||
|
||||
2
config/gnupg/dirmngr.conf
Normal file
2
config/gnupg/dirmngr.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
disable-ipv6
|
||||
enable-ssh-support
|
||||
2
config/gnupg/gpg-agent.conf
Normal file
2
config/gnupg/gpg-agent.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
disable-ipv6
|
||||
enable-ssh-support
|
||||
@@ -1,28 +1,26 @@
|
||||
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 "reviewdog/tap"
|
||||
tap "shivammathur/extensions"
|
||||
tap "shivammathur/php"
|
||||
tap "snyk/tap"
|
||||
tap "teamookla/speedtest"
|
||||
tap "xwmx/taps"
|
||||
# Run your GitHub Actions locally
|
||||
brew "act"
|
||||
# Mozilla CA certificate store
|
||||
brew "ca-certificates"
|
||||
# YAML Parser
|
||||
brew "libyaml"
|
||||
# Checks ansible playbooks for practices and behaviour
|
||||
brew "ansible-lint"
|
||||
# Generic-purpose lossless compression algorithm by Google
|
||||
brew "brotli"
|
||||
# Library and utilities for processing GIFs
|
||||
@@ -41,36 +39,28 @@ brew "jpeg-xl"
|
||||
brew "aom"
|
||||
# Apache Portable Runtime library
|
||||
brew "apr"
|
||||
# Mozilla CA certificate store
|
||||
brew "ca-certificates"
|
||||
# Cryptography and SSL/TLS Toolkit
|
||||
brew "openssl@3"
|
||||
# Companion library to apr, the Apache Portable Runtime library
|
||||
brew "apr-util"
|
||||
# Password hashing library and CLI utility
|
||||
brew "argon2"
|
||||
# Open Source Kubernetes Marketplace
|
||||
brew "arkade"
|
||||
# Spell checker with better logic than ispell
|
||||
brew "aspell"
|
||||
# Automatic configure script builder
|
||||
brew "autoconf"
|
||||
# Collection of over 500 reusable autoconf macros
|
||||
brew "autoconf-archive"
|
||||
# Bourne-Again SHell, a UNIX command interpreter
|
||||
brew "bash"
|
||||
# GNU multiple precision arithmetic library
|
||||
brew "gmp"
|
||||
# GNU File, Shell, and Text utilities
|
||||
brew "coreutils"
|
||||
# Extendable version manager with support for Ruby, Node.js, Erlang & more
|
||||
brew "asdf"
|
||||
# Spell checker with better logic than ispell
|
||||
brew "aspell"
|
||||
# Interpreted, interactive, object-oriented programming language
|
||||
brew "python@3.11"
|
||||
# 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"
|
||||
# Software library to render fonts
|
||||
brew "freetype"
|
||||
# XML-based font configuration API for X Windows
|
||||
@@ -79,104 +69,50 @@ brew "fontconfig"
|
||||
brew "gettext"
|
||||
# Core application library for C
|
||||
brew "glib"
|
||||
# Manage compile and link flags for libraries
|
||||
brew "pkg-config"
|
||||
# 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"
|
||||
# Mozilla CA bundle for Python
|
||||
brew "certifi"
|
||||
# Cryptographic recipes and primitives for Python
|
||||
brew "cryptography"
|
||||
# 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
|
||||
brew "fswatch"
|
||||
# Command-line fuzzy finder written in Go
|
||||
brew "fzf"
|
||||
# Graphics library to dynamically manipulate images
|
||||
brew "gd"
|
||||
# Disk usage analyzer with console interface written in Go
|
||||
brew "gdu", link: false
|
||||
# GitHub command-line tool
|
||||
brew "gh"
|
||||
# Distributed revision control system
|
||||
brew "git"
|
||||
# Enable transparent encryption/decryption of files in a git repo
|
||||
brew "git-crypt"
|
||||
# Small git utilities
|
||||
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
|
||||
brew "gnu-sed"
|
||||
# Validating, recursive, caching DNS resolver
|
||||
brew "unbound"
|
||||
# GNU Transport Layer Security (TLS) Library
|
||||
brew "gnutls"
|
||||
# GNU Pretty Good Privacy (PGP) package
|
||||
brew "gnupg"
|
||||
# Open source programming language to build simple/reliable/efficient software
|
||||
brew "go"
|
||||
# Library access to GnuPG
|
||||
brew "gpgme"
|
||||
# Manage your GnuPG keys with ease!
|
||||
brew "gpg-tui"
|
||||
# Image manipulation
|
||||
brew "netpbm"
|
||||
# C/C++ and Java libraries for Unicode and globalization
|
||||
brew "icu4c"
|
||||
# OpenType text shaping engine
|
||||
brew "harfbuzz"
|
||||
# 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
|
||||
brew "graphviz"
|
||||
# GNU grep, egrep and fgrep
|
||||
brew "grep"
|
||||
# Popular GNU data compression program
|
||||
brew "gzip"
|
||||
# Smarter Dockerfile linter to validate best practices
|
||||
brew "hadolint"
|
||||
# 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
|
||||
@@ -185,199 +121,91 @@ brew "imagemagick"
|
||||
brew "irssi"
|
||||
# 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"
|
||||
# Secure hashing function
|
||||
brew "libb2"
|
||||
# Postgres C API library
|
||||
brew "libpq"
|
||||
# Linguistic software and Finnish dictionary
|
||||
brew "libvoikko"
|
||||
# Rainbows and unicorns in your console!
|
||||
brew "lolcat"
|
||||
# Multi-platform support library with a focus on asynchronous I/O
|
||||
brew "libuv"
|
||||
# YAML Parser
|
||||
brew "libyaml"
|
||||
# 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"
|
||||
# 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"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# General-purpose scripting language
|
||||
brew "php@8.1"
|
||||
# Coreutils progress viewer
|
||||
brew "progress"
|
||||
# Simple Python style checker in one Python file
|
||||
brew "pycodestyle"
|
||||
# Python version management
|
||||
brew "pyenv"
|
||||
# Migrate pip packages from one Python version to another
|
||||
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"
|
||||
# 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"
|
||||
# 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"
|
||||
brew "php"
|
||||
# Manage compile and link flags for libraries
|
||||
brew "pkg-config"
|
||||
# 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
|
||||
brew "tfenv"
|
||||
# Linter for Terraform files
|
||||
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"
|
||||
# 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"
|
||||
# Watcher for macOS 10.14+ light/dark mode changes
|
||||
brew "cormacrelf/tap/dark-notify"
|
||||
# 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"
|
||||
# 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-debug"
|
||||
# Find & fix known vulnerabilities in open-source dependencies
|
||||
brew "snyk/tap/snyk"
|
||||
# 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 +214,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 +234,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 +248,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
53
config/htop/htoprc
Normal 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
73
config/ideavim/ideavimrc
Normal 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
|
||||
17
config/nvim/.editorconfig
Normal file
17
config/nvim/.editorconfig
Normal file
@@ -0,0 +1,17 @@
|
||||
# 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
|
||||
11
config/nvim/.gitignore
vendored
11
config/nvim/.gitignore
vendored
@@ -1,8 +1,3 @@
|
||||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
||||
spell/*
|
||||
!spell/.gitkeep
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"diagnostics.globals": ["vim"]
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
config/nvim/.stylua.toml
Normal file
11
config/nvim/.stylua.toml
Normal file
@@ -0,0 +1,11 @@
|
||||
column_width = 80
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferSingle"
|
||||
call_parentheses = "None"
|
||||
collapse_simple_statement = "Always"
|
||||
|
||||
[sort_requires]
|
||||
enabled = true
|
||||
|
||||
@@ -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.
|
||||
@@ -1,2 +1,61 @@
|
||||
-- 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 or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
||||
local out = vim.fn.system {
|
||||
'git',
|
||||
'clone',
|
||||
'--filter=blob:none',
|
||||
'--branch=stable',
|
||||
lazyrepo,
|
||||
lazypath,
|
||||
}
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ 'Failed to clone lazy.nvim:\n', 'ErrorMsg' },
|
||||
{ out, 'WarningMsg' },
|
||||
{ '\nPress any key to exit...' },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- ── 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,
|
||||
},
|
||||
install = {
|
||||
colorscheme = { vim.g.colors_theme },
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
|
||||
@@ -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
|
||||
}
|
||||
54
config/nvim/lua/autogroups.lua
Normal file
54
config/nvim/lua/autogroups.lua
Normal file
@@ -0,0 +1,54 @@
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ 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 = '*',
|
||||
})
|
||||
|
||||
-- ── 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,
|
||||
})
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
@@ -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
|
||||
@@ -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" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -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",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -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
|
||||
131
config/nvim/lua/options.lua
Normal file
131
config/nvim/lua/options.lua
Normal file
@@ -0,0 +1,131 @@
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ neovim configuration options │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
-- See `:help vim.opt`
|
||||
-- For more options, you can see `:help option-list`
|
||||
|
||||
-- Enables the experimental nvim 0.5 features
|
||||
vim.loader.enable()
|
||||
|
||||
-- Map leader and local leader
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
|
||||
-- Set the colorscheme and variants
|
||||
vim.g.colors_theme = 'tokyonight'
|
||||
vim.g.colors_variant_light = 'tokyonight-day'
|
||||
vim.g.colors_variant_dark = 'tokyonight-storm'
|
||||
|
||||
-- Make sure editorconfig support is enabled
|
||||
vim.g.editorconfig = true
|
||||
|
||||
-- Enable line numbers and relative line numbers
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
-- Enable mouse mode, can be useful for resizing splits for example!
|
||||
vim.opt.mouse = 'a'
|
||||
|
||||
-- Don't show the mode, since it's already in the status line
|
||||
vim.opt.showmode = false
|
||||
|
||||
-- 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'
|
||||
vim.opt.clipboard = c
|
||||
end)
|
||||
|
||||
vim.opt.breakindent = true -- Enable break indent
|
||||
vim.opt.smartindent = true -- Insert indents automatically
|
||||
|
||||
-- Save undo history
|
||||
vim.opt.undofile = true
|
||||
|
||||
-- Case-insensitive searching UNLESS \C or one or
|
||||
-- more capital letters in the search term
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
|
||||
-- Keep signcolumn on by default
|
||||
vim.opt.signcolumn = 'yes'
|
||||
|
||||
-- Decrease update time
|
||||
vim.opt.updatetime = 250
|
||||
vim.wo.signcolumn = 'yes'
|
||||
|
||||
-- Decrease mapped sequence wait time
|
||||
-- Displays which-key popup sooner
|
||||
vim.opt.timeoutlen = 250
|
||||
|
||||
-- Configure how new splits should be opened
|
||||
vim.opt.splitright = true
|
||||
vim.opt.splitbelow = true
|
||||
|
||||
-- Sets how neovim will display certain whitespace characters in the editor.
|
||||
-- See `:help 'list'`
|
||||
-- and `:help 'listchars'`
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||
|
||||
-- Preview substitutions live, as you type!
|
||||
vim.opt.inccommand = 'split'
|
||||
|
||||
-- Show which line your cursor is on
|
||||
vim.opt.cursorline = true
|
||||
|
||||
-- Minimal number of screen lines to keep above and below the cursor.
|
||||
vim.opt.scrolloff = 15
|
||||
|
||||
-- Set completeopt to have a better completion experience
|
||||
vim.o.completeopt = 'menuone,noselect'
|
||||
|
||||
-- Fixes Notify opacity issues
|
||||
vim.o.termguicolors = true
|
||||
|
||||
-- Set spell checking
|
||||
vim.o.spell = true
|
||||
vim.o.spelllang = 'en_us'
|
||||
|
||||
-- Tree-sitter settings
|
||||
vim.g.loaded_perl_provider = 0
|
||||
vim.g.loaded_ruby_provider = 0
|
||||
|
||||
-- kevinhwang91/nvim-ufo settings
|
||||
vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]
|
||||
vim.o.foldcolumn = '1' -- '0' is not bad
|
||||
-- Using ufo provider need a large value, feel free to decrease the value
|
||||
vim.o.foldlevel = 99
|
||||
vim.o.foldlevelstart = 99
|
||||
vim.o.foldenable = true
|
||||
|
||||
-- anuvyklack/windows.nvim settings
|
||||
vim.o.winwidth = 15
|
||||
vim.o.winminwidth = 10
|
||||
vim.o.equalalways = false
|
||||
|
||||
-- folke/noice.nvim settings
|
||||
vim.g.noice_ignored_filetypes = {
|
||||
'fugitiveblame',
|
||||
'fugitive',
|
||||
'gitcommit',
|
||||
'noice',
|
||||
}
|
||||
|
||||
-- ── Deal with word wrap ───────────────────────────────────────────────────────
|
||||
local m = vim.api.nvim_set_keymap
|
||||
m(
|
||||
'n',
|
||||
'k',
|
||||
"v:count == 0 ? 'gk' : 'k'",
|
||||
{ desc = 'Move up', noremap = true, expr = true }
|
||||
)
|
||||
m(
|
||||
'n',
|
||||
'j',
|
||||
"v:count == 0 ? 'gj' : 'j'",
|
||||
{ desc = 'Move down', noremap = true, expr = true }
|
||||
)
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
235
config/nvim/lua/plugins/cmp.lua
Normal file
235
config/nvim/lua/plugins/cmp.lua
Normal file
@@ -0,0 +1,235 @@
|
||||
-- Auto completion
|
||||
-- https://github.com/hrsh7th/nvim-cmp
|
||||
return {
|
||||
{
|
||||
'hrsh7th/nvim-cmp',
|
||||
lazy = false,
|
||||
version = false, -- Use the latest version of the plugin
|
||||
event = 'InsertEnter',
|
||||
dependencies = {
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
|
||||
-- ── LuaSnip Dependencies ────────────────────────────────────────────
|
||||
-- Snippet Engine for Neovim written in Lua.
|
||||
-- https://github.com/L3MON4D3/LuaSnip
|
||||
{
|
||||
'L3MON4D3/LuaSnip',
|
||||
version = '*',
|
||||
event = 'BufReadPre',
|
||||
build = 'make install_jsregexp',
|
||||
dependencies = {
|
||||
-- luasnip completion source for nvim-cmp
|
||||
-- https://github.com/saadparwaiz1/cmp_luasnip
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
'rafamadriz/friendly-snippets',
|
||||
'molleweide/LuaSnip-snippets.nvim',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Adds other completion capabilities. ─────────────────────────────
|
||||
-- ── nvim-cmp does not ship with all sources by default.
|
||||
-- ── They are split into multiple repos for maintenance purposes.
|
||||
{ 'hrsh7th/cmp-nvim-lsp' },
|
||||
{ 'hrsh7th/cmp-buffer' },
|
||||
{ 'hrsh7th/cmp-path' },
|
||||
{ 'hrsh7th/cmp-nvim-lsp-signature-help' },
|
||||
{ 'hrsh7th/cmp-emoji' },
|
||||
{ 'hrsh7th/cmp-cmdline' },
|
||||
-- cmp import and use all environment variables from .env.* and system
|
||||
-- https://github.com/SergioRibera/cmp-dotenv
|
||||
{ 'SergioRibera/cmp-dotenv' },
|
||||
-- A dictionary completion source for nvim-cmp
|
||||
-- https://github.com/uga-rosa/cmp-dictionary
|
||||
{ 'uga-rosa/cmp-dictionary' },
|
||||
-- An additional source for nvim-cmp to autocomplete packages and its versions
|
||||
-- https://github.com/David-Kunz/cmp-npm
|
||||
{
|
||||
'David-Kunz/cmp-npm',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
ft = 'json',
|
||||
opts = {},
|
||||
},
|
||||
-- https://github.com/chrisgrieser/cmp-nerdfont
|
||||
{ 'chrisgrieser/cmp-nerdfont' },
|
||||
|
||||
-- ── Other deps ──────────────────────────────────────────────────────
|
||||
-- vscode-like pictograms for neovim lsp completion items
|
||||
-- https://github.com/onsails/lspkind.nvim
|
||||
{ 'onsails/lspkind.nvim' },
|
||||
-- Lua plugin to turn github copilot into a cmp source
|
||||
-- https://github.com/zbirenbaum/copilot-cmp
|
||||
{
|
||||
'zbirenbaum/copilot-cmp',
|
||||
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,
|
||||
help = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function() require('copilot_cmp').setup() end,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
local lspkind = require 'lspkind'
|
||||
luasnip.config.setup {}
|
||||
luasnip.snippets = require('luasnip_snippets').load_snippets()
|
||||
require('luasnip.loaders.from_vscode').lazy_load()
|
||||
|
||||
require('copilot_cmp').setup()
|
||||
|
||||
require('cmp_dictionary').setup {
|
||||
paths = { '/usr/share/dict/words' },
|
||||
exact_length = 2,
|
||||
}
|
||||
|
||||
local has_words_before = function()
|
||||
if vim.api.nvim_get_option_value('buftype', {}) == 'prompt' then
|
||||
return false
|
||||
end
|
||||
local line, col = table.unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0
|
||||
and vim.api
|
||||
.nvim_buf_get_text(0, line - 1, 0, line - 1, col, {})[1]
|
||||
:match '^%s*$'
|
||||
== nil
|
||||
end
|
||||
|
||||
cmp.setup {
|
||||
formatting = {
|
||||
format = lspkind.cmp_format {
|
||||
mode = 'symbol',
|
||||
max_width = function() return math.floor(0.45 * vim.o.columns) end,
|
||||
show_labelDetails = true,
|
||||
symbol_map = {
|
||||
Copilot = '',
|
||||
Text = '',
|
||||
Constructor = '',
|
||||
},
|
||||
},
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
view = {
|
||||
width = function(_, _) return math.min(80, vim.o.columns) end,
|
||||
-- entries = {
|
||||
-- name = 'custom',
|
||||
-- selection_order = 'near_cursor',
|
||||
-- },
|
||||
},
|
||||
snippet = {
|
||||
expand = function(args) luasnip.lsp_expand(args.body) end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
-- Manually trigger a completion from nvim-cmp.
|
||||
-- Generally you don't need this, because nvim-cmp will display
|
||||
-- completions whenever it has completion options available.
|
||||
['<C-c>'] = cmp.mapping.complete(),
|
||||
['<CR>'] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
select = true,
|
||||
},
|
||||
['<Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() and has_words_before() then
|
||||
cmp.select_next_item { behavior = cmp.SelectBehavior.Select }
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
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' }),
|
||||
},
|
||||
sources = {
|
||||
-- function arg popups while typing
|
||||
{ name = 'nvim_lsp_signature_help', group_index = 2 },
|
||||
|
||||
-- Copilot Source
|
||||
{ name = 'copilot', group_index = 2 },
|
||||
-- Other Sources
|
||||
{ name = 'dictionary', keyword_length = 2, group_index = 2 },
|
||||
{ name = 'npm', keyword_length = 4, group_index = 2 },
|
||||
{ name = 'nvim_lsp', group_index = 2 },
|
||||
{ name = 'luasnip', group_index = 2 },
|
||||
{ name = 'dotenv', group_index = 2 },
|
||||
{ name = 'path', group_index = 2 },
|
||||
{ name = 'emoji', group_index = 2 },
|
||||
{ name = 'nerdfont', group_index = 2 },
|
||||
},
|
||||
sorting = {
|
||||
priority_weight = 2,
|
||||
comparators = {
|
||||
require('copilot_cmp.comparators').prioritize,
|
||||
|
||||
-- Below is the default comparator list and order for nvim-cmp
|
||||
cmp.config.compare.offset,
|
||||
cmp.config.compare.scopes, --this is commented in nvim-cmp too
|
||||
cmp.config.compare.exact,
|
||||
cmp.config.compare.score,
|
||||
cmp.config.compare.recently_used,
|
||||
cmp.config.compare.locality,
|
||||
cmp.config.compare.kind,
|
||||
cmp.config.compare.sort_text,
|
||||
cmp.config.compare.length,
|
||||
cmp.config.compare.order,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
cmp.setup.cmdline({ '/', '?' }, {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {
|
||||
{ name = 'buffer' },
|
||||
},
|
||||
})
|
||||
|
||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline(':', {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'path' },
|
||||
}, {
|
||||
{ name = 'cmdline' },
|
||||
}),
|
||||
matching = { disallow_symbol_nonprefix_matching = false },
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- Luasnip choice node completion source for nvim-cmp
|
||||
-- https://github.com/doxnit/cmp-luasnip-choice
|
||||
{
|
||||
'doxnit/cmp-luasnip-choice',
|
||||
config = function()
|
||||
require('cmp_luasnip_choice').setup {
|
||||
auto_open = true, -- Automatically open nvim-cmp on choice node (default: true)
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -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 },
|
||||
}
|
||||
9
config/nvim/lua/plugins/comment.lua
Normal file
9
config/nvim/lua/plugins/comment.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
-- Commenting
|
||||
-- "gc" to comment visual regions/lines
|
||||
-- https://github.com/numToStr/Comment.nvim
|
||||
return {
|
||||
'numToStr/Comment.nvim',
|
||||
version = '*',
|
||||
event = { 'BufRead', 'BufNewFile' },
|
||||
opts = {},
|
||||
}
|
||||
84
config/nvim/lua/plugins/conform.lua
Normal file
84
config/nvim/lua/plugins/conform.lua
Normal file
@@ -0,0 +1,84 @@
|
||||
-- ── Formatting ──────────────────────────────────────────────────────
|
||||
-- Lightweight yet powerful formatter plugin for Neovim
|
||||
-- https://github.com/stevearc/conform.nvim
|
||||
return {
|
||||
'stevearc/conform.nvim',
|
||||
event = { 'BufWritePre' },
|
||||
cmd = { 'ConformInfo' },
|
||||
config = function()
|
||||
-- Select first conform formatter that is available
|
||||
---@param bufnr integer
|
||||
---@param ... string
|
||||
---@return string
|
||||
local function first(bufnr, ...)
|
||||
local conform = require 'conform'
|
||||
for i = 1, select('#', ...) do
|
||||
local formatter = select(i, ...)
|
||||
if conform.get_formatter_info(formatter, bufnr).available then
|
||||
return formatter
|
||||
end
|
||||
end
|
||||
return select(1, ...)
|
||||
end
|
||||
|
||||
require('conform').setup {
|
||||
-- Enable or disable logging
|
||||
notify_on_error = true,
|
||||
-- Set the default formatter for all filetypes
|
||||
default_formatter = 'injected',
|
||||
-- Set the default formatter for all filetypes
|
||||
default_formatter_opts = {
|
||||
lsp_format = 'fallback',
|
||||
-- Set the default formatter for all filetypes
|
||||
-- formatter = 'injected',
|
||||
-- Set the default formatter for all filetypes
|
||||
-- formatter_opts = {},
|
||||
},
|
||||
formatters_by_ft = {
|
||||
markdown = function(bufnr)
|
||||
return { first(bufnr, 'prettierd', 'prettier'), 'injected' }
|
||||
end,
|
||||
javascript = function(bufnr)
|
||||
return { first(bufnr, 'prettier', 'eslint'), 'injected' }
|
||||
end,
|
||||
lua = { 'stylua' },
|
||||
-- Conform will run multiple formatters sequentially
|
||||
-- python = { 'isort', 'black', lsp_format = 'fallback' },
|
||||
-- You can customize some of the format options for the filetype (:help conform.format)
|
||||
-- rust = { 'rustfmt', lsp_format = 'fallback' },
|
||||
},
|
||||
format_on_save = function(bufnr)
|
||||
-- Disable autoformat on certain filetypes
|
||||
local ignore_filetypes = {
|
||||
'c',
|
||||
'cpp',
|
||||
'sql',
|
||||
'java',
|
||||
}
|
||||
if vim.tbl_contains(ignore_filetypes, vim.bo[bufnr].filetype) then
|
||||
return
|
||||
end
|
||||
-- Disable with a global or buffer-local variable
|
||||
if
|
||||
vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat
|
||||
then
|
||||
return
|
||||
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
|
||||
if bufname:match '/vendor/' then return end
|
||||
if bufname:match '/dist/' then return end
|
||||
if bufname:match '/build/' then return end
|
||||
|
||||
return { timeout_ms = 500, lsp_format = 'fallback' }
|
||||
end,
|
||||
}
|
||||
end,
|
||||
init = function()
|
||||
-- If you want the formatexpr, here is the place to set it
|
||||
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
||||
end,
|
||||
|
||||
|
||||
}
|
||||
25
config/nvim/lua/plugins/dap.lua
Normal file
25
config/nvim/lua/plugins/dap.lua
Normal file
@@ -0,0 +1,25 @@
|
||||
return {
|
||||
{
|
||||
'rcarriga/nvim-dap-ui',
|
||||
dependencies = {
|
||||
'mfussenegger/nvim-dap',
|
||||
'nvim-neotest/nvim-nio',
|
||||
'theHamsta/nvim-dap-virtual-text',
|
||||
'ray-x/go.nvim',
|
||||
'ray-x/guihua.lua',
|
||||
'leoluz/nvim-dap-go',
|
||||
},
|
||||
setup = function()
|
||||
require('dapui').setup()
|
||||
require('dap-go').setup()
|
||||
require('nvim-dap-virtual-text').setup {}
|
||||
|
||||
vim.fn.sign_define('DapBreakpoint', {
|
||||
text = '🔴',
|
||||
texthl = 'DapBreakpoint',
|
||||
linehl = 'DapBreakpoint',
|
||||
numhl = 'DapBreakpoint',
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
39
config/nvim/lua/plugins/flash.lua
Normal file
39
config/nvim/lua/plugins/flash.lua
Normal file
@@ -0,0 +1,39 @@
|
||||
return {
|
||||
'folke/flash.nvim',
|
||||
event = 'VeryLazy',
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
'zk',
|
||||
mode = { 'n', 'x', 'o' },
|
||||
function() require('flash').jump() end,
|
||||
desc = 'Flash',
|
||||
},
|
||||
{
|
||||
'Zk',
|
||||
mode = { 'n', 'x', 'o' },
|
||||
function() require('flash').treesitter() end,
|
||||
desc = 'Flash Treesitter',
|
||||
},
|
||||
{
|
||||
'r',
|
||||
mode = 'o',
|
||||
function() require('flash').remote() end,
|
||||
desc = 'Remote Flash',
|
||||
},
|
||||
{
|
||||
'R',
|
||||
mode = { 'o', 'x' },
|
||||
function() require('flash').treesitter_search() end,
|
||||
desc = 'Treesitter Search',
|
||||
},
|
||||
{
|
||||
'<m-s>',
|
||||
mode = { 'c' },
|
||||
function() require('flash').toggle() end,
|
||||
desc = 'Toggle Flash Search',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
30
config/nvim/lua/plugins/goto-preview.lua
Normal file
30
config/nvim/lua/plugins/goto-preview.lua
Normal file
@@ -0,0 +1,30 @@
|
||||
-- A small Neovim plugin for previewing definitions using floating windows.
|
||||
-- https://github.com/rmagatti/goto-preview
|
||||
return {
|
||||
'rmagatti/goto-preview',
|
||||
dependencies = {
|
||||
{ 'nvim-telescope/telescope.nvim' },
|
||||
},
|
||||
opts = {
|
||||
width = 120, -- Width of the floating window
|
||||
height = 15, -- Height of the floating window
|
||||
border = { '↖', '─', '┐', '│', '┘', '─', '└', '│' }, -- Border characters of the floating window
|
||||
default_mappings = true,
|
||||
debug = false, -- Print debug information
|
||||
opacity = nil, -- 0-100 opacity level of the floating window where 100 is fully transparent.
|
||||
resizing_mappings = false, -- Binds arrow keys to resizing the floating window.
|
||||
post_open_hook = nil, -- A function taking two arguments, a buffer and a window to be ran as a hook.
|
||||
references = { -- Configure the telescope UI for slowing the references cycling window.
|
||||
telescope = require('telescope.themes').get_dropdown {
|
||||
hide_preview = false,
|
||||
},
|
||||
},
|
||||
-- These two configs can also be passed down to the goto-preview definition and implementation calls for one off "peak" functionality.
|
||||
focus_on_open = true, -- Focus the floating window when opening it.
|
||||
dismiss_on_move = false, -- Dismiss the floating window when moving the cursor.
|
||||
force_close = true, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close
|
||||
bufhidden = 'wipe', -- the bufhidden option to set on the floating window. See :h bufhidden
|
||||
stack_floating_preview_windows = true, -- Whether to nest floating windows
|
||||
preview_window_title = { enable = true, position = 'left' },
|
||||
},
|
||||
}
|
||||
47
config/nvim/lua/plugins/harpoon.lua
Normal file
47
config/nvim/lua/plugins/harpoon.lua
Normal file
@@ -0,0 +1,47 @@
|
||||
-- Getting you where you want with the fewest keystrokes.
|
||||
-- https://github.com/ThePrimeagen/harpoon
|
||||
return {
|
||||
'ThePrimeagen/harpoon',
|
||||
branch = 'harpoon2',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
config = function()
|
||||
local harpoon = require 'harpoon'
|
||||
harpoon:setup {}
|
||||
|
||||
-- basic telescope configuration
|
||||
local conf = require('telescope.config').values
|
||||
local function toggle_telescope(harpoon_files)
|
||||
local file_paths = {}
|
||||
for _, item in ipairs(harpoon_files.items) do
|
||||
table.insert(file_paths, item.value)
|
||||
end
|
||||
|
||||
require('telescope.pickers')
|
||||
.new({}, {
|
||||
prompt_title = 'Harpoon',
|
||||
finder = require('telescope.finders').new_table {
|
||||
results = file_paths,
|
||||
},
|
||||
previewer = conf.file_previewer {},
|
||||
sorter = conf.generic_sorter {},
|
||||
})
|
||||
:find()
|
||||
end
|
||||
|
||||
vim.keymap.set(
|
||||
'n',
|
||||
'<leader>hw',
|
||||
function() toggle_telescope(harpoon:list()) end,
|
||||
{ desc = 'Open harpoon window with telescope' }
|
||||
)
|
||||
vim.keymap.set(
|
||||
'n',
|
||||
'<leader>ht',
|
||||
function() harpoon.ui:toggle_quick_menu(harpoon:list()) end,
|
||||
{ desc = 'Open Harpoon Quick menu' }
|
||||
)
|
||||
end,
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
21
config/nvim/lua/plugins/lsp-saga.lua
Normal file
21
config/nvim/lua/plugins/lsp-saga.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
-- improve neovim lsp experience
|
||||
-- https://github.com/nvimdev/lspsaga.nvim
|
||||
-- https://nvimdev.github.io/lspsaga/
|
||||
return {
|
||||
'nvimdev/lspsaga.nvim',
|
||||
event = 'LspAttach',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter', -- optional
|
||||
'nvim-tree/nvim-web-devicons', -- optional
|
||||
},
|
||||
opts = {
|
||||
code_action = {
|
||||
show_server_name = true,
|
||||
},
|
||||
diagnostic = {
|
||||
keys = {
|
||||
quit = { 'q', '<ESC>' },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
239
config/nvim/lua/plugins/lsp.lua
Normal file
239
config/nvim/lua/plugins/lsp.lua
Normal file
@@ -0,0 +1,239 @@
|
||||
-- ── Mason and LSPConfig integration ────────────────────────────────────
|
||||
|
||||
-- ── LSP settings. ───────────────────────────────────────────────
|
||||
-- This function gets run when an LSP connects to a particular buffer.
|
||||
|
||||
-- Make runtime files discoverable to the server
|
||||
local runtime_path = vim.split(package.path, ';')
|
||||
table.insert(runtime_path, 'lua/?.lua')
|
||||
table.insert(runtime_path, 'lua/?/init.lua')
|
||||
|
||||
-- nvim-cmp supports additional completion capabilities
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||
-- Tell the server the capability of foldingRange,
|
||||
-- Neovim hasn't added foldingRange to default capabilities, users must add it manually
|
||||
capabilities.textDocument.foldingRange = {
|
||||
dynamicRegistration = true,
|
||||
lineFoldingOnly = true,
|
||||
}
|
||||
|
||||
return {
|
||||
{
|
||||
'folke/neoconf.nvim',
|
||||
cmd = 'Neoconf',
|
||||
opts = {},
|
||||
},
|
||||
-- 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',
|
||||
cmd = 'Mason',
|
||||
run = ':MasonUpdate',
|
||||
opts = {
|
||||
PATH = 'prepend',
|
||||
-- Mason servers to install
|
||||
-- See: https://mason-registry.dev/registry/list
|
||||
ensure_installed = {
|
||||
'clang-format',
|
||||
'codespell',
|
||||
'commitlint',
|
||||
'editorconfig-checker',
|
||||
'fixjson',
|
||||
'jsonlint',
|
||||
'luacheck',
|
||||
'phpcbf',
|
||||
'phpcs',
|
||||
'phpmd',
|
||||
'prettier',
|
||||
'shellcheck',
|
||||
'shfmt',
|
||||
'stylua',
|
||||
'yamllint',
|
||||
},
|
||||
},
|
||||
},
|
||||
-- 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',
|
||||
opts = {
|
||||
-- ── Enable the following language servers ───────────────────────────
|
||||
-- :help lspconfig-all for all pre-configured LSPs
|
||||
ensure_installed = {
|
||||
'bashls',
|
||||
-- 'csharp_ls',
|
||||
'diagnosticls',
|
||||
'gopls',
|
||||
'html',
|
||||
'intelephense',
|
||||
'jsonls',
|
||||
'lua_ls',
|
||||
'tailwindcss',
|
||||
'ts_ls',
|
||||
'vimls',
|
||||
'volar',
|
||||
},
|
||||
automatic_installation = true,
|
||||
handlers = {
|
||||
-- The first entry (without a key) will be the default handler
|
||||
-- and will be called for each installed server that doesn't have
|
||||
-- a dedicated handler.
|
||||
function(server_name) -- default handler (optional)
|
||||
require('lspconfig')[server_name].setup {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(
|
||||
bufnr,
|
||||
'Format',
|
||||
function(_)
|
||||
require('conform').format {
|
||||
formatters = { 'injected' },
|
||||
async = true,
|
||||
lsp_fallback = true,
|
||||
}
|
||||
end,
|
||||
{ desc = 'Format current buffer with LSP' }
|
||||
)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end,
|
||||
-- Next, you can provide targeted overrides for specific servers.
|
||||
['lua_ls'] = function()
|
||||
require('lspconfig')['lua_ls'].setup {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(
|
||||
bufnr,
|
||||
'Format',
|
||||
function(_)
|
||||
require('conform').format {
|
||||
formatters = { 'injected' },
|
||||
async = true,
|
||||
lsp_fallback = true,
|
||||
}
|
||||
end,
|
||||
{ desc = 'Format current buffer with LSP' }
|
||||
)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
-- Tell the language server which version of Lua you're
|
||||
-- using (most likely LuaJIT)
|
||||
version = 'LuaJIT',
|
||||
-- Setup your lua path
|
||||
path = runtime_path,
|
||||
},
|
||||
diagnostics = {
|
||||
globals = { 'vim' },
|
||||
disable = {
|
||||
-- Ignore lua_ls noisy `missing-fields` warnings
|
||||
'missing-fields',
|
||||
},
|
||||
},
|
||||
workspace = {
|
||||
library = vim.api.nvim_get_runtime_file('', true),
|
||||
checkThirdParty = false,
|
||||
},
|
||||
-- Do not send telemetry data containing a randomized
|
||||
-- but unique identifier
|
||||
telemetry = { enable = false },
|
||||
|
||||
completion = {
|
||||
callSnippet = 'Replace',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
['jsonls'] = function()
|
||||
require('lspconfig')['jsonls'].setup {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(
|
||||
bufnr,
|
||||
'Format',
|
||||
function(_)
|
||||
require('conform').format {
|
||||
formatters = { 'injected' },
|
||||
async = true,
|
||||
lsp_fallback = true,
|
||||
}
|
||||
end,
|
||||
{ desc = 'Format current buffer with LSP' }
|
||||
)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
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 },
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
['ts_ls'] = function()
|
||||
local mason_registry = require 'mason-registry'
|
||||
local ts_plugin_location = mason_registry
|
||||
.get_package('vue-language-server')
|
||||
:get_install_path() .. '/node_modules/@vue/typescript-plugin'
|
||||
require('lspconfig')['volar'].setup {
|
||||
init_options = {
|
||||
plugins = {
|
||||
{
|
||||
name = '@vue/typescript-plugin',
|
||||
location = ts_plugin_location,
|
||||
languages = { 'javascript', 'typescript', 'vue' },
|
||||
},
|
||||
},
|
||||
},
|
||||
filetypes = {
|
||||
'typescript',
|
||||
'javascript',
|
||||
'javascriptreact',
|
||||
'typescriptreact',
|
||||
'vue',
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Misc ───────────────────────────────────────────────────
|
||||
-- vscode-like pictograms for neovim lsp completion items
|
||||
-- https://github.com/onsails/lspkind-nvim
|
||||
{ 'onsails/lspkind.nvim', opts = {} },
|
||||
-- JSON schemas for Neovim
|
||||
-- https://github.com/b0o/SchemaStore.nvim
|
||||
{ 'b0o/schemastore.nvim' },
|
||||
|
||||
-- ── LSP ────────────────────────────────────────────────────
|
||||
-- Quick start configs for Nvim LSP
|
||||
-- https://github.com/neovim/nvim-lspconfig
|
||||
{ 'neovim/nvim-lspconfig', dependencies = { 'folke/neoconf.nvim' } },
|
||||
|
||||
-- Garbage collector that stops inactive LSP clients to free RAM
|
||||
-- https://github.com/Zeioth/garbage-day.nvim
|
||||
{
|
||||
'zeioth/garbage-day.nvim',
|
||||
dependencies = 'neovim/nvim-lspconfig',
|
||||
event = 'VeryLazy',
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
72
config/nvim/lua/plugins/lualine.lua
Normal file
72
config/nvim/lua/plugins/lualine.lua
Normal file
@@ -0,0 +1,72 @@
|
||||
-- Fancier statusline
|
||||
-- https://github.com/nvim-lualine/lualine.nvim
|
||||
return {
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = {
|
||||
'kyazdani42/nvim-web-devicons',
|
||||
'folke/noice.nvim',
|
||||
},
|
||||
config = function()
|
||||
local function diff_source()
|
||||
local gitsigns = vim.b.gitsigns_status_dict
|
||||
if gitsigns then
|
||||
return {
|
||||
added = gitsigns.added,
|
||||
modified = gitsigns.changed,
|
||||
removed = gitsigns.removed,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
component_separators = '|',
|
||||
section_separators = '',
|
||||
},
|
||||
-- Sections
|
||||
-- +-------------------------------------------------+
|
||||
-- | A | B | C X | Y | Z |
|
||||
-- +-------------------------------------------------+
|
||||
sections = {
|
||||
lualine_a = {
|
||||
'mode',
|
||||
},
|
||||
lualine_b = {
|
||||
{ 'b:gitsigns_head', icon = '' },
|
||||
{ 'diff', source = diff_source },
|
||||
'diagnostics',
|
||||
},
|
||||
lualine_c = {
|
||||
'buffers',
|
||||
-- 'filename',
|
||||
},
|
||||
lualine_x = {
|
||||
-- 'fileformat',
|
||||
'filetype',
|
||||
},
|
||||
lualine_y = {
|
||||
-- 'progress'
|
||||
},
|
||||
lualine_z = {
|
||||
{
|
||||
require('noice').api.statusline.mode.get,
|
||||
cond = require('noice').api.statusline.mode.has,
|
||||
},
|
||||
{
|
||||
require('noice').api.status.command.get,
|
||||
cond = require('noice').api.status.command.has,
|
||||
},
|
||||
},
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_c = { 'filename' },
|
||||
lualine_x = { 'location' },
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
8
config/nvim/lua/plugins/neogen.lua
Normal file
8
config/nvim/lua/plugins/neogen.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
-- A better annotation generator.
|
||||
-- Supports multiple languages and annotation conventions.
|
||||
-- https://github.com/danymat/neogen
|
||||
return {
|
||||
'danymat/neogen',
|
||||
version = '*',
|
||||
opts = { enabled = true, snippet_engine = 'luasnip' },
|
||||
}
|
||||
92
config/nvim/lua/plugins/neotree.lua
Normal file
92
config/nvim/lua/plugins/neotree.lua
Normal file
@@ -0,0 +1,92 @@
|
||||
-- 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,
|
||||
filesystem = {
|
||||
window = {
|
||||
mappings = {
|
||||
['<Esc>'] = 'close_window',
|
||||
},
|
||||
},
|
||||
filtered_items = {
|
||||
hide_dotfiles = true,
|
||||
hide_gitignored = true,
|
||||
hide_hidden = true, -- only works on Windows for hidden files/directories
|
||||
hide_by_name = {
|
||||
'.DS_Store',
|
||||
'node_modules',
|
||||
},
|
||||
always_show = {
|
||||
'.actrc',
|
||||
'.browserslistrc',
|
||||
'.commitlintrc.json',
|
||||
'.editorconfig',
|
||||
'.env',
|
||||
'.env.example',
|
||||
'.envrc',
|
||||
'.eslintrc.json',
|
||||
'.github',
|
||||
'.gitignore',
|
||||
'.gitkeep',
|
||||
'.ignore',
|
||||
'.markdownlint.json',
|
||||
'.markdownlint.yaml',
|
||||
'.markdownlintignore',
|
||||
'.nvmrc',
|
||||
'.prettierignore',
|
||||
'.prettierrc.js',
|
||||
'.prettierrc.json',
|
||||
'.prettierrc.yaml',
|
||||
'.python-version',
|
||||
'.releaserc.json',
|
||||
'.shellcheckrc',
|
||||
'.simple-git-hooks.json',
|
||||
'.stylelintrc.json',
|
||||
'.stylua.toml',
|
||||
'.yamlignore',
|
||||
'.yamllint.yaml',
|
||||
},
|
||||
always_show_by_pattern = {
|
||||
'.*.json',
|
||||
'.*.toml',
|
||||
'.*.yaml',
|
||||
'.*.yml',
|
||||
'.*rc',
|
||||
'.*rc.*',
|
||||
'.env*',
|
||||
'.prettierrc*',
|
||||
'.stylua.*',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
85
config/nvim/lua/plugins/noice.lua
Normal file
85
config/nvim/lua/plugins/noice.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
-- Highly experimental plugin that completely replaces the UI
|
||||
-- for messages, cmdline and the popupmenu.
|
||||
-- https://github.com/folke/noice.nvim
|
||||
return {
|
||||
'folke/noice.nvim',
|
||||
lazy = false,
|
||||
enabled = true,
|
||||
dependencies = {
|
||||
'MunifTanjim/nui.nvim',
|
||||
-- A fancy, configurable, notification manager for NeoVim
|
||||
-- https://github.com/rcarriga/nvim-notify
|
||||
'rcarriga/nvim-notify',
|
||||
'hrsh7th/nvim-cmp',
|
||||
},
|
||||
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 = false, -- 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',
|
||||
any = {
|
||||
{ find = '%d+L, %d+B' },
|
||||
{ find = '; after #%d+' },
|
||||
{ find = '; before #%d+' },
|
||||
{ find = '%d fewer lines' },
|
||||
{ find = '%d more lines' },
|
||||
},
|
||||
},
|
||||
opts = { skip = true },
|
||||
},
|
||||
{
|
||||
filter = {
|
||||
event = 'notify',
|
||||
find = 'No information available',
|
||||
},
|
||||
opts = { skip = true },
|
||||
},
|
||||
},
|
||||
views = {
|
||||
cmdline_popup = {
|
||||
position = {
|
||||
row = 5,
|
||||
col = '50%',
|
||||
},
|
||||
size = {
|
||||
width = 60,
|
||||
height = 'auto',
|
||||
},
|
||||
},
|
||||
popupmenu = {
|
||||
relative = 'editor',
|
||||
position = {
|
||||
row = 8,
|
||||
col = '50%',
|
||||
},
|
||||
size = {
|
||||
width = 60,
|
||||
height = 10,
|
||||
},
|
||||
border = {
|
||||
style = 'rounded',
|
||||
padding = { 0, 1 },
|
||||
},
|
||||
win_options = {
|
||||
winhighlight = { Normal = 'Normal', FloatBorder = 'DiagnosticInfo' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
}
|
||||
8
config/nvim/lua/plugins/refactoring.lua
Normal file
8
config/nvim/lua/plugins/refactoring.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
-- The Refactoring library based off the Refactoring book by Martin Fowler
|
||||
-- https://github.com/ThePrimeagen/refactoring.nvim
|
||||
return {
|
||||
'ThePrimeagen/refactoring.nvim',
|
||||
version = '*',
|
||||
dependencies = { 'nvim-lua/plenary.nvim', 'nvim-treesitter/nvim-treesitter' },
|
||||
opts = {},
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
8
config/nvim/lua/plugins/surround.lua
Normal file
8
config/nvim/lua/plugins/surround.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
-- Add/change/delete surrounding delimiter pairs with ease.
|
||||
-- https://github.com/kylechui/nvim-surround
|
||||
return {
|
||||
'kylechui/nvim-surround',
|
||||
version = '*',
|
||||
event = 'VeryLazy',
|
||||
opts = {},
|
||||
}
|
||||
105
config/nvim/lua/plugins/telescope.lua
Normal file
105
config/nvim/lua/plugins/telescope.lua
Normal 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' },
|
||||
{ 'folke/which-key.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 themes = require 'telescope.themes'
|
||||
|
||||
-- [[ 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,
|
||||
},
|
||||
},
|
||||
},
|
||||
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, 'harpoon')
|
||||
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`
|
||||
vim.keymap.set('n', '<leader>/', function()
|
||||
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
||||
require('telescope.builtin').current_buffer_fuzzy_find(
|
||||
themes.get_dropdown {
|
||||
winblend = 20,
|
||||
previewer = true,
|
||||
}
|
||||
)
|
||||
end, { desc = '[/] Fuzzily search in current buffer]' })
|
||||
end,
|
||||
}
|
||||
8
config/nvim/lua/plugins/todo-comments.lua
Normal file
8
config/nvim/lua/plugins/todo-comments.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
-- Highlight, list and search todo comments in your projects
|
||||
-- https://github.com/folke/todo-comments.nvim
|
||||
return {
|
||||
'folke/todo-comments.nvim',
|
||||
version = '*',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
opts = {},
|
||||
}
|
||||
@@ -1,23 +1,141 @@
|
||||
-- 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',
|
||||
},
|
||||
config = function()
|
||||
require('nvim-treesitter.configs').setup {
|
||||
auto_install = true,
|
||||
ignore_install = {},
|
||||
sync_install = true,
|
||||
modules = {},
|
||||
|
||||
-- Add languages to be installed here that you want installed for treesitter
|
||||
ensure_installed = {
|
||||
'bash',
|
||||
'c',
|
||||
'css',
|
||||
'diff',
|
||||
'go',
|
||||
'html',
|
||||
'javascript',
|
||||
'jsdoc',
|
||||
'json',
|
||||
'jsonc',
|
||||
'lua',
|
||||
'luadoc',
|
||||
'markdown',
|
||||
'markdown_inline',
|
||||
'python',
|
||||
'query',
|
||||
'regex',
|
||||
'rust',
|
||||
'sql',
|
||||
'terraform',
|
||||
'toml',
|
||||
'tsx',
|
||||
'typescript',
|
||||
'vim',
|
||||
'vimdoc',
|
||||
'xml',
|
||||
'yaml',
|
||||
},
|
||||
|
||||
refactor = {
|
||||
navigation = {
|
||||
enable = true,
|
||||
-- Assign keymaps to false to disable them, e.g. `goto_definition = false`.
|
||||
keymaps = {
|
||||
goto_definition = '<leader>gnd',
|
||||
list_definitions = '<leader>gnD',
|
||||
list_definitions_toc = '<leader>gO',
|
||||
goto_next_usage = '<a-*>',
|
||||
goto_previous_usage = '<a-#>',
|
||||
},
|
||||
},
|
||||
smart_rename = {
|
||||
enable = true,
|
||||
-- Assign keymaps to false to disable them, e.g. `smart_rename = false`.
|
||||
keymaps = {
|
||||
smart_rename = 'grr',
|
||||
},
|
||||
},
|
||||
highlight_definitions = {
|
||||
enable = true,
|
||||
-- Set to false if you have an `updatetime` of ~100.
|
||||
clear_on_cursor_move = true,
|
||||
},
|
||||
highlight_current_scope = { enable = false },
|
||||
},
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<a-space>',
|
||||
node_incremental = '<a-space>',
|
||||
scope_incremental = '<c-s>',
|
||||
node_decremental = '<c-backspace>',
|
||||
},
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
['aa'] = '@parameter.outer',
|
||||
['ia'] = '@parameter.inner',
|
||||
['af'] = '@function.outer',
|
||||
['if'] = '@function.inner',
|
||||
['ac'] = '@class.outer',
|
||||
['ic'] = '@class.inner',
|
||||
['ii'] = '@conditional.inner',
|
||||
['ai'] = '@conditional.outer',
|
||||
['il'] = '@loop.inner',
|
||||
['al'] = '@loop.outer',
|
||||
['at'] = '@comment.outer',
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
[']f'] = '@function.outer',
|
||||
[']]'] = '@class.outer',
|
||||
},
|
||||
goto_next_end = {
|
||||
[']F'] = '@function.outer',
|
||||
[']['] = '@class.outer',
|
||||
},
|
||||
goto_previous_start = {
|
||||
['[f'] = '@function.outer',
|
||||
['[['] = '@class.outer',
|
||||
},
|
||||
goto_previous_end = {
|
||||
['[F'] = '@function.outer',
|
||||
['[]'] = '@class.outer',
|
||||
},
|
||||
},
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
['<leader>cn'] = '@parameter.inner',
|
||||
},
|
||||
swap_previous = {
|
||||
['<leader>cP'] = '@parameter.inner',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
|
||||
9
config/nvim/lua/plugins/treesj.lua
Normal file
9
config/nvim/lua/plugins/treesj.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
-- Neovim plugin for splitting/joining blocks of code
|
||||
-- https://github.com/Wansmer/treesj
|
||||
return {
|
||||
'Wansmer/treesj',
|
||||
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||
opts = {
|
||||
use_default_keymaps = false,
|
||||
},
|
||||
}
|
||||
15
config/nvim/lua/plugins/trouble.lua
Normal file
15
config/nvim/lua/plugins/trouble.lua
Normal file
@@ -0,0 +1,15 @@
|
||||
-- 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
|
||||
return {
|
||||
'folke/trouble.nvim',
|
||||
lazy = false,
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
opts = {
|
||||
auto_preview = true,
|
||||
auto_fold = true,
|
||||
auto_close = true,
|
||||
use_lsp_diagnostic_signs = true,
|
||||
},
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user