mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-04 06:44:20 +00:00
Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0b03acebd8 | |||
| d172b86cb8 | |||
| f910dfb9ac | |||
| ee95d57ba0 | |||
| f8a317f3c7 | |||
| 3762e10932 | |||
| afda96902b | |||
| 3060b6ad66 | |||
|
|
4f154cf509 | ||
| 863d803483 | |||
| 07bb2b56d1 | |||
| 84a753100e | |||
| c8b01f3fda | |||
| 8e6a110aac | |||
| a8baa1671f | |||
| 2ccdd042f6 | |||
|
|
8cf43ed555 | ||
| e22094e0da | |||
| 6186c5cba4 | |||
| c453dcbf84 | |||
| 4daaa62aed | |||
| f56d5682d1 | |||
| 439638b686 | |||
| a8a473a46d | |||
| eb91a43bbd | |||
|
|
193fae662e | ||
|
|
117ca1a944 | ||
| 1f1a6d42ad | |||
| cca265cd99 | |||
| cc6abb53ba |
@@ -26,6 +26,8 @@ indent_size = 1
|
|||||||
indent_style = tab
|
indent_style = tab
|
||||||
|
|
||||||
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
|
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
|
||||||
|
indent_size = 2
|
||||||
|
tab_width = 2
|
||||||
shell_variant = bash # --language-variant
|
shell_variant = bash # --language-variant
|
||||||
binary_next_line = true
|
binary_next_line = true
|
||||||
switch_case_indent = true # --case-indent
|
switch_case_indent = true # --case-indent
|
||||||
@@ -37,5 +39,5 @@ function_next_line = true # --func-next-line
|
|||||||
# such as "shfmt -l -w .". When formatting files directly,
|
# such as "shfmt -l -w .". When formatting files directly,
|
||||||
# like "shfmt -w third_party/foo.sh" or "shfmt --filename=third_party/foo.sh",
|
# 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.
|
# the ignore logic is applied only when the --apply-ignore flag is given.
|
||||||
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**}]
|
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**,config/tmux/plugins/**}]
|
||||||
ignore = true
|
ignore = true
|
||||||
|
|||||||
3
.github/workflows/pre-commit-autoupdate.yml
vendored
3
.github/workflows/pre-commit-autoupdate.yml
vendored
@@ -2,7 +2,8 @@
|
|||||||
name: Pre-commit autoupdate
|
name: Pre-commit autoupdate
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 * * *"
|
# At 04:00 on Monday and Thursday.
|
||||||
|
- cron: "0 4 * * 1,4"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
jobs:
|
jobs:
|
||||||
auto-update:
|
auto-update:
|
||||||
|
|||||||
4
.github/workflows/update-submodules.yml
vendored
4
.github/workflows/update-submodules.yml
vendored
@@ -1,7 +1,9 @@
|
|||||||
---
|
---
|
||||||
name: Update submodules
|
name: Update submodules
|
||||||
on:
|
on:
|
||||||
schedule: [{ cron: 0 3 * * * }]
|
schedule:
|
||||||
|
# At 04:00 on Monday and Thursday.
|
||||||
|
- cron: "0 4 * * 1,4"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
jobs:
|
jobs:
|
||||||
update-submodules:
|
update-submodules:
|
||||||
|
|||||||
45
.gitignore
vendored
45
.gitignore
vendored
@@ -1,32 +1,35 @@
|
|||||||
Brewfile.lock.json
|
!.gitkeep
|
||||||
lazy-lock.json
|
|
||||||
config/nvim/lazy-lock.json
|
|
||||||
*.log
|
|
||||||
*-secret
|
*-secret
|
||||||
|
*.bak
|
||||||
|
*.log
|
||||||
|
*.socket
|
||||||
*cache
|
*cache
|
||||||
|
.env
|
||||||
.idea
|
.idea
|
||||||
|
.nfs*
|
||||||
.vscode
|
.vscode
|
||||||
|
Brewfile.lock.json
|
||||||
|
antidote_plugins.zsh
|
||||||
|
config/alacritty/theme-active.toml
|
||||||
config/cheat/cheatsheets/pure-bash-bible/*
|
config/cheat/cheatsheets/pure-bash-bible/*
|
||||||
config/cheat/cheatsheets/tldr/*
|
config/cheat/cheatsheets/tldr/*
|
||||||
config/git/credentials
|
config/git/credentials
|
||||||
config/npm/npmrc
|
|
||||||
config/zsh/.zcompdump
|
|
||||||
config/alacritty/theme-active.toml
|
|
||||||
ssh/local.d/*
|
|
||||||
!ssh/local.d/.gitkeep
|
|
||||||
!.gitkeep
|
|
||||||
.env
|
|
||||||
local/share/fonts/*
|
|
||||||
node_modules
|
|
||||||
.nfs*
|
|
||||||
*.socket
|
|
||||||
iTermServer-*
|
|
||||||
lock
|
|
||||||
config/iterm2/AppSupport
|
|
||||||
config/gnupg/S.*
|
config/gnupg/S.*
|
||||||
config/gnupg/s
|
|
||||||
config/gnupg/private-keys-v1.d
|
config/gnupg/private-keys-v1.d
|
||||||
|
config/gnupg/s
|
||||||
|
config/iterm2/AppSupport
|
||||||
|
config/npm/npmrc
|
||||||
|
config/nvim/lazy-lock.json
|
||||||
config/nvim/spell/*
|
config/nvim/spell/*
|
||||||
!config/nvim/spell/.gitkeep
|
!config/nvim/spell/.gitkeep
|
||||||
antidote_plugins.zsh
|
config/zed/*
|
||||||
|
!config/zed/settings.json
|
||||||
|
config/zsh/.zcompdump
|
||||||
|
iTermServer-*
|
||||||
|
lazy-lock.json
|
||||||
|
local/share/fonts/*
|
||||||
|
local/bin/asdf/plugins/*
|
||||||
|
lock
|
||||||
|
node_modules
|
||||||
|
ssh/local.d/*
|
||||||
|
!ssh/local.d/.gitkeep
|
||||||
|
|||||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -64,3 +64,6 @@
|
|||||||
path = tools/antidote
|
path = tools/antidote
|
||||||
url = https://github.com/mattmc3/antidote.git
|
url = https://github.com/mattmc3/antidote.git
|
||||||
shallow = true
|
shallow = true
|
||||||
|
[submodule "dotbot-asdf"]
|
||||||
|
path = tools/dotbot-asdf
|
||||||
|
url = https://github.com/sobolevn/dotbot-asdf
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ repos:
|
|||||||
rev: v5.0.0
|
rev: v5.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: requirements-txt-fixer
|
- id: requirements-txt-fixer
|
||||||
|
- id: detect-aws-credentials
|
||||||
- id: detect-private-key
|
- id: detect-private-key
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
args: [--markdown-linebreak-ext=md]
|
args: [--markdown-linebreak-ext=md]
|
||||||
@@ -25,7 +26,7 @@ repos:
|
|||||||
rev: v0.43.0
|
rev: v0.43.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: markdownlint
|
- id: markdownlint
|
||||||
args: [-c, .markdownlint.yaml, --fix]
|
args: [-c, .markdownlint.json, --fix]
|
||||||
|
|
||||||
- repo: https://github.com/adrienverge/yamllint
|
- repo: https://github.com/adrienverge/yamllint
|
||||||
rev: v1.35.1
|
rev: v1.35.1
|
||||||
@@ -43,12 +44,12 @@ repos:
|
|||||||
- id: shfmt
|
- id: shfmt
|
||||||
|
|
||||||
- repo: https://github.com/rhysd/actionlint
|
- repo: https://github.com/rhysd/actionlint
|
||||||
rev: v1.7.4
|
rev: v1.7.5
|
||||||
hooks:
|
hooks:
|
||||||
- id: actionlint
|
- id: actionlint
|
||||||
|
|
||||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||||
rev: 39.82.3
|
rev: 39.86.3
|
||||||
hooks:
|
hooks:
|
||||||
- id: renovate-config-validator
|
- id: renovate-config-validator
|
||||||
|
|
||||||
|
|||||||
@@ -24,3 +24,7 @@ disable=SC1091
|
|||||||
# SC2174: When used with -p, -m only applies to the deepest directory.
|
# SC2174: When used with -p, -m only applies to the deepest directory.
|
||||||
# https://github.com/koalaman/shellcheck/wiki/SC2174
|
# https://github.com/koalaman/shellcheck/wiki/SC2174
|
||||||
disable=SC2174
|
disable=SC2174
|
||||||
|
|
||||||
|
# SC2016: Expressions don't expand in single quotes, use double quotes for that.
|
||||||
|
# https://www.shellcheck.net/wiki/SC2016
|
||||||
|
disable=SC2016
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ git submodule add --name dotbot-include \
|
|||||||
-f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
|
-f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
|
||||||
git submodule add --name dotbot-pip \
|
git submodule add --name dotbot-pip \
|
||||||
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
|
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
|
||||||
|
git submodule add --name dotbot-asdf \
|
||||||
|
-f https://github.com/sobolevn/dotbot-asdf tools/dotbot-asdf
|
||||||
|
|
||||||
# other repos
|
# other repos
|
||||||
git submodule add --name cheat-community \
|
git submodule add --name cheat-community \
|
||||||
@@ -19,8 +21,7 @@ git submodule add --name asdf \
|
|||||||
-f https://github.com/asdf-vm/asdf.git local/bin/asdf
|
-f https://github.com/asdf-vm/asdf.git local/bin/asdf
|
||||||
git submodule add --name antidote \
|
git submodule add --name antidote \
|
||||||
--depth 1 \
|
--depth 1 \
|
||||||
-f https://github.com/mattmc3/antidote.git tools/antidote \
|
-f https://github.com/mattmc3/antidote.git tools/antidote
|
||||||
|
|
||||||
|
|
||||||
# tmux plugin manager and plugins
|
# tmux plugin manager and plugins
|
||||||
git submodule add --name tmux/tmux-continuum \
|
git submodule add --name tmux/tmux-continuum \
|
||||||
@@ -44,6 +45,7 @@ git submodule add --name tmux/tmux-dark-notify \
|
|||||||
|
|
||||||
# Takes submodules and sets them to ignore all changes
|
# Takes submodules and sets them to ignore all changes
|
||||||
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
||||||
|
echo "Ignoring submodule changes for submodule.${MODULE}..."
|
||||||
git config "submodule.${MODULE}.ignore" all
|
git config "submodule.${MODULE}.ignore" all
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ export SHARED_SCRIPTS_SOURCED=0
|
|||||||
|
|
||||||
source "$DOTFILES/config/shared.sh"
|
source "$DOTFILES/config/shared.sh"
|
||||||
|
|
||||||
|
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
|
||||||
|
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
|
||||||
|
fi
|
||||||
|
|
||||||
# shellcheck source=../config/fzf/fzf.bash
|
# shellcheck source=../config/fzf/fzf.bash
|
||||||
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
|
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
|
||||||
source "${DOTFILES}/config/fzf/fzf.bash"
|
source "${DOTFILES}/config/fzf/fzf.bash"
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
asdf-plugin-manager 1.4.0
|
|
||||||
golang 1.23.4
|
golang 1.23.4
|
||||||
rust 1.82.0
|
rust 1.83.0
|
||||||
direnv 2.35.0
|
direnv 2.35.0
|
||||||
fd 10.2.0
|
fd 10.2.0
|
||||||
1password-cli 2.30.3
|
1password-cli 2.30.3
|
||||||
age 1.2.1
|
age 1.2.1
|
||||||
bottom 0.10.2
|
|
||||||
dotenv-linter 3.3.0
|
dotenv-linter 3.3.0
|
||||||
editorconfig-checker 2.8.0
|
editorconfig-checker 2.8.0
|
||||||
github-cli 2.64.0
|
github-cli 2.64.0
|
||||||
@@ -15,7 +13,7 @@ pre-commit 4.0.1
|
|||||||
ripgrep 14.1.1
|
ripgrep 14.1.1
|
||||||
shellcheck 0.10.0
|
shellcheck 0.10.0
|
||||||
shfmt 3.10.0
|
shfmt 3.10.0
|
||||||
terragrunt 0.68.8
|
terragrunt 0.71.1
|
||||||
tf-summarize 0.3.14
|
tf-summarize 0.3.14
|
||||||
yamllint 1.35.1
|
yamllint 1.35.1
|
||||||
yq 4.44.6
|
yq 4.44.6
|
||||||
|
|||||||
@@ -45,6 +45,10 @@ setup_tmux_window_name_plugin()
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if [[ -n $GHOSTTY_RESOURCES_DIR ]]; then
|
||||||
|
source "$GHOSTTY_RESOURCES_DIR"/shell-integration/zsh/ghostty-integration
|
||||||
|
fi
|
||||||
|
|
||||||
source_fzf_config
|
source_fzf_config
|
||||||
setup_tmux_window_name_plugin
|
setup_tmux_window_name_plugin
|
||||||
x-have antidot && eval "$(antidot init)"
|
x-have antidot && eval "$(antidot init)"
|
||||||
|
|||||||
@@ -39,37 +39,53 @@ automatically-unhide-macos-hidden-apps = true
|
|||||||
# check-further-callbacks = true
|
# check-further-callbacks = true
|
||||||
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
|
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-name-regex-substring = 'settings' # All settings
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
|
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
|
||||||
run = ['layout floating']
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
|
||||||
if.app-name-regex-substring = 'finder'
|
|
||||||
run = 'layout floating'
|
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.apple.finder' # Finder
|
if.app-id = 'com.apple.finder' # Finder
|
||||||
run = 'layout floating'
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.apple.mail' # Mail
|
if.app-id = 'com.apple.mail' # Mail
|
||||||
run = 'layout floating'
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.DanPristupov.Fork' # Fork
|
if.app-id = 'com.DanPristupov.Fork' # Fork
|
||||||
run = 'layout floating'
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.flexibits.fantastical2.mac' # Fantastical
|
if.app-id = 'com.flexibits.fantastical2.mac' # Fantastical
|
||||||
run = 'layout floating'
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'org.whispersystems.signal-desktop' # Signal
|
if.app-id = 'org.whispersystems.signal-desktop' # Signal
|
||||||
run = 'layout floating'
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.tidal.desktop'
|
if.app-id = 'com.tidal.desktop' # TIDAL
|
||||||
run = ['layout floating', 'move-node-to-workspace 2']
|
run = ['layout floating', 'move-node-to-workspace 2'] # Float and move to workspace 2
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.apple.TV' # Apple TV app
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.setapp.DesktopClient' # Setapp
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.electron.dockerdesktop' # Docker Desktop
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
# Possible values: (qwerty|dvorak)
|
# Possible values: (qwerty|dvorak)
|
||||||
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
||||||
@@ -86,8 +102,7 @@ preset = 'qwerty'
|
|||||||
[gaps]
|
[gaps]
|
||||||
inner.horizontal = 5
|
inner.horizontal = 5
|
||||||
inner.vertical = 5
|
inner.vertical = 5
|
||||||
# outer.top = 0
|
outer.top = [{ monitor.'^built-in retina display$' = 0 }, 0]
|
||||||
outer.top = [{ monitor.'^built-in retina display$' = 20 }, 0]
|
|
||||||
outer.right = 0
|
outer.right = 0
|
||||||
outer.bottom = 0
|
outer.bottom = 0
|
||||||
outer.left = 0
|
outer.left = 0
|
||||||
@@ -122,13 +137,9 @@ outer.left = 0
|
|||||||
# end tell'
|
# end tell'
|
||||||
# '''
|
# '''
|
||||||
|
|
||||||
alt-cmd-shift-f = 'fullscreen'
|
# alt-cmd-shift-f = 'fullscreen'
|
||||||
alt-cmd-f = 'layout floating'
|
# alt-shift-f = 'layout floating'
|
||||||
|
# alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
|
||||||
alt-cmd-left = 'join-with left'
|
|
||||||
alt-cmd-down = 'join-with down'
|
|
||||||
alt-cmd-up = 'join-with up'
|
|
||||||
alt-cmd-right = 'join-with right'
|
|
||||||
|
|
||||||
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
|
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
|
||||||
alt-h = 'focus left'
|
alt-h = 'focus left'
|
||||||
@@ -136,48 +147,66 @@ alt-j = 'focus down'
|
|||||||
alt-k = 'focus up'
|
alt-k = 'focus up'
|
||||||
alt-l = 'focus right'
|
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#workspace
|
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
||||||
cmd-shift-1 = 'workspace 1' # Main
|
alt-shift-1 = 'workspace 1' # Main
|
||||||
cmd-shift-2 = 'workspace 2' # Music
|
alt-shift-2 = 'workspace 2' # Media
|
||||||
|
ctrl-shift-1 = 'move-node-to-workspace 1'
|
||||||
|
ctrl-shift-2 = 'move-node-to-workspace 2'
|
||||||
|
|
||||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
|
alt-shift-tab = 'workspace-back-and-forth'
|
||||||
alt-cmd-1 = 'move-node-to-workspace 1 --focus-follows-window'
|
ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
|
||||||
alt-cmd-2 = 'move-node-to-workspace 2 --focus-follows-window'
|
|
||||||
|
|
||||||
shift-tab = 'workspace-back-and-forth'
|
|
||||||
# alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
|
|
||||||
|
|
||||||
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||||
alt-a = 'mode apps'
|
alt-a = 'mode apps'
|
||||||
alt-s = 'mode service'
|
alt-s = 'mode service'
|
||||||
alt-d = 'mode resize'
|
alt-m = 'mode move'
|
||||||
|
|
||||||
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
|
# │ alt-m │
|
||||||
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
|
[mode.move.binding]
|
||||||
|
esc = ['reload-config', 'mode main']
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
|
||||||
|
1 = ['move-node-to-workspace 1 --focus-follows-window']
|
||||||
|
2 = ['move-node-to-workspace 2 --focus-follows-window']
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#move
|
||||||
|
h = 'move left'
|
||||||
|
j = 'move down'
|
||||||
|
k = 'move up'
|
||||||
|
l = 'move right'
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#join-with
|
||||||
|
shift-h = 'join-with left'
|
||||||
|
shift-j = 'join-with down'
|
||||||
|
shift-k = 'join-with up'
|
||||||
|
shift-l = 'join-with right'
|
||||||
|
# https://nikitabobko.github.io/AeroSpace/commands#resize
|
||||||
|
ctrl-h = 'resize smart -70'
|
||||||
|
ctrl-l = 'resize smart +70'
|
||||||
|
shift-left = 'resize smart +70'
|
||||||
|
shift-right = 'resize smart -70'
|
||||||
|
# https://nikitabobko.github.io/AeroSpace/commands#flatten-workspace-tree
|
||||||
|
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||||
|
|
||||||
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
|
# │ alt-a │
|
||||||
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
[mode.apps.binding]
|
[mode.apps.binding]
|
||||||
esc = ['reload-config', 'mode main']
|
esc = ['reload-config', 'mode main']
|
||||||
alt-b = ['exec-and-forget open -a /Applications/Brave Browser.app', 'mode main']
|
b = ['exec-and-forget open -a /Applications/Brave Browser.app', 'mode main'] # Browser
|
||||||
alt-c = ['exec-and-forget open -a /Applications/Ferdium.app', 'mode main']
|
c = ['exec-and-forget open -a /Applications/Ferdium.app', 'mode main'] # Chat
|
||||||
alt-o = ['exec-and-forget open -a /Applications/Obsidian.app', 'mode main']
|
g = ['exec-and-forget open -a /Applications/Ghostty.app', 'mode main'] # Ghostty
|
||||||
alt-s = ['exec-and-forget open -a /Applications/Slack.app', 'mode main']
|
o = ['exec-and-forget open -a /Applications/Obsidian.app', 'mode main'] # Obsidian
|
||||||
alt-t = ['exec-and-forget open -a /Applications/TIDAL.app', 'mode main']
|
s = ['exec-and-forget open -a /Applications/Slack.app', 'mode main'] # Slack
|
||||||
alt-w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main']
|
t = ['exec-and-forget open -a /Applications/TIDAL.app', 'mode main'] # Tidal
|
||||||
|
w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main'] # WezTerm
|
||||||
|
|
||||||
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
|
# │ alt-s │
|
||||||
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
[mode.service.binding]
|
[mode.service.binding]
|
||||||
esc = ['reload-config', 'mode main']
|
esc = ['reload-config', 'mode main'] # reload config
|
||||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||||
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
|
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
|
||||||
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
|
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
|
||||||
backspace = ['close-all-windows-but-current', 'mode main']
|
backspace = ['close-all-windows-but-current', 'mode main']
|
||||||
|
|
||||||
[mode.resize.binding]
|
|
||||||
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
|
|
||||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
|
||||||
h = 'resize smart -70'
|
|
||||||
l = 'resize smart +70'
|
|
||||||
esc = ['reload-config', 'mode main']
|
|
||||||
|
|||||||
@@ -130,6 +130,6 @@ X_ALIAS_FILES=(
|
|||||||
)
|
)
|
||||||
for aliasFile in "${X_ALIAS_FILES[@]}"; do
|
for aliasFile in "${X_ALIAS_FILES[@]}"; do
|
||||||
# shellcheck source=$HOME/.config/alias-secret
|
# shellcheck source=$HOME/.config/alias-secret
|
||||||
[ -f "$aliasFile" ] && source "$aliasFile" && msg "Sourced $aliasFile"
|
[ -f "$aliasFile" ] && source "$aliasFile" && msgr ok "Sourced $aliasFile"
|
||||||
done
|
done
|
||||||
unset X_ALIAS_FILES
|
unset X_ALIAS_FILES
|
||||||
|
|||||||
@@ -281,8 +281,8 @@ export LESSHISTFILE="$XDG_STATE_HOME"/less/history
|
|||||||
# export LESS_TERMCAP_md="$ORANGE"
|
# export LESS_TERMCAP_md="$ORANGE"
|
||||||
|
|
||||||
# zsh autoloaded terminfo
|
# zsh autoloaded terminfo
|
||||||
export TERMINFO="${XDG_DATA_HOME}/terminfo"
|
# export TERMINFO="${XDG_DATA_HOME}/terminfo"
|
||||||
export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
|
# export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
|
||||||
|
|
||||||
# Don't clear the screen after quitting a manual page
|
# Don't clear the screen after quitting a manual page
|
||||||
export MANPAGER="less -X"
|
export MANPAGER="less -X"
|
||||||
|
|||||||
15
config/ghostty/config
Normal file
15
config/ghostty/config
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# vim: ft=ghostty
|
||||||
|
theme = "light:tokyonight-day,dark:tokyonight-storm"
|
||||||
|
font-family = "JetBrainsMono Nerd Font Mono"
|
||||||
|
|
||||||
|
background-blur-radius = 15
|
||||||
|
background-opacity = 0.95
|
||||||
|
|
||||||
|
clipboard-read = allow
|
||||||
|
clipboard-write = allow
|
||||||
|
cursor-style = bar
|
||||||
|
custom-shader-animation = true
|
||||||
|
gtk-single-instance = true
|
||||||
|
mouse-hide-while-typing = true
|
||||||
|
shell-integration-features = true
|
||||||
|
window-theme = system
|
||||||
6
config/glow/glow.yml
Normal file
6
config/glow/glow.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# mouse support (TUI-mode only)
|
||||||
|
mouse: false
|
||||||
|
# use pager to display markdown
|
||||||
|
pager: true
|
||||||
|
# word-wrap at width
|
||||||
|
width: 80
|
||||||
@@ -52,9 +52,15 @@ require('lazy').setup(
|
|||||||
-- No need to notify about changes
|
-- No need to notify about changes
|
||||||
notify = false,
|
notify = false,
|
||||||
},
|
},
|
||||||
|
dev = {
|
||||||
|
path = '~/Code/nvim', -- Load wip plugins from this path
|
||||||
|
},
|
||||||
install = {
|
install = {
|
||||||
colorscheme = { vim.g.colors_theme },
|
colorscheme = { vim.g.colors_theme },
|
||||||
},
|
},
|
||||||
|
profiling = {
|
||||||
|
loader = true,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ o.termguicolors = true -- Enable GUI colors
|
|||||||
o.timeoutlen = 250 -- Decrease mapped sequence wait time
|
o.timeoutlen = 250 -- Decrease mapped sequence wait time
|
||||||
o.updatetime = 250 -- 250 ms = 2,5 seconds
|
o.updatetime = 250 -- 250 ms = 2,5 seconds
|
||||||
o.sessionoptions =
|
o.sessionoptions =
|
||||||
'blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions'
|
'buffers,curdir,folds,tabpages,winsize,winpos,terminal,localoptions'
|
||||||
|
|
||||||
-- Enable the colorcolumn
|
-- Enable the colorcolumn
|
||||||
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
||||||
|
|||||||
@@ -196,12 +196,16 @@ return {
|
|||||||
'goimports',
|
'goimports',
|
||||||
'gotests',
|
'gotests',
|
||||||
'phpcbf',
|
'phpcbf',
|
||||||
|
'phpmd',
|
||||||
|
'phpstan',
|
||||||
'pint',
|
'pint',
|
||||||
'prettierd',
|
'prettierd',
|
||||||
|
'semgrep',
|
||||||
'shellcheck',
|
'shellcheck',
|
||||||
'shfmt',
|
'shfmt',
|
||||||
'staticcheck',
|
'staticcheck',
|
||||||
'stylua',
|
'stylua',
|
||||||
|
'trivy',
|
||||||
'vint',
|
'vint',
|
||||||
'yamlfmt',
|
'yamlfmt',
|
||||||
},
|
},
|
||||||
@@ -284,6 +288,8 @@ return {
|
|||||||
validate = { enable = true },
|
validate = { enable = true },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- end of junnplus/lsp-setup config
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -317,6 +323,11 @@ return {
|
|||||||
else
|
else
|
||||||
lsp_format_opt = 'fallback'
|
lsp_format_opt = 'fallback'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Disable autoformat for files in a certain path
|
||||||
|
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
if bufname:match '/node_modules/' then return end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
timeout_ms = 500,
|
timeout_ms = 500,
|
||||||
lsp_format = lsp_format_opt,
|
lsp_format = lsp_format_opt,
|
||||||
@@ -324,6 +335,9 @@ return {
|
|||||||
end,
|
end,
|
||||||
formatters_by_ft = {
|
formatters_by_ft = {
|
||||||
lua = { 'stylua' },
|
lua = { 'stylua' },
|
||||||
|
sh = { 'shfmt' },
|
||||||
|
bash = { 'shfmt' },
|
||||||
|
php = { 'phpcbf' },
|
||||||
-- Conform can also run multiple formatters sequentially
|
-- Conform can also run multiple formatters sequentially
|
||||||
-- python = { "isort", "black" },
|
-- python = { "isort", "black" },
|
||||||
--
|
--
|
||||||
@@ -331,6 +345,10 @@ return {
|
|||||||
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
init = function()
|
||||||
|
-- If you want the formatexpr, here is the place to set it
|
||||||
|
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
-- Automatically install formatters registered with conform.nvim via mason.nvim
|
-- Automatically install formatters registered with conform.nvim via mason.nvim
|
||||||
-- https://github.com/zapling/mason-conform.nvim
|
-- https://github.com/zapling/mason-conform.nvim
|
||||||
|
|||||||
@@ -224,8 +224,8 @@ return {
|
|||||||
local mode, mode_hl = sl.section_mode { trunc_width = 120 }
|
local mode, mode_hl = sl.section_mode { trunc_width = 120 }
|
||||||
local git = sl.section_git { trunc_width = 75 }
|
local git = sl.section_git { trunc_width = 75 }
|
||||||
local diagnostics = sl.section_diagnostics { trunc_width = 75 }
|
local diagnostics = sl.section_diagnostics { trunc_width = 75 }
|
||||||
local filename = sl.section_filename { trunc_width = 999 }
|
local filename = sl.section_filename { trunc_width = 9999 }
|
||||||
-- local fileinfo = statusline.section_fileinfo({ trunc_width = 120 })
|
local fileinfo = sl.section_fileinfo { trunc_width = 120 }
|
||||||
local location = sl.section_location { trunc_width = 75 }
|
local location = sl.section_location { trunc_width = 75 }
|
||||||
return sl.combine_groups {
|
return sl.combine_groups {
|
||||||
{ hl = mode_hl, strings = { mode } },
|
{ hl = mode_hl, strings = { mode } },
|
||||||
@@ -233,7 +233,7 @@ return {
|
|||||||
'%<', -- Mark general truncate point
|
'%<', -- Mark general truncate point
|
||||||
{ hl = 'statuslineFilename', strings = { filename } },
|
{ hl = 'statuslineFilename', strings = { filename } },
|
||||||
'%=', -- End left alignment
|
'%=', -- End left alignment
|
||||||
-- { hl = 'statuslineFileinfo', strings = { fileinfo } },
|
{ hl = 'statuslineFileinfo', strings = { fileinfo } },
|
||||||
{ hl = mode_hl, strings = { location } },
|
{ hl = mode_hl, strings = { location } },
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ if ! declare -f msg > /dev/null; then
|
|||||||
# $1 - message (string)
|
# $1 - message (string)
|
||||||
msg()
|
msg()
|
||||||
{
|
{
|
||||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
[ "$VERBOSE" -eq 1 ] && msgr msg "$1"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
msg "msg was not defined, defined it now"
|
msg "msg was not defined, defined it now"
|
||||||
@@ -54,7 +54,7 @@ if ! declare -f msg_err > /dev/null; then
|
|||||||
# $1 - error message (string)
|
# $1 - error message (string)
|
||||||
msg_err()
|
msg_err()
|
||||||
{
|
{
|
||||||
echo "(!) ERROR: $1" >&2
|
msgr err "$1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
@@ -65,7 +65,7 @@ if ! declare -f msg_done > /dev/null; then
|
|||||||
# $1 - message (string)
|
# $1 - message (string)
|
||||||
msg_done()
|
msg_done()
|
||||||
{
|
{
|
||||||
echo "✓ $1"
|
msgr done "$1"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
@@ -76,7 +76,7 @@ if ! declare -f msg_run > /dev/null; then
|
|||||||
# $1 - message (string)
|
# $1 - message (string)
|
||||||
msg_run()
|
msg_run()
|
||||||
{
|
{
|
||||||
echo "→ $1"
|
msgr run "$1"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
@@ -87,10 +87,29 @@ if ! declare -f msg_ok > /dev/null; then
|
|||||||
# $1 - message (string)
|
# $1 - message (string)
|
||||||
msg_ok()
|
msg_ok()
|
||||||
{
|
{
|
||||||
echo "✓ $1"
|
msgr ok "$1"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! declare -f array_diff > /dev/null; then
|
||||||
|
# Function to compare two arrays and return the difference
|
||||||
|
# Example: array_diff DIFFERENCE ARRAY1 ARRAY2
|
||||||
|
# $1 - variable to store the difference
|
||||||
|
# $2 - first array
|
||||||
|
# $3 - second array
|
||||||
|
# Output to $1 the difference between $2 and $3
|
||||||
|
# Source: https://stackoverflow.com/a/42399479/594940
|
||||||
|
array_diff()
|
||||||
|
{
|
||||||
|
# shellcheck disable=SC1083,SC2086
|
||||||
|
eval local ARR1=\(\"\${$2[@]}\"\)
|
||||||
|
# shellcheck disable=SC1083,SC2086
|
||||||
|
eval local ARR2=\(\"\${$3[@]}\"\)
|
||||||
|
local IFS=$'\n'
|
||||||
|
mapfile -t "$1" < <(comm -23 <(echo "${ARR1[*]}" | sort) <(echo "${ARR2[*]}" | sort))
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
source "$DOTFILES/config/exports"
|
source "$DOTFILES/config/exports"
|
||||||
source "$DOTFILES/config/alias"
|
source "$DOTFILES/config/alias"
|
||||||
|
|||||||
1
config/tmux/plugins/tmux-fzf-url/LICENSE.txt
Normal file
1
config/tmux/plugins/tmux-fzf-url/LICENSE.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
https://wfxr.mit-license.org/2018
|
||||||
64
config/tmux/plugins/tmux-fzf-url/fzf-url.sh
Executable file
64
config/tmux/plugins/tmux-fzf-url/fzf-url.sh
Executable file
@@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#===============================================================================
|
||||||
|
# Author: Wenxuan
|
||||||
|
# Email: wenxuangm@gmail.com
|
||||||
|
# Created: 2018-04-06 12:12
|
||||||
|
#===============================================================================
|
||||||
|
get_fzf_options()
|
||||||
|
{
|
||||||
|
local fzf_options
|
||||||
|
local fzf_default_options='-w 100% -h 50% --multi -0 --no-preview'
|
||||||
|
fzf_options="$(tmux show -gqv '@fzf-url-fzf-options')"
|
||||||
|
[ -n "$fzf_options" ] && echo "$fzf_options" || echo "$fzf_default_options"
|
||||||
|
}
|
||||||
|
|
||||||
|
fzf_filter()
|
||||||
|
{
|
||||||
|
eval "fzf-tmux $(get_fzf_options)"
|
||||||
|
}
|
||||||
|
|
||||||
|
custom_open=$3
|
||||||
|
open_url()
|
||||||
|
{
|
||||||
|
if [[ -n $custom_open ]]; then
|
||||||
|
$custom_open "$@"
|
||||||
|
elif hash xdg-open &> /dev/null; then
|
||||||
|
nohup xdg-open "$@"
|
||||||
|
elif hash open &> /dev/null; then
|
||||||
|
nohup open "$@"
|
||||||
|
elif [[ -n $BROWSER ]]; then
|
||||||
|
nohup "$BROWSER" "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
limit='screen'
|
||||||
|
[[ $# -ge 2 ]] && limit=$2
|
||||||
|
|
||||||
|
if [[ $limit == 'screen' ]]; then
|
||||||
|
content="$(tmux capture-pane -J -p -e | sed -r 's/\x1B\[[0-9;]*[mK]//g'))"
|
||||||
|
else
|
||||||
|
content="$(tmux capture-pane -J -p -e -S -"$limit" | sed -r 's/\x1B\[[0-9;]*[mK]//g'))"
|
||||||
|
fi
|
||||||
|
|
||||||
|
urls=$(echo "$content" | grep -oE '(https?|ftp|file):/?//[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]')
|
||||||
|
wwws=$(echo "$content" | grep -oE '(http?s://)?www\.[a-zA-Z](-?[a-zA-Z0-9])+\.[a-zA-Z]{2,}(/\S+)*' | grep -vE '^https?://' | sed 's/^\(.*\)$/http:\/\/\1/')
|
||||||
|
ips=$(echo "$content" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(:[0-9]{1,5})?(/\S+)*' | sed 's/^\(.*\)$/http:\/\/\1/')
|
||||||
|
gits=$(echo "$content" | grep -oE '(ssh://)?git@\S*' | sed 's/:/\//g' | sed 's/^\(ssh\/\/\/\)\{0,1\}git@\(.*\)$/https:\/\/\2/')
|
||||||
|
gh=$(echo "$content" | grep -oE "['\"]([_A-Za-z0-9-]*/[_.A-Za-z0-9-]*)['\"]" | sed "s/['\"]//g" | sed 's#.#https://github.com/&#')
|
||||||
|
|
||||||
|
if [[ $# -ge 1 && $1 != '' ]]; then
|
||||||
|
extras=$(echo "$content" | eval "$1")
|
||||||
|
fi
|
||||||
|
|
||||||
|
items=$(
|
||||||
|
printf '%s\n' "${urls[@]}" "${wwws[@]}" "${gh[@]}" "${ips[@]}" "${gits[@]}" "${extras[@]}" \
|
||||||
|
| grep -v '^$' \
|
||||||
|
| sort -u \
|
||||||
|
| nl -w3 -s ' '
|
||||||
|
)
|
||||||
|
[ -z "$items" ] && tmux display 'tmux-fzf-url: no URLs found' && exit
|
||||||
|
|
||||||
|
fzf_filter <<< "$items" | awk '{print $2}' \
|
||||||
|
| while read -r chosen; do
|
||||||
|
open_url "$chosen" &> "/tmp/tmux-$(id -u)-fzf-url.log"
|
||||||
|
done
|
||||||
23
config/tmux/plugins/tmux-fzf-url/fzf-url.tmux
Executable file
23
config/tmux/plugins/tmux-fzf-url/fzf-url.tmux
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#===============================================================================
|
||||||
|
# Author: Wenxuan
|
||||||
|
# Email: wenxuangm@gmail.com
|
||||||
|
# Created: 2018-04-06 09:30
|
||||||
|
#===============================================================================
|
||||||
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||||
|
|
||||||
|
# $1: option
|
||||||
|
# $2: default value
|
||||||
|
tmux_get() {
|
||||||
|
local value
|
||||||
|
value="$(tmux show -gqv "$1")"
|
||||||
|
[ -n "$value" ] && echo "$value" || echo "$2"
|
||||||
|
}
|
||||||
|
|
||||||
|
key="$(tmux_get '@fzf-url-bind' 'u')"
|
||||||
|
history_limit="$(tmux_get '@fzf-url-history-limit' 'screen')"
|
||||||
|
extra_filter="$(tmux_get '@fzf-url-extra-filter' '')"
|
||||||
|
custom_open="$(tmux_get '@fzf-url-open' '')"
|
||||||
|
echo "$extra_filter" >/tmp/filter
|
||||||
|
|
||||||
|
tmux bind-key "$key" run -b "$SCRIPT_DIR/fzf-url.sh '$extra_filter' $history_limit '$custom_open'"
|
||||||
@@ -147,7 +147,7 @@ set -g @tmux_window_name_max_name_len "20"
|
|||||||
set -g @tmux_window_name_use_tilde "True"
|
set -g @tmux_window_name_use_tilde "True"
|
||||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']"
|
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']"
|
||||||
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
||||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'oh-my-posh', 'antidot', 'antidote', 'direnv']" # Default is []
|
set -g @tmux_window_name_ignored_programs "['sqlite3', 'oh-my-posh', 'antidot', 'antidote', 'direnv', 'md5']" # Default is []
|
||||||
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
|
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
|
||||||
|
|
||||||
## https://github.com/tmux-plugins/tmux-continuum
|
## https://github.com/tmux-plugins/tmux-continuum
|
||||||
@@ -159,6 +159,10 @@ set -g @mode_indicator_copy_mode_style 'bg=default,fg=yellow'
|
|||||||
set -g @mode_indicator_empty_mode_style 'bg=default,fg=#7aa2f7'
|
set -g @mode_indicator_empty_mode_style 'bg=default,fg=#7aa2f7'
|
||||||
set -g @mode_indicator_sync_mode_style 'bg=default,fg=red'
|
set -g @mode_indicator_sync_mode_style 'bg=default,fg=red'
|
||||||
|
|
||||||
|
# https://github.com/wfxr/tmux-fzf-url
|
||||||
|
set -g @fzf-url-bind 'u'
|
||||||
|
set -g @fzf-url-history-limit '2000'
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
# │ Plugins │
|
# │ Plugins │
|
||||||
# ╰──────────────────────────────────────────────────────────╯
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
@@ -172,7 +176,7 @@ run-shell ~/.dotfiles/config/tmux/plugins/tmux-suspend/suspend.tmux
|
|||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-current-pane-hostname/current_pane_hostname.tmux
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-current-pane-hostname/current_pane_hostname.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-dark-notify/main.tmux
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-dark-notify/main.tmux
|
||||||
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-fzf-url/fzf-url.tmux
|
||||||
|
|
||||||
if-shell "test -e $HOME/.local/state/tmux/tmux-dark-notify-theme.conf" \
|
if-shell "test -e $HOME/.local/state/tmux/tmux-dark-notify-theme.conf" \
|
||||||
"source-file $HOME/.local/state/tmux/tmux-dark-notify-theme.conf"
|
"source-file $HOME/.local/state/tmux/tmux-dark-notify-theme.conf"
|
||||||
|
|
||||||
|
|||||||
57
config/zed/settings.json
Normal file
57
config/zed/settings.json
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"formatter": {
|
||||||
|
"external": {
|
||||||
|
"command": "node_modules/.bin/prettier",
|
||||||
|
"arguments": [
|
||||||
|
"--stdin-filepath",
|
||||||
|
"{buffer_path}"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"languages": {
|
||||||
|
"Lua": {
|
||||||
|
"enable_language_server": true,
|
||||||
|
"tab_size": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lsp": {
|
||||||
|
"gopls": {
|
||||||
|
"initialization_options": {
|
||||||
|
"hints": {
|
||||||
|
"assignVariableTypes": true,
|
||||||
|
"compositeLiteralFields": true,
|
||||||
|
"compositeLiteralTypes": true,
|
||||||
|
"constantValues": true,
|
||||||
|
"functionTypeParameters": true,
|
||||||
|
"parameterNames": true,
|
||||||
|
"rangeVariableTypes": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"preferred_line_length": 100,
|
||||||
|
"format_on_save": "on",
|
||||||
|
"vim_mode": true,
|
||||||
|
"theme": {
|
||||||
|
"mode": "system",
|
||||||
|
"light": "Tokyo Night Light",
|
||||||
|
"dark": "Tokyo Night Storm"
|
||||||
|
},
|
||||||
|
"inlay_hints": {
|
||||||
|
"enabled": true,
|
||||||
|
"show_type_hints": true,
|
||||||
|
"show_parameter_hints": true,
|
||||||
|
"show_other_hints": true
|
||||||
|
},
|
||||||
|
"ui_font_size": 16,
|
||||||
|
"buffer_font_size": 16,
|
||||||
|
"buffer_font_fallbacks": [
|
||||||
|
"JetBrainsMono Nerd Font"
|
||||||
|
],
|
||||||
|
"inline_completions": {
|
||||||
|
"disabled_globs": [
|
||||||
|
".env"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"hour_format": "hour24"
|
||||||
|
}
|
||||||
170
config/zsh/completion/_dfm
Normal file
170
config/zsh/completion/_dfm
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
#compdef dfm
|
||||||
|
# Completion for dfm, the dotfiles manager
|
||||||
|
|
||||||
|
_dfm_get_script_description() {
|
||||||
|
local file="$1"
|
||||||
|
sed -n '/@description/s/.*@description *\(.*\)/\1/p' "$file" | head -1
|
||||||
|
}
|
||||||
|
|
||||||
|
_dfm_get_available_scripts() {
|
||||||
|
local scripts=()
|
||||||
|
local dotfiles="${HOME}/.dotfiles"
|
||||||
|
|
||||||
|
for script in "${dotfiles}/scripts/install-"*.sh; do
|
||||||
|
if [ -f "$script" ]; then
|
||||||
|
local name=$(basename "$script" .sh | sed 's/install-//')
|
||||||
|
local desc=$(_dfm_get_script_description "$script")
|
||||||
|
[ -z "$desc" ] && desc="No description available"
|
||||||
|
scripts+=("${name}:${desc}")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ${(F)scripts}
|
||||||
|
}
|
||||||
|
|
||||||
|
_dfm()
|
||||||
|
{
|
||||||
|
local -a commands sections
|
||||||
|
|
||||||
|
sections=(
|
||||||
|
'install:Installation commands'
|
||||||
|
'asdf:ASDF version manager commands'
|
||||||
|
'brew:Homebrew package manager commands'
|
||||||
|
'check:System check commands'
|
||||||
|
'dotfiles:Dotfiles management commands'
|
||||||
|
'docs:Documentation commands'
|
||||||
|
'helpers:Helper utilities'
|
||||||
|
'scripts:Installation scripts'
|
||||||
|
'tests:Test commands'
|
||||||
|
)
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
"1: :->sections" \
|
||||||
|
"*::arg:->args"
|
||||||
|
|
||||||
|
case "$state" in
|
||||||
|
sections)
|
||||||
|
_describe 'sections' sections
|
||||||
|
;;
|
||||||
|
args)
|
||||||
|
case $line[1] in
|
||||||
|
install)
|
||||||
|
local -a install_cmds
|
||||||
|
install_cmds=(
|
||||||
|
'all:Install everything in correct order'
|
||||||
|
'cargo:Install rust/cargo packages'
|
||||||
|
'cheat-databases:Install cheat external cheatsheet databases'
|
||||||
|
'composer:Install composer'
|
||||||
|
'fonts:Install programming fonts'
|
||||||
|
'gh:Install GitHub CLI Extensions'
|
||||||
|
'go:Install Go Packages'
|
||||||
|
'imagick:Install ImageMagick CLI'
|
||||||
|
'macos:Setup nice macOS defaults'
|
||||||
|
'nvm:Install Node Version Manager'
|
||||||
|
'nvm-latest:Install latest LTS node'
|
||||||
|
'npm-packages:Install NPM Packages'
|
||||||
|
'ntfy:Install ntfy'
|
||||||
|
'z:Install z'
|
||||||
|
)
|
||||||
|
_describe 'install commands' install_cmds
|
||||||
|
;;
|
||||||
|
|
||||||
|
asdf)
|
||||||
|
local -a asdf_cmds
|
||||||
|
asdf_cmds=(
|
||||||
|
'current:Show current versions'
|
||||||
|
'global:Show global versions'
|
||||||
|
'installed:Show installed versions'
|
||||||
|
'plugins-update:Update all plugins'
|
||||||
|
'plugins-install:Install plugins from configuration'
|
||||||
|
'plugins-remove:Remove installed plugins'
|
||||||
|
'reset:Reset plugins'
|
||||||
|
'fix-tool-versions:Remove uninstalled plugins from .tool-versions'
|
||||||
|
'versions:Show versions'
|
||||||
|
'where:Show where'
|
||||||
|
'which:Show which'
|
||||||
|
)
|
||||||
|
_describe 'asdf commands' asdf_cmds
|
||||||
|
;;
|
||||||
|
|
||||||
|
brew)
|
||||||
|
local -a brew_cmds
|
||||||
|
brew_cmds=(
|
||||||
|
'install:Install items from Brewfile'
|
||||||
|
'update:Update and upgrade packages'
|
||||||
|
'updatebundle:Update Brewfile with descriptions'
|
||||||
|
'autoupdate:Setup brew auto-update'
|
||||||
|
'leaves:List brew leaves'
|
||||||
|
'clean:Clean up packages'
|
||||||
|
'untracked:List untracked packages'
|
||||||
|
)
|
||||||
|
_describe 'brew commands' brew_cmds
|
||||||
|
;;
|
||||||
|
|
||||||
|
check)
|
||||||
|
local -a check_cmds
|
||||||
|
check_cmds=(
|
||||||
|
'arch:Check architecture'
|
||||||
|
'host:Check hostname'
|
||||||
|
)
|
||||||
|
_describe 'check commands' check_cmds
|
||||||
|
;;
|
||||||
|
|
||||||
|
dotfiles)
|
||||||
|
local -a dotfiles_cmds
|
||||||
|
dotfiles_cmds=(
|
||||||
|
'fmt:Run all formatters'
|
||||||
|
'yamlfmt:Run yamlfmt'
|
||||||
|
'shfmt:Run shfmt'
|
||||||
|
'reset_all:Reset everything'
|
||||||
|
'reset_nvim:Reset neovim'
|
||||||
|
)
|
||||||
|
_describe 'dotfiles commands' dotfiles_cmds
|
||||||
|
;;
|
||||||
|
|
||||||
|
docs)
|
||||||
|
local -a docs_cmds
|
||||||
|
docs_cmds=(
|
||||||
|
'all:Update all documentation'
|
||||||
|
'tmux:Update tmux documentation'
|
||||||
|
'nvim:Update nvim documentation'
|
||||||
|
'wezterm:Update wezterm documentation'
|
||||||
|
)
|
||||||
|
_describe 'docs commands' docs_cmds
|
||||||
|
;;
|
||||||
|
|
||||||
|
helpers)
|
||||||
|
local -a helpers_cmds
|
||||||
|
helpers_cmds=(
|
||||||
|
'aliases:Show aliases'
|
||||||
|
'colors:Show colors'
|
||||||
|
'env:Show environment variables'
|
||||||
|
'functions:Show functions'
|
||||||
|
'nvim:Show nvim keybindings'
|
||||||
|
'path:Show PATH'
|
||||||
|
'tmux:Show tmux keybindings'
|
||||||
|
'wezterm:Show wezterm keybindings'
|
||||||
|
)
|
||||||
|
_describe 'helper commands' helpers_cmds
|
||||||
|
;;
|
||||||
|
|
||||||
|
scripts)
|
||||||
|
local -a script_cmds
|
||||||
|
script_cmds=("${(@f)$(_dfm_get_available_scripts)}")
|
||||||
|
_describe 'available scripts' script_cmds
|
||||||
|
;;
|
||||||
|
|
||||||
|
tests)
|
||||||
|
local -a test_cmds
|
||||||
|
test_cmds=(
|
||||||
|
'msg:List log functions'
|
||||||
|
'params:List parameters'
|
||||||
|
)
|
||||||
|
_describe 'test commands' test_cmds
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_dfm "$@"
|
||||||
@@ -2,62 +2,60 @@
|
|||||||
|
|
||||||
```txt
|
```txt
|
||||||
|
|
||||||
x <Space> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
x <Space> *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "<Space>"
|
Query keys after "<Space>"
|
||||||
n <Space> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n <Space> *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "<Space>"
|
Query keys after "<Space>"
|
||||||
x " *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
x " *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after """
|
Query keys after """
|
||||||
n " *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n " *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after """
|
Query keys after """
|
||||||
x ' *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
x ' *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "'"
|
Query keys after "'"
|
||||||
n ' *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n ' *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "'"
|
Query keys after "'"
|
||||||
x ` *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
x ` *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "`"
|
Query keys after "`"
|
||||||
n ` *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n ` *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "`"
|
Query keys after "`"
|
||||||
x g *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
x g *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "g"
|
Query keys after "g"
|
||||||
n g *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n g *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "g"
|
Query keys after "g"
|
||||||
x z *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
x z *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "z"
|
Query keys after "z"
|
||||||
n z *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n z *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "z"
|
Query keys after "z"
|
||||||
n <C-W> *@~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n <C-W> *@~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Query keys after "<C-W>"
|
Query keys after "<C-W>"
|
||||||
n <Esc><Esc> * :nohlsearch<CR>
|
n <Esc><Esc> * :nohlsearch<CR>
|
||||||
Clear Search Highlighting
|
Clear Search Highlighting
|
||||||
n <Space>qQ * :q!<CR>
|
n <Space>qQ * ~/.config/nvim/lua/keymaps.lua
|
||||||
Force quit without saving
|
Force quit without saving
|
||||||
n <Space>qw * :wq<CR>
|
n <Space>qw * :wq<CR>
|
||||||
Write and quit
|
Write and quit
|
||||||
n <Space>qq * :wq!<CR>
|
n <Space>qq * ~/.config/nvim/lua/keymaps.lua
|
||||||
Quit with force saving
|
Quit with force saving
|
||||||
n <Space>qf * :q<CR>
|
n <Space>qf * :q<CR>
|
||||||
Quicker close split
|
Quicker close split
|
||||||
n <Space>tn * :Noice dismiss<CR>
|
n <Space>tn * :Noice dismiss<CR>
|
||||||
Noice: Dismiss Notification
|
Noice: Dismiss Notification
|
||||||
n <Space>tl * :lua vim.o.bg = vim.o.bg:get() == "light" and "dark" or "light"<CR>
|
n <Space>tl * ~/.config/nvim/lua/utils.lua
|
||||||
Toggle Light/Dark Mode
|
Toggle Light/Dark Mode
|
||||||
n <Space>te * :Neotree toggle<CR>
|
n <Space>te * :Neotree toggle<CR>
|
||||||
Toggle Neotree
|
Toggle Neotree
|
||||||
n <Space>tc * :CloakToggle<CR>
|
n <Space>tc * :CloakToggle<CR>
|
||||||
Cloak: Toggle
|
Cloak: Toggle
|
||||||
n <Space>o * ~/.config/nvim/lua/keymaps.lua
|
|
||||||
Open repo in browser
|
|
||||||
n <Space>xx * :Trouble diagnostics<CR>
|
n <Space>xx * :Trouble diagnostics<CR>
|
||||||
Trouble: Diagnostic
|
Diagnostic
|
||||||
n <Space>xw * :Trouble workspace_diagnostics<CR>
|
n <Space>xw * :Trouble workspace_diagnostics<CR>
|
||||||
Trouble: Workspace Diagnostics
|
Workspace Diagnostics
|
||||||
n <Space>xq * :Trouble quickfix<CR>
|
n <Space>xq * :Trouble quickfix<CR>
|
||||||
Trouble: Quickfix
|
Quickfix
|
||||||
n <Space>xl * :Trouble loclist<CR>
|
n <Space>xl * :Trouble loclist<CR>
|
||||||
Trouble: Location List
|
Location List
|
||||||
n <Space>xd * :Trouble document_diagnostics<CR>
|
n <Space>xd * :Trouble document_diagnostics<CR>
|
||||||
Trouble: Document Diagnostics
|
Document Diagnostics
|
||||||
n <Space>sx * :Telescope import<CR>
|
n <Space>sx * :Telescope import<CR>
|
||||||
Telescope: Import
|
Telescope: Import
|
||||||
n <Space>sw * :Telescope grep_string<CR>
|
n <Space>sw * :Telescope grep_string<CR>
|
||||||
@@ -76,8 +74,8 @@ n <Space>sl * :Telescope luasnip<CR>
|
|||||||
Search LuaSnip
|
Search LuaSnip
|
||||||
n <Space>sk * :Telescope keymaps<CR>
|
n <Space>sk * :Telescope keymaps<CR>
|
||||||
Search Keymaps
|
Search Keymaps
|
||||||
n <Space>sh * :Telescope highlights<CR>
|
n <Space>sh * :Telescope help_tags<CR>
|
||||||
List Highlights
|
Help tags
|
||||||
n <Space>sg * :Telescope live_grep<CR>
|
n <Space>sg * :Telescope live_grep<CR>
|
||||||
Search by Grep
|
Search by Grep
|
||||||
n <Space>sd * :Telescope diagnostics<CR>
|
n <Space>sd * :Telescope diagnostics<CR>
|
||||||
@@ -122,10 +120,8 @@ n <Space>cl * :Lspsaga show_cursor_diagnostics<CR>
|
|||||||
Cursor Diagnostics
|
Cursor Diagnostics
|
||||||
n <Space>ci * :Lspsaga implement<CR>
|
n <Space>ci * :Lspsaga implement<CR>
|
||||||
Implementations
|
Implementations
|
||||||
x <Space>cf * :lua vim.lsp.buf.format()<CR>
|
n <Space>cg * :lua require("neogen").generate()<CR>
|
||||||
Format
|
Generate annotations
|
||||||
n <Space>cf * :lua vim.lsp.buf.format()<CR>
|
|
||||||
Format
|
|
||||||
n <Space>cd * :Lspsaga show_line_diagnostics<CR>
|
n <Space>cd * :Lspsaga show_line_diagnostics<CR>
|
||||||
Line Diagnostics
|
Line Diagnostics
|
||||||
n <Space>cco * :Lspsaga outgoing_calls<CR>
|
n <Space>cco * :Lspsaga outgoing_calls<CR>
|
||||||
@@ -134,8 +130,6 @@ n <Space>cci * :Lspsaga incoming_calls<CR>
|
|||||||
Incoming Calls
|
Incoming Calls
|
||||||
n <Space>ca * :Lspsaga code_action<CR>
|
n <Space>ca * :Lspsaga code_action<CR>
|
||||||
Code Action
|
Code Action
|
||||||
n <Space>cg * :lua require("neogen").generate()<CR>
|
|
||||||
Generate annotations
|
|
||||||
n <Space>bw * :lua MiniBufremove.wipeout()<CR>
|
n <Space>bw * :lua MiniBufremove.wipeout()<CR>
|
||||||
Wipeout
|
Wipeout
|
||||||
n <Space>bl * :bnext<CR>
|
n <Space>bl * :bnext<CR>
|
||||||
@@ -148,6 +142,34 @@ n <Space>bh * :bprev<CR>
|
|||||||
Prev
|
Prev
|
||||||
n <Space>bd * :lua MiniBufremove.delete()<CR>
|
n <Space>bd * :lua MiniBufremove.delete()<CR>
|
||||||
Delete
|
Delete
|
||||||
|
n <Space>ba * :%bd|e#|bd#<CR>
|
||||||
|
Close all except current
|
||||||
|
n <Space>o * ~/.config/nvim/lua/keymaps.lua
|
||||||
|
Open repo in browser
|
||||||
|
n <Space>tmw * <Cmd>setlocal wrap! wrap?<CR>
|
||||||
|
Toggle 'wrap'
|
||||||
|
n <Space>tms * <Cmd>setlocal spell! spell?<CR>
|
||||||
|
Toggle 'spell'
|
||||||
|
n <Space>tmr * <Cmd>setlocal relativenumber! relativenumber?<CR>
|
||||||
|
Toggle 'relativenumber'
|
||||||
|
n <Space>tmn * <Cmd>setlocal number! number?<CR>
|
||||||
|
Toggle 'number'
|
||||||
|
n <Space>tml * <Cmd>setlocal list! list?<CR>
|
||||||
|
Toggle 'list'
|
||||||
|
n <Space>tmi * <Cmd>setlocal ignorecase! ignorecase?<CR>
|
||||||
|
Toggle 'ignorecase'
|
||||||
|
n <Space>tmh * <Cmd>let v:hlsearch = 1 - v:hlsearch | echo (v:hlsearch ? " " : "no") . "hlsearch"<CR>
|
||||||
|
Toggle search highlight
|
||||||
|
n <Space>tmd * <Cmd>lua print(MiniBasics.toggle_diagnostic())<CR>
|
||||||
|
Toggle diagnostic
|
||||||
|
n <Space>tmC * <Cmd>setlocal cursorcolumn! cursorcolumn?<CR>
|
||||||
|
Toggle 'cursorcolumn'
|
||||||
|
n <Space>tmc * <Cmd>setlocal cursorline! cursorline?<CR>
|
||||||
|
Toggle 'cursorline'
|
||||||
|
n <Space>tmb * <Cmd>lua vim.o.bg = vim.o.bg == "dark" and "light" or "dark"; print(vim.o.bg)<CR>
|
||||||
|
Toggle 'background'
|
||||||
|
<Space>cf * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||||
|
Format buffer
|
||||||
x # * vim/_defaults.lua
|
x # * vim/_defaults.lua
|
||||||
:help v_#-default
|
:help v_#-default
|
||||||
o % <Plug>(MatchitOperationForward)
|
o % <Plug>(MatchitOperationForward)
|
||||||
@@ -157,7 +179,7 @@ n & * :&&<CR>
|
|||||||
:help &-default
|
:help &-default
|
||||||
x * * vim/_defaults.lua
|
x * * vim/_defaults.lua
|
||||||
:help v_star-default
|
:help v_star-default
|
||||||
o ; * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
o ; * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
||||||
Repeat jump
|
Repeat jump
|
||||||
x ; * <Cmd>lua MiniJump.jump()<CR>
|
x ; * <Cmd>lua MiniJump.jump()<CR>
|
||||||
Repeat jump
|
Repeat jump
|
||||||
@@ -171,11 +193,11 @@ v > * >gv
|
|||||||
Indent Right
|
Indent Right
|
||||||
n > * >gv
|
n > * >gv
|
||||||
Indent Right
|
Indent Right
|
||||||
n @ * ~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n @ * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Execute macro without 'mini.clue' triggers
|
Execute macro without 'mini.clue' triggers
|
||||||
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||||
:help v_@-default
|
:help v_@-default
|
||||||
o F * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
o F * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
||||||
Jump backward
|
Jump backward
|
||||||
x F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
|
x F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
|
||||||
Jump backward
|
Jump backward
|
||||||
@@ -183,11 +205,11 @@ n F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
|
|||||||
Jump backward
|
Jump backward
|
||||||
n K * :Lspsaga hover_doc<CR>
|
n K * :Lspsaga hover_doc<CR>
|
||||||
Hover Documentation
|
Hover Documentation
|
||||||
n Q * ~/.local/share/nvim/lazy/mini.clue/lua/mini/clue.lua
|
n Q * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Execute macro without 'mini.clue' triggers
|
Execute macro without 'mini.clue' triggers
|
||||||
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||||
:help v_Q-default
|
:help v_Q-default
|
||||||
o T * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
o T * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
||||||
Jump backward till
|
Jump backward till
|
||||||
x T * <Cmd>lua MiniJump.smart_jump(true, true)<CR>
|
x T * <Cmd>lua MiniJump.smart_jump(true, true)<CR>
|
||||||
Jump backward till
|
Jump backward till
|
||||||
@@ -197,10 +219,10 @@ n Y * y$
|
|||||||
:help Y-default
|
:help Y-default
|
||||||
n Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
n Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||||
Flash Treesitter
|
Flash Treesitter
|
||||||
x Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
|
||||||
Flash Treesitter
|
|
||||||
o Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
o Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||||
Flash Treesitter
|
Flash Treesitter
|
||||||
|
x Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||||
|
Flash Treesitter
|
||||||
o [% <Plug>(MatchitOperationMultiBackward)
|
o [% <Plug>(MatchitOperationMultiBackward)
|
||||||
x [% <Plug>(MatchitVisualMultiBackward)
|
x [% <Plug>(MatchitVisualMultiBackward)
|
||||||
n [% <Plug>(MatchitNormalMultiBackward)
|
n [% <Plug>(MatchitNormalMultiBackward)
|
||||||
@@ -252,7 +274,7 @@ o ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
|||||||
Object scope with border
|
Object scope with border
|
||||||
x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||||
Object scope with border
|
Object scope with border
|
||||||
o f * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
o f * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
||||||
Jump forward
|
Jump forward
|
||||||
x f * <Cmd>lua MiniJump.smart_jump(false, false)<CR>
|
x f * <Cmd>lua MiniJump.smart_jump(false, false)<CR>
|
||||||
Jump forward
|
Jump forward
|
||||||
@@ -263,16 +285,10 @@ n gR * :RegexplainerToggle<CR>
|
|||||||
o g% <Plug>(MatchitOperationBackward)
|
o g% <Plug>(MatchitOperationBackward)
|
||||||
x g% <Plug>(MatchitVisualBackward)
|
x g% <Plug>(MatchitVisualBackward)
|
||||||
n g% <Plug>(MatchitNormalBackward)
|
n g% <Plug>(MatchitNormalBackward)
|
||||||
o gh * <Cmd>lua MiniDiff.textobject()<CR>
|
x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR>
|
||||||
Hunk range textobject
|
Toggle arguments
|
||||||
x gH * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
|
n gS * v:lua.MiniSplitjoin.operator("toggle") . " "
|
||||||
Reset hunks
|
Toggle arguments
|
||||||
n gH * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
|
|
||||||
Reset hunks
|
|
||||||
x gh * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
|
|
||||||
Apply hunks
|
|
||||||
n gh * ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua
|
|
||||||
Apply hunks
|
|
||||||
x gs * <Cmd>lua MiniOperators.sort('visual')<CR>
|
x gs * <Cmd>lua MiniOperators.sort('visual')<CR>
|
||||||
Sort selection
|
Sort selection
|
||||||
n gss ^gsg_
|
n gss ^gsg_
|
||||||
@@ -299,17 +315,39 @@ n g== g=_
|
|||||||
Evaluate line
|
Evaluate line
|
||||||
n g= * v:lua.MiniOperators.evaluate()
|
n g= * v:lua.MiniOperators.evaluate()
|
||||||
Evaluate operator
|
Evaluate operator
|
||||||
x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR>
|
o gh * <Cmd>lua MiniDiff.textobject()<CR>
|
||||||
Toggle arguments
|
Hunk range textobject
|
||||||
n gS * v:lua.MiniSplitjoin.operator("toggle") . " "
|
x gH * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/diff.lua
|
||||||
Toggle arguments
|
Reset hunks
|
||||||
|
n gH * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/diff.lua
|
||||||
|
Reset hunks
|
||||||
|
x gh * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/diff.lua
|
||||||
|
Apply hunks
|
||||||
|
n gh * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/diff.lua
|
||||||
|
Apply hunks
|
||||||
|
x g/ * <Esc>/\%V
|
||||||
|
Search inside visual selection
|
||||||
|
n gV * "`[" . strpart(getregtype(), 0, 1) . "`]"
|
||||||
|
Visually select changed text
|
||||||
|
x gp * "+P
|
||||||
|
Paste from system clipboard
|
||||||
|
n gp * "+p
|
||||||
|
Paste from system clipboard
|
||||||
|
x gy * "+y
|
||||||
|
Copy to system clipboard
|
||||||
|
n gy * "+y
|
||||||
|
Copy to system clipboard
|
||||||
|
n go * v:lua.MiniBasics.put_empty_line(v:false)
|
||||||
|
Put empty line below
|
||||||
|
n gO * v:lua.MiniBasics.put_empty_line(v:true)
|
||||||
|
Put empty line above
|
||||||
o gc * <Cmd>lua MiniComment.textobject()<CR>
|
o gc * <Cmd>lua MiniComment.textobject()<CR>
|
||||||
Comment textobject
|
Comment textobject
|
||||||
n gcc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua
|
n gcc * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/comment.lua
|
||||||
Comment line
|
Comment line
|
||||||
x gc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua
|
x gc * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/comment.lua
|
||||||
Comment selection
|
Comment selection
|
||||||
n gc * ~/.local/share/nvim/lazy/mini.comment/lua/mini/comment.lua
|
n gc * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/comment.lua
|
||||||
Comment
|
Comment
|
||||||
x gx * <Cmd>lua MiniOperators.exchange('visual')<CR>
|
x gx * <Cmd>lua MiniOperators.exchange('visual')<CR>
|
||||||
Exchange selection
|
Exchange selection
|
||||||
@@ -319,47 +357,49 @@ o ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
|||||||
Object scope
|
Object scope
|
||||||
x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||||
Object scope
|
Object scope
|
||||||
|
x j * v:count == 0 ? 'gj' : 'j'
|
||||||
n j * v:count == 0 ? 'gj' : 'j'
|
n j * v:count == 0 ? 'gj' : 'j'
|
||||||
Move down
|
Move down
|
||||||
|
x k * v:count == 0 ? 'gk' : 'k'
|
||||||
n k * v:count == 0 ? 'gk' : 'k'
|
n k * v:count == 0 ? 'gk' : 'k'
|
||||||
Move up
|
Move up
|
||||||
n shn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n shn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Highlight next surrounding
|
Highlight next surrounding
|
||||||
n sFn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sFn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Find next left surrounding
|
Find next left surrounding
|
||||||
n sfn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sfn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Find next right surrounding
|
Find next right surrounding
|
||||||
n srn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n srn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Replace next surrounding
|
Replace next surrounding
|
||||||
n sdn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sdn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Delete next surrounding
|
Delete next surrounding
|
||||||
n shl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n shl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Highlight previous surrounding
|
Highlight previous surrounding
|
||||||
n sFl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sFl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Find previous left surrounding
|
Find previous left surrounding
|
||||||
n sfl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sfl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Find previous right surrounding
|
Find previous right surrounding
|
||||||
n srl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n srl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Replace previous surrounding
|
Replace previous surrounding
|
||||||
n sdl * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sdl * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Delete previous surrounding
|
Delete previous surrounding
|
||||||
x sa * :<C-U>lua MiniSurround.add('visual')<CR>
|
x sa * :<C-U>lua MiniSurround.add('visual')<CR>
|
||||||
Add surrounding to selection
|
Add surrounding to selection
|
||||||
n sn * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Update `MiniSurround.config.n_lines`
|
Update `MiniSurround.config.n_lines`
|
||||||
n sh * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sh * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Highlight surrounding
|
Highlight surrounding
|
||||||
n sF * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sF * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Find left surrounding
|
Find left surrounding
|
||||||
n sf * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sf * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Find right surrounding
|
Find right surrounding
|
||||||
n sr * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sr * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Replace surrounding
|
Replace surrounding
|
||||||
n sd * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sd * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Delete surrounding
|
Delete surrounding
|
||||||
n sa * ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua
|
n sa * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Add surrounding
|
Add surrounding
|
||||||
o t * ~/.local/share/nvim/lazy/mini.jump/lua/mini/jump.lua
|
o t * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
||||||
Jump forward till
|
Jump forward till
|
||||||
x t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
x t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
||||||
Jump forward till
|
Jump forward till
|
||||||
@@ -367,20 +407,10 @@ n t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
|||||||
Jump forward till
|
Jump forward till
|
||||||
x zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
x zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||||
Flash
|
Flash
|
||||||
n zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
|
||||||
Flash
|
|
||||||
o zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
o zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||||
Flash
|
Flash
|
||||||
n <C-W>= * <C-W>=
|
n zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
||||||
Equal Size Splits
|
Flash
|
||||||
n <C-W>+ * :resize +5<CR>
|
|
||||||
H Resize +
|
|
||||||
n <C-W>- * :resize -5<CR>
|
|
||||||
H Resize -
|
|
||||||
n <C-W>. * :vertical resize +10<CR>
|
|
||||||
V Resize +
|
|
||||||
n <C-W>, * :vertical resize -10<CR>
|
|
||||||
V Resize -
|
|
||||||
v <C-J> * :m '>+1<CR>gv=gv
|
v <C-J> * :m '>+1<CR>gv=gv
|
||||||
Move Block Down
|
Move Block Down
|
||||||
n <C-J> * :m '>+1<CR>gv=gv
|
n <C-J> * :m '>+1<CR>gv=gv
|
||||||
@@ -389,12 +419,24 @@ v <C-K> * :m '<-2<CR>gv=gv
|
|||||||
Move Block Up
|
Move Block Up
|
||||||
n <C-K> * :m '<-2<CR>gv=gv
|
n <C-K> * :m '<-2<CR>gv=gv
|
||||||
Move Block Up
|
Move Block Up
|
||||||
n <C-S> * :w!<CR>
|
n <C-W>= * <C-W>=
|
||||||
Save
|
Equal Size Splits
|
||||||
|
n <C-W>+ * :resize +10<CR>
|
||||||
|
H Resize +
|
||||||
|
n <C-W>- * :resize -10<CR>
|
||||||
|
H Resize -
|
||||||
|
n <C-W>. * :vertical resize +10<CR>
|
||||||
|
V Resize +
|
||||||
|
n <C-W>, * :vertical resize -10<CR>
|
||||||
|
V Resize -
|
||||||
n <Down> * :echo "Use j to move!!"<CR>
|
n <Down> * :echo "Use j to move!!"<CR>
|
||||||
|
?
|
||||||
n <Up> * :echo "Use k to move!!"<CR>
|
n <Up> * :echo "Use k to move!!"<CR>
|
||||||
|
?
|
||||||
n <Right> * :echo "Use l to move!!"<CR>
|
n <Right> * :echo "Use l to move!!"<CR>
|
||||||
|
?
|
||||||
n <Left> * :echo "Use h to move!!"<CR>
|
n <Left> * :echo "Use h to move!!"<CR>
|
||||||
|
?
|
||||||
x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
||||||
o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR>
|
o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR>
|
||||||
o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR>
|
o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR>
|
||||||
@@ -408,6 +450,7 @@ x <Plug>(MatchitVisualBackward) * :<C-U>call matchit#Match_wrapper('',0,'v')<CR
|
|||||||
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
||||||
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
||||||
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
||||||
|
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
||||||
n <M-k> * <Cmd>lua MiniMove.move_line('up')<CR>
|
n <M-k> * <Cmd>lua MiniMove.move_line('up')<CR>
|
||||||
Move line up
|
Move line up
|
||||||
n <M-j> * <Cmd>lua MiniMove.move_line('down')<CR>
|
n <M-j> * <Cmd>lua MiniMove.move_line('down')<CR>
|
||||||
@@ -424,7 +467,10 @@ x <M-l> * <Cmd>lua MiniMove.move_selection('right')<CR>
|
|||||||
Move right
|
Move right
|
||||||
x <M-h> * <Cmd>lua MiniMove.move_selection('left')<CR>
|
x <M-h> * <Cmd>lua MiniMove.move_selection('left')<CR>
|
||||||
Move left
|
Move left
|
||||||
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
x <C-S> * <Esc><Cmd>silent! update | redraw<CR>
|
||||||
|
Save and go to Normal mode
|
||||||
|
n <C-S> * :w!<CR>
|
||||||
|
Save
|
||||||
n <C-W><C-D> <C-W>d
|
n <C-W><C-D> <C-W>d
|
||||||
Show diagnostics under the cursor
|
Show diagnostics under the cursor
|
||||||
n <C-W>d * vim/_defaults.lua
|
n <C-W>d * vim/_defaults.lua
|
||||||
@@ -433,4 +479,4 @@ n <C-L> * :lua vim.lsp.buf.signature_help()<CR>
|
|||||||
Signature
|
Signature
|
||||||
```
|
```
|
||||||
|
|
||||||
- Generated on Mon 9 Dec 2024 10:05:25 EET
|
- Generated on Thu 2 Jan 2025 17:41:13 EET
|
||||||
|
|||||||
@@ -2,17 +2,13 @@
|
|||||||
|
|
||||||
Leader: `<ctrl><space>`
|
Leader: `<ctrl><space>`
|
||||||
|
|
||||||
```
|
```txt
|
||||||
C-o Rotate through the panes
|
|
||||||
C-z Suspend the current client
|
|
||||||
Space Select next layout
|
Space Select next layout
|
||||||
# List all paste buffers
|
# List all paste buffers
|
||||||
$ Rename current session
|
$ Rename current session
|
||||||
% Split window horizontally
|
% Split window horizontally
|
||||||
& Kill current window
|
& Kill current window
|
||||||
' Prompt for window index to select
|
' Prompt for window index to select
|
||||||
( Switch to previous client
|
|
||||||
) Switch to next client
|
|
||||||
, Rename current window
|
, Rename current window
|
||||||
- Delete the most recent paste buffer
|
- Delete the most recent paste buffer
|
||||||
. Move the current window
|
. Move the current window
|
||||||
@@ -63,6 +59,8 @@ Leader: `<ctrl><space>`
|
|||||||
M-3 Set the main-horizontal layout
|
M-3 Set the main-horizontal layout
|
||||||
M-4 Set the main-vertical layout
|
M-4 Set the main-vertical layout
|
||||||
M-5 Select the tiled layout
|
M-5 Select the tiled layout
|
||||||
|
M-6 Set the main-horizontal-mirrored layout
|
||||||
|
M-7 Set the main-vertical-mirrored layout
|
||||||
M-n Select the next window with an alert
|
M-n Select the next window with an alert
|
||||||
M-o Rotate through the panes in reverse
|
M-o Rotate through the panes in reverse
|
||||||
M-p Select the previous window with an alert
|
M-p Select the previous window with an alert
|
||||||
@@ -70,6 +68,8 @@ Leader: `<ctrl><space>`
|
|||||||
M-Down Resize the pane down by 5
|
M-Down Resize the pane down by 5
|
||||||
M-Left Resize the pane left by 5
|
M-Left Resize the pane left by 5
|
||||||
M-Right Resize the pane right by 5
|
M-Right Resize the pane right by 5
|
||||||
|
C-o Rotate through the panes
|
||||||
|
C-z Suspend the current client
|
||||||
C-Up Resize the pane up
|
C-Up Resize the pane up
|
||||||
C-Down Resize the pane down
|
C-Down Resize the pane down
|
||||||
C-Left Resize the pane left
|
C-Left Resize the pane left
|
||||||
|
|||||||
@@ -277,4 +277,4 @@ Mouse: alt_screen
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- Generated on Sat 10 Aug 2024 13:01:59 EEST
|
- Generated on Thu 2 Jan 2025 17:41:13 EET
|
||||||
|
|||||||
9
install
9
install
@@ -1,5 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
CONFIG="install.conf.yaml"
|
CONFIG="install.conf.yaml"
|
||||||
@@ -16,6 +15,7 @@ git submodule update --init --recursive "${DOTBOT_DIR}"
|
|||||||
|
|
||||||
"${DOTBOT_BIN_PATH}" \
|
"${DOTBOT_BIN_PATH}" \
|
||||||
-d "${BASEDIR}" \
|
-d "${BASEDIR}" \
|
||||||
|
--plugin-dir=tools/dotbot-asdf \
|
||||||
--plugin-dir=tools/dotbot-brew \
|
--plugin-dir=tools/dotbot-brew \
|
||||||
--plugin-dir=tools/dotbot-include \
|
--plugin-dir=tools/dotbot-include \
|
||||||
--plugin-dir=tools/dotbot-pip \
|
--plugin-dir=tools/dotbot-pip \
|
||||||
@@ -25,10 +25,11 @@ git submodule update --init --recursive "${DOTBOT_DIR}"
|
|||||||
if [ "${DOTBOT_HOST}" != "" ]; then
|
if [ "${DOTBOT_HOST}" != "" ]; then
|
||||||
DOTBOT_HOST_CONFIG="${BASEDIR}/hosts/${DOTBOT_HOST}/${CONFIG}"
|
DOTBOT_HOST_CONFIG="${BASEDIR}/hosts/${DOTBOT_HOST}/${CONFIG}"
|
||||||
echo "-> Trying if host config can be found: ${DOTBOT_HOST_CONFIG}"
|
echo "-> Trying if host config can be found: ${DOTBOT_HOST_CONFIG}"
|
||||||
[ -r "$DOTBOT_HOST_CONFIG" ] && [ -f "$DOTBOT_HOST_CONFIG" ] &&
|
[ -r "$DOTBOT_HOST_CONFIG" ] && [ -f "$DOTBOT_HOST_CONFIG" ] \
|
||||||
echo "(!) Found $DOTBOT_HOST_CONFIG" &&
|
&& echo "(!) Found $DOTBOT_HOST_CONFIG" \
|
||||||
"$DOTBOT_BIN_PATH" \
|
&& "$DOTBOT_BIN_PATH" \
|
||||||
-d "$BASEDIR" \
|
-d "$BASEDIR" \
|
||||||
|
--plugin-dir=tools/dotbot-asdf \
|
||||||
--plugin-dir=tools/dotbot-brew \
|
--plugin-dir=tools/dotbot-brew \
|
||||||
--plugin-dir=tools/dotbot-include \
|
--plugin-dir=tools/dotbot-include \
|
||||||
--plugin-dir=tools/dotbot-pip \
|
--plugin-dir=tools/dotbot-pip \
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
- include: 'tools/dotbot-defaults.yaml'
|
- include: 'tools/dotbot-defaults.yaml'
|
||||||
|
|
||||||
- clean:
|
- clean:
|
||||||
~/:
|
~/:
|
||||||
~/.config:
|
~/.config:
|
||||||
@@ -8,6 +9,7 @@
|
|||||||
recursive: true
|
recursive: true
|
||||||
~/.ssh:
|
~/.ssh:
|
||||||
recursive: true
|
recursive: true
|
||||||
|
|
||||||
- create:
|
- create:
|
||||||
~/.cache:
|
~/.cache:
|
||||||
~/.cache/git:
|
~/.cache/git:
|
||||||
@@ -25,6 +27,7 @@
|
|||||||
~/.ssh/local.d:
|
~/.ssh/local.d:
|
||||||
mode: 0700
|
mode: 0700
|
||||||
~/Code:
|
~/Code:
|
||||||
|
|
||||||
- link:
|
- link:
|
||||||
~/:
|
~/:
|
||||||
force: true
|
force: true
|
||||||
@@ -53,10 +56,54 @@
|
|||||||
glob: true
|
glob: true
|
||||||
mode: 0600
|
mode: 0600
|
||||||
path: ssh/*
|
path: ssh/*
|
||||||
|
|
||||||
- shell:
|
- shell:
|
||||||
- bash add-submodules.sh || true
|
- bash add-submodules.sh || true
|
||||||
- git submodule update --init --recursive --force
|
- git submodule update --init --recursive --force
|
||||||
|
|
||||||
|
- asdf:
|
||||||
|
- plugin: 1password-cli
|
||||||
|
url: https://github.com/NeoHsu/asdf-1password-cli.git
|
||||||
|
- plugin: age
|
||||||
|
url: https://github.com/threkk/asdf-age.git
|
||||||
|
- plugin: direnv
|
||||||
|
url: https://github.com/asdf-community/asdf-direnv.git
|
||||||
|
- plugin: dotenv-linter
|
||||||
|
url: https://github.com/wesleimp/asdf-dotenv-linter.git
|
||||||
|
- plugin: editorconfig-checker
|
||||||
|
url: https://github.com/gabitchov/asdf-editorconfig-checker.git
|
||||||
|
- plugin: fd
|
||||||
|
url: https://gitlab.com/wt0f/asdf-fd.git
|
||||||
|
- plugin: github-cli
|
||||||
|
url: https://github.com/bartlomiejdanek/asdf-github-cli.git
|
||||||
|
- plugin: golang
|
||||||
|
url: https://github.com/asdf-community/asdf-golang.git
|
||||||
|
- plugin: hadolint
|
||||||
|
url: https://github.com/devlincashman/asdf-hadolint.git
|
||||||
|
- plugin: kubectl
|
||||||
|
url: https://github.com/asdf-community/asdf-kubectl.git
|
||||||
|
- plugin: pre-commit
|
||||||
|
url: https://github.com/jonathanmorley/asdf-pre-commit.git
|
||||||
|
- plugin: ripgrep
|
||||||
|
url: https://gitlab.com/wt0f/asdf-ripgrep.git
|
||||||
|
- plugin: rust
|
||||||
|
url: https://github.com/code-lever/asdf-rust.git
|
||||||
|
- plugin: shellcheck
|
||||||
|
url: https://github.com/luizm/asdf-shellcheck.git
|
||||||
|
- plugin: shfmt
|
||||||
|
url: https://github.com/luizm/asdf-shfmt.git
|
||||||
|
- plugin: terragrunt
|
||||||
|
url: https://github.com/ohmer/asdf-terragrunt.git
|
||||||
|
- plugin: tf-summarize
|
||||||
|
url: https://github.com/adamcrews/asdf-tf-summarize.git
|
||||||
|
- plugin: yamllint
|
||||||
|
url: https://github.com/ericcornelissen/asdf-yamllint.git
|
||||||
|
- plugin: yq
|
||||||
|
url: https://github.com/sudermanjr/asdf-yq.git
|
||||||
|
|
||||||
|
- shell:
|
||||||
- bash local/bin/dfm install all
|
- bash local/bin/dfm install all
|
||||||
|
|
||||||
- pipx:
|
- pipx:
|
||||||
file: tools/requirements-pipx.txt
|
file: tools/requirements-pipx.txt
|
||||||
stdout: true
|
stdout: true
|
||||||
|
|||||||
35
local/bin/a
35
local/bin/a
@@ -19,7 +19,8 @@ for arg in "$@"; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Ensure log directory and file exist with correct permissions
|
# Ensure log directory and file exist with correct permissions
|
||||||
prepare_log_file() {
|
prepare_log_file()
|
||||||
|
{
|
||||||
local log_dir
|
local log_dir
|
||||||
log_dir=$(dirname "$LOG_FILE")
|
log_dir=$(dirname "$LOG_FILE")
|
||||||
|
|
||||||
@@ -40,7 +41,8 @@ prepare_log_file() {
|
|||||||
prepare_log_file
|
prepare_log_file
|
||||||
|
|
||||||
# Logging function
|
# Logging function
|
||||||
log_message() {
|
log_message()
|
||||||
|
{
|
||||||
local message="$1"
|
local message="$1"
|
||||||
echo "$(date +'%Y-%m-%d %H:%M:%S') - $message" >> "$LOG_FILE"
|
echo "$(date +'%Y-%m-%d %H:%M:%S') - $message" >> "$LOG_FILE"
|
||||||
|
|
||||||
@@ -51,8 +53,9 @@ log_message() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Function to print usage
|
# Function to print usage
|
||||||
print_help() {
|
print_help()
|
||||||
cat <<EOF
|
{
|
||||||
|
cat << EOF
|
||||||
Usage: a [command] [file_or_directory] [options]
|
Usage: a [command] [file_or_directory] [options]
|
||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
@@ -88,13 +91,15 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Function to print version
|
# Function to print version
|
||||||
print_version() {
|
print_version()
|
||||||
|
{
|
||||||
echo "a version $VERSION"
|
echo "a version $VERSION"
|
||||||
echo "Created by Ismo Vuorinen <https://github.com/ivuorinen>"
|
echo "Created by Ismo Vuorinen <https://github.com/ivuorinen>"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to fetch keys if missing
|
# Function to fetch keys if missing
|
||||||
fetch_keys_if_missing() {
|
fetch_keys_if_missing()
|
||||||
|
{
|
||||||
if [[ ! -f "$KEYS_FILE" ]]; then
|
if [[ ! -f "$KEYS_FILE" ]]; then
|
||||||
log_message "Keys file '$KEYS_FILE' not found. Attempting to fetch from $KEYS_SOURCE..."
|
log_message "Keys file '$KEYS_FILE' not found. Attempting to fetch from $KEYS_SOURCE..."
|
||||||
mkdir -p "$(dirname "$KEYS_FILE")"
|
mkdir -p "$(dirname "$KEYS_FILE")"
|
||||||
@@ -111,7 +116,8 @@ fetch_keys_if_missing() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Function to encrypt files or directories
|
# Function to encrypt files or directories
|
||||||
encrypt_file_or_directory() {
|
encrypt_file_or_directory()
|
||||||
|
{
|
||||||
local file="$1"
|
local file="$1"
|
||||||
if [[ -d "$file" ]]; then
|
if [[ -d "$file" ]]; then
|
||||||
for f in "$file"/*; do
|
for f in "$file"/*; do
|
||||||
@@ -120,7 +126,7 @@ encrypt_file_or_directory() {
|
|||||||
elif [[ -f "$file" ]]; then
|
elif [[ -f "$file" ]]; then
|
||||||
fetch_keys_if_missing
|
fetch_keys_if_missing
|
||||||
local output_file="${file}.age"
|
local output_file="${file}.age"
|
||||||
age -R "$KEYS_FILE" "$file" >"$output_file"
|
age -R "$KEYS_FILE" "$file" > "$output_file"
|
||||||
if [[ $? -eq 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
log_message "File encrypted successfully: $output_file"
|
log_message "File encrypted successfully: $output_file"
|
||||||
else
|
else
|
||||||
@@ -131,7 +137,8 @@ encrypt_file_or_directory() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Function to decrypt files or directories
|
# Function to decrypt files or directories
|
||||||
decrypt_file_or_directory() {
|
decrypt_file_or_directory()
|
||||||
|
{
|
||||||
local file="$1"
|
local file="$1"
|
||||||
if [[ -d "$file" ]]; then
|
if [[ -d "$file" ]]; then
|
||||||
for f in "$file"/*.age; do
|
for f in "$file"/*.age; do
|
||||||
@@ -140,7 +147,7 @@ decrypt_file_or_directory() {
|
|||||||
elif [[ -f "$file" ]]; then
|
elif [[ -f "$file" ]]; then
|
||||||
fetch_keys_if_missing
|
fetch_keys_if_missing
|
||||||
local output_file="${file%.age}"
|
local output_file="${file%.age}"
|
||||||
age -d -i "$KEYS_FILE" "$file" >"$output_file"
|
age -d -i "$KEYS_FILE" "$file" > "$output_file"
|
||||||
if [[ $? -eq 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
log_message "File decrypted successfully: $output_file"
|
log_message "File decrypted successfully: $output_file"
|
||||||
else
|
else
|
||||||
@@ -152,7 +159,7 @@ decrypt_file_or_directory() {
|
|||||||
|
|
||||||
# Main logic
|
# Main logic
|
||||||
case "$1" in
|
case "$1" in
|
||||||
e|enc|encrypt)
|
e | enc | encrypt)
|
||||||
if [[ $# -lt 2 ]]; then
|
if [[ $# -lt 2 ]]; then
|
||||||
log_message "Error: No file or directory specified for encryption."
|
log_message "Error: No file or directory specified for encryption."
|
||||||
print_help
|
print_help
|
||||||
@@ -160,7 +167,7 @@ case "$1" in
|
|||||||
fi
|
fi
|
||||||
encrypt_file_or_directory "$2"
|
encrypt_file_or_directory "$2"
|
||||||
;;
|
;;
|
||||||
d|dec|decrypt)
|
d | dec | decrypt)
|
||||||
if [[ $# -lt 2 ]]; then
|
if [[ $# -lt 2 ]]; then
|
||||||
log_message "Error: No file or directory specified for decryption."
|
log_message "Error: No file or directory specified for decryption."
|
||||||
print_help
|
print_help
|
||||||
@@ -168,10 +175,10 @@ case "$1" in
|
|||||||
fi
|
fi
|
||||||
decrypt_file_or_directory "$2"
|
decrypt_file_or_directory "$2"
|
||||||
;;
|
;;
|
||||||
help|--help)
|
help | --help)
|
||||||
print_help
|
print_help
|
||||||
;;
|
;;
|
||||||
version|--version)
|
version | --version)
|
||||||
print_version
|
print_version
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ KEYS_FILE="${AGE_KEYSFILE:-$HOME/.ssh/keys.txt}"
|
|||||||
KEYS_SOURCE="${AGE_KEYSSOURCE:-https://github.com/ivuorinen.keys}"
|
KEYS_SOURCE="${AGE_KEYSSOURCE:-https://github.com/ivuorinen.keys}"
|
||||||
|
|
||||||
# Check for required commands
|
# Check for required commands
|
||||||
if ! command -v age &>/dev/null; then
|
if ! command -v age &> /dev/null; then
|
||||||
echo "Error: age is not installed. Please install it to continue."
|
echo "Error: age is not installed. Please install it to continue."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
if ! command -v curl &> /dev/null; then
|
||||||
echo "Error: curl is not installed. Please install it to continue."
|
echo "Error: curl is not installed. Please install it to continue."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -28,7 +28,6 @@ if [[ ! -f "$FILE" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check if keys file exists, otherwise fetch it
|
# Check if keys file exists, otherwise fetch it
|
||||||
if [[ ! -f "$KEYS_FILE" ]]; then
|
if [[ ! -f "$KEYS_FILE" ]]; then
|
||||||
echo "Keys file '$KEYS_FILE' not found. Attempting to fetch from $KEYS_SOURCE..."
|
echo "Keys file '$KEYS_FILE' not found. Attempting to fetch from $KEYS_SOURCE..."
|
||||||
@@ -51,7 +50,7 @@ fi
|
|||||||
|
|
||||||
# Decrypt the file
|
# Decrypt the file
|
||||||
OUTPUT_FILE="${FILE%.age}"
|
OUTPUT_FILE="${FILE%.age}"
|
||||||
age -d -i "$KEYS_FILE" "$FILE" >"$OUTPUT_FILE"
|
age -d -i "$KEYS_FILE" "$FILE" > "$OUTPUT_FILE"
|
||||||
|
|
||||||
if [[ $? -eq 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
echo "File decrypted successfully: $OUTPUT_FILE"
|
echo "File decrypted successfully: $OUTPUT_FILE"
|
||||||
@@ -59,4 +58,3 @@ else
|
|||||||
echo "Error: Failed to decrypt file."
|
echo "Error: Failed to decrypt file."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -6,17 +6,18 @@ KEYS_FILE="${AGE_KEYSFILE:-$HOME/.ssh/keys.txt}"
|
|||||||
KEYS_SOURCE="${AGE_KEYSSOURCE:-https://github.com/ivuorinen.keys}"
|
KEYS_SOURCE="${AGE_KEYSSOURCE:-https://github.com/ivuorinen.keys}"
|
||||||
|
|
||||||
# Check for required commands
|
# Check for required commands
|
||||||
if ! command -v age &>/dev/null; then
|
if ! command -v age &> /dev/null; then
|
||||||
echo "Error: age is not installed. Please install it to continue."
|
echo "Error: age is not installed. Please install it to continue."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
if ! command -v curl &> /dev/null; then
|
||||||
echo "Error: curl is not installed. Please install it to continue."
|
echo "Error: curl is not installed. Please install it to continue."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensure a file is provided
|
# Ensure a file is provided
|
||||||
|
# shellcheck disable=SC2181
|
||||||
if [[ $# -lt 1 ]]; then
|
if [[ $# -lt 1 ]]; then
|
||||||
echo "Usage: $0 <file-to-encrypt>"
|
echo "Usage: $0 <file-to-encrypt>"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -50,7 +51,7 @@ fi
|
|||||||
|
|
||||||
# Encrypt the file
|
# Encrypt the file
|
||||||
OUTPUT_FILE="${FILE}.age"
|
OUTPUT_FILE="${FILE}.age"
|
||||||
age -R "$KEYS_FILE" "$FILE" >"$OUTPUT_FILE"
|
age -R "$KEYS_FILE" "$FILE" > "$OUTPUT_FILE"
|
||||||
|
|
||||||
if [[ $? -eq 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
echo "File encrypted successfully: $OUTPUT_FILE"
|
echo "File encrypted successfully: $OUTPUT_FILE"
|
||||||
|
|||||||
565
local/bin/dfm
565
local/bin/dfm
@@ -14,65 +14,30 @@
|
|||||||
|
|
||||||
SCRIPT=$(basename "$0")
|
SCRIPT=$(basename "$0")
|
||||||
|
|
||||||
if ! declare -f msg > /dev/null; then
|
|
||||||
# Function to print messages if VERBOSE is enabled
|
|
||||||
# $1 - message (string)
|
|
||||||
msg()
|
|
||||||
{
|
|
||||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! declare -f msg_err > /dev/null; then
|
|
||||||
# Function to print error messages and exit
|
|
||||||
# $1 - error message (string)
|
|
||||||
msg_err()
|
|
||||||
{
|
|
||||||
# shellcheck disable=SC2317
|
|
||||||
echo "(!) ERROR: $1" >&2
|
|
||||||
# shellcheck disable=SC2317
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! declare -f msg_done > /dev/null; then
|
|
||||||
# Function to print done message
|
|
||||||
# $1 - message (string)
|
|
||||||
msg_done()
|
|
||||||
{
|
|
||||||
# shellcheck disable=SC2317
|
|
||||||
echo "✓ $1"
|
|
||||||
# shellcheck disable=SC2317
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! declare -f array_diff > /dev/null; then
|
|
||||||
# Function to compare two arrays and return the difference
|
|
||||||
# Example: array_diff DIFFERENCE ARRAY1 ARRAY2
|
|
||||||
# $1 - variable to store the difference
|
|
||||||
# $2 - first array
|
|
||||||
# $3 - second array
|
|
||||||
# Output to $1 the difference between $2 and $3
|
|
||||||
# Source: https://stackoverflow.com/a/42399479/594940
|
|
||||||
array_diff()
|
|
||||||
{
|
|
||||||
# shellcheck disable=SC1083,SC2086
|
|
||||||
eval local ARR1=\(\"\${$2[@]}\"\)
|
|
||||||
# shellcheck disable=SC1083,SC2086
|
|
||||||
eval local ARR2=\(\"\${$3[@]}\"\)
|
|
||||||
local IFS=$'\n'
|
|
||||||
mapfile -t "$1" < <(comm -23 <(echo "${ARR1[*]}" | sort) <(echo "${ARR2[*]}" | sort))
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Loads configs for better installation experience
|
# Loads configs for better installation experience
|
||||||
source "$DOTFILES/config/shared.sh"
|
source "$DOTFILES/config/shared.sh"
|
||||||
|
|
||||||
source "${DOTFILES}/local/bin/msgr"
|
source "${DOTFILES}/local/bin/msgr"
|
||||||
|
|
||||||
# -- Menu builder -- #
|
# -- Menu builder -- #
|
||||||
|
|
||||||
|
menu_builder()
|
||||||
|
{
|
||||||
|
local title=$1
|
||||||
|
local commands=("${@:2}")
|
||||||
|
local width=60
|
||||||
|
|
||||||
|
printf "\n%s\n" "$(printf '%.s─' $(seq 1 $width))"
|
||||||
|
printf "%-${width}s\n" " $title"
|
||||||
|
printf "%s\n" "$(printf '%.s─' $(seq 1 $width))"
|
||||||
|
|
||||||
|
for cmd in "${commands[@]}"; do
|
||||||
|
local name=${cmd%%:*}
|
||||||
|
local desc=${cmd#*:}
|
||||||
|
printf " %-20s %s\n" "$name" "$desc"
|
||||||
|
done
|
||||||
|
# printf "\n"
|
||||||
|
}
|
||||||
|
|
||||||
menu_section()
|
menu_section()
|
||||||
{
|
{
|
||||||
LINE=$(printf '%-18s [ %-15s ]\n' "$1" "$2")
|
LINE=$(printf '%-18s [ %-15s ]\n' "$1" "$2")
|
||||||
@@ -126,23 +91,19 @@ section_install()
|
|||||||
|
|
||||||
MENU=(
|
MENU=(
|
||||||
"all:Installs everything in the correct order"
|
"all:Installs everything in the correct order"
|
||||||
|
"asdf:Install asdf plugins"
|
||||||
"cargo:Install rust/cargo packages"
|
"cargo:Install rust/cargo packages"
|
||||||
"cheat-databases:Install cheat external cheatsheet databases"
|
"cheat-databases:Install cheat external cheatsheet databases"
|
||||||
"composer:Install composer"
|
"composer:Install composer"
|
||||||
"dotenv:Install dotenv-linter"
|
|
||||||
"fonts:Install programming fonts"
|
"fonts:Install programming fonts"
|
||||||
"gh:Install GitHub CLI Extensions"
|
"gh:Install GitHub CLI Extensions"
|
||||||
"go:Install Go Packages"
|
"go:Install Go Packages"
|
||||||
"imagick:Install ImageMagick CLI"
|
"imagick:Install ImageMagick CLI"
|
||||||
"starship:Install starship.rs"
|
|
||||||
"macos:Setup nice macOS defaults"
|
"macos:Setup nice macOS defaults"
|
||||||
"neofetch:Install neofetch"
|
"npm-packages:Install NPM Packages"
|
||||||
"nvm:Install Node Version Manager (nvm)"
|
|
||||||
"nvm-latest:Install latest lts node using nvm"
|
|
||||||
"npm:Install NPM Packages"
|
|
||||||
"ntfy:Install ntfy"
|
"ntfy:Install ntfy"
|
||||||
"ohmybash:Install oh-my-bash"
|
"nvm-latest:Install latest lts node using nvm"
|
||||||
"pip:Install pip/python packages"
|
"nvm:Install Node Version Manager (nvm)"
|
||||||
"z:Install z"
|
"z:Install z"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -152,124 +113,111 @@ section_install()
|
|||||||
$0 install macos
|
$0 install macos
|
||||||
$0 install fonts
|
$0 install fonts
|
||||||
$0 brew install
|
$0 brew install
|
||||||
#$0 install ohmyposh
|
|
||||||
$0 install asdf
|
$0 install asdf
|
||||||
$0 install composer
|
$0 install composer
|
||||||
$0 install fzf
|
$0 install fzf
|
||||||
#$0 install go
|
|
||||||
$0 install cheat-databases
|
$0 install cheat-databases
|
||||||
#$0 install imagick
|
|
||||||
$0 install nvm
|
$0 install nvm
|
||||||
$0 install npm
|
$0 install npm-packages
|
||||||
# $0 install ntfy
|
|
||||||
$0 install z
|
$0 install z
|
||||||
msgr msg "Reloading configurations again..."
|
msgr msg "Reloading configurations again..."
|
||||||
source "$DOTFILES/config/shared.sh"
|
source "$DOTFILES/config/shared.sh"
|
||||||
msgr yay "All done!"
|
msgr yay "All done!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
asdf)
|
asdf)
|
||||||
msg "Installing asdf..."
|
msgr run "Installing asdf..."
|
||||||
$0 asdf plugins-add \
|
$0 asdf plugins-install \
|
||||||
&& msg_yay "asdf installed!"
|
&& msgr yay "asdf plugins installed!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cargo)
|
cargo)
|
||||||
msg "Installing cargo packages..."
|
msgr run "Installing cargo packages..."
|
||||||
bash "$DOTFILES/scripts/install-cargo-packages.sh" \
|
bash "$DOTFILES/scripts/install-cargo-packages.sh" \
|
||||||
&& msg_yay "cargo packages installed!"
|
&& msgr yay "cargo packages installed!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cheat-databases)
|
cheat-databases)
|
||||||
msg "Installing cheat databases..."
|
msgr run "Installing cheat databases..."
|
||||||
for database in "$DOTFILES"/scripts/install-cheat-*; do
|
for database in "$DOTFILES"/scripts/install-cheat-*; do
|
||||||
bash "$database" \
|
bash "$database" \
|
||||||
&& msg_yay "Cheat: $database run"
|
&& msgr run_done "Cheat: $database run"
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
composer)
|
composer)
|
||||||
msg "Installing composer..."
|
msgr run "Installing composer..."
|
||||||
bash "$DOTFILES/scripts/install-composer.sh" \
|
bash "$DOTFILES/scripts/install-composer.sh" \
|
||||||
&& msg_yay "composer installed!"
|
&& msgr run_done "composer installed!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
fonts)
|
fonts)
|
||||||
msg "Installing fonts..."
|
msgr run "Installing fonts..."
|
||||||
bash "$DOTFILES/scripts/install-fonts.sh" \
|
bash "$DOTFILES/scripts/install-fonts.sh" \
|
||||||
&& msg_yay "Installed fonts!"
|
&& msgr yay "Installed fonts!"
|
||||||
;;
|
|
||||||
fzf)
|
|
||||||
msg "Installing fzf..."
|
|
||||||
bash "$DOTFILES/scripts/install-fzf.sh" \
|
|
||||||
&& msg_yay "fzf installed!"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
gh)
|
gh)
|
||||||
msg "Installing GitHub CLI Extensions..."
|
msgr run "Installing GitHub CLI Extensions..."
|
||||||
bash "$DOTFILES/scripts/install-gh-extensions.sh" \
|
bash "$DOTFILES/scripts/install-gh-extensions.sh" \
|
||||||
&& msg_yay "github cli extensions installed!"
|
&& msgr yay "github cli extensions installed!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
go)
|
go)
|
||||||
msg "Installing Go Packages..."
|
msgr run "Installing Go Packages..."
|
||||||
bash "$DOTFILES/scripts/install-go-packages.sh" \
|
bash "$DOTFILES/scripts/install-go-packages.sh" \
|
||||||
&& msg_yay "go packages installed!"
|
&& msgr yay "go packages installed!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
imagick)
|
imagick)
|
||||||
msg "Installing ImageMagick CLI..."
|
msgr run "Downloading and installing ImageMagick CLI..."
|
||||||
curl -L https://imagemagick.org/archive/binaries/magick > "$XDG_BIN_HOME/magick" \
|
curl -L https://imagemagick.org/archive/binaries/magick > "$XDG_BIN_HOME/magick" \
|
||||||
&& chmod +x "$XDG_BIN_HOME/magick" \
|
&& chmod +x "$XDG_BIN_HOME/magick" \
|
||||||
&& msg_yay "imagick installed!"
|
&& msgr yay "imagick downloaded and installed!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
macos)
|
macos)
|
||||||
msg "Setting up macOS defaults..."
|
msgr run "Setting up macOS defaults..."
|
||||||
bash "$DOTFILES/scripts/set-macos-defaults.sh" \
|
bash "$DOTFILES/scripts/install-macos-defaults.sh" \
|
||||||
&& msg_yay "Brewfile defined apps has been installed!"
|
&& msgr yay "macOS defaults set!"
|
||||||
;;
|
|
||||||
neofetch)
|
|
||||||
msg "Installing neofetch..."
|
|
||||||
bash "$DOTFILES/scripts/install-neofetch.sh" \
|
|
||||||
&& msg_yay "neofetch installed!"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
nvm)
|
nvm)
|
||||||
msg "Installing nvm..."
|
msgr run "Installing nvm..."
|
||||||
|
local NVM_VERSION
|
||||||
NVM_VERSION=$(x-gh-get-latest-version nvm-sh/nvm)
|
NVM_VERSION=$(x-gh-get-latest-version nvm-sh/nvm)
|
||||||
msg "Latest nvm version: $NVM_VERSION"
|
msgr ok "Latest nvm version: $NVM_VERSION"
|
||||||
NVM_INSTALL="https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh"
|
local NVM_INSTALL="https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh"
|
||||||
NVM_CURL="curl -o- \"$NVM_INSTALL\" | bash"
|
local NVM_CURL="curl -o- \"$NVM_INSTALL\" | bash"
|
||||||
PROFILE=/dev/null bash -c "$NVM_CURL"
|
PROFILE=/dev/null bash -c "$NVM_CURL"
|
||||||
$0 install nvm-latest
|
$0 install nvm-latest
|
||||||
msg_yay "nvm installed!"
|
msgr yay "nvm installed!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
nvm-latest)
|
nvm-latest)
|
||||||
msg "Installing latest lts node..."
|
msgr run "Installing latest lts node..."
|
||||||
if [ -n "$NVM_DIR" ]; then
|
if [ -n "$NVM_DIR" ]; then
|
||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||||
fi
|
fi
|
||||||
nvm install --lts --latest-npm --default
|
nvm install --lts --latest-npm --default
|
||||||
git checkout "$DOTFILES/base/zshrc"
|
git checkout "$DOTFILES/base/zshrc"
|
||||||
git checkout "$DOTFILES/base/bashrc"
|
git checkout "$DOTFILES/base/bashrc"
|
||||||
msg_yay "latest lts node installed!"
|
msgr yay "latest lts node installed!"
|
||||||
;;
|
;;
|
||||||
npm)
|
|
||||||
msg "NPM Packages install started..."
|
npm-packages)
|
||||||
|
msgr run "NPM Packages install started..."
|
||||||
bash "$DOTFILES/scripts/install-npm-packages.sh" \
|
bash "$DOTFILES/scripts/install-npm-packages.sh" \
|
||||||
&& msg_yay "NPM Packages have been installed!"
|
&& msgr yay "NPM Packages have been installed!"
|
||||||
;;
|
|
||||||
ntfy)
|
|
||||||
msg "ntfy install started..."
|
|
||||||
bash "$DOTFILES/scripts/install-ntfy.sh" \
|
|
||||||
&& msg_yay "ntfy installed!"
|
|
||||||
;;
|
|
||||||
ohmyposh)
|
|
||||||
msg "oh-my-posh install started..."
|
|
||||||
bash "$DOTFILES/scripts/install-ohmyposh.sh" \
|
|
||||||
&& msg_yay "oh-my-posh installed!"
|
|
||||||
;;
|
|
||||||
pip)
|
|
||||||
msg "pip install started..."
|
|
||||||
bash "$DOTFILES/scripts/install-pip-packages.sh"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
z)
|
z)
|
||||||
msg "Installing z..."
|
msgr run "Installing z..."
|
||||||
bash "$DOTFILES/scripts/install-z.sh" \
|
bash "$DOTFILES/scripts/install-z.sh" \
|
||||||
&& msg_yay "z has been installed!"
|
&& msgr yay "z has been installed!"
|
||||||
;;
|
;;
|
||||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
|
||||||
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,12 +238,14 @@ section_brew()
|
|||||||
x-have brew && {
|
x-have brew && {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
install)
|
install)
|
||||||
brew bundle install --file="$BREWFILE" --force --quiet && msg_yay "Done!"
|
brew bundle install --file="$BREWFILE" --force --quiet && msgr yay "Done!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
update)
|
update)
|
||||||
brew update && brew outdated && brew upgrade && brew cleanup
|
brew update && brew outdated && brew upgrade && brew cleanup
|
||||||
msg_yay "Done!"
|
msgr yay "Done!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
updatebundle)
|
updatebundle)
|
||||||
# Updates .dotfiles/homebrew/Brewfile with descriptions
|
# Updates .dotfiles/homebrew/Brewfile with descriptions
|
||||||
brew bundle dump \
|
brew bundle dump \
|
||||||
@@ -305,11 +255,13 @@ section_brew()
|
|||||||
--tap \
|
--tap \
|
||||||
--formula \
|
--formula \
|
||||||
--cask \
|
--cask \
|
||||||
--describe && msg_yay "Done!"
|
--describe && msgr yay "Done!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
leaves)
|
leaves)
|
||||||
brew leaves --installed-on-request
|
brew leaves --installed-on-request
|
||||||
;;
|
;;
|
||||||
|
|
||||||
untracked)
|
untracked)
|
||||||
declare -a BREW_LIST_ALL
|
declare -a BREW_LIST_ALL
|
||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
@@ -342,7 +294,7 @@ section_brew()
|
|||||||
|
|
||||||
# If there are no untracked packages, exit
|
# If there are no untracked packages, exit
|
||||||
if [ ${#BREW_LIST_UNTRACKED[@]} -eq 0 ]; then
|
if [ ${#BREW_LIST_UNTRACKED[@]} -eq 0 ]; then
|
||||||
msg_yay "No untracked packages found!"
|
msgr yay "No untracked packages found!"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -351,20 +303,19 @@ section_brew()
|
|||||||
echo " $f"
|
echo " $f"
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
clean)
|
|
||||||
brew bundle cleanup --file="$BREWFILE" && msg_yay "Done!"
|
|
||||||
;;
|
|
||||||
autoupdate)
|
autoupdate)
|
||||||
brew autoupdate delete
|
brew autoupdate delete
|
||||||
brew autoupdate start 43200 --upgrade --cleanup --immediate
|
brew autoupdate start 43200 --upgrade --cleanup --immediate
|
||||||
;;
|
;;
|
||||||
*)
|
|
||||||
menu_usage "$USAGE_PREFIX" "${MENU[@]}"
|
clean) brew bundle cleanup --file="$BREWFILE" && msgr yay "Done!" ;;
|
||||||
;;
|
|
||||||
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
! x-have brew && menu_section "$USAGE_PREFIX" "brew not available on this system"
|
! x-have brew && menu_builder "$USAGE_PREFIX" "brew not available on this system"
|
||||||
}
|
}
|
||||||
|
|
||||||
section_asdf()
|
section_asdf()
|
||||||
@@ -374,10 +325,11 @@ section_asdf()
|
|||||||
"current:Show asdf current versions"
|
"current:Show asdf current versions"
|
||||||
"global:Show asdf global versions"
|
"global:Show asdf global versions"
|
||||||
"installed:Show asdf installed versions"
|
"installed:Show asdf installed versions"
|
||||||
"local:Show asdf local versions"
|
|
||||||
"plugins-add:Add and update direnv and asdf-plugin-manager, and all other plugins"
|
|
||||||
"plugins-update:Update all asdf plugins"
|
"plugins-update:Update all asdf plugins"
|
||||||
|
"plugins-install:Install plugins from configuration"
|
||||||
|
"plugins-remove:Remove installed plugins"
|
||||||
"reset:Reset asdf plugins"
|
"reset:Reset asdf plugins"
|
||||||
|
"fix-tool-versions:Remove uninstalled plugins from .tool-versions"
|
||||||
"versions:Show asdf versions"
|
"versions:Show asdf versions"
|
||||||
"where:Show asdf where"
|
"where:Show asdf where"
|
||||||
"which:Show asdf which"
|
"which:Show asdf which"
|
||||||
@@ -385,120 +337,142 @@ section_asdf()
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
plugins-update)
|
plugins-update)
|
||||||
APM_BIN="$(asdf where asdf-plugin-manager)/bin/asdf-plugin-manager"
|
|
||||||
|
|
||||||
msgr run "Updating all asdf plugins"
|
msgr run "Updating all asdf plugins"
|
||||||
$APM_BIN update-all
|
asdf plugin update --all
|
||||||
$APM_BIN export > "$ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME"
|
|
||||||
msgr run_done "Updated all plugins"
|
msgr run_done "Updated all plugins"
|
||||||
;;
|
;;
|
||||||
plugins-add)
|
|
||||||
X_GH_BIN="$DOTFILES/local/bin/x-gh-get-latest-version"
|
|
||||||
LATEST_APM="$($X_GH_BIN asdf-community/asdf-plugin-manager | sed 's/^v//')"
|
|
||||||
LATEST_DIRENV="$($X_GH_BIN asdf-community/asdf-direnv)"
|
|
||||||
PLUGIN_VERSIONS="$DOTFILES/config/asdf/plugin-versions"
|
|
||||||
APM_BIN="$HOME/.local/bin/asdf/shims/asdf-plugin-manager"
|
|
||||||
|
|
||||||
msgr run "Adding and updating direnv and asdf-plugin-manager"
|
plugins-install)
|
||||||
asdf plugin add direnv https://github.com/asdf-community/asdf-direnv.git
|
msgr run "Installing plugins from configuration"
|
||||||
asdf global direnv "$LATEST_DIRENV"
|
|
||||||
asdf install direnv "$LATEST_DIRENV"
|
|
||||||
|
|
||||||
asdf plugin add asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git
|
# First install direnv if it's not installed
|
||||||
asdf global asdf-plugin-manager "$LATEST_APM"
|
if ! asdf plugin list | grep -q "^direnv$"; then
|
||||||
asdf install asdf-plugin-manager "$LATEST_APM"
|
msgr nested "Installing direnv plugin"
|
||||||
asdf reshim
|
asdf plugin add direnv https://github.com/asdf-community/asdf-direnv.git
|
||||||
msgr run_done "direnv and asdf-plugin-manager added and updated"
|
|
||||||
|
|
||||||
msgr run "Reset plugin-versions file to the original using git"
|
# Install latest direnv
|
||||||
if git ls-files --error-unmatch "$PLUGIN_VERSIONS" > /dev/null 2>&1; then
|
local latest_direnv
|
||||||
git checkout -- "$PLUGIN_VERSIONS"
|
latest_direnv=$(asdf latest direnv)
|
||||||
|
asdf install direnv "$latest_direnv"
|
||||||
|
asdf global direnv "$latest_direnv"
|
||||||
fi
|
fi
|
||||||
msgr run_done "Reset plugin-versions file"
|
|
||||||
|
|
||||||
msgr run "Adding all plugins with asdf-plugin-manager"
|
# Check that all plugins are installed
|
||||||
"$APM_BIN" add-all
|
local installed_plugins
|
||||||
msgr run_done "Added all plugins with asdf-plugin-manager"
|
installed_plugins=$(asdf plugin list)
|
||||||
|
|
||||||
msgr run "Install all plugins"
|
while IFS= read -r line; do
|
||||||
PLUGINS=$($APM_BIN list | awk -F ' ' '{print $1}' | sort)
|
# Skip empty lines and comments
|
||||||
for P in $PLUGINS; do
|
[[ -z $line || $line =~ ^# ]] && continue
|
||||||
msgr run "Installing $P"
|
|
||||||
asdf install "$P" latest
|
|
||||||
asdf global "$P" latest
|
|
||||||
done
|
|
||||||
|
|
||||||
|
local plugin
|
||||||
|
plugin=$(echo "$line" | awk '{print $1}')
|
||||||
|
|
||||||
msgr run_done "Installed all plugins"
|
# Skip direnv, it's already installed
|
||||||
|
[[ $plugin == "direnv" ]] && continue
|
||||||
|
|
||||||
msgr run "Reshimming"
|
if ! echo "$installed_plugins" | grep -q "^${plugin}$"; then
|
||||||
asdf reshim
|
msgr nested "Installing $plugin plugin"
|
||||||
msgr run_done "Reshimmed"
|
asdf plugin add "$plugin"
|
||||||
|
fi
|
||||||
|
done < "$DOTFILES/base/tool-versions"
|
||||||
|
|
||||||
|
msgr run_done "All plugins installed"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
plugins-remove)
|
plugins-remove)
|
||||||
PLUGIN_VERSIONS="$DOTFILES/config/asdf/plugin-versions"
|
|
||||||
|
|
||||||
msgr run "Remove installed plugins"
|
msgr run "Remove installed plugins"
|
||||||
INSTALLED_ASDF_PLUGINS=$(asdf list | grep -vE "direnv|asdf-plugin-manager" | grep -v "^ ")
|
local installed_plugins
|
||||||
for P in $INSTALLED_ASDF_PLUGINS; do
|
installed_plugins=$(asdf plugin list | grep -v "^direnv$")
|
||||||
asdf plugin remove "$P"
|
|
||||||
msgr nested_done "Removed $P"
|
|
||||||
done
|
|
||||||
|
|
||||||
msgr run "Reset plugin-versions file to the original using git"
|
for plugin in $installed_plugins; do
|
||||||
if git ls-files --error-unmatch "$PLUGIN_VERSIONS" > /dev/null 2>&1; then
|
msgr nested "Removing $plugin"
|
||||||
git checkout -- "$PLUGIN_VERSIONS"
|
asdf plugin remove "$plugin"
|
||||||
fi
|
done
|
||||||
msgr run_done "Reset plugin-versions file"
|
|
||||||
|
|
||||||
msgr run_done "Remove plugins done!"
|
msgr run_done "Remove plugins done!"
|
||||||
;;
|
;;
|
||||||
reset)
|
|
||||||
APM_BIN="$(asdf where asdf-plugin-manager)/bin/asdf-plugin-manager"
|
|
||||||
|
|
||||||
msgr run "Get currently installed plugins, remove those that are not defined"
|
reset)
|
||||||
|
msgr run "Resetting asdf environment"
|
||||||
$0 asdf plugins-remove
|
$0 asdf plugins-remove
|
||||||
$0 asdf plugins-add
|
$0 asdf plugins-install
|
||||||
$0 asdf fixtoolversions
|
|
||||||
asdf reshim
|
asdf reshim
|
||||||
msgr yay "Reset asdf plugins done!"
|
msgr yay "Reset asdf plugins done!"
|
||||||
;;
|
;;
|
||||||
fixtoolversions)
|
|
||||||
ASDF_TOOL_VERSIONS_FILE="$DOTFILES/base/tool-versions"
|
|
||||||
ASDF_TOOL_FILE_PLUGINS=$(awk '{print $1 " " $2}' "$ASDF_TOOL_VERSIONS_FILE")
|
|
||||||
APM_BIN="$(asdf where asdf-plugin-manager)/bin/asdf-plugin-manager"
|
|
||||||
|
|
||||||
msgr run "Loading $ASDF_TOOL_VERSIONS_FILE and collecting installed"
|
fix-tool-versions)
|
||||||
ASDF_PLUGINS_DEFINED=$($APM_BIN list | awk -F ' ' '{print $1}')
|
local tool_versions_file="$DOTFILES/base/tool-versions"
|
||||||
|
local temp_file
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
|
||||||
echo "$ASDF_TOOL_FILE_PLUGINS" | \
|
msgr run "Fixing tool-versions file"
|
||||||
grep -Fxv -f <(echo "$ASDF_PLUGINS_DEFINED") > tmp && \
|
|
||||||
mv tmp "$ASDF_TOOL_VERSIONS_FILE"
|
|
||||||
|
|
||||||
msgr run_done "Fixed $ASDF_TOOL_VERSIONS_FILE"
|
# Check that .tool-versions file exists
|
||||||
|
if [[ ! -f $tool_versions_file ]]; then
|
||||||
|
msgr error "tool-versions file not found: $tool_versions_file"
|
||||||
|
rm -f "$temp_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check that asdf can be found in the path
|
||||||
|
if ! command -v asdf > /dev/null; then
|
||||||
|
msgr error "asdf not found"
|
||||||
|
rm -f "$temp_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Read installed plugins
|
||||||
|
msgr nested "Reading installed plugins"
|
||||||
|
local installed_plugins
|
||||||
|
installed_plugins=$(asdf plugin list | sort)
|
||||||
|
|
||||||
|
# Compare .tool-versions and installed plugins,
|
||||||
|
# remove unknown plugins from .tool-versions
|
||||||
|
msgr nested "Updating tool-versions file"
|
||||||
|
while IFS= read -r line; do
|
||||||
|
# Keep comments and empty lines
|
||||||
|
if [[ -z $line || $line =~ ^[[:space:]]*# ]]; then
|
||||||
|
echo "$line" >> "$temp_file"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
local plugin
|
||||||
|
plugin=$(echo "$line" | awk '{print $1}')
|
||||||
|
|
||||||
|
if echo "$installed_plugins" | grep -q "^${plugin}$"; then
|
||||||
|
echo "$line" >> "$temp_file"
|
||||||
|
else
|
||||||
|
msgr nested "Removing $plugin - not installed"
|
||||||
|
fi
|
||||||
|
done < "$tool_versions_file"
|
||||||
|
|
||||||
|
# Check that the temp file is valid
|
||||||
|
if [[ ! -s $temp_file ]] || ! grep -v '^[[:space:]]*#' "$temp_file" | grep -q .; then
|
||||||
|
msgr error "Generated file is empty or contains only comments, keeping original"
|
||||||
|
rm -f "$temp_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Backup the original .tool-versions
|
||||||
|
cp "$tool_versions_file" "${tool_versions_file}.bak"
|
||||||
|
|
||||||
|
# Overwrite .tool-versions with the generated file
|
||||||
|
mv "$temp_file" "$tool_versions_file"
|
||||||
|
|
||||||
|
msgr run_done "Updated $tool_versions_file"
|
||||||
|
msgr nested "Backup saved as ${tool_versions_file}.bak"
|
||||||
|
|
||||||
|
return 0
|
||||||
;;
|
;;
|
||||||
current)
|
|
||||||
asdf current
|
current) asdf current ;;
|
||||||
;;
|
global) asdf global ;;
|
||||||
global)
|
installed) asdf list ;;
|
||||||
asdf global
|
versions) asdf list all ;;
|
||||||
;;
|
where) asdf where ;;
|
||||||
installed)
|
which) asdf which ;;
|
||||||
asdf list
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
;;
|
|
||||||
local)
|
|
||||||
asdf local
|
|
||||||
;;
|
|
||||||
versions)
|
|
||||||
asdf list all
|
|
||||||
;;
|
|
||||||
where)
|
|
||||||
asdf where
|
|
||||||
;;
|
|
||||||
which)
|
|
||||||
asdf which
|
|
||||||
;;
|
|
||||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,7 +485,6 @@ section_helpers()
|
|||||||
"env:Show environment variables"
|
"env:Show environment variables"
|
||||||
"functions:Show functions"
|
"functions:Show functions"
|
||||||
"nvim:Show nvim keybindings"
|
"nvim:Show nvim keybindings"
|
||||||
# shellcheck disable=SC2016
|
|
||||||
'path:Show $PATH dir by dir'
|
'path:Show $PATH dir by dir'
|
||||||
"tmux:Show tmux keybindings"
|
"tmux:Show tmux keybindings"
|
||||||
"wezterm:Show wezterm keybindings"
|
"wezterm:Show wezterm keybindings"
|
||||||
@@ -527,6 +500,7 @@ section_helpers()
|
|||||||
# shellcheck disable=2001
|
# shellcheck disable=2001
|
||||||
for i in $(echo "$PATH" | sed 's/:/ /g'); do echo "$i"; done
|
for i in $(echo "$PATH" | sed 's/:/ /g'); do echo "$i"; done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
aliases)
|
aliases)
|
||||||
case "$SECTION" in
|
case "$SECTION" in
|
||||||
"zsh")
|
"zsh")
|
||||||
@@ -540,6 +514,7 @@ section_helpers()
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"colors")
|
"colors")
|
||||||
max=255
|
max=255
|
||||||
start=0
|
start=0
|
||||||
@@ -563,24 +538,14 @@ section_helpers()
|
|||||||
printf "\n"
|
printf "\n"
|
||||||
start=$((start + 10))
|
start=$((start + 10))
|
||||||
done
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
;;
|
"env") env | sort ;;
|
||||||
"env")
|
"functions") declare -F ;;
|
||||||
env | sort
|
"nvim") cat "$DOTFILES/docs/nvim-keybindings.md" ;;
|
||||||
;;
|
"tmux") cat "$DOTFILES/docs/tmux-keybindings.md" ;;
|
||||||
"functions")
|
"wezterm") cat "$DOTFILES/docs/wezterm-keybindings.md" ;;
|
||||||
declare -F
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
;;
|
|
||||||
"nvim")
|
|
||||||
cat "$DOTFILES/docs/nvim-keybindings.md"
|
|
||||||
;;
|
|
||||||
"tmux")
|
|
||||||
cat "$DOTFILES/docs/tmux-keybindings.md"
|
|
||||||
;;
|
|
||||||
"wezterm")
|
|
||||||
cat "$DOTFILES/docs/wezterm-keybindings.md"
|
|
||||||
;;
|
|
||||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -604,7 +569,7 @@ section_docs()
|
|||||||
tmux) bash "$DOTFILES/local/bin/x-dfm-docs-xterm-keybindings" ;;
|
tmux) bash "$DOTFILES/local/bin/x-dfm-docs-xterm-keybindings" ;;
|
||||||
nvim) bash "$DOTFILES/scripts/create-nvim-keymaps.sh" ;;
|
nvim) bash "$DOTFILES/scripts/create-nvim-keymaps.sh" ;;
|
||||||
wezterm) bash "$DOTFILES/scripts/create-wezterm-keymaps.sh" ;;
|
wezterm) bash "$DOTFILES/scripts/create-wezterm-keymaps.sh" ;;
|
||||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -622,37 +587,42 @@ section_dotfiles()
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
fmt)
|
fmt)
|
||||||
msg_ok "Running all formatters"
|
msgr run "Running all formatters"
|
||||||
$0 dotfiles yamlfmt
|
$0 dotfiles yamlfmt
|
||||||
$0 dotfiles shfmt
|
$0 dotfiles shfmt
|
||||||
msg_done "...done!"
|
msgr run_done "...done!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
reset_all)
|
reset_all)
|
||||||
msg_ok "Running all reset commands"
|
msgr ok "Running all reset commands"
|
||||||
$0 dotfiles reset_nvim
|
$0 dotfiles reset_nvim
|
||||||
;;
|
;;
|
||||||
|
|
||||||
reset_nvim)
|
reset_nvim)
|
||||||
|
msgr run "Cleaning nvim state, cache and config"
|
||||||
rm -rf \
|
rm -rf \
|
||||||
~/.local/share/nvim \
|
~/.local/share/nvim \
|
||||||
~/.local/state/nvim \
|
~/.local/state/nvim \
|
||||||
~/.cache/nvim \
|
~/.cache/nvim \
|
||||||
~/.config/nvim
|
~/.config/nvim
|
||||||
msg_ok "Deleted old nvim files (share, state and cache + config)"
|
msgr ok "Deleted old nvim files (share, state and cache + config)"
|
||||||
ln -s "$DOTFILES/config/nvim" ~/.config/nvim
|
ln -s "$DOTFILES/config/nvim" ~/.config/nvim
|
||||||
msg_ok "Linked nvim and astronvim"
|
msgr ok "Linked nvim and astronvim"
|
||||||
x-have npm && $0 install npm
|
x-have npm && $0 install npm
|
||||||
msg_ok "Installed packages"
|
msgr ok "Installed packages"
|
||||||
msg_done "nvim reset!"
|
msgr run_done "nvim reset!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
yamlfmt)
|
yamlfmt)
|
||||||
# format yaml files
|
# format yaml files
|
||||||
x-have yamlfmt && yamlfmt -conf "$DOTFILES/.yamlfmt"
|
x-have yamlfmt && yamlfmt -conf "$DOTFILES/.yamlfmt"
|
||||||
! x-have yamlfmt && msg_err "yamlfmt not found"
|
! x-have yamlfmt && msgr err "yamlfmt not found"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
shfmt)
|
shfmt)
|
||||||
# If system doesn't have fd or shfmt installed, exit
|
# If system doesn't have fd or shfmt installed, exit
|
||||||
! x-have fd && msg_err "fd not found, install with asdf"
|
! x-have fd && msgr err "fd not found, install it to continue"
|
||||||
! x-have shfmt && msg_err "shfmt not found, install with asdf"
|
! x-have shfmt && msgr err "shfmt not found, install it to continue"
|
||||||
# Format shell scripts according to following rules.
|
# Format shell scripts according to following rules.
|
||||||
fd --full-path "$DOTFILES" -tx \
|
fd --full-path "$DOTFILES" -tx \
|
||||||
--hidden \
|
--hidden \
|
||||||
@@ -663,9 +633,10 @@ section_dotfiles()
|
|||||||
--func-next-line --list --write \
|
--func-next-line --list --write \
|
||||||
--indent 2 --case-indent --space-redirects \
|
--indent 2 --case-indent --space-redirects \
|
||||||
--binary-next-line {} \;
|
--binary-next-line {} \;
|
||||||
msg_yay "dotfiles have been shfmt formatted!"
|
msgr yay "dotfiles have been shfmt formatted!"
|
||||||
;;
|
;;
|
||||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
|
||||||
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -685,11 +656,58 @@ section_check()
|
|||||||
[[ $2 == "" ]] && echo "$X_ARCH" && exit 0
|
[[ $2 == "" ]] && echo "$X_ARCH" && exit 0
|
||||||
[[ $X_ARCH == "$2" ]] && exit 0 || exit 1
|
[[ $X_ARCH == "$2" ]] && exit 0 || exit 1
|
||||||
;;
|
;;
|
||||||
|
|
||||||
h | host | hostname)
|
h | host | hostname)
|
||||||
[[ $2 == "" ]] && echo "$X_HOSTNAME" && exit 0
|
[[ $2 == "" ]] && echo "$X_HOSTNAME" && exit 0
|
||||||
[[ $X_HOSTNAME == "$2" ]] && exit 0 || exit 1
|
[[ $X_HOSTNAME == "$2" ]] && exit 0 || exit 1
|
||||||
;;
|
;;
|
||||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
|
||||||
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
section_scripts()
|
||||||
|
{
|
||||||
|
USAGE_PREFIX="$SCRIPT scripts <command>"
|
||||||
|
|
||||||
|
# Get description from a file
|
||||||
|
get_script_description()
|
||||||
|
{
|
||||||
|
local file
|
||||||
|
local desc
|
||||||
|
file="$1"
|
||||||
|
desc=$(sed -n '/@description/s/.*@description *\(.*\)/\1/p' "$file" | head -1)
|
||||||
|
echo "${desc:-No description available}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Collect scripts and their descriptions
|
||||||
|
declare -A SCRIPT_MENU
|
||||||
|
for script in "$DOTFILES/scripts/install-"*.sh; do
|
||||||
|
if [ -f "$script" ]; then
|
||||||
|
name=$(basename "$script" .sh | sed 's/install-//')
|
||||||
|
desc=$(get_script_description "$script")
|
||||||
|
SCRIPT_MENU[$name]="$desc"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
"")
|
||||||
|
# Show the menu
|
||||||
|
local menu_items=()
|
||||||
|
for name in "${!SCRIPT_MENU[@]}"; do
|
||||||
|
menu_items+=("$name:${SCRIPT_MENU[$name]}")
|
||||||
|
done
|
||||||
|
menu_builder "$USAGE_PREFIX" "${menu_items[@]}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Run the chosen script
|
||||||
|
script_path="$DOTFILES/scripts/install-$1.sh"
|
||||||
|
if [ -f "$script_path" ]; then
|
||||||
|
bash "$script_path"
|
||||||
|
else
|
||||||
|
msgr err "Script not found: $1"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -699,7 +717,7 @@ section_tests()
|
|||||||
USAGE_PREFIX="$SCRIPT tests <command>"
|
USAGE_PREFIX="$SCRIPT tests <command>"
|
||||||
|
|
||||||
MENU=(
|
MENU=(
|
||||||
"msg:List all log functions from shared.sh"
|
"msgr:List all available msgr message types"
|
||||||
"params:List all parameters"
|
"params:List all parameters"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -711,29 +729,29 @@ section_tests()
|
|||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
msg)
|
msg)
|
||||||
msg "msg"
|
# shellcheck disable=SC1010
|
||||||
msg_done "msg_done"
|
msgr done "msgr done"
|
||||||
msg_done_suffix "msg_done_suffix"
|
msgr done_suffix "msgr done_suffix"
|
||||||
msg_err "msg_err"
|
msgr err "msgr err"
|
||||||
msg_nested "msg_nested"
|
msgr nested "msgr nested"
|
||||||
msg_nested_done "msg_nested_done"
|
msgr nested_done "msgr nested_done"
|
||||||
msg_ok "msg_ok"
|
msgr ok "msgr ok"
|
||||||
msg_prompt "msg_prompt"
|
msgr prompt "msgr prompt"
|
||||||
msg_prompt_done "msg_prompt_done"
|
msgr prompt_done "msgr prompt_done"
|
||||||
msg_run "msg_run" "second_param"
|
msgr run "msgr run" "second_param"
|
||||||
msg_run_done "msg_run_done" "second_param"
|
msgr run_done "msgr run_done" "second_param"
|
||||||
msg_warn "msg_warn"
|
msgr warn "msgr warn"
|
||||||
msg_yay "msg_yay"
|
msgr yay "msgr yay"
|
||||||
msg_yay_done "msg_yay_done"
|
msgr yay_done "msgr yay_done"
|
||||||
;;
|
;;
|
||||||
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
echo ""
|
echo ""
|
||||||
msg_prompt "Usage: $SCRIPT <section> <command>"
|
msgr prompt "Usage: $SCRIPT <section> <command>"
|
||||||
echo $" Empty <command> prints <section> help."
|
echo $" Empty <command> prints <section> help."
|
||||||
echo ""
|
echo ""
|
||||||
section_install
|
section_install
|
||||||
@@ -748,6 +766,8 @@ usage()
|
|||||||
echo ""
|
echo ""
|
||||||
section_docs
|
section_docs
|
||||||
echo ""
|
echo ""
|
||||||
|
section_scripts
|
||||||
|
echo ""
|
||||||
section_helpers
|
section_helpers
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -764,6 +784,7 @@ main()
|
|||||||
dotfiles) section_dotfiles "$@" ;;
|
dotfiles) section_dotfiles "$@" ;;
|
||||||
helpers) section_helpers "$@" ;;
|
helpers) section_helpers "$@" ;;
|
||||||
docs) section_docs "$@" ;;
|
docs) section_docs "$@" ;;
|
||||||
|
scripts) section_scripts "$@" ;;
|
||||||
tests) section_tests "$@" ;;
|
tests) section_tests "$@" ;;
|
||||||
*) usage && exit 0 ;;
|
*) usage && exit 0 ;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ generate_tmux_keybindings()
|
|||||||
{
|
{
|
||||||
local tmux_keybindings_docs="$1"
|
local tmux_keybindings_docs="$1"
|
||||||
|
|
||||||
local cb="\n\`\`\`\n"
|
local cb="\n\`\`\`txt\n"
|
||||||
|
local cbe="\n\`\`\`\n"
|
||||||
local kb
|
local kb
|
||||||
kb=$(tmux lsk -Tprefix -N | sed -e 's/^/ /;')
|
kb=$(tmux lsk -Tprefix -N | sed -e 's/^/ /;')
|
||||||
local h="# tmux keybindings\n"
|
local h="# tmux keybindings\n"
|
||||||
@@ -33,7 +34,7 @@ generate_tmux_keybindings()
|
|||||||
kb="${kb//$HOME/\$HOME}"
|
kb="${kb//$HOME/\$HOME}"
|
||||||
|
|
||||||
msg "Outputting tmux keybindings to $tmux_keybindings_docs"
|
msg "Outputting tmux keybindings to $tmux_keybindings_docs"
|
||||||
echo -e "${h}${l}${cb}${kb}${cb}" > "$tmux_keybindings_docs"
|
echo -e "${h}${l}${cb}${kb}${cbe}" > "$tmux_keybindings_docs"
|
||||||
msg "Done!"
|
msg "Done!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Create file containing key mappings for Neovim
|
# @description Create file containing key mappings for Neovim
|
||||||
# Usage: ./create-nvim-keymaps.sh
|
# Usage: ./create-nvim-keymaps.sh
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Export oh-my-posh configuration as an image
|
|
||||||
#
|
|
||||||
# shellcheck source=shared.sh
|
|
||||||
source "${DOTFILES}/config/shared.sh"
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
cd "$DOTFILES" || msg_err "Failed to change directory to $DOTFILES"
|
|
||||||
|
|
||||||
oh-my-posh config export image \
|
|
||||||
--config "$OHMYPOSH_CFG" \
|
|
||||||
--output "$HOME/.dotfiles/.github/screenshots/oh-my-posh.png" \
|
|
||||||
--author "Ismo Vuorinen"
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Create file containing key mappings for wezterm
|
# @description Create file containing key mappings for wezterm
|
||||||
# Usage: ./create-wezterm-keymaps.sh
|
# Usage: ./create-wezterm-keymaps.sh
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
|
|||||||
@@ -1,126 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Install asdf and plugins I use
|
|
||||||
#
|
|
||||||
# It also updates asdf and the plugins, and then reshim asdf.
|
|
||||||
#
|
|
||||||
# Usage: ./install-asdf.sh [both|install|update|add_plugins]
|
|
||||||
# Author: Ismo Vuorinen <https://github.com/ivuorinen>
|
|
||||||
# License: MIT
|
|
||||||
#
|
|
||||||
source "${DOTFILES}/config/shared.sh"
|
|
||||||
|
|
||||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
|
||||||
export PATH="${ASDF_DIR}/bin:$PATH"
|
|
||||||
|
|
||||||
# If ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME is not set, set it
|
|
||||||
if [ -z "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}" ]; then
|
|
||||||
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg "Sourcing asdf in your shell"
|
|
||||||
. "$ASDF_DIR/asdf.sh"
|
|
||||||
|
|
||||||
ASDF_INSTALLABLES=(
|
|
||||||
"1password-cli:github.com/NeoHsu/asdf-1password-cli.git"
|
|
||||||
"age:github.com/threkk/asdf-age.git"
|
|
||||||
"bottom:github.com/carbonteq/asdf-btm.git"
|
|
||||||
"direnv:github.com/asdf-community/asdf-direnv.git"
|
|
||||||
"dotenv-linter:github.com/wesleimp/asdf-dotenv-linter.git"
|
|
||||||
"editorconfig-checker:github.com/gabitchov/asdf-editorconfig-checker.git"
|
|
||||||
"fd:gitlab.com/wt0f/asdf-fd.git"
|
|
||||||
"github-cli:github.com/bartlomiejdanek/asdf-github-cli.git"
|
|
||||||
"golang:github.com/asdf-community/asdf-golang.git"
|
|
||||||
"hadolint:github.com/devlincashman/asdf-hadolint.git"
|
|
||||||
"kubectl:github.com/asdf-community/asdf-kubectl.git"
|
|
||||||
"pre-commit:github.com/jonathanmorley/asdf-pre-commit.git"
|
|
||||||
"ripgrep:gitlab.com/wt0f/asdf-ripgrep.git"
|
|
||||||
"rust:github.com/code-lever/asdf-rust.git"
|
|
||||||
"shellcheck:github.com/luizm/asdf-shellcheck.git"
|
|
||||||
"shfmt:github.com/luizm/asdf-shfmt.git"
|
|
||||||
"terragrunt:github.com/ohmer/asdf-terragrunt.git"
|
|
||||||
"tf-summarize:github.com/adamcrews/asdf-tf-summarize.git"
|
|
||||||
"yamllint:github.com/ericcornelissen/asdf-yamllint.git"
|
|
||||||
"yq:github.com/sudermanjr/asdf-yq.git"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Function to update asdf and plugins
|
|
||||||
update_asdf()
|
|
||||||
{
|
|
||||||
asdf plugin add asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git
|
|
||||||
asdf install asdf-plugin-manager latest
|
|
||||||
asdf global asdf-plugin-manager "$(asdf latest asdf-plugin-manager)"
|
|
||||||
asdf-plugin-manager version
|
|
||||||
asdf-plugin-manager add-all
|
|
||||||
asdf-plugin-manager export > "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}"
|
|
||||||
|
|
||||||
asdf install
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
update_asdf_commands()
|
|
||||||
{
|
|
||||||
msg "Updating asdf commands using asdf-plugin-manager"
|
|
||||||
asdf-plugin-manager update-all
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to install asdf plugins
|
|
||||||
install_asdf_plugins()
|
|
||||||
{
|
|
||||||
msg "Installing asdf plugins"
|
|
||||||
for item in "${ASDF_INSTALLABLES[@]}"; do
|
|
||||||
CMD=$(echo "${item}" | awk -F ":" '{print $1}')
|
|
||||||
URL=$(echo "${item}" | awk -F ":" '{print $2}')
|
|
||||||
|
|
||||||
asdf plugin add "${CMD}" "https://${URL}"
|
|
||||||
done
|
|
||||||
|
|
||||||
msg "Exporting asdf plugin versions"
|
|
||||||
asdf-plugin-manager export > "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}"
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
reshim()
|
|
||||||
{
|
|
||||||
msg "Reshim asdf"
|
|
||||||
asdf reshim
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# create usage function
|
|
||||||
usage()
|
|
||||||
{
|
|
||||||
echo "Usage: $0 [both|install|add_plugins|update]"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
case $1 in
|
|
||||||
"both")
|
|
||||||
install_asdf_plugins
|
|
||||||
update_asdf
|
|
||||||
reshim
|
|
||||||
;;
|
|
||||||
"update")
|
|
||||||
update_asdf_commands
|
|
||||||
reshim
|
|
||||||
;;
|
|
||||||
"install")
|
|
||||||
update_asdf
|
|
||||||
reshim
|
|
||||||
;;
|
|
||||||
"add_plugins")
|
|
||||||
install_asdf_plugins
|
|
||||||
reshim
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@@ -1,22 +1,18 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Install cargo/rust packages.
|
# @description Install cargo/rust packages.
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
|
source "$HOME/.dotfiles/config/shared.sh"
|
||||||
|
|
||||||
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
|
msgr run "Starting to install rust/cargo packages"
|
||||||
exit 0
|
|
||||||
|
|
||||||
eval "$HOME/.dotfiles/config/shared.sh"
|
|
||||||
|
|
||||||
msg "Starting to install rust/cargo packages"
|
|
||||||
|
|
||||||
source "$CARGO_HOME/env"
|
source "$CARGO_HOME/env"
|
||||||
|
|
||||||
# If we have cargo install-update, use it first
|
# If we have cargo install-update, use it first
|
||||||
if command -v cargo-install-update &> /dev/null; then
|
if command -v cargo-install-update &> /dev/null; then
|
||||||
msg_run "Updating cargo packages with cargo install-update"
|
msgr run "Updating cargo packages with cargo install-update"
|
||||||
cargo install-update -a
|
cargo install-update -a
|
||||||
msg_done "Done with cargo install-update"
|
msgr run_done "Done with cargo install-update"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
packages=(
|
packages=(
|
||||||
@@ -55,8 +51,9 @@ install_packages()
|
|||||||
# Skip comments
|
# Skip comments
|
||||||
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
|
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
|
||||||
|
|
||||||
msg_run "Installing cargo package $pkg"
|
msgr run "Installing cargo package $pkg"
|
||||||
cargo install --jobs $BUILD_JOBS "$pkg"
|
cargo install --jobs $BUILD_JOBS "$pkg"
|
||||||
|
msgr run_done "Done installing $pkg"
|
||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -64,14 +61,14 @@ install_packages()
|
|||||||
# Function to perform additional steps for installed cargo packages
|
# Function to perform additional steps for installed cargo packages
|
||||||
post_install_steps()
|
post_install_steps()
|
||||||
{
|
{
|
||||||
msg_run "Now doing the next steps for cargo packages"
|
msgr run "Now doing the next steps for cargo packages"
|
||||||
|
|
||||||
# use bob to install latest stable nvim
|
# use bob to install latest stable nvim
|
||||||
if command -v bob &> /dev/null; then
|
if command -v bob &> /dev/null; then
|
||||||
bob use stable && x-path-append "$XDG_DATA_HOME/bob/nvim-bin"
|
bob use stable && x-path-append "$XDG_DATA_HOME/bob/nvim-bin"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_run "Removing cargo cache"
|
msgr run "Removing cargo cache"
|
||||||
cargo cache --autoclean
|
cargo cache --autoclean
|
||||||
msg_done "Done removing cargo cache"
|
msg_done "Done removing cargo cache"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# @description Update pure-bash-bible cheatsheets
|
||||||
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
|
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
source "${DOTFILES}/config/shared.sh"
|
source "${DOTFILES}/config/shared.sh"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Install PHP Package Manager Composer
|
# @description Install PHP Package Manager Composer
|
||||||
#
|
#
|
||||||
# shellcheck source="shared.sh"
|
# shellcheck source="shared.sh"
|
||||||
eval "$HOME/.dotfiles/config/shared.sh"
|
source "$HOME/.dotfiles/config/shared.sh"
|
||||||
|
|
||||||
if ! command -v php &> /dev/null; then
|
if ! command -v php &> /dev/null; then
|
||||||
msg_err "PHP Not Available, cannot install composer"
|
msg_err "PHP Not Available, cannot install composer"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Install NerdFonts
|
# @description Install NerdFonts
|
||||||
#
|
#
|
||||||
# shellcheck source="shared.sh"
|
# shellcheck source="shared.sh"
|
||||||
source "$DOTFILES/config/shared.sh"
|
source "$DOTFILES/config/shared.sh"
|
||||||
@@ -7,24 +7,21 @@ source "$DOTFILES/config/shared.sh"
|
|||||||
GIT_REPO="https://github.com/ryanoasis/nerd-fonts.git"
|
GIT_REPO="https://github.com/ryanoasis/nerd-fonts.git"
|
||||||
TMP_PATH="$XDG_CACHE_HOME/nerd-fonts"
|
TMP_PATH="$XDG_CACHE_HOME/nerd-fonts"
|
||||||
|
|
||||||
msg "-- NerdFonts --"
|
msgr run "Starting to install NerdFonts"
|
||||||
|
|
||||||
fonts=(
|
fonts=(
|
||||||
Hack
|
|
||||||
IntelOneMono
|
|
||||||
JetBrainsMono
|
JetBrainsMono
|
||||||
OpenDyslexic
|
OpenDyslexic
|
||||||
SpaceMono
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Function to clone or update the NerdFonts repository
|
# Function to clone or update the NerdFonts repository
|
||||||
clone_or_update_repo()
|
clone_or_update_repo()
|
||||||
{
|
{
|
||||||
if [ ! -d "$TMP_PATH" ]; then
|
if [ ! -d "$TMP_PATH" ]; then
|
||||||
git clone --quiet --filter=blob:none --sparse "$GIT_REPO" "$TMP_PATH"
|
git clone --quiet --filter=blob:none --sparse --depth=1 "$GIT_REPO" "$TMP_PATH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$TMP_PATH" || msg_err "No such folder $TMP_PATH"
|
cd "$TMP_PATH" || msgr err "No such folder $TMP_PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to add fonts to sparse-checkout
|
# Function to add fonts to sparse-checkout
|
||||||
@@ -36,7 +33,7 @@ add_fonts_to_sparse_checkout()
|
|||||||
# Skip comments
|
# Skip comments
|
||||||
if [[ ${font:0:1} == "#" ]]; then continue; fi
|
if [[ ${font:0:1} == "#" ]]; then continue; fi
|
||||||
|
|
||||||
msg_run "Adding $font to sparse-checkout"
|
msgr run "Adding $font to sparse-checkout"
|
||||||
git sparse-checkout add "patched-fonts/$font"
|
git sparse-checkout add "patched-fonts/$font"
|
||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
@@ -45,9 +42,9 @@ add_fonts_to_sparse_checkout()
|
|||||||
# Function to install NerdFonts
|
# Function to install NerdFonts
|
||||||
install_fonts()
|
install_fonts()
|
||||||
{
|
{
|
||||||
msg "Starting to install NerdFonts..."
|
msgr run "Starting to install NerdFonts..."
|
||||||
./install.sh -q -s ${fonts[*]}
|
./install.sh -q -s ${fonts[*]}
|
||||||
msg_ok "Done"
|
msgr run_done "Done"
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_tmp_path()
|
remove_tmp_path()
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Install fzf
|
|
||||||
#
|
|
||||||
|
|
||||||
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
# shellcheck source=shared.sh
|
|
||||||
eval "$DOTFILES/config/shared.sh"
|
|
||||||
|
|
||||||
FZF_GIT="https://github.com/junegunn/fzf.git"
|
|
||||||
FZF_PATH="${XDG_CONFIG_HOME}/fzf"
|
|
||||||
FZF_BUILD="/tmp/fzf"
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
if [ ! -d "$FZF_BUILD" ]; then
|
|
||||||
git clone --depth 1 "$FZF_GIT" "$FZF_BUILD"
|
|
||||||
"$FZF_BUILD/install" \
|
|
||||||
--xdg \
|
|
||||||
--bin
|
|
||||||
msg_done "fzf installed"
|
|
||||||
else
|
|
||||||
msg_done "fzf ($FZF_PATH/) already installed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Install GitHub CLI extensions
|
# @description Install GitHub CLI extensions
|
||||||
#
|
#
|
||||||
# shellcheck source="shared.sh"
|
# shellcheck source="shared.sh"
|
||||||
source "${DOTFILES}/config/shared.sh"
|
source "${DOTFILES}/config/shared.sh"
|
||||||
@@ -7,10 +7,10 @@ source "${DOTFILES}/config/shared.sh"
|
|||||||
# Enable verbosity with VERBOSE=1
|
# Enable verbosity with VERBOSE=1
|
||||||
VERBOSE="${VERBOSE:-0}"
|
VERBOSE="${VERBOSE:-0}"
|
||||||
|
|
||||||
msg_run "Installing gh (GitHub Client) extensions"
|
msgr run "Installing gh (GitHub Client) extensions"
|
||||||
|
|
||||||
if ! command -v gh &> /dev/null; then
|
if ! command -v gh &> /dev/null; then
|
||||||
msg_err "gh (GitHub Client) could not be found, please install it first"
|
msgr err "gh (GitHub Client) could not be found, please install it first"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ install_extensions()
|
|||||||
# Skip comments
|
# Skip comments
|
||||||
if [[ ${ext:0:1} == "#" ]]; then continue; fi
|
if [[ ${ext:0:1} == "#" ]]; then continue; fi
|
||||||
|
|
||||||
msg_nested "Installing $ext"
|
msgr nested "Installing $ext"
|
||||||
gh extension install "$ext"
|
gh extension install "$ext"
|
||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
@@ -52,7 +52,7 @@ install_extensions()
|
|||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
install_extensions
|
install_extensions
|
||||||
msg_ok "Done"
|
msgr run_done "Done"
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# @description Install git-crypt
|
||||||
#
|
#
|
||||||
# Install git-crypt
|
|
||||||
# NOTE: Experimental, wip
|
# NOTE: Experimental, wip
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
@@ -9,7 +9,7 @@ source "${DOTFILES}/config/shared.sh"
|
|||||||
# Enable verbosity with VERBOSE=1
|
# Enable verbosity with VERBOSE=1
|
||||||
VERBOSE="${VERBOSE:-0}"
|
VERBOSE="${VERBOSE:-0}"
|
||||||
|
|
||||||
msg_run "Installing git-crypt"
|
msgr run "Installing git-crypt"
|
||||||
|
|
||||||
if ! command -v git-crypt &> /dev/null; then
|
if ! command -v git-crypt &> /dev/null; then
|
||||||
REPO_URL="https://github.com/AGWA/git-crypt.git"
|
REPO_URL="https://github.com/AGWA/git-crypt.git"
|
||||||
@@ -23,8 +23,8 @@ if ! command -v git-crypt &> /dev/null; then
|
|||||||
cd "$BUILD_PATH" || msg_err "$BUILD_PATH not found"
|
cd "$BUILD_PATH" || msg_err "$BUILD_PATH not found"
|
||||||
make && make install PREFIX="$HOME/.local"
|
make && make install PREFIX="$HOME/.local"
|
||||||
else
|
else
|
||||||
msg_done "git-crypt ($CHECK_PATH) already installed"
|
msgr run_done "git-crypt ($CHECK_PATH) already installed"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_done "Done installing git-crypt"
|
msgr run_done "Done installing git-crypt"
|
||||||
|
|||||||
@@ -1,19 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Install Go packages
|
# @description Install Go packages
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
|
source "$DOTFILES/config/shared.sh"
|
||||||
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
eval "$DOTFILES/config/shared.sh"
|
|
||||||
|
|
||||||
# Enable verbosity with VERBOSE=1
|
# Enable verbosity with VERBOSE=1
|
||||||
VERBOSE="${VERBOSE:-0}"
|
VERBOSE="${VERBOSE:-0}"
|
||||||
|
|
||||||
msg_run "Installing go packages"
|
msgr run "Installing go packages"
|
||||||
|
|
||||||
! x-have "go" && msg "go hasn't been installed yet." && exit 0
|
! x-have "go" && msgr err "go hasn't been installed yet." && exit 0
|
||||||
|
|
||||||
packages=(
|
packages=(
|
||||||
# A shell parser, formatter, and interpreter with bash support; includes shfmt
|
# A shell parser, formatter, and interpreter with bash support; includes shfmt
|
||||||
@@ -49,7 +45,7 @@ install_packages()
|
|||||||
# Skip comments
|
# Skip comments
|
||||||
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
|
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
|
||||||
|
|
||||||
msg_nested "Installing go package: $pkg"
|
msgr nested "Installing go package: $pkg"
|
||||||
go install "$pkg"
|
go install "$pkg"
|
||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
@@ -58,23 +54,23 @@ install_packages()
|
|||||||
# Function to install completions and run actions for selected packages
|
# Function to install completions and run actions for selected packages
|
||||||
post_install()
|
post_install()
|
||||||
{
|
{
|
||||||
msg_run "Installing completions for selected packages"
|
msgr run "Installing completions for selected packages"
|
||||||
|
|
||||||
if command -v git-profile &> /dev/null; then
|
if command -v git-profile &> /dev/null; then
|
||||||
git-profile completion zsh > "$ZSH_CUSTOM_COMPLETION_PATH/_git-profile" \
|
git-profile completion zsh > "$ZSH_CUSTOM_COMPLETION_PATH/_git-profile" \
|
||||||
&& msg_ok "Installed completions for git-profile"
|
&& msgr run_done "Installed completions for git-profile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v antidot &> /dev/null; then
|
if command -v antidot &> /dev/null; then
|
||||||
antidot update \
|
antidot update \
|
||||||
&& msg_ok "Updated antidot database"
|
&& msgr run_done "Updated antidot database"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to clear go cache
|
# Function to clear go cache
|
||||||
clear_go_cache()
|
clear_go_cache()
|
||||||
{
|
{
|
||||||
msg_run "Clearing go cache"
|
msgr run "Clearing go cache"
|
||||||
go clean -cache -modcache
|
go clean -cache -modcache
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +79,7 @@ main()
|
|||||||
install_packages
|
install_packages
|
||||||
post_install
|
post_install
|
||||||
clear_go_cache
|
clear_go_cache
|
||||||
msg_ok "Done"
|
msgr run_done "Done"
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
# @description Sets macOS Defaults that I like
|
||||||
# set-macos-defaults.sh - Sets macOS Defaults that I like
|
|
||||||
#
|
#
|
||||||
# This script contains large portions from following scripts:
|
# This script contains large portions from following scripts:
|
||||||
# - https://github.com/freekmurze/dotfiles/blob/main/macos/set-defaults.sh
|
# - https://github.com/freekmurze/dotfiles/blob/main/macos/set-defaults.sh
|
||||||
#
|
|
||||||
|
|
||||||
[ "$(uname)" != "Darwin" ] && echo "Not a macOS system" && exit 0
|
[ "$(uname)" != "Darwin" ] && echo "Not a macOS system" && exit 0
|
||||||
|
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
eval "$HOME/.dotfiles/config/shared.sh"
|
source "$HOME/.dotfiles/config/shared.sh"
|
||||||
|
|
||||||
msg_run "Starting to set macOS defaults, these require sudo privileges:"
|
msgr run "Starting to set macOS defaults, these require sudo privileges:"
|
||||||
|
|
||||||
# Ask for the administrator password upfront
|
# Ask for the administrator password upfront
|
||||||
sudo -v
|
sudo -v
|
||||||
@@ -24,7 +22,7 @@ while true; do
|
|||||||
kill -0 "$$" || exit
|
kill -0 "$$" || exit
|
||||||
done 2> /dev/null &
|
done 2> /dev/null &
|
||||||
|
|
||||||
msg_nested "Change user shell to zsh if it is available and not the current"
|
msgr nested "Change user shell to zsh if it is available and not the current"
|
||||||
|
|
||||||
# Change user shell to zsh if not that already.
|
# Change user shell to zsh if not that already.
|
||||||
if hash zsh 2> /dev/null; then
|
if hash zsh 2> /dev/null; then
|
||||||
@@ -35,7 +33,7 @@ fi
|
|||||||
# General UI/UX #
|
# General UI/UX #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Setting General UI/UX settings"
|
msgr nested "Setting General UI/UX settings"
|
||||||
|
|
||||||
# Disable the sound effects on boot
|
# Disable the sound effects on boot
|
||||||
sudo nvram SystemAudioVolume=" "
|
sudo nvram SystemAudioVolume=" "
|
||||||
@@ -89,7 +87,7 @@ defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
|
|||||||
# SSD-specific tweaks #
|
# SSD-specific tweaks #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Setting SSD-specific tweaks"
|
msgr nested "Setting SSD-specific tweaks"
|
||||||
|
|
||||||
# Disable hibernation (speeds up entering sleep mode)
|
# Disable hibernation (speeds up entering sleep mode)
|
||||||
sudo pmset -a hibernatemode 0
|
sudo pmset -a hibernatemode 0
|
||||||
@@ -101,7 +99,7 @@ sudo pmset -a sms 0
|
|||||||
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
|
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for Trackpad, mouse, keyboard, Bluetooth accessories, and input"
|
msgr nested "Settings for Trackpad, mouse, keyboard, Bluetooth accessories, and input"
|
||||||
|
|
||||||
# Increase sound quality for Bluetooth headphones/headsets
|
# Increase sound quality for Bluetooth headphones/headsets
|
||||||
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80
|
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80
|
||||||
@@ -137,7 +135,7 @@ launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist 2> /dev/nul
|
|||||||
# Screen #
|
# Screen #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for Screen"
|
msgr nested "Settings for Screen"
|
||||||
|
|
||||||
# Require password immediately after sleep or screen saver begins
|
# Require password immediately after sleep or screen saver begins
|
||||||
defaults write com.apple.screensaver askForPassword -int 1
|
defaults write com.apple.screensaver askForPassword -int 1
|
||||||
@@ -147,7 +145,7 @@ defaults write com.apple.screensaver askForPasswordDelay -int 0
|
|||||||
# Finder #
|
# Finder #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for Finder"
|
msgr nested "Settings for Finder"
|
||||||
|
|
||||||
# Set Desktop as the default location for new Finder windows
|
# Set Desktop as the default location for new Finder windows
|
||||||
# For other paths, use `PfLo` and `file:///full/path/here/`
|
# For other paths, use `PfLo` and `file:///full/path/here/`
|
||||||
@@ -207,7 +205,7 @@ defaults write com.apple.finder FXInfoPanesExpanded -dict \
|
|||||||
# Screenshots #
|
# Screenshots #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for Screenshots"
|
msgr nested "Settings for Screenshots"
|
||||||
|
|
||||||
# Set default screenshot location
|
# Set default screenshot location
|
||||||
mkdir -p "$HOME/Documents/Screenshots"
|
mkdir -p "$HOME/Documents/Screenshots"
|
||||||
@@ -223,7 +221,7 @@ defaults write com.apple.screencapture "name" -string "screenshot"
|
|||||||
# Dock, Dashboard, and hot corners #
|
# Dock, Dashboard, and hot corners #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for Dock, Dashboard, and hot corners"
|
msgr nested "Settings for Dock, Dashboard, and hot corners"
|
||||||
|
|
||||||
# Prevent applications from bouncing in Dock
|
# Prevent applications from bouncing in Dock
|
||||||
defaults write com.apple.dock no-bouncing -bool true
|
defaults write com.apple.dock no-bouncing -bool true
|
||||||
@@ -255,7 +253,7 @@ defaults write com.apple.dock showhidden -bool true
|
|||||||
# Safari & WebKit #
|
# Safari & WebKit #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for Safari & WebKit"
|
msgr nested "Settings for Safari & WebKit"
|
||||||
|
|
||||||
# Enable Safari's debug menu
|
# Enable Safari's debug menu
|
||||||
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
|
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
|
||||||
@@ -281,7 +279,7 @@ defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
|
|||||||
# Activity Monitor #
|
# Activity Monitor #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for ActivityMonitor"
|
msgr nested "Settings for ActivityMonitor"
|
||||||
|
|
||||||
# Show the main window when launching Activity Monitor
|
# Show the main window when launching Activity Monitor
|
||||||
defaults write com.apple.ActivityMonitor OpenMainWindow -bool true
|
defaults write com.apple.ActivityMonitor OpenMainWindow -bool true
|
||||||
@@ -300,7 +298,7 @@ defaults write com.apple.ActivityMonitor SortDirection -int 0
|
|||||||
# Address Book, Dashboard, iCal, TextEdit, and Disk Utility #
|
# Address Book, Dashboard, iCal, TextEdit, and Disk Utility #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for Address Book, Dashboard, iCal, TextEdit, and Disk Utility"
|
msgr nested "Settings for Address Book, Dashboard, iCal, TextEdit, and Disk Utility"
|
||||||
|
|
||||||
# Use plain text mode for new TextEdit documents
|
# Use plain text mode for new TextEdit documents
|
||||||
defaults write com.apple.TextEdit RichText -int 0
|
defaults write com.apple.TextEdit RichText -int 0
|
||||||
@@ -313,7 +311,7 @@ defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
|
|||||||
# Messages #
|
# Messages #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
msg_nested "Settings for Messages"
|
msgr nested "Settings for Messages"
|
||||||
|
|
||||||
# Disable smart quotes as it's annoying for messages that contain code
|
# Disable smart quotes as it's annoying for messages that contain code
|
||||||
defaults write com.apple.messageshelper.MessageController \
|
defaults write com.apple.messageshelper.MessageController \
|
||||||
@@ -327,7 +325,7 @@ defaults write com.apple.messageshelper.MessageController \
|
|||||||
-dict-add "continuousSpellCheckingEnabled" \
|
-dict-add "continuousSpellCheckingEnabled" \
|
||||||
-bool false
|
-bool false
|
||||||
|
|
||||||
msg_nested "Restarting applications to apply changes"
|
msgr nested "Restarting applications to apply changes"
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Kill affected applications #
|
# Kill affected applications #
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Install neofetch from source
|
|
||||||
#
|
|
||||||
# shellcheck source=shared.sh
|
|
||||||
source "$DOTFILES/config/shared.sh"
|
|
||||||
|
|
||||||
if ! declare -f msg > /dev/null; then
|
|
||||||
# Function to print messages if VERBOSE is enabled
|
|
||||||
# $1 - message (string)
|
|
||||||
msg()
|
|
||||||
{
|
|
||||||
[ "$VERBOSE" -eq 1 ] && echo "$1"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! declare -f msg_err > /dev/null; then
|
|
||||||
# Function to print error messages and exit
|
|
||||||
# $1 - error message (string)
|
|
||||||
msg_err()
|
|
||||||
{
|
|
||||||
echo "(!) ERROR: $1" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! declare -f msg_done > /dev/null; then
|
|
||||||
# Function to print done message
|
|
||||||
# $1 - message (string)
|
|
||||||
msg_done()
|
|
||||||
{
|
|
||||||
echo "✓ $1"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
NEOFETCH_VERSION="$(x-gh-get-latest-version dylanaraps/neofetch)"
|
|
||||||
NEOFETCH_REPO="https://github.com/dylanaraps/neofetch"
|
|
||||||
NEOFETCH_URL="${NEOFETCH_REPO}/archive/refs/tags/${NEOFETCH_VERSION}.tar.gz"
|
|
||||||
NEOFETCH_TEMP="/tmp/neofetch"
|
|
||||||
NEOFETCH_INSTALL_PREFIX="$HOME/.local"
|
|
||||||
|
|
||||||
# Enable verbosity with VERBOSE=1
|
|
||||||
VERBOSE="${VERBOSE:-0}"
|
|
||||||
|
|
||||||
# Function to install neofetch from source
|
|
||||||
install_neofetch()
|
|
||||||
{
|
|
||||||
LC_ALL=C
|
|
||||||
|
|
||||||
mkdir -p "$NEOFETCH_TEMP" "$NEOFETCH_INSTALL_PREFIX"
|
|
||||||
|
|
||||||
curl -L "$NEOFETCH_URL" -o "$NEOFETCH_TEMP.tar.gz"
|
|
||||||
tar zxvf "$NEOFETCH_TEMP.tar.gz" --directory="$NEOFETCH_TEMP"
|
|
||||||
cd "$NEOFETCH_TEMP/neofetch-$NEOFETCH_VERSION" \
|
|
||||||
&& make PREFIX="${NEOFETCH_INSTALL_PREFIX}" install \
|
|
||||||
&& rm -rf "$NEOFETCH_TEMP*" \
|
|
||||||
&& msg_yay "neofetch installed!"
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
if ! command -v neofetch &> /dev/null; then
|
|
||||||
install_neofetch
|
|
||||||
elif [ "$NEOFETCH_VERSION" != "$(neofetch --version | awk '{print $2}')" ]; then
|
|
||||||
install_neofetch
|
|
||||||
else
|
|
||||||
msg_done "neofetch v.${NEOFETCH_VERSION} already installed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Install npm packages globally.
|
# @description Install npm packages globally.
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
|
source "$DOTFILES/config/shared.sh"
|
||||||
eval "$DOTFILES/config/shared.sh"
|
|
||||||
|
|
||||||
# Enable verbosity with VERBOSE=1
|
# Enable verbosity with VERBOSE=1
|
||||||
VERBOSE="${VERBOSE:-0}"
|
VERBOSE="${VERBOSE:-0}"
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
# @description Install ntfy
|
||||||
# Install ntfy
|
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
eval "$DOTFILES/config/shared.sh"
|
source "$DOTFILES/config/shared.sh"
|
||||||
|
|
||||||
# Enable verbosity with VERBOSE=1
|
# Enable verbosity with VERBOSE=1
|
||||||
VERBOSE="${VERBOSE:-0}"
|
VERBOSE="${VERBOSE:-0}"
|
||||||
|
|
||||||
# Check if ntfy is already installed
|
# Check if ntfy is already installed
|
||||||
if x-have "ntfy"; then
|
if x-have "ntfy"; then
|
||||||
msg "ntfy already installed"
|
msgr done "ntfy already installed"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -23,7 +22,7 @@ case $(dfm check arch) in
|
|||||||
NTFY_ARCH="macOS_all"
|
NTFY_ARCH="macOS_all"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
msg_err "Unsupported OS"
|
msgr err "Unsupported OS"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -51,7 +50,7 @@ install_ntfy()
|
|||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
install_ntfy
|
install_ntfy
|
||||||
msg "ntfy installation complete"
|
msgr done "ntfy installation complete"
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Install oh-my-bash
|
|
||||||
#
|
|
||||||
# shellcheck source=shared.sh
|
|
||||||
source "${DOTFILES}/config/shared.sh"
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Enable verbosity with VERBOSE=1
|
|
||||||
VERBOSE="${VERBOSE:-0}"
|
|
||||||
|
|
||||||
OSH="$HOME/.local/share/oh-my-bash"
|
|
||||||
|
|
||||||
# Function to install oh-my-bash
|
|
||||||
install_oh_my_bash()
|
|
||||||
{
|
|
||||||
if [ ! -d "$OSH" ]; then
|
|
||||||
[ -f "$HOME/.bashrc" ] && mv "$HOME/.bashrc" "$HOME/.bashrc.temp"
|
|
||||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)" --unattended
|
|
||||||
[ -f "$HOME/.bashrc.temp" ] && mv "$HOME/.bashrc.temp" "$HOME/.bashrc"
|
|
||||||
msg "oh-my-bash installed to $OSH"
|
|
||||||
else
|
|
||||||
msg_done "oh-my-bash ($OSH) already installed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
install_oh_my_bash
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
#
|
|
||||||
# Install oh-my-posh
|
|
||||||
#
|
|
||||||
# shellcheck source=shared.sh
|
|
||||||
source "${DOTFILES}/config/shared.sh"
|
|
||||||
|
|
||||||
# Enable verbosity with VERBOSE=1
|
|
||||||
VERBOSE="${VERBOSE:-0}"
|
|
||||||
|
|
||||||
msg "Starting to install oh-my-posh"
|
|
||||||
|
|
||||||
# Install oh-my-posh
|
|
||||||
install_oh_my_posh()
|
|
||||||
{
|
|
||||||
curl -s https://ohmyposh.dev/install.sh | bash -s -- -d ~/.local/bin
|
|
||||||
msg "oh-my-posh installed to ~/.local/bin"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Initialize oh-my-posh
|
|
||||||
init_oh_my_posh()
|
|
||||||
{
|
|
||||||
eval "$(oh-my-posh init zsh --config $OHMYPOSH_CFG)"
|
|
||||||
msg "oh-my-posh initialized with config $OHMYPOSH_CFG"
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
install_oh_my_posh
|
|
||||||
init_oh_my_posh
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@@ -1,21 +1,20 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Install python/pip packages.
|
# @description Install python/pip packages.
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
|
|
||||||
source "${DOTFILES}/config/shared.sh"
|
source "${DOTFILES}/config/shared.sh"
|
||||||
|
|
||||||
# Enable verbosity with VERBOSE=1
|
# Enable verbosity with VERBOSE=1
|
||||||
VERBOSE="${VERBOSE:-0}"
|
VERBOSE="${VERBOSE:-0}"
|
||||||
|
|
||||||
msg "Starting to install pip packages"
|
msgr run "Starting to install pip packages"
|
||||||
|
|
||||||
if ! command -v python3 &> /dev/null; then
|
if ! command -v python3 &> /dev/null; then
|
||||||
msg_err "Could not find python3, something really weird is going on."
|
msgr err "Could not find python3, something really weird is going on."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_nested "Upgrading pip"
|
msgr nested "Upgrading pip"
|
||||||
python3 -m pip install --user --upgrade pip
|
python3 -m pip install --user --upgrade pip
|
||||||
|
|
||||||
packages=(
|
packages=(
|
||||||
@@ -32,11 +31,11 @@ install_packages()
|
|||||||
# Skip comments
|
# Skip comments
|
||||||
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
|
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
|
||||||
|
|
||||||
msg_nested "Installing pip package: $pkg"
|
msgr nested "Installing pip package: $pkg"
|
||||||
python3 -m pip install --user --upgrade "$pkg"
|
python3 -m pip install --user --upgrade "$pkg"
|
||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
install_packages
|
install_packages
|
||||||
msg_yay "Run pip package installations"
|
msgr run_done "Run pip package installations"
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
# @description Install XCode CLI Tools with osascript magic.
|
||||||
# Install XCode CLI Tools with osascript magic.
|
|
||||||
# Ismo Vuorinen <https://github.com/ivuorinen> 2018
|
# Ismo Vuorinen <https://github.com/ivuorinen> 2018
|
||||||
#
|
#
|
||||||
|
|
||||||
@@ -9,13 +8,13 @@ VERBOSE="${VERBOSE:-0}"
|
|||||||
|
|
||||||
# Check if the script is running on macOS
|
# Check if the script is running on macOS
|
||||||
if [ "$(uname)" != "Darwin" ]; then
|
if [ "$(uname)" != "Darwin" ]; then
|
||||||
echo "Not a macOS system"
|
msgr warn "Not a macOS system"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if xcode-select is available
|
# Check if xcode-select is available
|
||||||
if ! command -v xcode-select &> /dev/null; then
|
if ! command -v xcode-select &> /dev/null; then
|
||||||
msg_err "xcode-select could not be found, skipping"
|
msgr err "xcode-select could not be found, skipping"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -46,7 +45,7 @@ prompt_xcode_install()
|
|||||||
if [ "$XCODE_MESSAGE" = "button returned:OK" ]; then
|
if [ "$XCODE_MESSAGE" = "button returned:OK" ]; then
|
||||||
xcode-select --install
|
xcode-select --install
|
||||||
else
|
else
|
||||||
echo "You have cancelled the installation, please rerun the installer."
|
msgr warn "You have cancelled the installation, please rerun the installer."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -57,7 +56,7 @@ main()
|
|||||||
keep_alive_sudo
|
keep_alive_sudo
|
||||||
|
|
||||||
if [ -x "$XCODE_SWIFT_PATH" ]; then
|
if [ -x "$XCODE_SWIFT_PATH" ]; then
|
||||||
echo "You have swift from xcode-select. Continuing..."
|
msgr run "You have swift from xcode-select. Continuing..."
|
||||||
else
|
else
|
||||||
prompt_xcode_install
|
prompt_xcode_install
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
# @description Install z
|
||||||
# Install z
|
|
||||||
#
|
#
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
source "${DOTFILES}/config/shared.sh"
|
source "${DOTFILES}/config/shared.sh"
|
||||||
@@ -16,9 +15,9 @@ clone_z_repo()
|
|||||||
|
|
||||||
if [ ! -d "$bin_path" ]; then
|
if [ ! -d "$bin_path" ]; then
|
||||||
git clone "$git_path" "$bin_path"
|
git clone "$git_path" "$bin_path"
|
||||||
msg "z installed at $bin_path"
|
msgr run_done "z installed at $bin_path"
|
||||||
else
|
else
|
||||||
msg "z ($bin_path/) already installed"
|
msgr ok "z ($bin_path/) already installed"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
# Shared bash functions and helpers.
|
||||||
# Shared bash functions and helpers
|
|
||||||
# that can be sourced to other scripts.
|
|
||||||
|
|
||||||
# Helper env variables. Use like this: VERBOSE=1 ./script.sh
|
# Helper env variables. Use like this: VERBOSE=1 ./script.sh
|
||||||
: "${VERBOSE:=0}"
|
: "${VERBOSE:=0}"
|
||||||
|
|
||||||
# Set variable that checks if the shared.sh script has been sourced only once
|
# Set variable that checks if the shared.sh script has been
|
||||||
# If the script has been sourced more than once, the script not be sourced again
|
# sourced only once If the script has been sourced more than once,
|
||||||
|
# the script not be sourced again.
|
||||||
[ -z "$SHARED_SCRIPTS_SOURCED" ] && {
|
[ -z "$SHARED_SCRIPTS_SOURCED" ] && {
|
||||||
|
|
||||||
source "${DOTFILES}/config/shared.sh"
|
source "${DOTFILES}/config/shared.sh"
|
||||||
msgr warn "(!) shared.sh not sourced"
|
msgr warn "(!) shared.sh not sourced"
|
||||||
|
|
||||||
# Set variable that checks if the shared.sh script has been sourced only once
|
# Set variable that checks if the shared.sh script has been
|
||||||
|
# sourced only once.
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
export SHARED_SCRIPTS_SOURCED=1
|
export SHARED_SCRIPTS_SOURCED=1
|
||||||
}
|
}
|
||||||
|
|||||||
1
tools/dotbot-asdf
Submodule
1
tools/dotbot-asdf
Submodule
Submodule tools/dotbot-asdf added at 1ff44a2848
Reference in New Issue
Block a user