Initial commit
This commit is contained in:
commit
2d80f54ef8
29 changed files with 1388 additions and 0 deletions
222
.config/aerospace/aerospace.toml
Normal file
222
.config/aerospace/aerospace.toml
Normal file
|
|
@ -0,0 +1,222 @@
|
|||
# Place a copy of this config to ~/.aerospace.toml
|
||||
# After that, you can edit ~/.aerospace.toml to your liking
|
||||
|
||||
# Config version for compatibility and deprecations
|
||||
# Fallback value (if you omit the key): config-version = 1
|
||||
config-version = 2
|
||||
|
||||
# You can use it to add commands that run after AeroSpace startup.
|
||||
# Available commands : https://nikitabobko.github.io/AeroSpace/commands
|
||||
after-startup-command = [
|
||||
'exec-and-forget /bin/sh /Users/rubenhesselink/.config/aerospace/startup.sh',
|
||||
]
|
||||
|
||||
# Start AeroSpace at login
|
||||
start-at-login = true
|
||||
|
||||
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
|
||||
enable-normalization-flatten-containers = true
|
||||
enable-normalization-opposite-orientation-for-nested-containers = true
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
|
||||
# The 'accordion-padding' specifies the size of accordion padding
|
||||
# You can set 0 to disable the padding feature
|
||||
accordion-padding = 30
|
||||
|
||||
# Possible values: tiles|accordion
|
||||
default-root-container-layout = 'tiles'
|
||||
|
||||
# Possible values: horizontal|vertical|auto
|
||||
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
|
||||
# tall monitor (anything higher than wide) gets vertical orientation
|
||||
default-root-container-orientation = 'auto'
|
||||
|
||||
# Mouse follows focus when focused monitor changes
|
||||
# Drop it from your config, if you don't like this behavior
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
|
||||
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
|
||||
# Fallback value (if you omit the key): on-focused-monitor-changed = []
|
||||
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
||||
|
||||
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
|
||||
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
|
||||
# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app
|
||||
automatically-unhide-macos-hidden-apps = false
|
||||
|
||||
# List of workspaces that should stay alive even when they contain no windows,
|
||||
# even when they are invisible.
|
||||
# This config version is only available since 'config-version = 2'
|
||||
# Fallback value (if you omit the key): persistent-workspaces = []
|
||||
persistent-workspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B",
|
||||
"C", "D", "E", "F", "G", "I", "M", "N", "O", "P", "Q",
|
||||
"R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
|
||||
|
||||
# A callback that runs every time binding mode changes
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||
on-mode-changed = []
|
||||
|
||||
# Possible values: (qwerty|dvorak|colemak)
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
||||
[key-mapping]
|
||||
preset = 'qwerty'
|
||||
|
||||
# Gaps between windows (inner-*) and between monitor edges (outer-*).
|
||||
# Possible values:
|
||||
# - Constant: gaps.outer.top = 8
|
||||
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
|
||||
# In this example, 24 is a default value when there is no match.
|
||||
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
|
||||
# See:
|
||||
# https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
|
||||
[gaps]
|
||||
inner.horizontal = 0
|
||||
inner.vertical = 0
|
||||
outer.left = 0
|
||||
outer.bottom = 0
|
||||
outer.top = 0
|
||||
outer.right = 0
|
||||
|
||||
# 'main' binding mode declaration
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
# 'main' binding mode must be always presented
|
||||
# Fallback value (if you omit the key): mode.main.binding = {}
|
||||
[mode.main.binding]
|
||||
|
||||
# All possible keys:
|
||||
# - Letters. a, b, c, ..., z
|
||||
# - Numbers. 0, 1, 2, ..., 9
|
||||
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
|
||||
# - F-keys. f1, f2, ..., f20
|
||||
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon,
|
||||
# backtick, leftSquareBracket, rightSquareBracket, space, enter, esc,
|
||||
# backspace, tab, pageUp, pageDown, home, end, forwardDelete,
|
||||
# sectionSign (ISO keyboards only, european keyboards only)
|
||||
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
|
||||
# keypadMinus, keypadMultiply, keypadPlus
|
||||
# - Arrows. left, down, up, right
|
||||
|
||||
# All possible modifiers: cmd, alt, ctrl, shift
|
||||
|
||||
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
|
||||
# You can uncomment the following lines to open up terminal with alt + enter shortcut
|
||||
# (like in i3)
|
||||
# alt-enter = '''exec-and-forget osascript -e '
|
||||
# tell application "Terminal"
|
||||
# do script
|
||||
# activate
|
||||
# end tell'
|
||||
# '''
|
||||
# alt-shift-s = 'exec-and-forget screencapture -i -c'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
|
||||
alt-slash = 'layout tiles horizontal vertical'
|
||||
alt-comma = 'layout accordion horizontal vertical'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
|
||||
alt-h = 'focus left'
|
||||
alt-j = 'focus down'
|
||||
alt-k = 'focus up'
|
||||
alt-l = 'focus right'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move
|
||||
alt-shift-h = 'move left'
|
||||
alt-shift-j = 'move down'
|
||||
alt-shift-k = 'move up'
|
||||
alt-shift-l = 'move right'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
|
||||
alt-minus = 'resize smart -50'
|
||||
alt-equal = 'resize smart +50'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
||||
alt-1 = 'workspace 1'
|
||||
alt-2 = 'workspace 2'
|
||||
alt-3 = 'workspace 3'
|
||||
alt-4 = 'workspace 4'
|
||||
alt-5 = 'workspace 5'
|
||||
alt-6 = 'workspace 6'
|
||||
alt-7 = 'workspace 7'
|
||||
alt-8 = 'workspace 8'
|
||||
alt-9 = 'workspace 9'
|
||||
alt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need
|
||||
alt-b = 'workspace B'
|
||||
alt-c = 'workspace C'
|
||||
alt-d = 'workspace D'
|
||||
alt-e = 'workspace E'
|
||||
alt-f = 'workspace F'
|
||||
alt-g = 'workspace G'
|
||||
alt-i = 'workspace I'
|
||||
alt-m = 'workspace M'
|
||||
alt-n = 'workspace N'
|
||||
alt-o = 'workspace O'
|
||||
alt-p = 'workspace P'
|
||||
alt-q = 'workspace Q'
|
||||
alt-r = 'workspace R'
|
||||
alt-s = 'workspace S'
|
||||
alt-t = 'workspace T'
|
||||
alt-u = 'workspace U'
|
||||
alt-v = 'workspace V'
|
||||
alt-w = 'workspace W'
|
||||
alt-x = 'workspace X'
|
||||
alt-y = 'workspace Y'
|
||||
alt-z = 'workspace Z'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
|
||||
alt-shift-1 = 'move-node-to-workspace 1'
|
||||
alt-shift-2 = 'move-node-to-workspace 2'
|
||||
alt-shift-3 = 'move-node-to-workspace 3'
|
||||
alt-shift-4 = 'move-node-to-workspace 4'
|
||||
alt-shift-5 = 'move-node-to-workspace 5'
|
||||
alt-shift-6 = 'move-node-to-workspace 6'
|
||||
alt-shift-7 = 'move-node-to-workspace 7'
|
||||
alt-shift-8 = 'move-node-to-workspace 8'
|
||||
alt-shift-9 = 'move-node-to-workspace 9'
|
||||
alt-shift-a = 'move-node-to-workspace A'
|
||||
alt-shift-b = 'move-node-to-workspace B'
|
||||
alt-shift-c = 'move-node-to-workspace C'
|
||||
alt-shift-d = 'move-node-to-workspace D'
|
||||
alt-shift-e = 'move-node-to-workspace E'
|
||||
alt-shift-f = 'move-node-to-workspace F'
|
||||
alt-shift-g = 'move-node-to-workspace G'
|
||||
alt-shift-i = 'move-node-to-workspace I'
|
||||
alt-shift-m = 'move-node-to-workspace M'
|
||||
alt-shift-n = 'move-node-to-workspace N'
|
||||
alt-shift-o = 'move-node-to-workspace O'
|
||||
alt-shift-p = 'move-node-to-workspace P'
|
||||
alt-shift-q = 'move-node-to-workspace Q'
|
||||
alt-shift-r = 'move-node-to-workspace R'
|
||||
alt-shift-s = 'move-node-to-workspace S'
|
||||
alt-shift-t = 'move-node-to-workspace T'
|
||||
alt-shift-u = 'move-node-to-workspace U'
|
||||
alt-shift-v = 'move-node-to-workspace V'
|
||||
alt-shift-w = 'move-node-to-workspace W'
|
||||
alt-shift-x = 'move-node-to-workspace X'
|
||||
alt-shift-y = 'move-node-to-workspace Y'
|
||||
alt-shift-z = 'move-node-to-workspace Z'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth
|
||||
alt-tab = 'workspace-back-and-forth'
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor
|
||||
alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||
alt-shift-semicolon = 'mode service'
|
||||
|
||||
# 'service' binding mode declaration.
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
[mode.service.binding]
|
||||
esc = ['reload-config', 'mode main']
|
||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
|
||||
backspace = ['close-all-windows-but-current', 'mode main']
|
||||
|
||||
# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2
|
||||
#s = ['layout sticky tiling', 'mode main']
|
||||
|
||||
alt-shift-h = ['join-with left', 'mode main']
|
||||
alt-shift-j = ['join-with down', 'mode main']
|
||||
alt-shift-k = ['join-with up', 'mode main']
|
||||
alt-shift-l = ['join-with right', 'mode main']
|
||||
41
.config/aerospace/startup.sh
Executable file
41
.config/aerospace/startup.sh
Executable file
|
|
@ -0,0 +1,41 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Wait for Aerospace server to be fully ready
|
||||
sleep 2
|
||||
|
||||
# Launch all apps (open returns immediately)
|
||||
open -a "Ghostty"
|
||||
open -a "Helium"
|
||||
open -a "Slack"
|
||||
open -a "1Password"
|
||||
open -a "Proton Pass"
|
||||
open -a "Proton Mail"
|
||||
|
||||
# Give apps time to start up and create windows
|
||||
sleep 4
|
||||
|
||||
# Place a window on its workspace, polling up to 30s
|
||||
place_window() {
|
||||
local app_name="$1"
|
||||
local workspace="$2"
|
||||
local window_id
|
||||
|
||||
for _ in $(seq 1 30); do
|
||||
window_id=$(aerospace list-windows --all --format "%{window-id} %{app-name}" 2>/dev/null \
|
||||
| grep -m1 " ${app_name}$" \
|
||||
| awk '{print $1}')
|
||||
if [ -n "$window_id" ]; then
|
||||
aerospace move-node-to-workspace --window-id "$window_id" "$workspace"
|
||||
return 0
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
place_window "Ghostty" "1"
|
||||
place_window "Helium" "2"
|
||||
place_window "Slack" "3"
|
||||
place_window "1Password" "7"
|
||||
place_window "Proton Pass" "6"
|
||||
place_window "Proton Mail" "8"
|
||||
1
.config/fish/conf.d/fnm.fish
Normal file
1
.config/fish/conf.d/fnm.fish
Normal file
|
|
@ -0,0 +1 @@
|
|||
fnm env --use-on-cd --shell fish | source
|
||||
41
.config/fish/config.fish
Normal file
41
.config/fish/config.fish
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
and not set -q HERDR_ENV
|
||||
and command -q herdr
|
||||
herdr
|
||||
end
|
||||
|
||||
starship init fish | source
|
||||
|
||||
alias k=kubectl # The one alias to rule them all
|
||||
alias kg="kubectl get" # List resources
|
||||
alias kd="kubectl describe" # Detailed info
|
||||
alias kdr="kubectl --dry-run=client -o yaml" # Generate YAML without creating
|
||||
alias krun="kubectl run --dry-run=client -o yaml" # Pod YAML generator
|
||||
|
||||
# Resource-specific shortcuts
|
||||
alias kgp="kubectl get pods"
|
||||
alias kgd="kubectl get deploy"
|
||||
alias kgs="kubectl get svc"
|
||||
alias kgn="kubectl get nodes"
|
||||
alias kgns="kubectl get ns"
|
||||
alias kgcm="kubectl get configmap"
|
||||
alias kgsec="kubectl get secret"
|
||||
|
||||
# eza
|
||||
alias ls eza
|
||||
alias ll 'eza -l'
|
||||
alias la 'eza -a'
|
||||
alias lla 'eza -la'
|
||||
alias lt 'eza --tree'
|
||||
alias l. 'eza -a | grep -E "^\."'
|
||||
|
||||
# Context switching (critical — every question may use a different namespace)
|
||||
alias kcn="kubectl config set-context --current --namespace"
|
||||
# Usage: kcn my-namespace
|
||||
|
||||
# Delete with force for fast cleanup
|
||||
alias kdf="kubectl delete --force --grace-period=0"
|
||||
|
||||
# Bind sessionizer
|
||||
bind \cf '~/.local/bin/sessionizer.fish' # Ctrl-F
|
||||
67
.config/ghostty/config
Normal file
67
.config/ghostty/config
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
# Ghostty — Rose Pine Moon
|
||||
# Dark, slightly desaturated variant. Easier on the eyes than classic Rose Pine.
|
||||
# Drop this at: ~/.config/ghostty/config
|
||||
|
||||
# ── Theme: Rose Pine Moon ────────────────────────────────
|
||||
# https://github.com/rose-pine/ghostty
|
||||
# Base: #232136 Surface: #2a273f Overlay: #393552
|
||||
# Text: #e0def4 Muted: #6e6a86 Subtle: #908caa
|
||||
|
||||
palette = 0=#393552
|
||||
palette = 1=#eb6f92
|
||||
palette = 2=#3e8fb0
|
||||
palette = 3=#f6c177
|
||||
palette = 4=#9ccfd8
|
||||
palette = 5=#c4a7e7
|
||||
palette = 6=#ea9a97
|
||||
palette = 7=#e0def4
|
||||
palette = 8=#6e6a86
|
||||
palette = 9=#eb6f92
|
||||
palette = 10=#3e8fb0
|
||||
palette = 11=#f6c177
|
||||
palette = 12=#9ccfd8
|
||||
palette = 13=#c4a7e7
|
||||
palette = 14=#ea9a97
|
||||
palette = 15=#e0def4
|
||||
|
||||
background = #232136
|
||||
foreground = #e0def4
|
||||
cursor-color = #e0def4
|
||||
cursor-text = #232136
|
||||
selection-background = #44415a
|
||||
selection-foreground = #e0def4
|
||||
|
||||
# ── Appearance ───────────────────────────────────────────
|
||||
background-opacity = 0.86
|
||||
background-blur-radius = 20
|
||||
window-padding-x = 10
|
||||
window-padding-y = 10
|
||||
window-padding-balance = true
|
||||
window-decoration = false
|
||||
macos-titlebar-style = tabs
|
||||
macos-option-as-alt = true
|
||||
macos-non-native-fullscreen = true
|
||||
|
||||
# ── Font ─────────────────────────────────────────────────
|
||||
font-family = BerkeleyMono Nerd Font Mono
|
||||
font-size = 16
|
||||
font-feature = calt, liga, zero
|
||||
|
||||
# ── Mouse ────────────────────────────────────────────────
|
||||
mouse-hide-while-typing = true
|
||||
|
||||
# ── Cursor ───────────────────────────────────────────────
|
||||
cursor-style = bar
|
||||
cursor-style-blink = true
|
||||
copy-on-select = clipboard
|
||||
|
||||
# ── Performance ──────────────────────────────────────────
|
||||
macos-secure-input-indication = false
|
||||
|
||||
# ── Confirmation ─────────────────────────────────────────
|
||||
confirm-close-surface = true
|
||||
|
||||
# ── Keybindings ──────────────────────────────────────────
|
||||
keybind = shift+enter=text:\n
|
||||
|
||||
shell-integration = fish
|
||||
86
.config/git/config
Normal file
86
.config/git/config
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
[user]
|
||||
name = Ruben Hesselink
|
||||
email = rubenhesselink@pm.me
|
||||
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILc7+9RhPgkxGyZW1q1aXcb473aQVLwfXPj20zdSZTyE rubenhesselink@pm.me
|
||||
|
||||
[gpg]
|
||||
format = ssh
|
||||
|
||||
[commit]
|
||||
gpgSign = true
|
||||
|
||||
[core]
|
||||
autocrlf = input # keep newlines as in input
|
||||
compression = 9 # trade cpu for network
|
||||
fsync = none
|
||||
whitespace = error # threat incorrect whitespace as errors
|
||||
|
||||
[advice]
|
||||
addEmptyPathspec = false
|
||||
pushNonFastForward = false
|
||||
statusHints = false
|
||||
|
||||
[blame]
|
||||
coloring = highlightRecent
|
||||
date = relative
|
||||
|
||||
[diff]
|
||||
context = 3 # less context in diffs
|
||||
renames = copies # detect copies as renames in diffs
|
||||
interHunkContext = 10 # merge near hunks in diffs
|
||||
|
||||
[difftool]
|
||||
prompt = false
|
||||
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
[log]
|
||||
abbrevCommit = true # short commits
|
||||
graphColors = blue,yellow,cyan,magenta,green,red
|
||||
|
||||
[status]
|
||||
branch = true
|
||||
short = true
|
||||
showStash = true
|
||||
showUntrackedFiles = all # show individual untracked files
|
||||
|
||||
[pager]
|
||||
branch = false # no need to use pager for git branch
|
||||
|
||||
[push]
|
||||
autoSetupRemote = true # easier to push new branches
|
||||
default = current # push only current branch by default
|
||||
followTags = true # push also tags
|
||||
|
||||
[pull]
|
||||
rebase = true
|
||||
|
||||
[submodule]
|
||||
fetchJobs = 16
|
||||
|
||||
[rebase]
|
||||
autoStash = true
|
||||
|
||||
# Colors
|
||||
[color "blame"]
|
||||
highlightRecent = black bold,1 year ago,white,1 month ago,default,7 days ago,blue
|
||||
|
||||
[color "branch"]
|
||||
current = magenta
|
||||
local = default
|
||||
remote = yellow
|
||||
upstream = green
|
||||
plain = blue
|
||||
|
||||
[color "diff"]
|
||||
meta = black bold
|
||||
frag = magenta
|
||||
context = white
|
||||
whitespace = yellow reverse
|
||||
|
||||
[interactive]
|
||||
singlekey = true
|
||||
|
||||
[includeIf "gitdir:~/work/"]
|
||||
path = ~/.config/git/work
|
||||
2
.config/git/work
Normal file
2
.config/git/work
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
[user]
|
||||
email = ruben@fourdigits.nl
|
||||
16
.config/herdr/config.toml
Normal file
16
.config/herdr/config.toml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
onboarding = false
|
||||
|
||||
[keys]
|
||||
prefix = "ctrl+space"
|
||||
|
||||
[[keys.command]]
|
||||
key = "prefix+f"
|
||||
type = "plugin_action"
|
||||
command = "sessionizer.open"
|
||||
description = "open project workspace"
|
||||
|
||||
[[keys.command]]
|
||||
key = "prefix+up"
|
||||
type = "plugin_action"
|
||||
command = "sessionizer.worktree-open"
|
||||
description = "open worktree workspace"
|
||||
28
.config/herdr/plugins/config/sessionizer/config.toml
Normal file
28
.config/herdr/plugins/config/sessionizer/config.toml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
[projects]
|
||||
roots = ["~/personal", "~/personal/repos", "~/work"]
|
||||
|
||||
[layout]
|
||||
placement = "overlay"
|
||||
focus = "editor"
|
||||
|
||||
[tabs.dev]
|
||||
label = "dev"
|
||||
|
||||
[[tabs.dev.panes]]
|
||||
id = "editor"
|
||||
title = "nvim"
|
||||
command = "nvim ."
|
||||
|
||||
[tabs.shell]
|
||||
label = "shell"
|
||||
|
||||
[[tabs.shell.panes]]
|
||||
id = "shell"
|
||||
title = "shell"
|
||||
|
||||
[tabs.shell2]
|
||||
label = "shell"
|
||||
|
||||
[[tabs.shell2.panes]]
|
||||
id = "shell"
|
||||
title = "shell"
|
||||
8
.config/nvim/.gitignore
vendored
Normal file
8
.config/nvim/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
||||
15
.config/nvim/.neoconf.json
Normal file
15
.config/nvim/.neoconf.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
201
.config/nvim/LICENSE
Normal file
201
.config/nvim/LICENSE
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
4
.config/nvim/README.md
Normal file
4
.config/nvim/README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# 💤 LazyVim
|
||||
|
||||
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
|
||||
2
.config/nvim/init.lua
Normal file
2
.config/nvim/init.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("config.lazy")
|
||||
43
.config/nvim/lazy-lock.json
Normal file
43
.config/nvim/lazy-lock.json
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"LazyVim": { "branch": "main", "commit": "459a4c3b1059671e766a46c7cc223827dc67e3d0" },
|
||||
"blink-copilot": { "branch": "main", "commit": "7ad8209b2f880a2840c94cdcd80ab4dc511d4f39" },
|
||||
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||
"catppuccin": { "branch": "main", "commit": "0303a7208dba448c459767486a38a6ec05c4216b" },
|
||||
"conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" },
|
||||
"copilot.lua": { "branch": "master", "commit": "1d457ad5f267b8ef855a6b8b3fe152403cb00947" },
|
||||
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" },
|
||||
"grug-far.nvim": { "branch": "main", "commit": "5506c2f59dc9ab2ed6c233585412b24d31d51521" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" },
|
||||
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "0a695750d747db1e7e70bcf0267ef8951c95fc83" },
|
||||
"mason.nvim": { "branch": "main", "commit": "16ba83bfc8a25f52bb545134f5bee082b195c460" },
|
||||
"mini.ai": { "branch": "main", "commit": "deacc8e9cf05df0297e3b14a08c2f8a415045c6f" },
|
||||
"mini.icons": { "branch": "main", "commit": "520995f1d75da0e4cc901ee95080b1ff2bc46b94" },
|
||||
"mini.pairs": { "branch": "main", "commit": "30cf2f01c4aaa2033db67376b9924fa2442c05d6" },
|
||||
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||
"nvim-lint": { "branch": "master", "commit": "d48f3a76189d03b2239f6df1b2f7e3fa8353743b" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "07dff35e7c95288861200b788ef32d6103f107f0" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||
"nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
|
||||
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "5adf0895310c1904e5abfaad40a2baad7fe44a07" },
|
||||
"rose-pine": { "branch": "main", "commit": "ff483051a47e27d84bdef47703538df1ed9f4a47" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "882c996cf28183f4d63640de0b4c02ec886d01f2" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||
"ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
|
||||
"venv-selector.nvim": { "branch": "main", "commit": "cc4bb3975de8835291f9bb45889e96c6b2795fc4" },
|
||||
"vim-dadbod": { "branch": "master", "commit": "6d1d41da4873a445c5605f2005ad2c68c99d8770" },
|
||||
"vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" },
|
||||
"vim-dadbod-ui": { "branch": "master", "commit": "07e92e22114cc5b1ba4938d99897d85b58e20475" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||
}
|
||||
20
.config/nvim/lazyvim.json
Normal file
20
.config/nvim/lazyvim.json
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.ai.copilot",
|
||||
"lazyvim.plugins.extras.lang.docker",
|
||||
"lazyvim.plugins.extras.lang.git",
|
||||
"lazyvim.plugins.extras.lang.go",
|
||||
"lazyvim.plugins.extras.lang.json",
|
||||
"lazyvim.plugins.extras.lang.markdown",
|
||||
"lazyvim.plugins.extras.lang.python",
|
||||
"lazyvim.plugins.extras.lang.sql",
|
||||
"lazyvim.plugins.extras.lang.toml",
|
||||
"lazyvim.plugins.extras.lang.typescript",
|
||||
"lazyvim.plugins.extras.util.mini-hipatterns"
|
||||
],
|
||||
"install_version": 8,
|
||||
"news": {
|
||||
"NEWS.md": "11866"
|
||||
},
|
||||
"version": 8
|
||||
}
|
||||
8
.config/nvim/lua/config/autocmds.lua
Normal file
8
.config/nvim/lua/config/autocmds.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
-- 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
|
||||
-- with `vim.api.nvim_create_autocmd`
|
||||
--
|
||||
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
|
||||
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
|
||||
3
.config/nvim/lua/config/keymaps.lua
Normal file
3
.config/nvim/lua/config/keymaps.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-- 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
|
||||
53
.config/nvim/lua/config/lazy.lua
Normal file
53
.config/nvim/lua/config/lazy.lua
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
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)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import/override with your plugins
|
||||
{ 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", "habamax" } },
|
||||
checker = {
|
||||
enabled = true, -- check for plugin updates periodically
|
||||
notify = false, -- notify on update
|
||||
}, -- automatically check for plugin updates
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
-- "matchit",
|
||||
-- "matchparen",
|
||||
-- "netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
3
.config/nvim/lua/config/options.lua
Normal file
3
.config/nvim/lua/config/options.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-- 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
|
||||
10
.config/nvim/lua/plugins/blink.lua
Normal file
10
.config/nvim/lua/plugins/blink.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
return {
|
||||
{
|
||||
"saghen/blink.cmp",
|
||||
opts = {
|
||||
keymap = {
|
||||
["<M-Space>"] = { "show", "show_documentation", "hide_documentation" },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
74
.config/nvim/lua/plugins/colorscheme.lua
Normal file
74
.config/nvim/lua/plugins/colorscheme.lua
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
-- return {
|
||||
-- {
|
||||
-- "LazyVim/LazyVim",
|
||||
-- opts = {
|
||||
-- colorscheme = "catppuccin-frappe",
|
||||
-- },
|
||||
-- },
|
||||
-- }
|
||||
-- Rose Pine Moon · dark + softer · transparent bg
|
||||
-- LazyVim — drop in: ~/.config/nvim/lua/plugins/colorscheme.lua
|
||||
|
||||
return {
|
||||
{
|
||||
"rose-pine/neovim",
|
||||
name = "rose-pine",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {
|
||||
variant = "moon",
|
||||
dark_variant = "moon",
|
||||
dim_inactive_windows = false,
|
||||
extend_background_behind_borders = true,
|
||||
|
||||
enable = {
|
||||
terminal = true,
|
||||
legacy_highlights = true,
|
||||
migrations = true,
|
||||
},
|
||||
|
||||
styles = {
|
||||
bold = true,
|
||||
italic = true,
|
||||
transparency = true,
|
||||
},
|
||||
|
||||
highlight_groups = {
|
||||
LineNr = { fg = "subtle" },
|
||||
CursorLineNr = { fg = "iris", bold = true },
|
||||
CursorLine = { bg = "highlight_med" },
|
||||
NormalFloat = { bg = "surface" },
|
||||
FloatBorder = { fg = "highlight_high" },
|
||||
StatusLine = { bg = "surface", fg = "text" },
|
||||
StatusLineNC = { bg = "surface", fg = "highlight_high" },
|
||||
DiagnosticError = { fg = "love" },
|
||||
DiagnosticWarn = { fg = "gold" },
|
||||
DiagnosticInfo = { fg = "foam" },
|
||||
DiagnosticHint = { fg = "iris" },
|
||||
DiffAdd = { bg = "#283e3a", fg = "pine" },
|
||||
DiffChange = { bg = "#2a283e", fg = "foam" },
|
||||
DiffDelete = { bg = "#3a282e", fg = "love" },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "rose-pine",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"rose-pine/neovim",
|
||||
config = function(_, opts)
|
||||
require("rose-pine").setup(opts)
|
||||
vim.cmd.colorscheme("rose-pine")
|
||||
vim.api.nvim_set_hl(0, "Normal", { bg = "NONE", ctermbg = "NONE" })
|
||||
vim.api.nvim_set_hl(0, "NormalNC", { bg = "NONE", ctermbg = "NONE" })
|
||||
vim.api.nvim_set_hl(0, "SignColumn", { bg = "NONE", ctermbg = "NONE" })
|
||||
vim.api.nvim_set_hl(0, "FoldColumn", { bg = "NONE", ctermbg = "NONE" })
|
||||
vim.api.nvim_set_hl(0, "LineNr", { bg = "NONE", ctermbg = "NONE" })
|
||||
end,
|
||||
},
|
||||
}
|
||||
24
.config/nvim/lua/plugins/djlsp.lua
Normal file
24
.config/nvim/lua/plugins/djlsp.lua
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
return {
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
djlsp = {
|
||||
mason = false,
|
||||
cmd = {
|
||||
vim.fn.expand("~/personal/repos/django-template-lsp/env/bin/djlsp"),
|
||||
"--enable-log",
|
||||
"--cache",
|
||||
},
|
||||
root_markers = { "docker-compose.yml", "manage.py", ".git" },
|
||||
filetypes = { "html", "htmldjango" },
|
||||
init_options = {
|
||||
docker_compose_file = "docker-compose.yml",
|
||||
docker_compose_service = "django",
|
||||
cache = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
3
.config/nvim/stylua.toml
Normal file
3
.config/nvim/stylua.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
||||
70
.config/starship.toml
Normal file
70
.config/starship.toml
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
# Starship — Rose Pine Moon (softer dark)
|
||||
# Palette: Base #232136 Text #e0def4 Pine #3e8fb0 Rose #ea9a97
|
||||
|
||||
palette = "rose-pine-moon"
|
||||
|
||||
[palettes.rose-pine-moon]
|
||||
iris = "#c4a7e7"
|
||||
love = "#eb6f92"
|
||||
pine = "#3e8fb0"
|
||||
foam = "#9ccfd8"
|
||||
gold = "#f6c177"
|
||||
rose = "#ea9a97"
|
||||
text = "#e0def4"
|
||||
subtle = "#908caa"
|
||||
muted = "#6e6a86"
|
||||
surface = "#2a273f"
|
||||
|
||||
format = """
|
||||
$directory\
|
||||
$git_branch\
|
||||
$git_status\
|
||||
$nix_shell\
|
||||
$cmd_duration\
|
||||
$line_break\
|
||||
$character"""
|
||||
|
||||
[directory]
|
||||
truncation_length = 3
|
||||
truncate_to_repo = true
|
||||
style = "bold #9ccfd8"
|
||||
[directory.substitutions]
|
||||
"~/projects" = " "
|
||||
"~/.config" = " "
|
||||
"~/Documents" = " "
|
||||
|
||||
[git_branch]
|
||||
symbol = " "
|
||||
style = "bold #c4a7e7"
|
||||
format = "on [$symbol$branch]($style) "
|
||||
|
||||
[git_status]
|
||||
style = "#f6c177"
|
||||
ahead = "⇡"
|
||||
behind = "⇣"
|
||||
diverged = "⇕"
|
||||
conflicted = "≠"
|
||||
untracked = "?"
|
||||
stashed = "$"
|
||||
modified = "!"
|
||||
staged = "+"
|
||||
renamed = "»"
|
||||
deleted = "✘"
|
||||
|
||||
[character]
|
||||
success_symbol = "[❯](bold #3e8fb0)" # Moon Pine
|
||||
error_symbol = "[❯](bold #eb6f92)"
|
||||
vimcmd_symbol = "[❮](bold #9ccfd8)"
|
||||
|
||||
[cmd_duration]
|
||||
min_time = 2000
|
||||
format = "took [$duration]($style) "
|
||||
style = "#908caa"
|
||||
|
||||
[nix_shell]
|
||||
format = "via [❄️ $name](bold #9ccfd8)"
|
||||
|
||||
[os]
|
||||
disabled = false
|
||||
style = "bold #ea9a97"
|
||||
symbols.Macos = " "
|
||||
78
.config/tmux/tmux.conf
Normal file
78
.config/tmux/tmux.conf
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
set -a terminal-features "tmux-256color:RGB"
|
||||
# set -g prefix C-Space
|
||||
# set -g prefix2 C-b
|
||||
# set -g base-index 1
|
||||
# setw -g mode-keys vi
|
||||
# set -g status-position top
|
||||
# set -g status-justify absolute-centre
|
||||
# set -g window-status-current-style "bold"
|
||||
# set -g status-right ""
|
||||
# set -g status-left "#S"
|
||||
# set -g mouse on
|
||||
# set-option -g history-limit 10000
|
||||
|
||||
# bind C-Space send-prefix
|
||||
# bind C-b send-prefix
|
||||
# bind r source-file ~/.config/tmux/tmux.conf \; display-message "Tmux config reloaded."
|
||||
|
||||
# tmux — Rose Pine Moon (softer dark)
|
||||
# Same as Rose Pine but with @rose_pine_variant "moon"
|
||||
|
||||
set -g prefix C-Space
|
||||
unbind C-b
|
||||
|
||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH /Users/rubenhesselink/.config/tmux/plugins
|
||||
|
||||
set -g @rose_pine_variant "moon"
|
||||
set -g @rose_pine_window_status_style "rounded"
|
||||
set -g @rose_pine_date_time "#(date '+%a %d %b %H:%M')"
|
||||
set -g @rose_pine_directory "on"
|
||||
|
||||
set -g status-position top
|
||||
set -g status-justify absolute-centre
|
||||
set -g status-left-length 40
|
||||
set -g status-right-length 80
|
||||
set -g visual-bell off
|
||||
set -g set-titles off
|
||||
|
||||
set -g base-index 1
|
||||
set -g pane-base-index 1
|
||||
setw -g pane-base-index 1
|
||||
set -g renumber-windows on
|
||||
setw -g mode-keys vi
|
||||
|
||||
bind -n M-h select-pane -L
|
||||
bind -n M-j select-pane -D
|
||||
bind -n M-k select-pane -U
|
||||
bind -n M-l select-pane -R
|
||||
bind -n M-S-h previous-window
|
||||
bind -n M-S-l next-window
|
||||
bind -n M-Left resize-pane -L 5
|
||||
bind -n M-Right resize-pane -R 5
|
||||
bind -n M-Down resize-pane -D 3
|
||||
bind -n M-Up resize-pane -U 3
|
||||
|
||||
bind \\ split-window -h -c "#{pane_current_path}"
|
||||
bind - split-window -v -c "#{pane_current_path}"
|
||||
|
||||
bind r source-file ~/.config/tmux/tmux.conf \; display "Config reloaded!"
|
||||
|
||||
set -g mouse on
|
||||
set -g history-limit 50000
|
||||
set -sg escape-time 10
|
||||
set -g focus-events on
|
||||
set -ga terminal-overrides ",*256col*:Tc"
|
||||
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q'
|
||||
|
||||
set -g @plugin 'tmux-plugins/tpm'
|
||||
set -g @plugin 'rose-pine/tmux'
|
||||
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||
set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||
|
||||
set -g @continuum-restore 'on'
|
||||
set -g @continuum-save-interval '15'
|
||||
|
||||
if "test ! -d /Users/rubenhesselink/.config/tmux/plugins/tpm" \
|
||||
"run 'git clone https://github.com/tmux-plugins/tpm /Users/rubenhesselink/.config/tmux/plugins/tpm && /Users/rubenhesselink/.config/tmux/plugins/tpm/bin/install_plugins'"
|
||||
|
||||
run '/Users/rubenhesselink/.config/tmux/plugins/tpm/tpm'
|
||||
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
.DS_Store
|
||||
|
||||
# nvim is a LazyVim starter that has its own git history — track files inline
|
||||
.config/nvim/.git/
|
||||
.config/nvim/lua/plugins/example.lua
|
||||
|
||||
# tmux plugins are managed by tpm at install time
|
||||
.config/tmux/plugins/
|
||||
|
||||
# fish_variables is auto-generated runtime state
|
||||
.config/fish/fish_variables
|
||||
135
Brewfile
Normal file
135
Brewfile
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
tap "barutsrb/tap", "https://github.com/BarutSRB/homebrew-tap"
|
||||
tap "felixkratz/formulae", "https://github.com/FelixKratz/homebrew-formulae"
|
||||
tap "nikitabobko/tap"
|
||||
# Version manager for neovim
|
||||
brew "bob"
|
||||
# Cat clone with syntax highlighting, used by Herdr Sessionizer previews
|
||||
brew "bat"
|
||||
# JavaScript runtime required by Herdr Sessionizer
|
||||
brew "bun"
|
||||
# Resource monitor. C++ version and continuation of bashtop and bpytop
|
||||
brew "btop"
|
||||
# Cross-platform make
|
||||
brew "cmake"
|
||||
# Container runtimes on MacOS (and Linux) with minimal setup
|
||||
brew "colima", restart_service: :changed
|
||||
# C++ header-only HTTP/HTTPS server and client library
|
||||
brew "cpp-httplib"
|
||||
# Tool for exploring each layer in a docker image
|
||||
brew "dive"
|
||||
# Pack, ship and run any application as a lightweight container
|
||||
brew "docker"
|
||||
# Isolated development environments using Docker
|
||||
brew "docker-compose"
|
||||
# Modern, maintained replacement for ls
|
||||
brew "eza"
|
||||
# Simple, fast and user-friendly alternative to find
|
||||
brew "fd"
|
||||
# User-friendly command-line shell for UNIX-like operating systems
|
||||
brew "fish"
|
||||
# Fast and simple Node.js version manager
|
||||
brew "fnm"
|
||||
# Command-line fuzzy finder written in Go
|
||||
brew "fzf"
|
||||
# Open source programming language to build simple/reliable/efficient software
|
||||
brew "go"
|
||||
# Kubernetes package manager
|
||||
brew "helm"
|
||||
# Terminal workspace manager
|
||||
brew "herdr"
|
||||
# Kubernetes CLI To Manage Your Clusters In Style!
|
||||
brew "k9s"
|
||||
# Tool that can switch between kubectl contexts easily and create aliases
|
||||
brew "kubectx"
|
||||
# Kubernetes command-line interface
|
||||
brew "kubernetes-cli"
|
||||
# Lazier way to manage everything docker
|
||||
brew "lazydocker"
|
||||
# Multi-format archive and compression library
|
||||
brew "libarchive"
|
||||
# ISO/IEC 23008-12:2017 HEIF file format decoder and encoder
|
||||
brew "libheif"
|
||||
# Powerful, lightweight programming language
|
||||
brew "lua"
|
||||
# Package manager for the Lua programming language
|
||||
brew "luarocks"
|
||||
# Run a Kubernetes cluster locally
|
||||
brew "minikube"
|
||||
# Replacement for ls, cp and other commands for object storage
|
||||
brew "minio-mc"
|
||||
# NCurses Disk Usage
|
||||
brew "ncdu"
|
||||
# Small build system for use with gyp or CMake
|
||||
brew "ninja"
|
||||
# AI coding agent, built for the terminal
|
||||
brew "opencode"
|
||||
# Object-relational database system
|
||||
brew "postgresql@18", link: true
|
||||
# Extremely fast Python linter, written in Rust
|
||||
brew "ruff"
|
||||
# Safe, concurrent, practical language
|
||||
brew "rust"
|
||||
# Cross-shell prompt for astronauts
|
||||
brew "starship"
|
||||
# Tail multiple Kubernetes pods & their containers
|
||||
brew "stern"
|
||||
# Very fast implementation of tldr in Rust
|
||||
brew "tealdeer"
|
||||
# Terminal multiplexer
|
||||
brew "tmux"
|
||||
# Header-only TOML config file parser and serializer for C++17
|
||||
brew "tomlplusplus"
|
||||
# Extremely fast Python type checker, written in Rust
|
||||
brew "ty"
|
||||
# Extremely fast Python package installer and resolver, written in Rust
|
||||
brew "uv"
|
||||
# Userspace Go implementation of WireGuard
|
||||
brew "wireguard-go"
|
||||
# Tools for the WireGuard secure network tunnel
|
||||
brew "wireguard-tools"
|
||||
# Password manager that keeps all passwords secure behind one password
|
||||
cask "1password"
|
||||
# AeroSpace is an i3-like tiling window manager for macOS
|
||||
cask "nikitabobko/tap/aerospace"
|
||||
# Application launcher and productivity software
|
||||
cask "alfred"
|
||||
# OpenAI's official ChatGPT desktop app
|
||||
cask "chatgpt"
|
||||
# Anthropic's official Claude AI desktop app
|
||||
cask "claude"
|
||||
# Terminal-based AI coding assistant
|
||||
cask "claude-code"
|
||||
# OpenAI's coding agent that runs in your terminal
|
||||
cask "codex"
|
||||
# OpenAI's Codex desktop app for managing coding agents
|
||||
cask "codex-app"
|
||||
# Voice and text chat software
|
||||
cask "discord"
|
||||
# API documentation viewer
|
||||
cask "dteoh-devdocs"
|
||||
# Terminal emulator that uses platform-native UI and GPU acceleration
|
||||
cask "ghostty"
|
||||
# 2D and 3D game engine
|
||||
cask "godot"
|
||||
# Chromium-based web browser
|
||||
cask "helium-browser"
|
||||
# Deck tracker and deck manager for Hearthstone
|
||||
cask "hstracker"
|
||||
# Spreadsheet software
|
||||
cask "microsoft-excel"
|
||||
# Sandbox construction video game
|
||||
cask "minecraft"
|
||||
# Minecraft launcher
|
||||
cask "prismlauncher"
|
||||
# Client for Proton Mail and Proton Calendar
|
||||
cask "proton-mail"
|
||||
# Desktop client for Proton Pass
|
||||
cask "proton-pass"
|
||||
# Team communication and collaboration software
|
||||
cask "slack"
|
||||
# Music streaming service
|
||||
cask "spotify"
|
||||
# Mesh VPN based on WireGuard
|
||||
cask "tailscale-app"
|
||||
uv "fourdigits-cli"
|
||||
npm "corepack"
|
||||
119
install.sh
Executable file
119
install.sh
Executable file
|
|
@ -0,0 +1,119 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
DOTFILES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
DRY_RUN=false
|
||||
|
||||
for arg in "$@"; do
|
||||
[[ "$arg" == "--dry-run" ]] && DRY_RUN=true
|
||||
done
|
||||
|
||||
$DRY_RUN && echo "[DRY RUN] No changes will be made."
|
||||
|
||||
run() {
|
||||
if $DRY_RUN; then
|
||||
echo "[DRY RUN] Would run: $*"
|
||||
else
|
||||
"$@"
|
||||
fi
|
||||
}
|
||||
|
||||
step() { echo "==> $*"; }
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 1. Homebrew
|
||||
# ---------------------------------------------------------------------------
|
||||
step "Checking Homebrew"
|
||||
if ! command -v brew &>/dev/null; then
|
||||
if $DRY_RUN; then
|
||||
echo "[DRY RUN] Would install Homebrew"
|
||||
else
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 2. Install packages
|
||||
# ---------------------------------------------------------------------------
|
||||
step "Installing packages from Brewfile"
|
||||
run brew bundle install --file="$DOTFILES_DIR/Brewfile" --no-lock
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 3. Set fish as default shell
|
||||
# ---------------------------------------------------------------------------
|
||||
step "Setting fish as default shell"
|
||||
FISH_PATH="$(command -v fish || true)"
|
||||
if [[ -z "$FISH_PATH" ]]; then
|
||||
echo "ERROR: fish not found after brew install — cannot set as default shell"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$SHELL" != "$FISH_PATH" ]]; then
|
||||
if ! grep -qF "$FISH_PATH" /etc/shells; then
|
||||
echo "Adding $FISH_PATH to /etc/shells (requires sudo)"
|
||||
run sudo sh -c "echo '$FISH_PATH' >> /etc/shells"
|
||||
fi
|
||||
run chsh -s "$FISH_PATH"
|
||||
else
|
||||
echo "fish is already the default shell"
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 4. Copy configs
|
||||
# ---------------------------------------------------------------------------
|
||||
CONFIGS=(
|
||||
"fish"
|
||||
"starship.toml"
|
||||
"nvim"
|
||||
"git"
|
||||
"herdr"
|
||||
"tmux"
|
||||
"aerospace"
|
||||
"ghostty"
|
||||
)
|
||||
|
||||
step "Copying configs to ~/.config/"
|
||||
for name in "${CONFIGS[@]}"; do
|
||||
src="$DOTFILES_DIR/.config/$name"
|
||||
dst="$HOME/.config/$name"
|
||||
|
||||
if [[ ! -e "$src" ]]; then
|
||||
echo " skip: $src not found in repo"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -e "$dst" ]]; then
|
||||
if $DRY_RUN; then
|
||||
echo "[DRY RUN] Would backup $dst → ${dst}.bak"
|
||||
echo "[DRY RUN] Would copy $src → $dst"
|
||||
else
|
||||
echo " backup: $dst → ${dst}.bak"
|
||||
rm -rf "${dst}.bak"
|
||||
cp -r "$dst" "${dst}.bak"
|
||||
rm -rf "$dst"
|
||||
cp -r "$src" "$dst"
|
||||
fi
|
||||
else
|
||||
if $DRY_RUN; then
|
||||
echo "[DRY RUN] Would copy $src → $dst"
|
||||
else
|
||||
echo " copy: $src → $dst"
|
||||
cp -r "$src" "$dst"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 5. tmux plugin manager (tpm)
|
||||
# ---------------------------------------------------------------------------
|
||||
step "Setting up tpm (tmux plugin manager)"
|
||||
TPM_DIR="$HOME/.config/tmux/plugins/tpm"
|
||||
if [[ ! -d "$TPM_DIR" ]]; then
|
||||
run git clone https://github.com/tmux-plugins/tpm "$TPM_DIR"
|
||||
else
|
||||
echo "tpm already installed"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Done. Open a new terminal to start using fish."
|
||||
$DRY_RUN && echo "(This was a dry run — no changes were made.)"
|
||||
Loading…
Add table
Reference in a new issue