Compare commits

...

32 Commits

Author SHA1 Message Date
b1a7932b72 chore(scripts): tweaks to dfm and msgr 2023-09-28 22:39:25 +03:00
ced09160ab chore(nvim): updates, config changes, tweaking 2023-09-28 20:37:16 +03:00
594ee0d03c chore(scripts): more work on installation scripts 2023-09-28 18:59:21 +03:00
68ec53e29b chore(repo): ignore local/share/fonts 2023-09-28 18:49:52 +03:00
0c8b075689 fix(config): lakka zshrc fixes 2023-09-28 18:33:29 +03:00
0242bbbd73 chore(deps): nvim dependencies 2023-09-28 18:17:44 +03:00
31423c30b9 fix(scripts): have now uses which -s 2023-09-28 18:17:29 +03:00
fbdd2c7448 fix(shell): fixed zsh/bash config loading 2023-09-28 17:53:09 +03:00
0aff4784b1 feat(scripts): msgr helper script 2023-09-28 17:13:44 +03:00
10b18e8bcc chore(dotbot): remove dotbot-crontab 2023-09-28 10:44:27 +03:00
dc0a349139 chore(config): add bob installed nvim to path 2023-09-28 09:38:55 +03:00
3ac1fac444 feat(nvim): Switched from brew nvim to bob-nvim 2023-09-27 15:25:33 +03:00
5bf4ea462b chore(config): Configuration tweaks 2023-09-27 15:22:42 +03:00
1d056988f4 feat(lint): added my linting configs 2023-09-27 14:25:53 +03:00
2415dff0e2 feat(scripts): dfu - dotfiles update function 2023-09-27 11:08:44 +03:00
d891d5a3c5 chore(deps): nvim deps update 2023-09-27 11:07:34 +03:00
f48813ff85 chore(config): Tweaks to fonts, app title bar, etc 2023-09-27 11:07:15 +03:00
a87b33b8c2 chore(shell): make everything bit faster 2023-09-27 10:38:10 +03:00
6f854ddbfd chore(lint): linting, tweaks, cleanup 2023-09-25 12:17:14 +03:00
748e5bb561 feat(dotbot): plugins: pipx, snap and crontab 2023-09-25 11:51:23 +03:00
67867b57cd feat(bin): x-git-largest-files.py python 3 version 2023-09-25 10:24:21 +03:00
91734ffa15 chore(config): tweaks to gh and tmux configs 2023-09-25 09:10:13 +03:00
5364bef678 fix(dotbot): git host overrides, nvm default pkgs 2023-09-25 08:28:11 +03:00
50b4f5c60f chore(config): alacritty font style 2023-09-25 00:56:46 +03:00
7cd508a727 chore(brew): update Brewfile 2023-09-25 00:56:24 +03:00
bf2c665433 chore(dotbot): update linking to use whole folders 2023-09-25 00:52:48 +03:00
f5b1bf0915 feat(dfm): install nerdfonts 2023-09-24 23:46:09 +03:00
e0c6d7e4f4 chore(nvim): update plugins 2023-09-24 22:45:36 +03:00
1937e72f17 chore(config): starship username tweak 2023-09-24 22:45:11 +03:00
228ba78341 feat(nvim): nvim-ufo, indent-blankline, gitsigns 2023-09-21 13:14:49 +03:00
c8c34dcc81 chore(nvim): tweak settings, update plugins 2023-09-21 13:14:15 +03:00
3d65fdee43 chore(config): tweak starship config 2023-09-21 13:11:31 +03:00
82 changed files with 4550 additions and 1120 deletions

3
.commitlintrc.json Normal file
View File

@@ -0,0 +1,3 @@
{
"extends": ["@ivuorinen/commitlint-config"]
}

View File

@@ -19,11 +19,11 @@ indent_size = 1
indent_size = 1 indent_size = 1
indent_style = tab indent_style = tab
[{local/bin/*,**/*.sh,**/zshrc}] [{local/bin/*,**/*.sh,**/zshrc,config/*}]
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
space_redirects = true space_redirects = true
keep_padding = true keep_padding = false
function_next_line = true # --func-next-line function_next_line = true # --func-next-line

3
.eslintrc.json Normal file
View File

@@ -0,0 +1,3 @@
{
"extends": ["@ivuorinen"]
}

2
.gitattributes vendored
View File

@@ -13,7 +13,7 @@
## Handle line endings automatically for files detected as ## Handle line endings automatically for files detected as
## text and leave all files detected as binary untouched. ## text and leave all files detected as binary untouched.
## This will handle all files NOT defined below. ## This will handle all files NOT defined below.
* text=auto * text=auto oel=lf
# Source code # Source code
*.bash text eol=lf *.bash text eol=lf

View File

@@ -1,7 +1,7 @@
version: 2 version: 2
updates: updates:
# Maintain dependencies for GitHub Actions # Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions" - package-ecosystem: 'github-actions'
directory: "/" directory: '/'
schedule: schedule:
interval: "weekly" interval: 'weekly'

View File

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

View File

@@ -7,20 +7,21 @@ module.exports = {
{ types: ['build', 'ci'], label: '🏗️ Build System' }, { types: ['build', 'ci'], label: '🏗️ Build System' },
{ types: ['refactor'], label: '🪚 Refactors' }, { types: ['refactor'], label: '🪚 Refactors' },
{ types: ['doc', 'docs'], label: '📚 Documentation Changes' }, { types: ['doc', 'docs'], label: '📚 Documentation Changes' },
{ types: ['config'], label: '🪛 Configuration Changes' },
{ types: ['test', 'tests'], label: '🔍 Tests' }, { types: ['test', 'tests'], label: '🔍 Tests' },
{ types: ['style', 'codestyle'], label: '💅 Code Style Changes' }, { types: ['style', 'codestyle', 'lint'], label: '💅 Code Style Changes' },
{ types: ['chore', 'Chore'], label: '🧹 Chores' }, { types: ['chore', 'Chore', 'deps', 'Deps'], label: '🧹 Chores' },
{ types: ['other', 'Other'], label: 'Other Changes' }, { types: ['other', 'Other'], label: 'Other Changes' },
], ],
excludeTypes: [], excludeTypes: [],
renderTypeSection: function (label, commits) { renderTypeSection: function (label, commits) {
let text = `\n## ${ label }\n\n` let text = `\n## ${label}\n\n`
commits.forEach((commit) => { commits.forEach(commit => {
const scope = commit.scope ? `**${ commit.scope }:** ` : '' const scope = commit.scope ? `**${commit.scope}:** ` : ''
text += `- ${ scope }${ commit.subject }\n` text += `- ${scope}${commit.subject}\n`
}) })
return text return text
@@ -28,8 +29,8 @@ module.exports = {
renderChangelog: function (release, changes) { renderChangelog: function (release, changes) {
const now = new Date() const now = new Date()
const d = now.toISOString().substring(0, 10); const d = now.toISOString().substring(0, 10)
const header = `# ${ release } - ${ d }\n`; const header = `# ${release} - ${d}\n`
return header + changes + '\n\n' return header + changes + '\n\n'
}, },
} }

View File

@@ -12,7 +12,7 @@ jobs:
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
config_file: .github/tag-changelog-config.js config_file: .github/tag-changelog-config.js
- name: "Echo results" - name: 'Echo results'
id: output-changelog id: output-changelog
run: | run: |
echo "${{ steps.changelog.outputs.changes }}" echo "${{ steps.changelog.outputs.changes }}"

View File

@@ -2,7 +2,7 @@ name: Release Daily State # Workflow name displayed on GitHub
on: on:
workflow_dispatch: # Trigger manually workflow_dispatch: # Trigger manually
schedule: schedule:
- cron: "30 20 * * *" # UTC is 2-3 hours behind Europe/Helsinki, my timezone - cron: '30 20 * * *' # UTC is 2-3 hours behind Europe/Helsinki, my timezone
permissions: permissions:
contents: write contents: write
jobs: jobs:

View File

@@ -1,6 +1,6 @@
name: Update submodules name: Update submodules
on: on:
schedule: [{cron: 0 3 * * *}] schedule: [{ cron: 0 3 * * * }]
workflow_dispatch: workflow_dispatch:
permissions: permissions:
contents: write contents: write

2
.gitignore vendored
View File

@@ -13,4 +13,6 @@ ssh/local.d/*
!ssh/local.d/.gitkeep !ssh/local.d/.gitkeep
!.gitkeep !.gitkeep
.env .env
local/share/fonts/*
node_modules

6
.gitmodules vendored
View File

@@ -47,3 +47,9 @@
[submodule "tmux/tmux-window-name"] [submodule "tmux/tmux-window-name"]
path = config/tmux/plugins/tmux-window-name path = config/tmux/plugins/tmux-window-name
url = https://github.com/ofirgall/tmux-window-name.git url = https://github.com/ofirgall/tmux-window-name.git
[submodule "dotbot-snap"]
path = tools/dotbot-snap
url = https://github.com/DrDynamic/dotbot-snap.git
[submodule "dotbot-pip"]
path = tools/dotbot-pip
url = https://github.com/sobolevn/dotbot-pip.git

View File

@@ -3,4 +3,4 @@ config/cheat/cheatsheets/community/**
tools/dotbot/** tools/dotbot/**
tools/dotbot-brew/** tools/dotbot-brew/**
tools/dotbot-include/** tools/dotbot-include/**
node_modules

View File

@@ -1,5 +1,5 @@
{ {
"extends": "markdownlint/style/prettier", "extends": "@ivuorinen/markdownlint-config",
"code-block-style": { "code-block-style": {
"style": "fenced" "style": "fenced"
}, },

6
.markdownlintignore Normal file
View File

@@ -0,0 +1,6 @@
# only care about files that are under our control
config/cheat/cheatsheets/community/*
config/tmux/plugins/*
tools/*
node_modules/*

8
.prettierignore Normal file
View File

@@ -0,0 +1,8 @@
.mypy_cache/*
tools/dotbot*
local/bin/antigen.zsh
config/cheat/cheatsheets/community
config/tmux/plugins/*
lazy-lock.json
Brewfile.lock.json

14
.prettierrc.js Normal file
View File

@@ -0,0 +1,14 @@
module.exports = {
...require('@ivuorinen/prettier-config'),
trailingComma: 'all',
// Add custom options below:
overrides: [
{
files: '*.md',
options: {
printWidth: 120,
proseWrap: 'preserve',
},
},
],
}

View File

@@ -1,22 +0,0 @@
formatter:
type: basic
indent: 2
retain_line_breaks: false
disallow_anchors: false
max_line_length: 0
scan_folded_as_literal: false
indentless_arrays: false
doublestar: true
extensions:
- yaml
- yml
include:
- ./*.{yml,yaml}
- ./**/*.{yml,yaml}
exclude:
- ./tools/**
- ./config/nvim/**

View File

@@ -1,2 +0,0 @@
# .yamlignore

View File

@@ -1,9 +1,22 @@
#!/usr/bin/env bash #!/usr/bin/env bash
git submodule add --name dotbot -f https://github.com/anishathalye/dotbot.git tools/dotbot # dotbot and plugins
git submodule add --name dotbot-brew -f https://github.com/wren/dotbot-brew.git tools/dotbot-brew git submodule add --name dotbot \
git submodule add --name dotbot-include -f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include -f https://github.com/anishathalye/dotbot.git tools/dotbot
git submodule add --name cheat-community -f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community git submodule add --name dotbot-brew \
-f https://github.com/wren/dotbot-brew.git tools/dotbot-brew
git submodule add --name dotbot-include \
-f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
git submodule add --name dotbot-crontab \
-f https://github.com/codekansas/dotbot-crontab.git tools/dotbot-crontab
git submodule add --name dotbot-snap \
-f https://github.com/DrDynamic/dotbot-snap.git tools/dotbot-snap
git submodule add --name dotbot-pip \
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
# other repos
git submodule add --name cheat-community \
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
# tmux plugin manager and plugins # tmux plugin manager and plugins
git submodule add --name tmux/tpm \ git submodule add --name tmux/tpm \

23
base/bashrc Normal file → Executable file
View File

@@ -3,24 +3,13 @@
# Defaults # Defaults
export DOTFILES="$HOME/.dotfiles" export DOTFILES="$HOME/.dotfiles"
export DOTFILES_SHARED_LOADED=""
export DOTFILES_CURRENT_SHELL="bash"
# shellcheck source=scripts/shared.sh
source "$DOTFILES/scripts/shared.sh"
path_prepend "$DOTFILES/local/bin"
# Run x-load-configs in your terminal to reload the files.
function x-load-configs()
{
HOST="$(hostname -s)"
# Load the shell dotfiles, and then some:
for file in $DOTFILES/config/{exports,alias,functions}; do
[ -r "$file" ] && source "$file"
[ -r "$file-secret" ] && source "$file-secret"
[ -r "$file-$HOST" ] && source "$file-$HOST"
[ -r "$file-$HOST-secret" ] && source "$file-$HOST-secret"
done
}
x-load-configs x-load-configs
# Import ssh keys in keychain # Import ssh keys in keychain
ssh-add -A 2>/dev/null; ssh-add -A 2>/dev/null
# shellcheck source=../config/fzf/fzf.bash
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] \
&& source "${DOTFILES}/config/fzf/fzf.bash"

87
base/zshrc Normal file → Executable file
View File

@@ -3,66 +3,78 @@
# Defaults # Defaults
export DOTFILES="$HOME/.dotfiles" export DOTFILES="$HOME/.dotfiles"
export DOTFILES_CURRENT_SHELL="zsh"
# shellcheck source=scripts/shared.sh # shellcheck source=scripts/shared.sh
source "$DOTFILES/scripts/shared.sh" source "$DOTFILES/scripts/shared.sh"
path_prepend "$DOTFILES/local/bin"
export COMPLETION_WAITING_DOTS=true export COMPLETION_WAITING_DOTS=true
# Run x-load-configs in your terminal to reload the files.
function x-load-configs()
{
# Load the shell dotfiles, and then some:
for file in $DOTFILES/config/{exports,alias,functions}; do
HOST="$(hostname -s)"
# global (exports|alias|functions) file for all hosts
# shellcheck source=../config/exports
[ -r "$file" ] && source "$file"
# global secret file, git ignored
# shellcheck source=../config/exports-secret
[ -r "$file-secret" ] && source "$file-secret"
# host specific (exports|alias|functions) file
# shellcheck source=../config/exports
[ -r "$file-$HOST" ] && source "$file-$HOST"
# host specific (exports|alias|functions) file, git ignored
# shellcheck source=../config/exports
[ -r "$file-$HOST-secret" ] && source "$file-$HOST-secret"
done
}
x-load-configs x-load-configs
export HISTFILE="$XDG_STATE_HOME"/zsh/history
autoload -U colors zsh/terminfo
colors
export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion" export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
x-dc "$ZSH_CUSTOM_COMPLETION_PATH" x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
# Add completion scripts to zsh path # Add completion scripts to zsh path
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH" FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
autoload -Uz compinit
if type brew &>/dev/null if type brew &> /dev/null; then
then FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
fi fi
compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION"
# Try to load antigen, if present # Try to load antigen, if present
ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh" ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
# shellcheck source=../../.local/bin/antigen.zsh # shellcheck source=../../.local/bin/antigen.zsh
[[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH" [[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH"
# antigen is present # antigen is present
have antigen && { antigen use oh-my-zsh
antigen use oh-my-zsh
# config/functions export ZSH_TMUX_AUTOSTART=false
x-default-antigen-bundles export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
export ZSH_TMUX_UNICODE=true
export ZSH_TMUX_AUTOQUIT=false
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
antigen apply export NVM_DIR="$XDG_CONFIG_HOME/nvm"
} export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
# z, the zsh version
export ZSHZ_DATA="$XDG_STATE_HOME/z"
antigen bundle z
# these should be always available
antigen bundle tmux
antigen bundle colored-man-pages
antigen bundle command-not-found
antigen bundle ssh-agent
antigen bundle jreese/zsh-titles
antigen bundle unixorn/autoupdate-antigen.zshplugin
antigen bundle zsh-users/zsh-completions
# prettier history search
antigen bundle zsh-history-substring-search
bindkey "${terminfo[kcuu1]}" history-substring-search-up
bindkey "${terminfo[kcud1]}" history-substring-search-down
bindkey -M vicmd 'k' history-substring-search-up
bindkey -M vicmd 'j' history-substring-search-down
# these should be available if there's need
have brew && antigen bundle brew
have php && antigen bundle php
have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
# nvm is a strange beast
zstyle ':omz:plugins:nvm' autoload yes
antigen bundle nvm
# antigen bundle "$DOTFILES/config/zsh/plugins/nvm-auto-use"
# nice to have stuff
antigen bundle gcloud
# this needs to be the last item
antigen bundle zsh-users/zsh-syntax-highlighting
antigen apply
# shellcheck source=../config/fzf/fzf.zsh # shellcheck source=../config/fzf/fzf.zsh
[ -f "${DOTFILES}/config/fzf/fzf.zsh" ] \ [ -f "${DOTFILES}/config/fzf/fzf.zsh" ] \
@@ -70,4 +82,3 @@ have antigen && {
# Start starship # Start starship
eval "$(starship init zsh)" eval "$(starship init zsh)"

View File

@@ -1,3 +1,4 @@
---
# Configuration for Alacritty, the GPU enhanced terminal emulator # Configuration for Alacritty, the GPU enhanced terminal emulator
# Any items in the `env` entry below will be added as # Any items in the `env` entry below will be added as
@@ -16,6 +17,7 @@ env:
# Window dimensions in character columns and lines # Window dimensions in character columns and lines
# (changes require restart) # (changes require restart)
window: window:
dynamic_title: true
dimensions: dimensions:
columns: 130 columns: 130
lines: 40 lines: 40
@@ -38,19 +40,19 @@ draw_bold_text_with_bright_colors: true
font: font:
# The normal (roman) font face to use. # The normal (roman) font face to use.
normal: normal:
family: JetBrainsMono Nerd Font family: JetBrainsMonoNL Nerd Font Mono
# Style can be specified to pick a specific face. # Style can be specified to pick a specific face.
# style: Regular style: ExtraLight
# The bold font face # The bold font face
bold: bold:
family: JetBrainsMono Nerd Font family: JetBrainsMonoNL Nerd Font Mono
# Style can be specified to pick a specific face. # Style can be specified to pick a specific face.
style: Bold style: Bold
# The italic font face # The italic font face
italic: italic:
family: JetBrainsMono Nerd Font family: JetBrainsMonoNL Nerd Font Mono
# Style can be specified to pick a specific face. # Style can be specified to pick a specific face.
style: Italic style: Italic
@@ -76,82 +78,82 @@ debug.render_timer: false
# https://github.com/catppuccin/alacritty # https://github.com/catppuccin/alacritty
colors: colors:
primary: primary:
background: "#1E1E2E" # base background: '#1E1E2E' # base
foreground: "#CDD6F4" # text foreground: '#CDD6F4' # text
# Bright and dim foreground colors # Bright and dim foreground colors
dim_foreground: "#CDD6F4" # text dim_foreground: '#CDD6F4' # text
bright_foreground: "#CDD6F4" # text bright_foreground: '#CDD6F4' # text
# Cursor colors # Cursor colors
cursor: cursor:
text: "#1E1E2E" # base text: '#1E1E2E' # base
cursor: "#F5E0DC" # rosewater cursor: '#F5E0DC' # rosewater
vi_mode_cursor: vi_mode_cursor:
text: "#1E1E2E" # base text: '#1E1E2E' # base
cursor: "#B4BEFE" # lavender cursor: '#B4BEFE' # lavender
# Search colors # Search colors
search: search:
matches: matches:
foreground: "#1E1E2E" # base foreground: '#1E1E2E' # base
background: "#A6ADC8" # subtext0 background: '#A6ADC8' # subtext0
focused_match: focused_match:
foreground: "#1E1E2E" # base foreground: '#1E1E2E' # base
background: "#A6E3A1" # green background: '#A6E3A1' # green
footer_bar: footer_bar:
foreground: "#1E1E2E" # base foreground: '#1E1E2E' # base
background: "#A6ADC8" # subtext0 background: '#A6ADC8' # subtext0
# Keyboard regex hints # Keyboard regex hints
hints: hints:
start: start:
foreground: "#1E1E2E" # base foreground: '#1E1E2E' # base
background: "#F9E2AF" # yellow background: '#F9E2AF' # yellow
end: end:
foreground: "#1E1E2E" # base foreground: '#1E1E2E' # base
background: "#A6ADC8" # subtext0 background: '#A6ADC8' # subtext0
# Selection colors # Selection colors
selection: selection:
text: "#1E1E2E" # base text: '#1E1E2E' # base
background: "#F5E0DC" # rosewater background: '#F5E0DC' # rosewater
# Normal colors # Normal colors
normal: normal:
black: "#45475A" # surface1 black: '#45475A' # surface1
red: "#F38BA8" # red red: '#F38BA8' # red
green: "#A6E3A1" # green green: '#A6E3A1' # green
yellow: "#F9E2AF" # yellow yellow: '#F9E2AF' # yellow
blue: "#89B4FA" # blue blue: '#89B4FA' # blue
magenta: "#F5C2E7" # pink magenta: '#F5C2E7' # pink
cyan: "#94E2D5" # teal cyan: '#94E2D5' # teal
white: "#BAC2DE" # subtext1 white: '#BAC2DE' # subtext1
# Bright colors # Bright colors
bright: bright:
black: "#585B70" # surface2 black: '#585B70' # surface2
red: "#F38BA8" # red red: '#F38BA8' # red
green: "#A6E3A1" # green green: '#A6E3A1' # green
yellow: "#F9E2AF" # yellow yellow: '#F9E2AF' # yellow
blue: "#89B4FA" # blue blue: '#89B4FA' # blue
magenta: "#F5C2E7" # pink magenta: '#F5C2E7' # pink
cyan: "#94E2D5" # teal cyan: '#94E2D5' # teal
white: "#A6ADC8" # subtext0 white: '#A6ADC8' # subtext0
# Dim colors # Dim colors
dim: dim:
black: "#45475A" # surface1 black: '#45475A' # surface1
red: "#F38BA8" # red red: '#F38BA8' # red
green: "#A6E3A1" # green green: '#A6E3A1' # green
yellow: "#F9E2AF" # yellow yellow: '#F9E2AF' # yellow
blue: "#89B4FA" # blue blue: '#89B4FA' # blue
magenta: "#F5C2E7" # pink magenta: '#F5C2E7' # pink
cyan: "#94E2D5" # teal cyan: '#94E2D5' # teal
white: "#BAC2DE" # subtext1 white: '#BAC2DE' # subtext1
indexed_colors: indexed_colors:
- { index: 16, color: "#FAB387" } - { index: 16, color: '#FAB387' }
- { index: 17, color: "#F5E0DC" } - { index: 17, color: '#F5E0DC' }
# Visual Bell # Visual Bell
# #
@@ -260,7 +262,7 @@ key_bindings:
- { key: F10, chars: "\e[21~" } - { key: F10, chars: "\e[21~" }
- { key: F11, chars: "\e[23~" } - { key: F11, chars: "\e[23~" }
- { key: F12, chars: "\e[24~" } - { key: F12, chars: "\e[24~" }
- { key: Back, chars: "" } - { key: Back, chars: '' }
- { key: Back, mods: Alt, chars: "\e" } - { key: Back, mods: Alt, chars: "\e" }
- { key: Insert, chars: "\e[2~" } - { key: Insert, chars: "\e[2~" }
- { key: Delete, chars: "\e[3~" } - { key: Delete, chars: "\e[3~" }
@@ -298,7 +300,6 @@ mouse:
selection: selection:
semantic_escape_chars: ',│`|:"'' ()[]{}<>' semantic_escape_chars: ',│`|:"'' ()[]{}<>'
# Shell # Shell
# #
# You can set shell.program to the path of your favorite shell, e.g. /bin/fish. # You can set shell.program to the path of your favorite shell, e.g. /bin/fish.

View File

@@ -8,7 +8,7 @@ function x-set-php-aliases
{ {
have brew && { have brew && {
local php_versions=() local php_versions=()
while IFS="" read -r line; do php_versions+=("$line"); done < <(brew list | grep '^php') while IFS="" read -r line; do php_versions+=("$line"); done < <(brew_installed | grep '^php')
php_error_reporting='-d error_reporting=22527' php_error_reporting='-d error_reporting=22527'
@@ -58,6 +58,9 @@ fi
# Be nice # Be nice
alias please="sudo " alias please="sudo "
# Color the grep output
alias grep='grep --color'
! have eza && alias ls='ls --color=auto' ! have eza && alias ls='ls --color=auto'
have eza && { have eza && {
alias ls='eza -h -s=type --git --icons --group-directories-first' alias ls='eza -h -s=type --git --icons --group-directories-first'
@@ -68,9 +71,12 @@ alias ..="cd .."
alias ...="cd ../.." alias ...="cd ../.."
alias ....="cd ../../.." alias ....="cd ../../.."
# Colors for ls # cd to git root directory
alias ll="ls -l" alias cdgr='cd "$(git root)"'
alias l="ls"
# Shortcuts for listing
alias ll="ls -la"
alias l="ls -a"
# Prevent common typos # Prevent common typos
alias cd..="cd .." alias cd..="cd .."
@@ -79,12 +85,6 @@ alias sl="ls"
# List only directories # List only directories
alias lsd="ls -lF | grep '^d'" alias lsd="ls -lF | grep '^d'"
# Recursively delete `.pyc` files
alias rmpyc="find . -type f -name '*.pyc' -ls -delete"
# Recursively delete `.DS_Store` files
alias rmds="find . -type f -name '*.DS_Store' -ls -delete"
# IP addresses # IP addresses
alias ip="dig +short myip.opendns.com @resolver1.opendns.com" alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en1" alias localip="ipconfig getifaddr en1"
@@ -118,6 +118,10 @@ alias ta='tmux attach || tmux'
alias watchx='watch -dpbc' alias watchx='watch -dpbc'
# delete .DS_Store files # delete .DS_Store files
alias zapds='find . -name ".DS_Store" -print -delete' alias zapds='find . -name ".DS_Store" -print -delete'
# Recursively delete `.pyc` files
alias zappyc="find . -type f -name '*.pyc' -ls -delete"
# Run all zaps
alias zapall="zapds && zappyc"
# tail with follow flag on # tail with follow flag on
alias t='tail -f' alias t='tail -f'
# directory usage, return only the total # directory usage, return only the total

View File

@@ -6,7 +6,7 @@ colorize: true
# Which 'chroma' colorscheme should be applied to the output? # Which 'chroma' colorscheme should be applied to the output?
# Options are available here: # Options are available here:
# https://github.com/alecthomas/chroma/tree/master/styles # https://github.com/alecthomas/chroma/tree/master/styles
style: "catppuccin" style: 'catppuccin'
# Which 'chroma' "formatter" should be applied? # Which 'chroma' "formatter" should be applied?
# One of: "terminal", "terminal256", "terminal16m" # One of: "terminal", "terminal256", "terminal16m"
formatter: terminal256 formatter: terminal256
@@ -74,7 +74,6 @@ cheatpaths:
path: ~/.dotfiles/config/cheat/cheatsheets/tldr path: ~/.dotfiles/config/cheat/cheatsheets/tldr
tags: [tldr] tags: [tldr]
readonly: true readonly: true
# While it requires no configuration here, it's also worth noting that # While it requires no configuration here, it's also worth noting that
# cheat will automatically append directories named '.cheat' within the # cheat will automatically append directories named '.cheat' within the
# current working directory to the 'cheatpath'. This can be very useful if # current working directory to the 'cheatpath'. This can be very useful if

View File

@@ -4,7 +4,7 @@
export DOTFILES="$HOME/.dotfiles" export DOTFILES="$HOME/.dotfiles"
source "$DOTFILES/scripts/shared.sh" source "$DOTFILES/scripts/shared.sh"
path_append "$DOTFILES/local/bin" path_prepend "$DOTFILES/local/bin"
# Explicitly set XDG folders # Explicitly set XDG folders
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
@@ -21,12 +21,7 @@ path_append "/opt/homebrew/bin"
have brew && eval "$(brew shellenv)" have brew && eval "$(brew shellenv)"
path_append "/usr/local/bin" path_append "/usr/local/bin"
path_append "$XDG_BIN_HOME" path_prepend "$XDG_BIN_HOME"
# brew, https://brew.sh
have brew && {
have_brew python && path_append "$(brew --prefix python)/bin"
}
source "$DOTFILES/config/exports-shell" source "$DOTFILES/config/exports-shell"
source "$DOTFILES/config/exports-apps" source "$DOTFILES/config/exports-apps"

View File

@@ -2,7 +2,8 @@
# shellcheck shell=bash # shellcheck shell=bash
# shellcheck enable=external-sources # shellcheck enable=external-sources
# shellcheck disable=1091,2139 # shellcheck disable=1091,2139
# vim: filetype=zsh # vim: filetype=bash
export DOTFILES="$HOME/.dotfiles" export DOTFILES="$HOME/.dotfiles"
source "$DOTFILES/scripts/shared.sh" source "$DOTFILES/scripts/shared.sh"
@@ -17,41 +18,34 @@ export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible" export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg" export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache" export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
have ansible && { x-dc "$ANSIBLE_HOME"
x-dc "$ANSIBLE_HOME" x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
}
export ANDROID_HOME="$XDG_DATA_HOME/android" export ANDROID_HOME="$XDG_DATA_HOME/android"
# bob manages nvim versions
have bob && {
path_prepend "$XDG_DATA_HOME/bob/nvim-bin"
have nvim && export EDITOR="nvim"
}
export HOMEBREW_NO_ENV_HINTS=true export HOMEBREW_NO_ENV_HINTS=true
# composer, https://getcomposer.org/ # composer, https://getcomposer.org/
export COMPOSER_HOME="$XDG_STATE_HOME/composer" export COMPOSER_HOME="$XDG_STATE_HOME/composer"
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin" export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
have composer && { path_append "$COMPOSER_BIN"
export PATH="$COMPOSER_BIN:$PATH"
}
# docker, https://docs.docker.com/engine/reference/commandline/cli/ # docker, https://docs.docker.com/engine/reference/commandline/cli/
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker" export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
have docker && { x-dc "$DOCKER_CONFIG"
x-dc "$DOCKER_CONFIG" # Docker: Disable snyk ad
# Docker: Disable snyk ad export DOCKER_SCAN_SUGGEST=false
export DOCKER_SCAN_SUGGEST=false
}
# ffmpeg # ffmpeg
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg" export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
have ffmpeg && x-dc "$FFMPEG_DATADIR" have ffmpeg && x-dc "$FFMPEG_DATADIR"
# gcloud
have gcloud && {
GCLOUD_LOC=$(gcloud info --format="value(installation.sdk_root)" --quiet)
[[ -f "$GCLOUD_LOC/path.zsh.inc" ]] && builtin source "$GCLOUD_LOC/path.zsh.inc"
[[ -f "$GCLOUD_LOC/completion.zsh.inc" ]] && builtin source "$GCLOUD_LOC/completion.zsh.inc"
}
# GnuPG # GnuPG
export GNUPGHOME="$XDG_DATA_HOME/gnupg" export GNUPGHOME="$XDG_DATA_HOME/gnupg"
@@ -71,17 +65,7 @@ have irssi && {
export NBRC_PATH="$XDG_CONFIG_HOME/nbrc" export NBRC_PATH="$XDG_CONFIG_HOME/nbrc"
export NB_DIR="$XDG_STATE_HOME/nb" export NB_DIR="$XDG_STATE_HOME/nb"
# nvm, the node version manager # NPM: Add npm packages to path
export NVM_LAZY_LOAD=true
export NVM_COMPLETION=true
export NVM_AUTO_USE=true
export NVM_DIR="$XDG_CONFIG_HOME/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
# Add npm packages to path
have node && { have node && {
NVM_NODE_BIN_DIR="$(dirname "$(which node)")" NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
path_append "$NVM_NODE_BIN_DIR" path_append "$NVM_NODE_BIN_DIR"
@@ -90,8 +74,10 @@ have node && {
# op (1Password cli) is present # op (1Password cli) is present
export OP_CACHE="$XDG_STATE_HOME/1password" export OP_CACHE="$XDG_STATE_HOME/1password"
have op && { have op && {
eval "$(op completion zsh)" [ "$DOTFILES_CURRENT_SHELL" = "zsh" ] && {
compdef _op op eval "$(op completion zsh)"
compdef _op op
}
} }
# Python # Python
@@ -100,8 +86,7 @@ have op && {
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs" export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
export PYENV_ROOT="$XDG_STATE_HOME/pyenv" export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
have pyenv && { have pyenv && {
path_append "$(pyenv root)/shims" path_append "$PYENV_ROOT/shims"
path_append "$PYENV_ROOT/bin"
eval "$(pyenv init -)" eval "$(pyenv init -)"
} }
@@ -115,10 +100,14 @@ export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
export RBENV_ROOT="$XDG_STATE_HOME/rbenv" export RBENV_ROOT="$XDG_STATE_HOME/rbenv"
x-dc "$RBENV_ROOT" x-dc "$RBENV_ROOT"
have gem && path_append "$(gem environment gemdir)/bin" have gem && path_append "${GEM_HOME}/bin"
have rbenv && eval "$(rbenv init - zsh)" have rbenv && {
[ "$DOTFILES_CURRENT_SHELL" = "zsh" ] && eval "$(rbenv init - zsh)"
[ "$DOTFILES_CURRENT_SHELL" = "bash" ] && eval "$(rbenv init - bash)"
}
# Rust / cargo # Rust / cargo
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
export CARGO_HOME="$XDG_DATA_HOME/cargo" export CARGO_HOME="$XDG_DATA_HOME/cargo"
path_append "$CARGO_HOME/bin" path_append "$CARGO_HOME/bin"
@@ -138,10 +127,6 @@ export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime" export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
x-dc "$WAKATIME_HOME" x-dc "$WAKATIME_HOME"
# z, https://github.com/rupa/z
export _Z_DATA="$XDG_STATE_HOME/z"
[[ -f "$XDG_BIN_HOME/z/z.sh" ]] && source "$XDG_BIN_HOME/z/z.sh"
# Misc # Misc
export BAT_THEME="ansi" export BAT_THEME="ansi"
export CHEAT_USE_FZF=true export CHEAT_USE_FZF=true

View File

@@ -5,3 +5,16 @@ have luarocks && $(luarocks path --bin)
path_append "$HOME/.local/go/bin" path_append "$HOME/.local/go/bin"
alias logrotate='/usr/sbin/logrotate -s $HOME/logs/state'
alias nano='nano -wS -$'
alias gpg=gpg2
ACME_PATH="$HOME/.acme.sh"
# shellcheck source=$HOME/.acme.sh/acme.sh.env
[[ -s "$ACME_PATH/acme.sh.env" ]] && . "$ACME_PATH/acme.sh.env"
export RVM_PATH="$HOME/.rvm"
export PATH="$RVM_PATH/bin:$PATH"
# shellcheck source=$HOME/.rvm/scripts/rvm
[[ -s "$RVM_PATH/scripts/rvm" ]] && source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*

View File

@@ -2,6 +2,7 @@
# shellcheck shell=bash # shellcheck shell=bash
# shellcheck disable=1091,2046 # shellcheck disable=1091,2046
# vim: filetype=zsh # vim: filetype=zsh
export DOTFILES="$HOME/.dotfiles" export DOTFILES="$HOME/.dotfiles"
source "$DOTFILES/scripts/shared.sh" source "$DOTFILES/scripts/shared.sh"
@@ -23,9 +24,16 @@ export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
# And include the parameter for ZSH # And include the parameter for ZSH
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)" export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
# Less history location
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
# Highlight section titles in manual pages # Highlight section titles in manual pages
export LESS_TERMCAP_md="$ORANGE" export LESS_TERMCAP_md="$ORANGE"
# zsh autoloaded terminfo
export TERMINFO="$XDG_DATA_HOME"/terminfo
export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo
# Dont clear the screen after quitting a manual page # Dont clear the screen after quitting a manual page
export MANPAGER="less -X" export MANPAGER="less -X"
@@ -36,16 +44,15 @@ export GREP_OPTIONS="--color=auto"
# update the values of LINES and COLUMNS. # update the values of LINES and COLUMNS.
hash shopt 2> /dev/null && shopt -s checkwinsize hash shopt 2> /dev/null && shopt -s checkwinsize
# Load iterm2 shell integration
# https://iterm2.com/documentation-shell-integration.html
[[ -f "$XDG_BIN_HOME/iterm2_shell_integration.zsh" ]] \
&& source "$XDG_BIN_HOME/iterm2_shell_integration.zsh"
# Set dircolors based on the file, if it exists # Set dircolors based on the file, if it exists
have dircolors && eval $(dircolors "$XDG_CONFIG_HOME/dircolors") have dircolors && eval $(dircolors "$XDG_CONFIG_HOME/dircolors")
# If we are using zsh, color our dir lists and such # If we are using zsh, color our dir lists and such
if [ "$SHELL" = "$(which zsh)" ]; then if [ "$DOTFILES_CURRENT_SHELL" = "zsh" ]; then
autoload -U colors zsh/terminfo compinit
colors
compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION"
x-dc "$XDG_CACHE_HOME/zsh" x-dc "$XDG_CACHE_HOME/zsh"
x-dc "$XDG_STATE_HOME/zsh" x-dc "$XDG_STATE_HOME/zsh"
export HISTFILE="$XDG_STATE_HOME/zsh/history" export HISTFILE="$XDG_STATE_HOME/zsh/history"
@@ -55,10 +62,16 @@ if [ "$SHELL" = "$(which zsh)" ]; then
# fzf # fzf
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.zsh ] \ [ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.zsh ] \
&& source "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.zsh && source "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.zsh
# Load iterm2 shell integration
# https://iterm2.com/documentation-shell-integration.html
[[ -f "$XDG_BIN_HOME/iterm2_shell_integration.zsh" ]] \
&& source "$XDG_BIN_HOME/iterm2_shell_integration.zsh"
fi fi
# If we are using bash # If we are using bash
if [ "$SHELL" = "$(which bash)" ]; then if [ "$DOTFILES_CURRENT_SHELL" = "bash" ]; then
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.bash ] \ # shellcheck source=../config/fzf/fzf.bash
&& source "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.bash [ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
source "${DOTFILES}/config/fzf/fzf.bash"
fi fi

View File

@@ -6,6 +6,20 @@
export DOTFILES="$HOME/.dotfiles" export DOTFILES="$HOME/.dotfiles"
source "$DOTFILES/scripts/shared.sh" source "$DOTFILES/scripts/shared.sh"
# Alacritty preexec hook to update dynamic title
preexec()
{
print -Pn "\e]0;$1%~\a"
}
# Update dotfiles
dfu()
{
(
cd "$DOTFILES" && git pull --ff-only && ./install -q
)
}
# Weather in Tampere, or other city # Weather in Tampere, or other city
weather() weather()
{ {
@@ -57,31 +71,3 @@ scheduler()
sleep 60 sleep 60
done done
} }
# Defines default antigen bundles
x-default-antigen-bundles()
{
export ZSH_TMUX_AUTOSTART=false
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
export ZSH_TMUX_UNICODE=true
export ZSH_TMUX_AUTOQUIT=false
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
# these should be always available
antigen bundle tmux
antigen bundle colored-man-pages
antigen bundle command-not-found
antigen bundle ssh-agent
antigen bundle jreese/zsh-titles
antigen bundle unixorn/autoupdate-antigen.zshplugin
antigen bundle zsh-users/zsh-completions
antigen bundle zsh-users/zsh-syntax-highlighting
# these should be available if there's need
have brew && antigen bundle brew
# have nvm && antigen bundle nvm
have nvm && antigen bundle "$DOTFILES/config/zsh/plugins/nvm-auto-use"
have php && antigen bundle php
have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
have rvm && antigen bundle unixorn/rvm-plugin
}

View File

@@ -0,0 +1,19 @@
check_for_updates: true
excluded_labels:
- maintenance
- dependencies
file_name: CHANGELOG.md
logger: spinner
no_color: false
sections:
added:
- feature
- enhancement
changed:
- backwards-incompatible
fixed:
- bug
- bugfix
- documentation
show_unreleased: true
skip_entries_without_label: false

54
config/gh-dash/config.yml Normal file
View File

@@ -0,0 +1,54 @@
prSections:
- title: My Pull Requests
filters: is:open author:@me
- title: Needs My Review
filters: is:open review-requested:@me
- title: Involved
filters: is:open involves:@me -author:@me
issuesSections:
- title: My Issues
filters: is:open author:@me
- title: Assigned
filters: is:open assignee:@me
- title: Involved
filters: is:open involves:@me -author:@me
defaults:
preview:
open: true
width: 50
prsLimit: 20
issuesLimit: 20
view: prs
layout:
prs:
updatedAt:
width: 7
repo:
width: 15
author:
width: 15
assignees:
width: 20
hidden: true
base:
width: 15
hidden: true
lines:
width: 16
issues:
updatedAt:
width: 7
repo:
width: 15
creator:
width: 10
assignees:
width: 20
hidden: true
refetchIntervalMinutes: 30
keybindings:
issues: []
prs: []
repoPaths: {}
pager:
diff: ''

3
config/gh/hosts.yml Normal file
View File

@@ -0,0 +1,3 @@
github.com:
user: ivuorinen
git_protocol: https

View File

@@ -5,3 +5,9 @@
name = Ismo Vuorinen name = Ismo Vuorinen
email = ismo@ivuorinen.net email = ismo@ivuorinen.net
[github]
user = ivuorinen
[include]
path = ~/.config/git/overrides/config

2
config/git/overrides/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
!.gitkeep
config

View File

@@ -18,8 +18,6 @@ tap "xwmx/taps"
brew "act" brew "act"
# Mozilla CA certificate store # Mozilla CA certificate store
brew "ca-certificates" brew "ca-certificates"
# Cryptography and SSL/TLS Toolkit
brew "openssl@3"
# Interpreted, interactive, object-oriented programming language # Interpreted, interactive, object-oriented programming language
brew "python@3.11" brew "python@3.11"
# YAML Parser # YAML Parser
@@ -104,12 +102,20 @@ brew "dnsmasq"
brew "dog" brew "dog"
# Lightning-fast linter for .env files written in Rust # Lightning-fast linter for .env files written in Rust
brew "dotenv-linter" brew "dotenv-linter"
# Tool to verify that your files are in harmony with your .editorconfig
brew "editorconfig-checker"
# Useful examples at the command-line # Useful examples at the command-line
brew "eg-examples" brew "eg-examples"
# OpenType text shaping engine
brew "harfbuzz"
# Development kit for the Java programming language
brew "openjdk"
# Run arbitrary commands when files change # Run arbitrary commands when files change
brew "entr" brew "entr"
# Perl lib for reading and writing EXIF metadata # Perl lib for reading and writing EXIF metadata
brew "exiftool" brew "exiftool"
# Simple, fast and user-friendly alternative to find
brew "fd"
# Banner-like program prints strings as ASCII art # Banner-like program prints strings as ASCII art
brew "figlet" brew "figlet"
# Libraries to talk to Microsoft SQL Server and Sybase databases # Libraries to talk to Microsoft SQL Server and Sybase databases
@@ -152,8 +158,6 @@ brew "gpgme"
brew "gpg-tui" brew "gpg-tui"
# Image manipulation # Image manipulation
brew "netpbm" brew "netpbm"
# OpenType text shaping engine
brew "harfbuzz"
# Framework for layout and rendering of i18n text # Framework for layout and rendering of i18n text
brew "pango" brew "pango"
# Library to render SVG files using Cairo # Library to render SVG files using Cairo
@@ -196,8 +200,6 @@ brew "m-cli"
brew "mas" brew "mas"
# NCurses Disk Usage # NCurses Disk Usage
brew "ncdu" brew "ncdu"
# Ambitious Vim-fork focused on extensibility and agility
brew "neovim"
# HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server # HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
brew "nginx" brew "nginx"
# Port scanning utility for large networks # Port scanning utility for large networks
@@ -208,8 +210,6 @@ brew "nvm"
brew "openjdk@11" brew "openjdk@11"
# Generate clients, server & docs from an OpenAPI spec (v2, v3) # Generate clients, server & docs from an OpenAPI spec (v2, v3)
brew "openapi-generator" brew "openapi-generator"
# Development kit for the Java programming language
brew "openjdk"
# Swiss-army knife of markup format conversion # Swiss-army knife of markup format conversion
brew "pandoc" brew "pandoc"
# Highly capable, feature-rich programming language # Highly capable, feature-rich programming language
@@ -416,6 +416,7 @@ mas "Keynote", id: 409183694
mas "LastPass", id: 926036361 mas "LastPass", id: 926036361
mas "Numbers", id: 409203825 mas "Numbers", id: 409203825
mas "Pages", id: 409201541 mas "Pages", id: 409201541
mas "Pixelmator Pro", id: 1289583905
mas "Tailscale", id: 1475387142 mas "Tailscale", id: 1475387142
mas "Xcode", id: 497799835 mas "Xcode", id: 497799835
vscode "akamud.vscode-theme-onelight" vscode "akamud.vscode-theme-onelight"
@@ -485,6 +486,7 @@ vscode "Vue.volar"
vscode "Vue.vscode-typescript-vue-plugin" vscode "Vue.vscode-typescript-vue-plugin"
vscode "WakaTime.vscode-wakatime" vscode "WakaTime.vscode-wakatime"
vscode "wix.vscode-import-cost" vscode "wix.vscode-import-cost"
vscode "XadillaX.viml"
vscode "xdebug.php-debug" vscode "xdebug.php-debug"
vscode "xdebug.php-pack" vscode "xdebug.php-pack"
vscode "yinfei.luahelper" vscode "yinfei.luahelper"

View File

@@ -1,417 +1,410 @@
{ {
"Badge Text" : "", "Badge Text": "",
"Working Directory" : "\/Users\/ivuorinen\/Code", "Working Directory": "/Users/ivuorinen/Code",
"Prompt Before Closing 2" : false, "Prompt Before Closing 2": false,
"Selected Text Color" : { "Selected Text Color": {
"Red Component" : 0.80392156862745101, "Red Component": 0.80392156862745101,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.95686274509803926, "Blue Component": 0.95686274509803926,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.83921568627450982 "Green Component": 0.83921568627450982
}, },
"Rows" : 25, "Rows": 25,
"Ansi 11 Color" : { "Ansi 11 Color": {
"Red Component" : 0.97647058823529409, "Red Component": 0.97647058823529409,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.68627450980392157, "Blue Component": 0.68627450980392157,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.88627450980392153 "Green Component": 0.88627450980392153
}, },
"Use Italic Font" : true, "Use Italic Font": true,
"Foreground Color" : { "Foreground Color": {
"Red Component" : 0.80392156862745101, "Red Component": 0.80392156862745101,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.95686274509803926, "Blue Component": 0.95686274509803926,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.83921568627450982 "Green Component": 0.83921568627450982
}, },
"Right Option Key Sends" : 0, "Right Option Key Sends": 0,
"Character Encoding" : 4, "Character Encoding": 4,
"Selection Color" : { "Selection Color": {
"Red Component" : 0.34509803921568627, "Red Component": 0.34509803921568627,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.4392156862745098, "Blue Component": 0.4392156862745098,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.35686274509803922 "Green Component": 0.35686274509803922
}, },
"Blend" : 0.24709154211956524, "Blend": 0.24709154211956524,
"Mouse Reporting" : true, "Mouse Reporting": true,
"Cursor Boost" : 0, "Cursor Boost": 0,
"Ansi 4 Color" : { "Ansi 4 Color": {
"Red Component" : 0.53725490196078429, "Red Component": 0.53725490196078429,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.98039215686274506, "Blue Component": 0.98039215686274506,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.70588235294117652 "Green Component": 0.70588235294117652
}, },
"Non-ASCII Anti Aliased" : true, "Non-ASCII Anti Aliased": true,
"Sync Title" : false, "Sync Title": false,
"Badge Font" : "JetBrainsMonoNerdFontCompleteM-Bold", "Badge Font": "JetBrainsMonoNerdFontCompleteM-Bold",
"Disable Window Resizing" : true, "Disable Window Resizing": true,
"Description" : "Default", "Description": "Default",
"Close Sessions On End" : true, "Close Sessions On End": true,
"Jobs to Ignore" : [ "Jobs to Ignore": ["rlogin", "ssh", "slogin", "telnet"],
"rlogin", "Scrollback Lines": 0,
"ssh", "Draw Powerline Glyphs": true,
"slogin", "Flashing Bell": true,
"telnet" "Cursor Guide Color": {
], "Red Component": 0.80392156862745101,
"Scrollback Lines" : 0, "Color Space": "sRGB",
"Draw Powerline Glyphs" : true, "Blue Component": 0.95686274509803926,
"Flashing Bell" : true, "Alpha Component": 0.070000000000000007,
"Cursor Guide Color" : { "Green Component": 0.83921568627450982
"Red Component" : 0.80392156862745101,
"Color Space" : "sRGB",
"Blue Component" : 0.95686274509803926,
"Alpha Component" : 0.070000000000000007,
"Green Component" : 0.83921568627450982
}, },
"BM Growl" : true, "BM Growl": true,
"Ansi 3 Color" : { "Ansi 3 Color": {
"Red Component" : 0.97647058823529409, "Red Component": 0.97647058823529409,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.68627450980392157, "Blue Component": 0.68627450980392157,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.88627450980392153 "Green Component": 0.88627450980392153
}, },
"Icon" : 1, "Icon": 1,
"Use Non-ASCII Font" : false, "Use Non-ASCII Font": false,
"Link Color" : { "Link Color": {
"Red Component" : 0.53725490196078429, "Red Component": 0.53725490196078429,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.92156862745098034, "Blue Component": 0.92156862745098034,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.86274509803921573 "Green Component": 0.86274509803921573
}, },
"Shortcut" : "", "Shortcut": "",
"Background Image Location" : "", "Background Image Location": "",
"Bold Color" : { "Bold Color": {
"Red Component" : 0.80392156862745101, "Red Component": 0.80392156862745101,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.95686274509803926, "Blue Component": 0.95686274509803926,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.83921568627450982 "Green Component": 0.83921568627450982
}, },
"Use Cursor Guide" : false, "Use Cursor Guide": false,
"Unlimited Scrollback" : true, "Unlimited Scrollback": true,
"Custom Command" : "No", "Custom Command": "No",
"Title Components" : 512, "Title Components": 512,
"Keyboard Map" : { "Keyboard Map": {
"0xf700-0x260000" : { "0xf700-0x260000": {
"Action" : 10, "Action": 10,
"Text" : "[1;6A" "Text": "[1;6A"
}, },
"0x37-0x40000" : { "0x37-0x40000": {
"Action" : 11, "Action": 11,
"Text" : "0x1f" "Text": "0x1f"
}, },
"0x32-0x40000" : { "0x32-0x40000": {
"Action" : 11, "Action": 11,
"Text" : "0x00" "Text": "0x00"
}, },
"0xf709-0x20000" : { "0xf709-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[17;2~" "Text": "[17;2~"
}, },
"0xf70c-0x20000" : { "0xf70c-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[20;2~" "Text": "[20;2~"
}, },
"0xf729-0x20000" : { "0xf729-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2H" "Text": "[1;2H"
}, },
"0xf72b-0x40000" : { "0xf72b-0x40000": {
"Action" : 10, "Action": 10,
"Text" : "[1;5F" "Text": "[1;5F"
}, },
"0xf705-0x20000" : { "0xf705-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2Q" "Text": "[1;2Q"
}, },
"0xf703-0x260000" : { "0xf703-0x260000": {
"Action" : 10, "Action": 10,
"Text" : "[1;6C" "Text": "[1;6C"
}, },
"0xf700-0x220000" : { "0xf700-0x220000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2A" "Text": "[1;2A"
}, },
"0xf701-0x280000" : { "0xf701-0x280000": {
"Action" : 11, "Action": 11,
"Text" : "0x1b 0x1b 0x5b 0x42" "Text": "0x1b 0x1b 0x5b 0x42"
}, },
"0x38-0x40000" : { "0x38-0x40000": {
"Action" : 11, "Action": 11,
"Text" : "0x7f" "Text": "0x7f"
}, },
"0x33-0x40000" : { "0x33-0x40000": {
"Action" : 11, "Action": 11,
"Text" : "0x1b" "Text": "0x1b"
}, },
"0xf703-0x220000" : { "0xf703-0x220000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2C" "Text": "[1;2C"
}, },
"0xf701-0x240000" : { "0xf701-0x240000": {
"Action" : 10, "Action": 10,
"Text" : "[1;5B" "Text": "[1;5B"
}, },
"0xf70d-0x20000" : { "0xf70d-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[21;2~" "Text": "[21;2~"
}, },
"0xf702-0x260000" : { "0xf702-0x260000": {
"Action" : 10, "Action": 10,
"Text" : "[1;6D" "Text": "[1;6D"
}, },
"0xf729-0x40000" : { "0xf729-0x40000": {
"Action" : 10, "Action": 10,
"Text" : "[1;5H" "Text": "[1;5H"
}, },
"0xf706-0x20000" : { "0xf706-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2R" "Text": "[1;2R"
}, },
"0x34-0x40000" : { "0x34-0x40000": {
"Action" : 11, "Action": 11,
"Text" : "0x1c" "Text": "0x1c"
}, },
"0xf700-0x280000" : { "0xf700-0x280000": {
"Action" : 11, "Action": 11,
"Text" : "0x1b 0x1b 0x5b 0x41" "Text": "0x1b 0x1b 0x5b 0x41"
}, },
"0x2d-0x40000" : { "0x2d-0x40000": {
"Action" : 11, "Action": 11,
"Text" : "0x1f" "Text": "0x1f"
}, },
"0xf70e-0x20000" : { "0xf70e-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[23;2~" "Text": "[23;2~"
}, },
"0xf702-0x220000" : { "0xf702-0x220000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2D" "Text": "[1;2D"
}, },
"0xf703-0x280000" : { "0xf703-0x280000": {
"Action" : 11, "Action": 11,
"Text" : "0x1b 0x1b 0x5b 0x43" "Text": "0x1b 0x1b 0x5b 0x43"
}, },
"0xf700-0x240000" : { "0xf700-0x240000": {
"Action" : 10, "Action": 10,
"Text" : "[1;5A" "Text": "[1;5A"
}, },
"0xf707-0x20000" : { "0xf707-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2S" "Text": "[1;2S"
}, },
"0xf70a-0x20000" : { "0xf70a-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[18;2~" "Text": "[18;2~"
}, },
"0x35-0x40000" : { "0x35-0x40000": {
"Action" : 11, "Action": 11,
"Text" : "0x1d" "Text": "0x1d"
}, },
"0xf70f-0x20000" : { "0xf70f-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[24;2~" "Text": "[24;2~"
}, },
"0xf703-0x240000" : { "0xf703-0x240000": {
"Action" : 10, "Action": 10,
"Text" : "[1;5C" "Text": "[1;5C"
}, },
"0xf701-0x260000" : { "0xf701-0x260000": {
"Action" : 10, "Action": 10,
"Text" : "[1;6B" "Text": "[1;6B"
}, },
"0xf702-0x280000" : { "0xf702-0x280000": {
"Action" : 11, "Action": 11,
"Text" : "0x1b 0x1b 0x5b 0x44" "Text": "0x1b 0x1b 0x5b 0x44"
}, },
"0xf72b-0x20000" : { "0xf72b-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2F" "Text": "[1;2F"
}, },
"0x36-0x40000" : { "0x36-0x40000": {
"Action" : 11, "Action": 11,
"Text" : "0x1e" "Text": "0x1e"
}, },
"0xf708-0x20000" : { "0xf708-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[15;2~" "Text": "[15;2~"
}, },
"0xf701-0x220000" : { "0xf701-0x220000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2B" "Text": "[1;2B"
}, },
"0xf70b-0x20000" : { "0xf70b-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[19;2~" "Text": "[19;2~"
}, },
"0xf702-0x240000" : { "0xf702-0x240000": {
"Action" : 10, "Action": 10,
"Text" : "[1;5D" "Text": "[1;5D"
}, },
"0xf704-0x20000" : { "0xf704-0x20000": {
"Action" : 10, "Action": 10,
"Text" : "[1;2P" "Text": "[1;2P"
} }
}, },
"Ansi 14 Color" : { "Ansi 14 Color": {
"Red Component" : 0.58039215686274515, "Red Component": 0.58039215686274515,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.83529411764705885, "Blue Component": 0.83529411764705885,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.88627450980392153 "Green Component": 0.88627450980392153
}, },
"Ansi 2 Color" : { "Ansi 2 Color": {
"Red Component" : 0.65098039215686276, "Red Component": 0.65098039215686276,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.63137254901960782, "Blue Component": 0.63137254901960782,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.8901960784313725 "Green Component": 0.8901960784313725
}, },
"Send Code When Idle" : false, "Send Code When Idle": false,
"ASCII Anti Aliased" : true, "ASCII Anti Aliased": true,
"Tags" : [ "Tags": [],
"Ansi 9 Color": {
], "Red Component": 0.95294117647058818,
"Ansi 9 Color" : { "Color Space": "sRGB",
"Red Component" : 0.95294117647058818, "Blue Component": 0.6588235294117647,
"Color Space" : "sRGB", "Alpha Component": 1,
"Blue Component" : 0.6588235294117647, "Green Component": 0.54509803921568623
"Alpha Component" : 1,
"Green Component" : 0.54509803921568623
}, },
"Badge Right Margin" : 10, "Badge Right Margin": 10,
"Use Bold Font" : true, "Use Bold Font": true,
"Silence Bell" : false, "Silence Bell": false,
"Ansi 12 Color" : { "Ansi 12 Color": {
"Red Component" : 0.53725490196078429, "Red Component": 0.53725490196078429,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.98039215686274506, "Blue Component": 0.98039215686274506,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.70588235294117652 "Green Component": 0.70588235294117652
}, },
"Window Type" : 0, "Window Type": 0,
"Use Bright Bold" : true, "Use Bright Bold": true,
"Cursor Text Color" : { "Cursor Text Color": {
"Red Component" : 0.80392156862745101, "Red Component": 0.80392156862745101,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.95686274509803926, "Blue Component": 0.95686274509803926,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.83921568627450982 "Green Component": 0.83921568627450982
}, },
"Default Bookmark" : "No", "Default Bookmark": "No",
"Cursor Color" : { "Cursor Color": {
"Red Component" : 0.96078431372549022, "Red Component": 0.96078431372549022,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.86274509803921573, "Blue Component": 0.86274509803921573,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.8784313725490196 "Green Component": 0.8784313725490196
}, },
"Ansi 1 Color" : { "Ansi 1 Color": {
"Red Component" : 0.95294117647058818, "Red Component": 0.95294117647058818,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.6588235294117647, "Blue Component": 0.6588235294117647,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.54509803921568623 "Green Component": 0.54509803921568623
}, },
"Name" : "Default", "Name": "Default",
"Blinking Cursor" : false, "Blinking Cursor": false,
"Guid" : "82636119-EA17-4A26-9AA7-408172F4A9C8", "Guid": "82636119-EA17-4A26-9AA7-408172F4A9C8",
"Badge Max Width" : 0.45000000000000001, "Badge Max Width": 0.45000000000000001,
"Idle Code" : 0, "Idle Code": 0,
"Ansi 10 Color" : { "Ansi 10 Color": {
"Red Component" : 0.65098039215686276, "Red Component": 0.65098039215686276,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.63137254901960782, "Blue Component": 0.63137254901960782,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.8901960784313725 "Green Component": 0.8901960784313725
}, },
"Ansi 8 Color" : { "Ansi 8 Color": {
"Red Component" : 0.34509803921568627, "Red Component": 0.34509803921568627,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.4392156862745098, "Blue Component": 0.4392156862745098,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.35686274509803922 "Green Component": 0.35686274509803922
}, },
"Badge Color" : { "Badge Color": {
"Red Component" : 1, "Red Component": 1,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0, "Blue Component": 0,
"Alpha Component" : 0.5, "Alpha Component": 0.5,
"Green Component" : 0.14910030364990234 "Green Component": 0.14910030364990234
}, },
"Smart Cursor Color" : true, "Smart Cursor Color": true,
"Ambiguous Double Width" : false, "Ambiguous Double Width": false,
"Blur Radius" : 9.5927277260638313, "Blur Radius": 9.5927277260638313,
"Badge Max Height" : 0.10000000000000001, "Badge Max Height": 0.10000000000000001,
"Ansi 0 Color" : { "Ansi 0 Color": {
"Red Component" : 0.27058823529411763, "Red Component": 0.27058823529411763,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.35294117647058826, "Blue Component": 0.35294117647058826,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.27843137254901962 "Green Component": 0.27843137254901962
}, },
"Blur" : true, "Blur": true,
"Normal Font" : "JetBrainsMonoNerdFontCompleteM-Light 15", "Normal Font": "JetBrainsMonoNerdFontCompleteM-Light 15",
"Vertical Spacing" : 1, "Vertical Spacing": 1,
"Ansi 7 Color" : { "Ansi 7 Color": {
"Red Component" : 0.72941176470588232, "Red Component": 0.72941176470588232,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.87058823529411766, "Blue Component": 0.87058823529411766,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.76078431372549016 "Green Component": 0.76078431372549016
}, },
"Command" : "", "Command": "",
"Terminal Type" : "xterm-256color", "Terminal Type": "xterm-256color",
"Horizontal Spacing" : 1, "Horizontal Spacing": 1,
"Option Key Sends" : 0, "Option Key Sends": 0,
"Only The Default BG Color Uses Transparency" : true, "Only The Default BG Color Uses Transparency": true,
"Minimum Contrast" : 0.14973958333333334, "Minimum Contrast": 0.14973958333333334,
"Ansi 15 Color" : { "Ansi 15 Color": {
"Red Component" : 0.65098039215686276, "Red Component": 0.65098039215686276,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.78431372549019607, "Blue Component": 0.78431372549019607,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.67843137254901964 "Green Component": 0.67843137254901964
}, },
"Ansi 6 Color" : { "Ansi 6 Color": {
"Red Component" : 0.58039215686274515, "Red Component": 0.58039215686274515,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.83529411764705885, "Blue Component": 0.83529411764705885,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.88627450980392153 "Green Component": 0.88627450980392153
}, },
"Badge Top Margin" : 10, "Badge Top Margin": 10,
"Transparency" : 0.10293218085106381, "Transparency": 0.10293218085106381,
"Background Color" : { "Background Color": {
"Red Component" : 0.11764705882352941, "Red Component": 0.11764705882352941,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.1803921568627451, "Blue Component": 0.1803921568627451,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.11764705882352941 "Green Component": 0.11764705882352941
}, },
"Screen" : -2, "Screen": -2,
"Non Ascii Font" : "Monaco 12", "Non Ascii Font": "Monaco 12",
"Ansi 13 Color" : { "Ansi 13 Color": {
"Red Component" : 0.96078431372549022, "Red Component": 0.96078431372549022,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.90588235294117647, "Blue Component": 0.90588235294117647,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.76078431372549016 "Green Component": 0.76078431372549016
}, },
"Columns" : 120, "Columns": 120,
"Visual Bell" : true, "Visual Bell": true,
"ASCII Ligatures" : false, "ASCII Ligatures": false,
"Ansi 5 Color" : { "Ansi 5 Color": {
"Red Component" : 0.96078431372549022, "Red Component": 0.96078431372549022,
"Color Space" : "sRGB", "Color Space": "sRGB",
"Blue Component" : 0.90588235294117647, "Blue Component": 0.90588235294117647,
"Alpha Component" : 1, "Alpha Component": 1,
"Green Component" : 0.76078431372549016 "Green Component": 0.76078431372549016
}, },
"Custom Directory" : "Yes" "Custom Directory": "Yes"
} }

5
config/nvim/.luarc.json Normal file
View File

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

View File

@@ -1,66 +1,68 @@
{ {
"LazyVim": { "branch": "main", "commit": "a72a84972d85e5bbc6b9d60a0983b37efef21b8a" }, "LazyVim": { "branch": "main", "commit": "274649e92321d615888f889476c9329f8d831e8e" },
"LuaSnip": { "branch": "master", "commit": "8efa4e402a24df6a4713a2ec653147c49e8f73de" }, "LuaSnip": { "branch": "master", "commit": "480b032f6708573334f4437d3f83307d143f1a72" },
"SchemaStore.nvim": { "branch": "main", "commit": "57b379a6f521eca8e955283c2886b6261c4e14e8" }, "SchemaStore.nvim": { "branch": "main", "commit": "c422bf8a6955028713692506e9119862370c529f" },
"alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" }, "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" },
"animation.nvim": { "branch": "main", "commit": "fb77091ab72ec9971aee0562e7081182527aaa6a" }, "animation.nvim": { "branch": "main", "commit": "fb77091ab72ec9971aee0562e7081182527aaa6a" },
"bufdelete.nvim": { "branch": "master", "commit": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4" }, "bufdelete.nvim": { "branch": "master", "commit": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4" },
"bufferline.nvim": { "branch": "main", "commit": "81cd04fe7c914d020d331cea1e707da5f14c2665" }, "bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" },
"catppuccin": { "branch": "main", "commit": "85e93601e0f0b48aa2c6bbfae4d0e9d7a1898280" }, "catppuccin": { "branch": "main", "commit": "3d9a5ed556e289bce6c1fb0af89ec838360641b2" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
"comment-box.nvim": { "branch": "main", "commit": "dd1a48f8d06102e9b87ae1e0069bc365c006979b" }, "comment-box.nvim": { "branch": "main", "commit": "dd1a48f8d06102e9b87ae1e0069bc365c006979b" },
"dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" }, "dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" },
"edgy.nvim": { "branch": "main", "commit": "4ccc1c67ae2b1a0c55f18c83d03b714e2bb1bae4" }, "edgy.nvim": { "branch": "main", "commit": "4ccc1c67ae2b1a0c55f18c83d03b714e2bb1bae4" },
"flash.nvim": { "branch": "main", "commit": "8a8e74922a383c253b7f92e042b749150140c8d1" }, "flash.nvim": { "branch": "main", "commit": "0256d8ecab33a9aa69fdaaf885db22e1103e2a3a" },
"friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" }, "friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" },
"gitsigns.nvim": { "branch": "main", "commit": "bce4576a9047085a528c479a7fe1e2f6b787b6c1" }, "gitsigns.nvim": { "branch": "main", "commit": "bdeba1cec3faddd89146690c10b9a87949c0ee66" },
"harpoon": { "branch": "master", "commit": "21f4c47c6803d64ddb934a5b314dcb1b8e7365dc" }, "indent-blankline.nvim": { "branch": "master", "commit": "f5335ef7493bd6adf5f2ae21d67240709a514408" },
"indent-blankline.nvim": { "branch": "master", "commit": "9637670896b68805430e2f72cf5d16be5b97a22a" }, "lazy.nvim": { "branch": "main", "commit": "7ca3bdb566c3ba4492f2d22b37c2c9e26f09470f" },
"lazy.nvim": { "branch": "main", "commit": "3ad55ae678876516156cca2f361c51f7952a924b" },
"lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "2451adb9bdb0fd32140bf3aa8dbc17ff60050db3" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "2451adb9bdb0fd32140bf3aa8dbc17ff60050db3" },
"mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" }, "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" },
"middleclass": { "branch": "master", "commit": "9fab4d5bca67262614960960ca35c4740eb2be2c" }, "middleclass": { "branch": "master", "commit": "9fab4d5bca67262614960960ca35c4740eb2be2c" },
"mini.ai": { "branch": "main", "commit": "7ae226f331885e6f30e9a8229e113debc59308ae" }, "mini.ai": { "branch": "main", "commit": "7ae226f331885e6f30e9a8229e113debc59308ae" },
"mini.animate": { "branch": "main", "commit": "230140aa0b06af87c9d345573aab1aaf50d8b539" }, "mini.animate": { "branch": "main", "commit": "989ac014933ab5cd14ab83f2fce4b9a08ca6d81e" },
"mini.bufremove": { "branch": "main", "commit": "7821606e35c1ac931b56d8e3155f45ffe76ee7e5" }, "mini.bufremove": { "branch": "main", "commit": "7821606e35c1ac931b56d8e3155f45ffe76ee7e5" },
"mini.comment": { "branch": "main", "commit": "877acea5b2a32ff55f808fc0ebe9aa898648318c" }, "mini.comment": { "branch": "main", "commit": "877acea5b2a32ff55f808fc0ebe9aa898648318c" },
"mini.indentscope": { "branch": "main", "commit": "f60e9b51a6214c73a170ffc5445ce91560981031" }, "mini.indentscope": { "branch": "main", "commit": "f60e9b51a6214c73a170ffc5445ce91560981031" },
"mini.pairs": { "branch": "main", "commit": "dfa9f6e2576bb8853be277d96b735af59d9be7c2" }, "mini.pairs": { "branch": "main", "commit": "dfa9f6e2576bb8853be277d96b735af59d9be7c2" },
"mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" }, "mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "2d89ca96e08eb6e9c8e50e1bb4738bc5125c9f12" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "71f1841ba6c652908678cece623f52c1fea8a6cd" },
"neoconf.nvim": { "branch": "main", "commit": "b7cde4ba41eabf9bec9464c990bcf84a0fef4526" }, "neoconf.nvim": { "branch": "main", "commit": "2b2af4c35b4f5e85e81a567412ba31e1643a2c02" },
"neodev.nvim": { "branch": "main", "commit": "53673d03258a4e4c49ab6ed621820510ac17e052" }, "neodev.nvim": { "branch": "main", "commit": "f4abc72add7d2d986371c9d619f7b6f8297aa5ee" },
"neogen": { "branch": "main", "commit": "cb1f384df804c1bf729332c4f728253fe17962d4" }, "neogen": { "branch": "main", "commit": "cb1f384df804c1bf729332c4f728253fe17962d4" },
"noice.nvim": { "branch": "main", "commit": "74c2902146b080035beb19944baf6f014a954720" }, "noice.nvim": { "branch": "main", "commit": "396f9146529130904e07c45e90ecdbfa607534f3" },
"nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" }, "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
"null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
"nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
"nvim-lspconfig": { "branch": "master", "commit": "f3195835c0447ee2c80152b893ab51ca162b04a9" }, "nvim-lspconfig": { "branch": "master", "commit": "68b23c06132cb1ef8d5690111c112388fbcf1c30" },
"nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" }, "nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
"nvim-notify": { "branch": "master", "commit": "94859430020f5cf32a1b97ddd9e596fed9db7981" }, "nvim-notify": { "branch": "master", "commit": "94859430020f5cf32a1b97ddd9e596fed9db7981" },
"nvim-regexplainer": { "branch": "main", "commit": "4250c8f3c1307876384e70eeedde5149249e154f" }, "nvim-regexplainer": { "branch": "main", "commit": "4250c8f3c1307876384e70eeedde5149249e154f" },
"nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" }, "nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" },
"nvim-treesitter": { "branch": "master", "commit": "c29d973c40f42fdf9823c2756c330fe7c8f7ca80" }, "nvim-treesitter": { "branch": "master", "commit": "cc2f94ed1dfa008c23e16bbd17f56b967ceb6740" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" },
"nvim-web-devicons": { "branch": "master", "commit": "973ab742f143a796a779af4d786ec409116a0d87" }, "nvim-ufo": { "branch": "main", "commit": "6f2ccdf2da390d62f8f9e15fc5ddbcbd312e1e66" },
"nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" },
"persistence.nvim": { "branch": "main", "commit": "4b8051c01f696d8849a5cb8afa9767be8db16e40" }, "persistence.nvim": { "branch": "main", "commit": "4b8051c01f696d8849a5cb8afa9767be8db16e40" },
"plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" }, "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
"promise-async": { "branch": "main", "commit": "e94f35161b8c5d4a4ca3b6ff93dd073eb9214c0e" },
"stickybuf.nvim": { "branch": "master", "commit": "e3db41f2c1bb2df3ee6ff964ee74fe991f6f9566" }, "stickybuf.nvim": { "branch": "master", "commit": "e3db41f2c1bb2df3ee6ff964ee74fe991f6f9566" },
"symbols-outline.nvim": { "branch": "master", "commit": "512791925d57a61c545bc303356e8a8f7869763c" },
"tabnine": { "branch": "master", "commit": "2c06b4865415701dc638549032824664e114ee23" },
"tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "bc25c56083939f274edcfe395c6ff7de23b67c50" }, "tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "bc25c56083939f274edcfe395c6ff7de23b67c50" },
"telescope.nvim": { "branch": "master", "commit": "40c8d2fc2b729dd442eda093cf8c9496d6e23732" }, "telescope.nvim": { "branch": "master", "commit": "84d53dfdbefbdf84e861a288abc71ef8ccafd04e" },
"todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" }, "todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
"toggleterm.nvim": { "branch": "main", "commit": "b90a1381e9b5b8596f49070ee86c71db267ac868" }, "tokyonight.nvim": { "branch": "main", "commit": "e89caa3ad6d8da9d0dd981ec74a82c55adc61ffd" },
"tokyonight.nvim": { "branch": "main", "commit": "9a01eada39558dc3243278e6805d90e8dff45dc0" },
"transparent.nvim": { "branch": "main", "commit": "3af6232c8d39d51062702e875ff6407c1eeb0391" },
"trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" }, "trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" },
"typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" }, "typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" },
"venv-selector.nvim": { "branch": "main", "commit": "14d6e866070f759e9014a8053954f835294f56f9" }, "venv-selector.nvim": { "branch": "main", "commit": "14d6e866070f759e9014a8053954f835294f56f9" },
"vim-illuminate": { "branch": "master", "commit": "8c910b2f84ae6acd9b4b17330bb94dd783c0c11a" }, "vim-illuminate": { "branch": "master", "commit": "1b5d70332a51a1de05f281069851865a2bb1e6d7" },
"vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" }, "vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
"vim-wakatime": { "branch": "master", "commit": "0d2efa2daff34b27b0d227d4c3b136811c93db93" }, "vim-wakatime": { "branch": "master", "commit": "0d2efa2daff34b27b0d227d4c3b136811c93db93" },
"which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" }, "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" },

View File

@@ -12,9 +12,6 @@ require("lazy").setup({
{ {
"LazyVim/LazyVim", "LazyVim/LazyVim",
import = "lazyvim.plugins", import = "lazyvim.plugins",
opts = {
colorscheme = "catppuccin",
},
}, },
-- import any extras modules here -- import any extras modules here
{ import = "lazyvim.plugins.extras.formatting.prettier" }, { import = "lazyvim.plugins.extras.formatting.prettier" },
@@ -41,7 +38,7 @@ require("lazy").setup({
version = false, -- always use the latest git commit version = false, -- always use the latest git commit
-- version = "*", -- try installing the latest stable version for plugins that support semver -- version = "*", -- try installing the latest stable version for plugins that support semver
}, },
install = { colorscheme = { "catppuccin" } }, install = { colorscheme = { "tokyonight" } },
checker = { enabled = true }, -- automatically check for plugin updates checker = { enabled = true }, -- automatically check for plugin updates
performance = { performance = {
rtp = { rtp = {

View File

@@ -6,6 +6,7 @@ local opt = vim.opt
opt.number = true opt.number = true
opt.relativenumber = true opt.relativenumber = true
opt.modeline = true
-- The line beneath this is called `modeline`. See `:help modeline` -- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et -- vim: ts=2 sts=2 sw=2 et

View File

@@ -65,17 +65,26 @@ return {
auto = true, auto = true,
}, },
}, },
-- Clarify and beautify your comments using boxes and lines. -- Clarify and beautify your comments using boxes and lines.
-- https://github.com/LudoPinelli/comment-box.nvim -- https://github.com/LudoPinelli/comment-box.nvim
{ "LudoPinelli/comment-box.nvim", opts = {} }, { "LudoPinelli/comment-box.nvim", opts = {} },
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"stylua",
"shellcheck",
"shfmt",
"flake8",
},
},
},
-- Tabnine Client for Neovim -- Tabnine Client for Neovim
-- https://github.com/codota/tabnine-nvim -- https://github.com/codota/tabnine-nvim
{ {
"codota/tabnine-nvim", "codota/tabnine-nvim",
name = "tabnine", name = "tabnine",
enabled = false, -- enabled = false,
build = vim.loop.os_uname().sysname == "Windows_NT" and "pwsh.exe -file .\\dl_binaries.ps1" or "./dl_binaries.sh", build = vim.loop.os_uname().sysname == "Windows_NT" and "pwsh.exe -file .\\dl_binaries.ps1" or "./dl_binaries.sh",
cmd = { "TabnineStatus", "TabnineDisable", "TabnineEnable", "TabnineToggle" }, cmd = { "TabnineStatus", "TabnineDisable", "TabnineEnable", "TabnineToggle" },
event = "User", event = "User",
@@ -84,7 +93,6 @@ return {
dismiss_keymap = "<C-Esc>", dismiss_keymap = "<C-Esc>",
}, },
}, },
-- Vim plugin for automatic time tracking and metrics generated from your programming activity. -- Vim plugin for automatic time tracking and metrics generated from your programming activity.
-- https://github.com/wakatime/vim-wakatime -- https://github.com/wakatime/vim-wakatime
{ "wakatime/vim-wakatime", lazy = false, enabled = true }, { "wakatime/vim-wakatime", lazy = false, enabled = true },

View File

@@ -105,7 +105,7 @@ return {
init = function() init = function()
require("lazyvim.util").on_attach(function(_, buffer) require("lazyvim.util").on_attach(function(_, buffer)
-- stylua: ignore -- stylua: ignore
vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) vim.keymap.set("n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
end) end)
end, end,

View File

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

View File

@@ -1,9 +1,24 @@
return { return {
-- A neovim lua plugin to help easily manage multiple terminal windows
-- https://github.com/akinsho/toggleterm.nvim
{ {
"akinsho/toggleterm.nvim", "williamboman/mason.nvim",
version = "*", opts = {
config = true, ensure_installed = {
"actionlint",
"ansible-lint",
"bash-language-server",
"commitlint",
"flake8",
"intelephense",
"jsonlint",
"luacheck",
"phpcs",
"phpmd",
"shellcheck",
"shfmt",
"stylelint",
"stylua",
"yamllint",
},
},
}, },
} }

View File

@@ -1,46 +1,92 @@
-- luacheck: globals vim -- luacheck: globals vim
return { return {
-- The theme of choise, catppuccin
-- https://github.com/catppuccin/nvim
{ {
"catppuccin/nvim", "folke/tokyonight.nvim",
name = "catppuccin",
priority = 1000,
enabled = true,
config = function()
vim.cmd.colorscheme("catppuccin")
end,
opts = { opts = {
flavour = "mocha", transparent = true,
styles = {
sidebars = "transparent",
floats = "transparent",
},
}, },
}, },
-- Remove all background colors to make nvim transparent -- Not UFO in the sky, but an ultra fold in Neovim.
-- https://github.com/xiyaowong/transparent.nvim -- https://github.com/kevinhwang91/nvim-ufo/
{ {
"xiyaowong/transparent.nvim", "kevinhwang91/nvim-ufo",
lazy = false, lazy = false,
enabled = true, enabled = true,
config = function() dependencies = {
vim.g.transparent_groups = vim.list_extend( "kevinhwang91/promise-async",
vim.g.transparent_groups or {}, { "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" },
vim.tbl_map(function(v) },
return v.hl_group init = function()
end, vim.tbl_values(require("bufferline.config").highlights)) vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]
) vim.o.foldcolumn = "1" -- '0' is not bad
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value
vim.o.foldlevelstart = 99
vim.o.foldenable = true
end, end,
},
-- A fancy, configurable, notification manager for NeoVim
-- https://github.com/rcarriga/nvim-notify
{
"rcarriga/nvim-notify",
opts = { opts = {
-- Set background color to black so transparent doesn't mess stuff up open_fold_hl_timeout = 150,
background_colour = "#000000", close_fold_kinds = { "imports", "comment" },
preview = {
win_config = {
border = { "", "", "", "", "", "", "", "" },
winhighlight = "Normal:Folded",
winblend = 0,
},
mappings = {
scrollU = "<C-u>",
scrollD = "<C-d>",
jumpTop = "[",
jumpBot = "]",
},
},
provider_selector = function(_, _, _) -- bufnr, filetype, buftype
return { "treesitter", "indent" }
end,
fold_virt_text_handler = function(virtText, lnum, endLnum, width, truncate)
local newVirtText = {}
local suffix = (" 󰁂 %d "):format(endLnum - lnum)
local sufWidth = vim.fn.strdisplaywidth(suffix)
local targetWidth = width - sufWidth
local curWidth = 0
for _, chunk in ipairs(virtText) do
local chunkText = chunk[1]
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
if targetWidth > curWidth + chunkWidth then
table.insert(newVirtText, chunk)
else
chunkText = truncate(chunkText, targetWidth - curWidth)
local hlGroup = chunk[2]
table.insert(newVirtText, { chunkText, hlGroup })
chunkWidth = vim.fn.strdisplaywidth(chunkText)
-- str width returned from truncate() may less than 2nd argument, need padding
if curWidth + chunkWidth < targetWidth then
suffix = suffix .. (" "):rep(targetWidth - curWidth - chunkWidth)
end
break
end
curWidth = curWidth + chunkWidth
end
table.insert(newVirtText, { suffix, "MoreMsg" })
return newVirtText
end,
}, },
}, },
-- Getting you where you want with the fewest keystrokes. {
-- https://github.com/ThePrimeagen/harpoon "simrat39/symbols-outline.nvim",
{ "ThePrimeagen/harpoon" }, cmd = "SymbolsOutline",
keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
config = true,
},
-- Indent guides for Neovim
-- https://github.com/lukas-reineke/indent-blankline.nvim
{ "lukas-reineke/indent-blankline.nvim" },
-- Git integration for buffers
-- https://github.com/lewis6991/gitsigns.nvim
{ "lewis6991/gitsigns.nvim" },
-- Close buffer without messing up with the window. -- Close buffer without messing up with the window.
-- https://github.com/famiu/bufdelete.nvim -- https://github.com/famiu/bufdelete.nvim
{ "famiu/bufdelete.nvim" }, { "famiu/bufdelete.nvim" },
@@ -57,7 +103,7 @@ return {
"anuvyklack/animation.nvim", "anuvyklack/animation.nvim",
}, },
config = function() config = function()
vim.o.winwidth = 10 vim.o.winwidth = 15
vim.o.winminwidth = 10 vim.o.winminwidth = 10
vim.o.equalalways = false vim.o.equalalways = false
require("windows").setup() require("windows").setup()

View File

@@ -23,7 +23,7 @@ $line_break\
$character""" $character"""
# Timeout for commands executed by starship (in milliseconds). # Timeout for commands executed by starship (in milliseconds).
# command_timeout = 1000 command_timeout = 1500
[character] [character]
success_symbol = "[→](bold green)" success_symbol = "[→](bold green)"
@@ -40,19 +40,23 @@ disabled = true
[directory] [directory]
read_only = " 󰌾" read_only = " 󰌾"
style = "blue" style = "blue"
before_repo_root_style = "white"
truncation_symbol = "…/"
[docker_context] [docker_context]
symbol = " " symbol = " "
format = '[$symbol$context]($style) '
[fill] [fill]
symbol = '·' symbol = '·'
style = 'bold black' style = 'bold black'
[gcloud] [gcloud]
format = ' [($symbol)$account(@$domain)(\($region\))]($style) ' format = '[($symbol)$account(@$domain)(\($region\))]($style) '
[git_branch] [git_branch]
symbol = " " symbol = " "
format = '[$symbol$branch(:$remote_branch)]($style) '
truncation_length = 20 truncation_length = 20
truncation_symbol = '…' truncation_symbol = '…'
ignore_branches = ['master', 'main'] ignore_branches = ['master', 'main']
@@ -72,12 +76,16 @@ disabled = false
[golang] [golang]
symbol = " " symbol = " "
format = '[$symbol($version )]($style) '
[hostname] [hostname]
ssh_symbol = " " ssh_symbol = " "
ssh_only = false ssh_only = false
format = '[$ssh_symbol](bold blue)[$hostname](bold red) ' format = '[$ssh_symbol](bold blue)[$hostname](bold red) '
[lua]
format = '[$symbol($version )]($style)'
[nodejs] [nodejs]
symbol = " " symbol = " "
format = '[$symbol($version )]($style)' format = '[$symbol($version )]($style)'
@@ -141,5 +149,7 @@ version_format = '${major}.${minor}'
[python] [python]
symbol = " " symbol = " "
format = "[$virtualenv]($style) " format = "[$virtualenv]($style) "
style = "bright-black"
[username]
format = "[$user]($style) "

View File

@@ -67,6 +67,9 @@ bind p paste-buffer
# │ Settings │ # │ Settings │
# ╰──────────────────────────────────────────────────────────╯ # ╰──────────────────────────────────────────────────────────╯
# Expose window title
set-option -g set-titles on
# Mouse support # Mouse support
set -g mouse on set -g mouse on
@@ -137,6 +140,7 @@ set -g @continuum-boot 'on'
## https://github.com/tmux-plugins/tmux-resurrect ## https://github.com/tmux-plugins/tmux-resurrect
set -g @resurrect-strategy-nvim 'session' set -g @resurrect-strategy-nvim 'session'
set -g @resurrect-dir '$HOME/.local/state/tmux/tmux-resurrect'
# Finally run the tmux plugin manager # Finally run the tmux plugin manager
run '~/.dotfiles/config/tmux/plugins/tpm/tpm' run '~/.dotfiles/config/tmux/plugins/tpm/tpm'

View File

@@ -20,62 +20,62 @@ wtf:
# that support ten line of text and one of four. # that support ten line of text and one of four.
rows: [10, 10, 10, 20, 10, 4] rows: [10, 10, 10, 20, 10, 4]
refreshInterval: 1 refreshInterval: 1
openFileUtil: "open" openFileUtil: 'open'
mods: mods:
# You can have multiple widgets of the same type. # You can have multiple widgets of the same type.
# The "key" is the name of the widget and the type is the actual # The "key" is the name of the widget and the type is the actual
# widget you want to implement. # widget you want to implement.
europe_time: europe_time:
title: "Europe" title: 'Europe'
type: clocks type: clocks
colors: colors:
rows: rows:
even: "lightblue" even: 'lightblue'
odd: "white" odd: 'white'
enabled: true enabled: true
locations: locations:
GMT: "Etc/GMT" GMT: 'Etc/GMT'
Amsterdam: "Europe/Amsterdam" Amsterdam: 'Europe/Amsterdam'
Berlin: "Europe/Berlin" Berlin: 'Europe/Berlin'
Barcelona: "Europe/Madrid" Barcelona: 'Europe/Madrid'
Copenhagen: "Europe/Copenhagen" Copenhagen: 'Europe/Copenhagen'
London: "Europe/London" London: 'Europe/London'
Rome: "Europe/Rome" Rome: 'Europe/Rome'
Stockholm: "Europe/Stockholm" Stockholm: 'Europe/Stockholm'
position: position:
top: 0 top: 0
left: 0 left: 0
height: 1 height: 1
width: 1 width: 1
refreshInterval: 15 refreshInterval: 15
sort: "alphabetical" sort: 'alphabetical'
americas_time: americas_time:
title: "Americas" title: 'Americas'
type: clocks type: clocks
colors: colors:
rows: rows:
even: "lightblue" even: 'lightblue'
odd: "white" odd: 'white'
enabled: true enabled: true
locations: locations:
UTC: "Etc/UTC" UTC: 'Etc/UTC'
Vancouver: "America/Vancouver" Vancouver: 'America/Vancouver'
New_York: "America/New_York" New_York: 'America/New_York'
Sao_Paulo: "America/Sao_Paulo" Sao_Paulo: 'America/Sao_Paulo'
Denver: "America/Denver" Denver: 'America/Denver'
Iqaluit: "America/Iqaluit" Iqaluit: 'America/Iqaluit'
Bahamas: "America/Nassau" Bahamas: 'America/Nassau'
Chicago: "America/Chicago" Chicago: 'America/Chicago'
position: position:
top: 0 top: 0
left: 1 left: 1
height: 1 height: 1
width: 1 width: 1
refreshInterval: 15 refreshInterval: 15
sort: "alphabetical" sort: 'alphabetical'
battery: battery:
type: power type: power
title: "⚡️" title: '⚡️'
enabled: true enabled: true
position: position:
top: 1 top: 1
@@ -85,14 +85,14 @@ wtf:
refreshInterval: 15 refreshInterval: 15
todolist: todolist:
type: todo type: todo
checkedIcon: "X" checkedIcon: 'X'
colors: colors:
checked: gray checked: gray
highlight: highlight:
fore: "black" fore: 'black'
back: "orange" back: 'orange'
enabled: true enabled: true
filename: "todo.yml" filename: 'todo.yml'
position: position:
top: 1 top: 1
left: 0 left: 0
@@ -101,10 +101,10 @@ wtf:
refreshInterval: 3600 refreshInterval: 3600
ip: ip:
type: ipinfo type: ipinfo
title: "My IP" title: 'My IP'
colors: colors:
name: "lightblue" name: 'lightblue'
value: "white" value: 'white'
enabled: true enabled: true
position: position:
top: 0 top: 0
@@ -114,7 +114,7 @@ wtf:
refreshInterval: 150 refreshInterval: 150
security_info: security_info:
type: security type: security
title: "Staying safe" title: 'Staying safe'
enabled: true enabled: true
position: position:
top: 1 top: 1
@@ -126,9 +126,9 @@ wtf:
type: textfile type: textfile
enabled: true enabled: true
filePaths: filePaths:
- "~/.config/wtf/config.yml" - '~/.config/wtf/config.yml'
format: true format: true
formatStyle: "monokai" formatStyle: 'monokai'
position: position:
top: 3 top: 3
left: 0 left: 0
@@ -137,7 +137,7 @@ wtf:
refreshInterval: 15 refreshInterval: 15
news: news:
type: hackernews type: hackernews
title: "HackerNews" title: 'HackerNews'
enabled: true enabled: true
numberOfStories: 10 numberOfStories: 10
position: position:
@@ -159,7 +159,7 @@ wtf:
uptime: uptime:
type: cmdrunner type: cmdrunner
args: [] args: []
cmd: "uptime" cmd: 'uptime'
enabled: true enabled: true
position: position:
top: 5 top: 5
@@ -169,8 +169,8 @@ wtf:
refreshInterval: 30 refreshInterval: 30
disks: disks:
type: cmdrunner type: cmdrunner
cmd: "df" cmd: 'df'
args: ["-h"] args: ['-h']
enabled: true enabled: true
position: position:
top: 4 top: 4

View File

@@ -1,6 +1,6 @@
# nvim keybindings # nvim keybindings
```md ```
n ! * <Cmd>lua require("which-key").show("!", {mode = "n", auto = true})<CR> n ! * <Cmd>lua require("which-key").show("!", {mode = "n", auto = true})<CR>
n ' * <Cmd>lua require("which-key").show("'", {mode = "n", auto = true})<CR> n ' * <Cmd>lua require("which-key").show("'", {mode = "n", auto = true})<CR>
n " * <Cmd>lua require("which-key").show("\"", {mode = "n", auto = true})<CR> n " * <Cmd>lua require("which-key").show("\"", {mode = "n", auto = true})<CR>

View File

@@ -1,9 +1,7 @@
# tmux keybindings # tmux keybindings
Leader: `<ctrl><space>` Leader: `<ctrl><space>`
``` ```
bind-key -T copy-mode C-Space send-keys -X begin-selection bind-key -T copy-mode C-Space send-keys -X begin-selection
bind-key -T copy-mode C-a send-keys -X start-of-line bind-key -T copy-mode C-a send-keys -X start-of-line
@@ -298,4 +296,3 @@ bind-key -T root M-Right select-pane -R
bind-key -T root C-Tab previous-window bind-key -T root C-Tab previous-window
bind-key -T root C-S-Tab next-window bind-key -T root C-S-Tab next-window
``` ```

View File

@@ -1,4 +1,4 @@
- include: "tools/dotbot-defaults.yaml" - include: 'tools/dotbot-defaults.yaml'
- shell: - shell:
- echo "Configuring air" - echo "Configuring air"
- brewfile: - brewfile:
@@ -8,7 +8,7 @@
force: true force: true
glob: true glob: true
path: hosts/air/base/** path: hosts/air/base/**
prefix: "." prefix: '.'
~/.config/: ~/.config/:
glob: true glob: true
force: true force: true

View File

@@ -1,59 +0,0 @@
# Lakka zsh configuration.
#
# shellcheck shell=bash
export PATH="$HOME/bin:/usr/local/bin:/usr/bin:/usr/sbin:$PATH"
# Defaults
export DOTFILES="$HOME/.dotfiles"
# Run x-load-configs in your terminal to reload the files.
function x-load-configs()
{
HOST="$(hostname -s)"
# Load the shell dotfiles, and then some:
for file in $DOTFILES/config/{exports,alias,functions}; do
# global (exports|alias|functions) file for all hosts
# shellcheck source=../../../config/exports
[ -r "$file" ] && source "$file"
# shellcheck source=../../../config/exports
[ -r "$file-secret" ] && source "$file-secret"
# shellcheck source=../../../config/exports
[ -r "$file-$HOST" ] && source "$file-$HOST"
# shellcheck source=../../../config/exports
[ -r "$file-$HOST-secret" ] && source "$file-$HOST-secret"
done
}
x-load-configs
export PATH="$XDG_BIN_HOME:$PATH"
export LC_ALL=fi_FI.utf8
export RVM_PATH="$HOME/.rvm"
export PATH="$RVM_PATH/bin:$PATH"
# shellcheck source=$HOME/.rvm/scripts/rvm
[[ -s "$RVM_PATH/scripts/rvm" ]] && source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*
# Try to load antigen, if present
ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
# shellcheck source=$HOME/.local/bin/antigen.zsh
[[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH"
# If antigen was loaded
if command -v antigen &>/dev/null; then
antigen use oh-my-zsh
# config/functions
x-default-antigen-bundles
antigen theme oskarkrawczyk/honukai-iterm-zsh honukai
antigen apply
fi
alias logrotate='/usr/sbin/logrotate -s $HOME/logs/state'
alias nano='nano -wS -$'
alias gpg=gpg2
ACME_PATH="$HOME/.acme.sh"
# shellcheck source=$HOME/.acme.sh/acme.sh.env
[[ -s "$ACME_PATH/acme.sh.env" ]] && . "$ACME_PATH/acme.sh.env"

View File

@@ -1,4 +1,4 @@
- include: "tools/dotbot-defaults.yaml" - include: 'tools/dotbot-defaults.yaml'
- shell: - shell:
- echo "Configuring lakka" - echo "Configuring lakka"
- link: - link:
@@ -6,7 +6,7 @@
force: true force: true
glob: true glob: true
path: hosts/lakka/base/** path: hosts/lakka/base/**
prefix: "." prefix: '.'
~/.config/: ~/.config/:
glob: true glob: true
force: true force: true

View File

@@ -1,4 +1,4 @@
- include: "tools/dotbot-defaults.yaml" - include: 'tools/dotbot-defaults.yaml'
- shell: - shell:
- echo "Configuring tunkki" - echo "Configuring tunkki"
- link: - link:
@@ -6,8 +6,11 @@
force: true force: true
glob: true glob: true
path: hosts/tunkki/base/** path: hosts/tunkki/base/**
prefix: "." prefix: '.'
~/.config/: ~/.config/:
glob: true glob: true
force: true force: true
path: hosts/tunkki/config/** path: hosts/tunkki/config/**
- snap:
- nvim:
classic: true

View File

@@ -1,14 +1,12 @@
- include: "tools/dotbot-defaults.yaml" - include: 'tools/dotbot-defaults.yaml'
- shell: - shell:
- echo "Configuring v" - echo "Configuring v"
- brewfile:
- Brewfile
- link: - link:
~/: ~/:
force: true force: true
glob: true glob: true
path: hosts/v/base/** path: hosts/v/base/**
prefix: "." prefix: '.'
~/.config/: ~/.config/:
glob: true glob: true
force: true force: true

View File

@@ -18,6 +18,9 @@ git submodule update --init --recursive "${DOTBOT_DIR}"
-d "${BASEDIR}" \ -d "${BASEDIR}" \
--plugin-dir=tools/dotbot-brew \ --plugin-dir=tools/dotbot-brew \
--plugin-dir=tools/dotbot-include \ --plugin-dir=tools/dotbot-include \
--plugin-dir=tools/dotbot-crontab \
--plugin-dir=tools/dotbot-snap \
--plugin-dir=tools/dotbot-pip \
-c "${CONFIG}" \ -c "${CONFIG}" \
"${@}" "${@}"
@@ -30,6 +33,9 @@ if [ "${DOTBOT_HOST}" != "" ]; then
-d "$BASEDIR" \ -d "$BASEDIR" \
--plugin-dir=tools/dotbot-brew \ --plugin-dir=tools/dotbot-brew \
--plugin-dir=tools/dotbot-include \ --plugin-dir=tools/dotbot-include \
--plugin-dir=tools/dotbot-crontab \
--plugin-dir=tools/dotbot-snap \
--plugin-dir=tools/dotbot-pip \
-c "$DOTBOT_HOST_CONFIG" \ -c "$DOTBOT_HOST_CONFIG" \
"${@}" "${@}"
fi fi

View File

@@ -1,40 +1,58 @@
- include: "tools/dotbot-defaults.yaml" - include: 'tools/dotbot-defaults.yaml'
- clean: - clean:
~/: ~/:
~/.config: ~/.config:
recursive: true recursive: true
~/.local: ~/.local:
recursive: true recursive: true
~/.ssh:
recursive: true
- create: - create:
~/.cache: ~/.cache:
~/.cache/git: ~/.cache/git:
~/.config: ~/.config:
~/.config/cheat/cheatsheets/personal:
~/.config/cheat/cheatsheets/pure-bash-bible:
~/.config/cheat/cheatsheets/tldr:
~/.local: ~/.local:
~/.local/bin:
~/.local/run: ~/.local/run:
~/.local/share: ~/.local/share:
~/.local/state: ~/.local/state:
~/.ssh: ~/.ssh:
mode: 0700 mode: 0700
~/.ssh/local.d:
mode: 0700
~/Code: ~/Code:
- link: - link:
~/: ~/:
force: true force: true
glob: true glob: true
path: base/** path: base/*
prefix: "." prefix: '.'
~/.config/: ~/.config/:
glob: true glob: true
path: config/** relink: true
~/.local/: path: config/*
exclude: [config/nvm]
~/.config/nvm/default-packages:
create: true
relink: true
path: config/nvm/default-packages
~/.local/bin:
glob: true glob: true
path: local/** path: local/bin/*
~/.local/man:
glob: true
path: local/man/**
~/.local/share:
glob: true
path: local/share/*
~/.ssh/: ~/.ssh/:
glob: true glob: true
mode: 0600 mode: 0600
path: ssh/** path: ssh/*
- shell: - shell:
- git submodule update --init --recursive --force - git submodule update --init --recursive --force
- bash local/bin/dfm install all - bash local/bin/dfm install all
- pipx:
file: tools/requirements-pipx.txt
stdout: false
stderr: true

View File

@@ -13,7 +13,7 @@ Some problematic code has been fixed per `shellcheck` suggestions.
## Sourced ## Sourced
| Script | Source | | Script | Source |
|-------------------------|-------------------| | ----------------------- | ----------------- |
| `x-dupes` | skx/sysadmin-util | | `x-dupes` | skx/sysadmin-util |
| `x-foreach` | mvdan/dotfiles | | `x-foreach` | mvdan/dotfiles |
| `x-multi-ping` | skx/sysadmin-util | | `x-multi-ping` | skx/sysadmin-util |

View File

@@ -10,7 +10,6 @@
: "${VERBOSE:=0}" : "${VERBOSE:=0}"
: "${DOTFILES:=$HOME/.dotfiles}" : "${DOTFILES:=$HOME/.dotfiles}"
: "${SHARED_SCRIPT:=$DOTFILES/scripts/shared.sh}" : "${SHARED_SCRIPT:=$DOTFILES/scripts/shared.sh}"
: "${INSTALL_SCRIPT:=$DOTFILES/scripts/install-dotfiles.sh}"
: "${BREWFILE:=$DOTFILES/config/homebrew/Brewfile}" : "${BREWFILE:=$DOTFILES/config/homebrew/Brewfile}"
: "${HOSTFILES:=$DOTFILES/hosts}" : "${HOSTFILES:=$DOTFILES/hosts}"
@@ -18,9 +17,13 @@ SCRIPT=$(basename "$0")
VERSION_NVM="v0.39.5" VERSION_NVM="v0.39.5"
export DOTFILES_SHARED_LOADED=""
# shellcheck source=./../../scripts/shared.sh # shellcheck source=./../../scripts/shared.sh
source "$SHARED_SCRIPT" source "$SHARED_SCRIPT"
# Loads configs for better installation experience
x-load-configs
function section_install function section_install
{ {
USAGE_PREFIX="$SCRIPT install <command>" USAGE_PREFIX="$SCRIPT install <command>"
@@ -32,6 +35,7 @@ function section_install
"cheat-databases:Install cheat external cheatsheet databases" "cheat-databases:Install cheat external cheatsheet databases"
"composer:Install composer" "composer:Install composer"
"dotenv:Install dotenv-linter" "dotenv:Install dotenv-linter"
"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"
@@ -47,7 +51,10 @@ function section_install
case "$1" in case "$1" in
all) all)
msgr msg "Starting to install all and reloading configurations..."
x-load-configs
$0 install macos $0 install macos
$0 install fonts
$0 install antigen $0 install antigen
$0 brew install $0 brew install
$0 install pip $0 install pip
@@ -64,6 +71,9 @@ function section_install
$0 install npm $0 install npm
$0 install ntfy $0 install ntfy
$0 install z $0 install z
msgr msg "Reloading configurations again..."
x-load-configs
msgr yay "All done!"
;; ;;
antigen) antigen)
curl -sSfL git.io/antigen -o "$DOTFILES/local/bin/antigen.zsh" \ curl -sSfL git.io/antigen -o "$DOTFILES/local/bin/antigen.zsh" \
@@ -89,6 +99,10 @@ function section_install
| sh -s -- -b "$XDG_BIN_HOME" \ | sh -s -- -b "$XDG_BIN_HOME" \
&& msg_yay "dotenv-linter installed!" && msg_yay "dotenv-linter installed!"
;; ;;
fonts)
bash "$DOTFILES/scripts/install-fonts.sh" \
&& msg_yay "Installed fonts!"
;;
fzf) fzf)
bash "$DOTFILES/scripts/install-fzf.sh" \ bash "$DOTFILES/scripts/install-fzf.sh" \
&& msg_yay "fzf installed!" && msg_yay "fzf installed!"
@@ -134,10 +148,7 @@ function section_install
bash "$DOTFILES/scripts/install-ntfy.sh" \ bash "$DOTFILES/scripts/install-ntfy.sh" \
&& msg_yay "ntfy installed!" && msg_yay "ntfy installed!"
;; ;;
pip) pip) bash "$DOTFILES/scripts/install-pip-packages.sh" ;;
bash "$DOTFILES/scripts/install-pip-packages.sh" \
&& msg_yay "pip/python packages installed!"
;;
z) z)
bash "$DOTFILES/scripts/install-z.sh" \ bash "$DOTFILES/scripts/install-z.sh" \
&& msg_yay "z has been installed!" && msg_yay "z has been installed!"
@@ -244,10 +255,8 @@ function section_dotfiles
~/.local/share/nvim \ ~/.local/share/nvim \
~/.local/state/nvim \ ~/.local/state/nvim \
~/.cache/nvim \ ~/.cache/nvim \
~/.config/astronvim \
~/.config/nvim ~/.config/nvim
msg_ok "Deleted old nvim files" msg_ok "Deleted old nvim files (share, state and cache + config)"
ln -s "$DOTFILES/config/astronvim" ~/.config/astronvim
ln -s "$DOTFILES/config/nvim" ~/.config/nvim ln -s "$DOTFILES/config/nvim" ~/.config/nvim
msg_ok "Linked nvim and astronvim" msg_ok "Linked nvim and astronvim"
have npm && $0 install npm have npm && $0 install npm

222
local/bin/msgr Executable file
View File

@@ -0,0 +1,222 @@
#!/usr/bin/env bash
# msgr / Messanger helper
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
# MIT License, https://opensource.org/license/mit/
# Modified from https://stackoverflow.com/a/28776166
(
[[ -n $ZSH_VERSION && $ZSH_EVAL_CONTEXT =~ :file$ ]] \
|| [[ -n $BASH_VERSION ]] && (return 0 2> /dev/null)
) && sourced=1 || sourced=0
# ╭──────────────────────────────────────────────────────────╮
# │ Colors │
# ╰──────────────────────────────────────────────────────────╯
CLR_RED="\033[1;31m"
CLR_YELLOW="\033[1;33m"
CLR_GREEN="\033[1;32m"
CLR_BLUE="\033[1;34m"
CLR_RESET="\033[0m"
# ╭──────────────────────────────────────────────────────────╮
# │ Color functions │
# ╰──────────────────────────────────────────────────────────╯
function __color_red()
{
local MSG="$1"
echo -e "${CLR_RED}${MSG}${CLR_RESET}"
}
function __color_yellow()
{
local MSG="$1"
echo -e "${CLR_YELLOW}${MSG}${CLR_RESET}"
}
function __color_green()
{
local MSG="$1"
echo -e "${CLR_GREEN}${MSG}${CLR_RESET}"
}
function __color_blue()
{
local MSG="$1"
echo -e "${CLR_BLUE}${MSG}${CLR_RESET}"
}
# ╭──────────────────────────────────────────────────────────╮
# │ Helpers │
# ╰──────────────────────────────────────────────────────────╯
function __log_marker()
{
echo -e "${CLR_BLUE}➜${CLR_RESET}"
}
function __log_marker_ok()
{
echo -e "${CLR_GREEN}✔${CLR_RESET}"
}
function __log_marker_ok_blue()
{
echo -e "${CLR_BLUE}✔${CLR_RESET}"
}
function __log_marker_warn()
{
echo -e "${CLR_YELLOW}⁕${CLR_RESET}"
}
function __log_marker_question()
{
echo -e "${CLR_YELLOW}?${CLR_RESET}"
}
function __log_marker_err()
{
echo -e "${CLR_RED}⛌${CLR_RESET}"
}
function __log_indent()
{
echo " "
}
# ╭──────────────────────────────────────────────────────────╮
# │ Log functions │
# ╰──────────────────────────────────────────────────────────╯
function msg()
{
echo -e "$(__log_marker) $1"
}
function msg_yay()
{
echo -e "🎉 $1"
}
function msg_yay_done()
{
echo -e "🎉 $1 ...$(__log_marker_ok)"
}
function msg_done()
{
echo -e "$(__log_marker) $1 ...$(__log_marker_ok)"
}
function msg_done_suffix()
{
echo -e "$(__log_marker) ...$(__log_marker_ok)"
}
function msg_prompt()
{
echo -e "$(__log_marker_question) $1"
}
function msg_prompt_done()
{
echo -e "$(__log_marker_question) $1 ...$(__log_marker_ok)"
}
function msg_nested()
{
echo -e "$(__log_indent)$(__log_marker) $1"
}
function msg_nested_done()
{
echo -e "$(__log_indent)$(__log_marker) $1 ...$(__log_marker_ok)"
}
function msg_run()
{
echo -e "${CLR_GREEN}➜ $1${CLR_RESET} $2"
}
function msg_run_done()
{
echo -e "${CLR_GREEN}➜ $1${CLR_RESET} $2 ...$(__log_marker_ok)"
}
function msg_ok()
{
echo -e "$(__log_marker_ok) $1"
}
function msg_warn()
{
echo -e "$(__log_marker_warn) $1"
}
function msg_err()
{
echo -e "$(__log_marker_err) $1"
}
# Create a prompt which you have to answer y/n to continue
ask()
{
while true; do
read -p "$1 ([y]/n) " -r
REPLY=${REPLY:-"y"}
if [[ $REPLY =~ ^[Yy]$ ]]; then
return 1
elif [[ $REPLY =~ ^[Nn]$ ]]; then
return 0
fi
done
}
# If this is being sourced, no need to run the next steps.
[ "$sourced" = 1 ] && return
function __tests()
{
msg "[ msg ]"
msg_done "[ done ]"
msg_done_suffix "[ done_suffix ]" && echo " ^-- (done_suffix)"
msg_err "[ err ]"
msg_nested "[ nested ]"
msg_nested_done "[ nested_done ]"
msg_ok "[ ok ]"
msg_prompt "[ prompt ]"
msg_prompt_done "[ prompt_done ]"
msg_run "[ run ]" "[ second_param ]"
msg_run_done "[ run_done ]" "[ second_param ]"
msg_warn "[ warn ]"
msg_yay "[ yay ]"
msg_yay_done "[ yay_done ]"
}
function usage()
{
echo "usage: msgr [type] [message] [optional second message]"
echo ""
echo "-- types and examples: --"
__tests
echo ""
}
# The main loop. first keyword after $0 triggers type, or help and usage examples.
case "$1" in
msg) msg "$2" ;;
done) msg_done "$2" ;;
done_suffix) msg_done_suffix "$2" ;;
err) msg_err "$2" ;;
nested) msg_nested "$2" ;;
nested_done) msg_nested_done "$2" ;;
ok) msg_ok "$2" ;;
prompt) msg_prompt "$2" ;;
prompt_done) msg_prompt_done "$2" ;;
run) msg_run "$2" ;;
run_done) msg_run_done "$2" "$3" ;;
warn) msg_warn "$2" ;;
yay) msg_yay "$2" ;;
yay_done) msg_yay_done "$2" ;;
tests) __tests "[first]" "[second]" ;;
*) usage && exit 0 ;;
esac

View File

@@ -4,6 +4,7 @@
# Updates $HOME/.dotfiles/docs/tmux.md with my keybindings. # Updates $HOME/.dotfiles/docs/tmux.md with my keybindings.
# shellcheck source=./../../scripts/shared.sh # shellcheck source=./../../scripts/shared.sh
DOTFILES_SHARED_LOADED=""
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
have tmux || { have tmux || {
@@ -15,7 +16,7 @@ TMUX_KEYBINDINGS_DOCS="$DOTFILES/docs/tmux-keybindings.md"
CB="\n\`\`\`\n" CB="\n\`\`\`\n"
KB=$(tmux list-keys) KB=$(tmux list-keys)
H="# tmux keybindings\n" H="# tmux keybindings\n"
L="\n\nLeader: \`<ctrl><space>\`\n\n" L="\nLeader: \`<ctrl><space>\`\n"
# Generalize expanded $HOME to "$HOME" # Generalize expanded $HOME to "$HOME"
KB="${KB//$HOME/\$HOME}" KB="${KB//$HOME/\$HOME}"

View File

@@ -1,136 +1,195 @@
#!/usr/bin/python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Python script to find the largest files in a git repository. # Python script to find the largest files in a git repository.
# The general method is based on the script in this blog post: # The general method is based on the script in this blog post:
# http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/ # http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/
# #
# The above script worked for me, but was very slow on my 11GB repository. This version has a bunch # The above script worked for me, but was very slow on my 11GB repository.
# of changes to speed things up to a more reasonable time. It takes less than a minute on repos with 250K objects. # This version has a bunch of changes to speed things up to a more
# reasonable time. It takes less than a minute on repos with 250K objects.
# #
# The MIT License (MIT) # The MIT License (MIT)
# Copyright (c) 2015 Nick Kocharhook # Copyright (c) 2015 Nick Kocharhook
# Copyright (c) 2023 Ismo Vuorinen
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and # Permission is hereby granted, free of charge, to any person obtaining a copy
# associated documentation files (the "Software"), to deal in the Software without restriction, # of this software and associated documentation files (the "Software"), to deal
# including without limitation the rights to use, copy, modify, merge, publish, distribute, # in the Software without restriction, including without limitation the rights
# sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
# of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions: # furnished to do so, subject to the following conditions:
# #
# The above copyright notice and this permission notice shall be included in all copies or # The above copyright notice and this permission notice shall be included in all copies
# substantial portions of the Software. # or substantial portions of the Software.
# #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# vim:tw=120:ts=4:ft=python:norl:
from subprocess import check_output, CalledProcessError, Popen, PIPE from subprocess import check_output, Popen, PIPE
import argparse import argparse
import signal import signal
import sys import sys
sortByOnDiskSize = False sortByOnDiskSize = False
class Blob(object):
sha1 = ''
size = 0
packedSize = 0
path = ''
def __init__(self, line):
cols = line.split()
self.sha1, self.size, self.packedSize = cols[0], int(cols[2]), int(cols[3])
def __repr__(self):
return '{} - {} - {} - {}'.format(
self.sha1, self.size, self.packedSize, self.path)
def __lt__(self, other):
if (sortByOnDiskSize):
return self.size < other.size
else:
return self.packedSize < other.packedSize
def csv_line(self):
return "{},{},{},{}".format(
self.size/1024, self.packedSize/1024, self.sha1, self.path)
def main(): def main():
global sortByOnDiskSize global sortByOnDiskSize
signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGINT, signal_handler)
args = parseArguments()
sortByOnDiskSize = args.sortByOnDiskSize
sizeLimit = 1024*args.filesExceeding
if args.filesExceeding > 0: args = parse_arguments()
print "Finding objects larger than {}kB…".format(args.filesExceeding) sortByOnDiskSize = args.sortByOnDiskSize
else: sizeLimit = 1024*args.filesExceeding
print "Finding the {} largest objects…".format(args.matchCount)
blobs = getTopBlobs(args.matchCount, sizeLimit) if args.filesExceeding > 0:
print("Finding objects larger than {}kB…".format(args.filesExceeding))
else:
print("Finding the {} largest objects…".format(args.matchCount))
populateBlobPaths(blobs) blobs = get_top_blobs(args.matchCount, sizeLimit)
printOutBlobs(blobs)
def getTopBlobs(count, sizeLimit): populate_blob_paths(blobs)
sortColumn = 4 print_out_blobs(blobs)
if sortByOnDiskSize:
sortColumn = 3
verifyPack = "git verify-pack -v `git rev-parse --git-dir`/objects/pack/pack-*.idx | grep blob | sort -k{}nr".format(sortColumn)
output = check_output(verifyPack, shell=True).split("\n")[:-1]
blobs = dict()
compareBlob = Blob("a b {} {} c".format(sizeLimit, sizeLimit)) # use __lt__ to do the appropriate comparison
for objLine in output:
blob = Blob(objLine)
if sizeLimit > 0:
if compareBlob < blob:
blobs[blob.sha1] = blob
else:
break
else:
blobs[blob.sha1] = blob
if len(blobs) == count:
break
return blobs
def populateBlobPaths(blobs): def get_top_blobs(count, sizeLimit):
if len(blobs): """Get top blobs from git repository
print "Finding object paths…"
# Only include revs which have a path. Other revs aren't blobs. Args:
revList = "git rev-list --all --objects | awk '$2 {print}'" count (int): How many items to return
allObjectLines = check_output(revList, shell=True).split("\n")[:-1] sizeLimit (int): What is the size limit
outstandingKeys = blobs.keys() Returns:
dict: Dictionary of Blobs
"""
sortColumn = 4
for line in allObjectLines: if sortByOnDiskSize:
cols = line.split() sortColumn = 3
sha1, path = cols[0], " ".join(cols[1:])
if (sha1 in outstandingKeys): verifyPack = "git verify-pack -v `git rev-parse --git-dir`/objects/pack/pack-*.idx | grep blob | sort -k{}nr".format(sortColumn) # noqa: E501
outstandingKeys.remove(sha1) output = check_output(verifyPack, shell=True).decode('utf-8').strip().split("\n")[:-1] # noqa: E501
blobs[sha1].path = path
# short-circuit the search if we're done blobs = dict()
if not len(outstandingKeys): # use __lt__ to do the appropriate comparison
break compareBlob = Blob("a b {} {} c".format(sizeLimit, sizeLimit))
for objLine in output:
blob = Blob(objLine)
if sizeLimit > 0:
if compareBlob < blob:
blobs[blob.sha1] = blob
else:
break
else:
blobs[blob.sha1] = blob
if len(blobs) == count:
break
return blobs
def printOutBlobs(blobs): def populate_blob_paths(blobs):
if len(blobs): """Populate blob paths that only have a path
csvLines = ["size,pack,hash,path"]
for blob in sorted(blobs.values(), reverse=True): Args:
csvLines.append(blob.csvLine()) blobs (Blob, dict): Dictionary of Blobs
"""
if len(blobs):
print("Finding object paths…")
p = Popen(["column", "-t", "-s", "','"], stdin=PIPE, stdout=PIPE, stderr=PIPE) # Only include revs which have a path. Other revs aren't blobs.
stdout, stderr = p.communicate("\n".join(csvLines)+"\n") revList = "git rev-list --all --objects | awk '$2 {print}'"
all_object_lines = check_output(revList, shell=True).decode('utf-8').strip().split("\n")[:-1] # noqa: E501
outstanding_keys = list(blobs.keys())
print "\nAll sizes in kB. The pack column is the compressed size of the object inside the pack file.\n" for line in all_object_lines:
print stdout.rstrip('\n') cols = line.split()
else: sha1, path = cols[0], " ".join(cols[1:])
print "No files found which match those criteria."
if (sha1 in outstanding_keys):
outstanding_keys.remove(sha1)
blobs[sha1].path = path
# short-circuit the search if we're done
if not len(outstanding_keys):
break
def parseArguments(): def print_out_blobs(blobs):
parser = argparse.ArgumentParser(description='List the largest files in a git repository') if len(blobs):
parser.add_argument('-c', '--match-count', dest='matchCount', type=int, default=10, csvLines = ["size,pack,hash,path"]
help='The number of files to return. Default is 10. Ignored if --files-exceeding is used.')
parser.add_argument('--files-exceeding', dest='filesExceeding', type=int, default=0,
help='The cutoff amount, in KB. Files with a pack size (or pyhsical size, with -p) larger than this will be printed.')
parser.add_argument('-p', '--physical-sort', dest='sortByOnDiskSize', action='store_true', default=False,
help='Sort by the on-disk size of the files. Default is to sort by the pack size.')
return parser.parse_args() for blob in sorted(blobs.values(), reverse=True):
csvLines.append(blob.csv_line())
command = ["column", "-t", "-s", ","]
p = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
# Encode the input as bytes
input_data = ("\n".join(csvLines) + "\n").encode()
stdout, _ = p.communicate(input_data)
print("\nAll sizes in kB. The pack column is the compressed size of the object inside the pack file.\n") # noqa: E501
print(stdout.decode("utf-8").rstrip('\n'))
else:
print("No files found which match those criteria.")
def parse_arguments():
parser = argparse.ArgumentParser(
description='List the largest files in a git repository'
)
parser.add_argument(
'-c', '--match-count', dest='matchCount', type=int, default=10,
help='Files to return. Default is 10. Ignored if --files-exceeding is used.'
)
parser.add_argument(
'--files-exceeding', dest='filesExceeding', type=int, default=0,
help='The cutoff amount, in KB. Files with a pack size (or physical size, with -p) larger than this will be printed.' # noqa: E501
)
parser.add_argument(
'-p', '--physical-sort', dest='sortByOnDiskSize',
action='store_true', default=False,
help='Sort by the on-disk size. Default is to sort by the pack size.'
)
return parser.parse_args()
def signal_handler(signal, frame): def signal_handler(signal, frame):
@@ -138,29 +197,6 @@ def signal_handler(signal, frame):
sys.exit(0) sys.exit(0)
class Blob(object):
sha1 = ''
size = 0
packedSize = 0
path = ''
def __init__(self, line):
cols = line.split()
self.sha1, self.size, self.packedSize = cols[0], int(cols[2]), int(cols[3])
def __repr__(self):
return '{} - {} - {} - {}'.format(self.sha1, self.size, self.packedSize, self.path)
def __lt__(self, other):
if (sortByOnDiskSize):
return self.size < other.size
else:
return self.packedSize < other.packedSize
def csvLine(self):
return "{},{},{},{}".format(self.size/1024, self.packedSize/1024, self.sha1, self.path)
# Default function is main() # Default function is main()
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View File

@@ -16,21 +16,22 @@ COLOR_S='\033[0;36m'
RESET='\033[0m' RESET='\033[0m'
# Print time-based personalized message, using figlet & lolcat if availible # Print time-based personalized message, using figlet & lolcat if availible
function welcome_greeting () { function welcome_greeting()
{
h=$(date +%H) h=$(date +%H)
if [ "$h" -lt 04 ] || [ "$h" -gt 22 ]; if [ "$h" -lt 04 ] || [ "$h" -gt 22 ]; then
then greeting="Good Night" greeting="Good Night"
elif [ "$h" -lt 12 ]; elif [ "$h" -lt 12 ]; then
then greeting="Good morning" greeting="Good morning"
elif [ "$h" -lt 18 ]; elif [ "$h" -lt 18 ]; then
then greeting="Good afternoon" greeting="Good afternoon"
elif [ "$h" -lt 22 ]; elif [ "$h" -lt 22 ]; then
then greeting="Good evening" greeting="Good evening"
else else
greeting="Hello" greeting="Hello"
fi fi
WELCOME_MSG="$greeting $USER!" WELCOME_MSG="$greeting $USER!"
if hash lolcat 2>/dev/null && hash figlet 2>/dev/null; then if hash lolcat 2> /dev/null && hash figlet 2> /dev/null; then
echo "${WELCOME_MSG}" | figlet | lolcat echo "${WELCOME_MSG}" | figlet | lolcat
else else
echo -e "$COLOR_P${WELCOME_MSG}${RESET}\n" echo -e "$COLOR_P${WELCOME_MSG}${RESET}\n"
@@ -38,8 +39,9 @@ function welcome_greeting () {
} }
# Print system information with neofetch, if it's installed # Print system information with neofetch, if it's installed
function welcome_sysinfo () { function welcome_sysinfo()
if hash neofetch 2>/dev/null; then {
if hash neofetch 2> /dev/null; then
neofetch --shell_version off \ neofetch --shell_version off \
--disable kernel distro shell resolution cpu gpu de wm wm_theme theme icons terminal \ --disable kernel distro shell resolution cpu gpu de wm wm_theme theme icons terminal \
--backend off \ --backend off \
@@ -50,7 +52,8 @@ function welcome_sysinfo () {
} }
# Print todays info: Date, IP, weather, etc # Print todays info: Date, IP, weather, etc
function welcome_today () { function welcome_today()
{
timeout=1 timeout=1
echo -e "\033[1;34mToday\n------" echo -e "\033[1;34mToday\n------"
@@ -62,7 +65,7 @@ function welcome_today () {
echo -e "${RESET}" echo -e "${RESET}"
# Print IP address # Print IP address
if hash ip 2>/dev/null; then if hash ip 2> /dev/null; then
ip_address=$(ip route get 8.8.8.8 | awk -F"src " 'NR==1{split($2,a," ");print a[1]}') ip_address=$(ip route get 8.8.8.8 | awk -F"src " 'NR==1{split($2,a," ");print a[1]}')
ip_interface=$(ip route get 8.8.8.8 | awk -F"dev " 'NR==1{split($2,a," ");print a[1]}') ip_interface=$(ip route get 8.8.8.8 | awk -F"dev " 'NR==1{split($2,a," ");print a[1]}')
echo -e "${COLOR_S}🌐 IP: $(curl -s -m $timeout 'https://ipinfo.io/ip') (${ip_address} on ${ip_interface})" echo -e "${COLOR_S}🌐 IP: $(curl -s -m $timeout 'https://ipinfo.io/ip') (${ip_address} on ${ip_interface})"
@@ -71,23 +74,11 @@ function welcome_today () {
} }
# Putting it all together # Putting it all together
function welcome() { function welcome()
{
welcome_greeting welcome_greeting
welcome_sysinfo welcome_sysinfo
welcome_today welcome_today
} }
# Determine if file is being run directly or sourced welcome "$@"
([[ -n $ZSH_EVAL_CONTEXT && $ZSH_EVAL_CONTEXT =~ :file$ ]] \
|| [[ -n $KSH_VERSION && $(cd "$(dirname -- "$0")" \
&& printf '%s' "${PWD%/}/")$(basename -- "$0") != "${.sh.file}" ]] \
|| [[ -n $BASH_VERSION ]] && (return 0 2>/dev/null)
) && sourced=1 || sourced=0
# If script being called directly run immediately
if [ "$sourced" -eq 0 ]; then
welcome "$@"
fi
# EOF

36
package.json Normal file
View File

@@ -0,0 +1,36 @@
{
"name": "ivuorinen-dotfiles",
"version": "1.0.0",
"description": "ivuorinen's dotfiles, this is for linting and formatters",
"main": "index.js",
"directories": {
"doc": "docs"
},
"scripts": {
"lint:markdown": "npx markdownlint -d .",
"fix:markdown": "npx markdownlint -df .",
"lint:prettier": "npx prettier . --check",
"fix:prettier": "npx prettier . --write",
"test": "echo \"Error: no test specified\" && exit 0"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ivuorinen/dotfiles.git"
},
"keywords": [
"dotfiles",
"ivuorinen"
],
"author": "Ismo Vuorinen",
"license": "ISC",
"bugs": {
"url": "https://github.com/ivuorinen/dotfiles/issues"
},
"homepage": "https://github.com/ivuorinen/dotfiles#readme",
"devDependencies": {
"@ivuorinen/commitlint-config": "^0.1.10",
"@ivuorinen/eslint-config": "^0.2.13",
"@ivuorinen/markdownlint-config": "^0.1.6",
"@ivuorinen/prettier-config": "^0.1.1"
}
}

View File

@@ -4,12 +4,18 @@
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
msg "Starting to install rust/cargo packages"
! have cargo && { ! have cargo && {
msg "cargo could not be found. installing cargo with rustup.rs" msg "cargo could not be found. installing cargo with rustup.rs"
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path
} }
source "$CARGO_HOME/env"
packages=( packages=(
# An incremental parsing system for programming tools
"tree-sitter-cli"
# a subprocess caching utility # a subprocess caching utility
"bkt" "bkt"
# a structural diff that understands syntax # a structural diff that understands syntax
@@ -18,6 +24,14 @@ packages=(
"eza" "eza"
# A simple, fast and user-friendly alternative to 'find' # A simple, fast and user-friendly alternative to 'find'
"fd-find" "fd-find"
# A cargo subcommand for checking and applying
# updates to installed executables
"cargo-update"
# recursively searches directories for a
# regex pattern while respecting your gitignore
"ripgrep"
# A version manager for neovim
"bob-nvim"
) )
for pkg in "${packages[@]}"; do for pkg in "${packages[@]}"; do
@@ -26,7 +40,19 @@ for pkg in "${packages[@]}"; do
# Skip comments # Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi if [[ ${pkg:0:1} == "#" ]]; then continue; fi
cargo install $pkg msg_run "Installing cargo package $pkg"
cargo install "$pkg"
echo "" echo ""
done done
msg_done "Installed cargo packages!"
msg_run "Now doing the next steps for cargo packages"
# use bob to install nvim
have bob && {
bob use stable && path_append "$XDG_DATA_HOME/bob/nvim-bin"
}
msg_done "All next steps done!"

View File

@@ -1,9 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC2231,SC2034,SC2181,SC2068 # shellcheck disable=SC2231,SC2034,SC2181,SC2068
# shellcheck source=shared.sh # shellcheck source=shared.sh
DOTFILES_SHARED_LOADED=""
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
PBB_REQUIRED_TOOLS=(basename git mkdir cheat ls grep head awk cp echo rm) PBB_REQUIRED_TOOLS=(git cheat)
for t in ${PBB_REQUIRED_TOOLS[@]}; do for t in ${PBB_REQUIRED_TOOLS[@]}; do
! have "$t" && echo "(!) $t is missing, can't continue..." && exit 1 ! have "$t" && echo "(!) $t is missing, can't continue..." && exit 1
done done

View File

@@ -1,9 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC2231,SC2034,SC2181,SC2068 # shellcheck disable=SC2231,SC2034,SC2181,SC2068
# shellcheck source=shared.sh # shellcheck source=shared.sh
DOTFILES_SHARED_LOADED=""
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
TLDR_REQUIRED_TOOLS=(basename git mkdir cheat ls grep head awk cp echo rm) TLDR_REQUIRED_TOOLS=(git cheat)
for t in ${TLDR_REQUIRED_TOOLS[@]}; do for t in ${TLDR_REQUIRED_TOOLS[@]}; do
! have "$t" && echo "(!) $t is missing, can't continue..." && exit 1 ! have "$t" && echo "(!) $t is missing, can't continue..." && exit 1
done done

44
scripts/install-fonts.sh Executable file
View File

@@ -0,0 +1,44 @@
#!/usr/bin/env bash
# Install NerdFonts
#
# shellcheck source="shared.sh"
source "$HOME/.dotfiles/scripts/shared.sh"
GIT_REPO="https://github.com/ryanoasis/nerd-fonts.git"
TMP_PATH="$XDG_CACHE_HOME/nerd-fonts"
msg "-- NerdFonts --"
fonts=(
Hack
IntelOneMono
JetBrainsMono
OpenDyslexic
SpaceMono
)
if [ ! -d "$TMP_PATH" ]; then
git clone --filter=blob:none --sparse "$GIT_REPO" "$TMP_PATH"
fi
cd "$TMP_PATH" || {
msg_err "No such folder $TMP_PATH"
exit 1
}
for ext in "${fonts[@]}"; do
# Trim spaces
ext=${ext// /}
# Skip comments
if [[ ${ext:0:1} == "#" ]]; then continue; fi
msg_run "Adding $ext to sparse-checkout"
git sparse-checkout add "patched-fonts/$ext"
echo ""
done
msg "Starting to install NerdFonts..."
./install.sh -s ${fonts[*]}
msg_ok "Done"

View File

@@ -4,6 +4,8 @@
# shellcheck source="shared.sh" # shellcheck source="shared.sh"
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
msg_run "Installing gh (GitHub Client) extensions"
! have gh \ ! have gh \
&& msg_err "gh (GitHub Client) could not be found, please install it first" \ && msg_err "gh (GitHub Client) could not be found, please install it first" \
&& exit 0 && exit 0
@@ -28,15 +30,13 @@ extensions=(
rsese/gh-actions-status rsese/gh-actions-status
) )
msg "Starting to install GitHub CLI extensions..."
for ext in "${extensions[@]}"; do for ext in "${extensions[@]}"; do
# Trim spaces # Trim spaces
ext=${ext// /} ext=${ext// /}
# Skip comments # Skip comments
if [[ ${ext:0:1} == "#" ]]; then continue; fi if [[ ${ext:0:1} == "#" ]]; then continue; fi
msg_run "Installing $ext" msg_nested "Installing $ext"
gh extensions install "$ext" gh extensions install "$ext"
echo "" echo ""
done done

View File

@@ -6,7 +6,7 @@
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
msg "Installing git-crypt" msg_run "Installing git-crypt"
! have git-crypt && { ! have git-crypt && {

View File

@@ -4,6 +4,8 @@
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
msg_run "Installing go packages"
! have go && msg "go hasn't been installed yet." && exit 0 ! have go && msg "go hasn't been installed yet." && exit 0
packages=( packages=(
@@ -33,16 +35,17 @@ for pkg in "${packages[@]}"; do
# Skip comments # Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi if [[ ${pkg:0:1} == "#" ]]; then continue; fi
msg_run "Installing go package:" "$pkg" msg_nested "Installing go package: $pkg"
go install "$pkg" go install "$pkg"
echo "" echo ""
done done
msg "Installing completions for selected packages" msg_run "Installing completions for selected packages"
have git-profile && { have git-profile && {
git-profile completion zsh > "$ZSH_CUSTOM_COMPLETION_PATH/_git-profile" \ git-profile completion zsh > "$ZSH_CUSTOM_COMPLETION_PATH/_git-profile" \
&& msg_yay "Installed completions for git-profile" && msg_ok "Installed completions for git-profile"
} }
echo ""
msg_ok "Done" msg_ok "Done"

View File

@@ -4,6 +4,8 @@
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
msg "Starting to install npm packages"
! have npm && msg_err "npm could not be found." && exit 0 ! have npm && msg_err "npm could not be found." && exit 0
packages=( packages=(

View File

@@ -4,12 +4,16 @@
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "$HOME/.dotfiles/scripts/shared.sh" source "$HOME/.dotfiles/scripts/shared.sh"
! have pip && { msg "Starting to install pip packages"
msg_err "Could not find pip, something really terrible is going on." && exit 1
! have python3 && {
msg_err "Could not find python3, something really terrible is going on." && exit 1
} }
packages=( packages=(
"pipx"
"libtmux" "libtmux"
"ensurepath"
) )
for pkg in "${packages[@]}"; do for pkg in "${packages[@]}"; do
@@ -18,7 +22,10 @@ for pkg in "${packages[@]}"; do
# Skip comments # Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi if [[ ${pkg:0:1} == "#" ]]; then continue; fi
python3 -m pip install --user $pkg msg_nested "Installing pip package: $pkg"
python3 -m pip install --user "$pkg"
echo "" echo ""
done done
msg_yay "Run pip package installations"

View File

@@ -8,6 +8,11 @@
[ "$(uname)" != "Darwin" ] && echo "Not a macOS system" && exit 0 [ "$(uname)" != "Darwin" ] && echo "Not a macOS system" && exit 0
# shellcheck source=shared.sh
source "$HOME/.dotfiles/scripts/shared.sh"
msg_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
@@ -19,6 +24,8 @@ 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"
# 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
[[ "$SHELL" != $(which zsh) ]] && chsh -s "$(which zsh)" [[ "$SHELL" != $(which zsh) ]] && chsh -s "$(which zsh)"
@@ -28,6 +35,8 @@ fi
# General UI/UX # # General UI/UX #
############################################################################### ###############################################################################
msg_nested "Setting General UI/UX settings"
# Disable the sound effects on boot # Disable the sound effects on boot
sudo nvram SystemAudioVolume=" " sudo nvram SystemAudioVolume=" "
@@ -80,6 +89,8 @@ defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
# SSD-specific tweaks # # SSD-specific tweaks #
############################################################################### ###############################################################################
msg_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
@@ -90,6 +101,8 @@ 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"
# 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
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" 80 defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" 80
@@ -124,6 +137,8 @@ defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
# Screen # # Screen #
############################################################################### ###############################################################################
msg_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
defaults write com.apple.screensaver askForPasswordDelay -int 0 defaults write com.apple.screensaver askForPasswordDelay -int 0
@@ -132,6 +147,8 @@ defaults write com.apple.screensaver askForPasswordDelay -int 0
# Finder # # Finder #
############################################################################### ###############################################################################
msg_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/`
defaults write com.apple.finder NewWindowTarget -string "PfDe" defaults write com.apple.finder NewWindowTarget -string "PfDe"
@@ -190,6 +207,8 @@ defaults write com.apple.finder FXInfoPanesExpanded -dict \
# Screenshots # # Screenshots #
############################################################################### ###############################################################################
msg_nested "Settings for Screenshots"
# Set default screenshot location # Set default screenshot location
mkdir -p "$HOME/Documents/Screenshots" mkdir -p "$HOME/Documents/Screenshots"
defaults write com.apple.screencapture "location" -string "$HOME/Documents/Screenshots" defaults write com.apple.screencapture "location" -string "$HOME/Documents/Screenshots"
@@ -204,6 +223,8 @@ 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"
# 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
@@ -234,6 +255,8 @@ defaults write com.apple.dock showhidden -bool true
# Safari & WebKit # # Safari & WebKit #
############################################################################### ###############################################################################
msg_nested "Settings for Safari & WebKit"
# Enable Safaris debug menu # Enable Safaris debug menu
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
@@ -258,6 +281,8 @@ defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
# Activity Monitor # # Activity Monitor #
############################################################################### ###############################################################################
msg_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
@@ -275,6 +300,8 @@ 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"
# 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
@@ -286,6 +313,8 @@ defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
# Messages # # Messages #
############################################################################### ###############################################################################
msg_nested "Settings for Messages"
# Disable smart quotes as its annoying for messages that contain code # Disable smart quotes as its annoying for messages that contain code
defaults write com.apple.messageshelper.MessageController \ defaults write com.apple.messageshelper.MessageController \
SOInputLineSettings \ SOInputLineSettings \
@@ -298,6 +327,8 @@ defaults write com.apple.messageshelper.MessageController \
-dict-add "continuousSpellCheckingEnabled" \ -dict-add "continuousSpellCheckingEnabled" \
-bool false -bool false
msg_nested "Restarting applications to apply changes"
############################################################################### ###############################################################################
# Kill affected applications # # Kill affected applications #
############################################################################### ###############################################################################
@@ -307,4 +338,5 @@ for app in "Activity Monitor" "Address Book" "Calendar" "Contacts" "cfprefsd" \
"Terminal" "Transmission" "Twitter" "iCal"; do "Terminal" "Transmission" "Twitter" "iCal"; do
killall "${app}" > /dev/null 2>&1 killall "${app}" > /dev/null 2>&1
done done
echo "Done. Note that some of these changes require a logout/restart to take effect."
msg_yay "Done. Note that some of these changes require a logout/restart to take effect."

View File

@@ -6,140 +6,27 @@
# Helper env variables. Use like this: VERBOSE=1 ./script.sh # Helper env variables. Use like this: VERBOSE=1 ./script.sh
: "${VERBOSE:=0}" : "${VERBOSE:=0}"
# -- Colors -- # source "$DOTFILES/local/bin/msgr"
CLR_RED="\033[1;31m"
CLR_YELLOW="\033[1;33m"
CLR_GREEN="\033[1;32m"
CLR_BLUE="\033[1;34m"
CLR_RESET="\033[0m"
# -- Color functions -- # # Run x-load-configs in your terminal to reload the files.
function __color_red() function x-load-configs()
{ {
local MSG="$1" # Load the shell dotfiles, and then some:
echo -e "${CLR_RED}${MSG}${CLR_RESET}" for file in $DOTFILES/config/{exports,alias,functions}; do
} HOST="$(hostname -s)"
function __color_yellow() # global (exports|alias|functions) file for all hosts
{ # shellcheck source=../config/exports
local MSG="$1" [ -r "$file" ] && source "$file"
echo -e "${CLR_YELLOW}${MSG}${CLR_RESET}" # global secret file, git ignored
} # shellcheck source=../config/exports-secret
function __color_green() [ -r "$file-secret" ] && source "$file-secret"
{ # host specific (exports|alias|functions) file
local MSG="$1" # shellcheck source=../config/exports
echo -e "${CLR_GREEN}${MSG}${CLR_RESET}" [ -r "$file-$HOST" ] && source "$file-$HOST"
} # host specific (exports|alias|functions) file, git ignored
function __color_blue() # shellcheck source=../config/exports
{ [ -r "$file-$HOST-secret" ] && source "$file-$HOST-secret"
local MSG="$1" done
echo -e "${CLR_BLUE}${MSG}${CLR_RESET}"
}
# -- Helpers -- #
function __log_marker()
{
echo -e "${CLR_BLUE}${CLR_RESET}"
}
function __log_marker_ok()
{
echo -e "${CLR_GREEN}${CLR_RESET}"
}
function __log_marker_ok_blue()
{
echo -e "${CLR_BLUE}${CLR_RESET}"
}
function __log_marker_warn()
{
echo -e "${CLR_YELLOW}${CLR_RESET}"
}
function __log_marker_question()
{
echo -e "${CLR_YELLOW}?${CLR_RESET}"
}
function __log_marker_err()
{
echo -e "${CLR_RED}${CLR_RESET}"
}
function __log_indent()
{
echo " "
}
# -- Log -- #
function msg()
{
echo -e "$(__log_marker) $1"
}
function msg_yay()
{
echo -e "🎉 $1"
}
function msg_yay_done()
{
echo -e "🎉 $1 ...$(__log_marker_ok)"
}
function msg_done()
{
echo -e "$(__log_marker) $1 ...$(__log_marker_ok)"
}
function msg_done_suffix()
{
echo -e "$(__log_marker) ...$(__log_marker_ok)"
}
function msg_prompt()
{
echo -e "$(__log_marker_question) $1"
}
function msg_prompt_done()
{
echo -e "$(__log_marker_question) $1 ...$(__log_marker_ok)"
}
function msg_nested()
{
echo -e "$(__log_indent)$(__log_marker) $1"
}
function msg_nested_done()
{
echo -e "$(__log_indent)$(__log_marker) $1 ...$(__log_marker_ok)"
}
function msg_run()
{
echo -e "${CLR_GREEN}$1${CLR_RESET} $2"
}
function msg_run_done()
{
echo -e "${CLR_GREEN}$1${CLR_RESET} $2 ...$(__log_marker_ok)"
}
function msg_ok()
{
echo -e "$(__log_marker_ok) $1"
}
function msg_warn()
{
echo -e "$(__log_marker_warn) $1"
}
function msg_err()
{
echo -e "$(__log_marker_err) $1"
} }
# -- Menu builder -- # # -- Menu builder -- #
@@ -201,7 +88,7 @@ function menu_usage()
if command -v bkt >&/dev/null; then if command -v bkt >&/dev/null; then
bkt() bkt()
{ {
command bkt "$@" command bkt --cache-dir="$XDG_CACHE_HOME/bkt" "$@"
} }
else else
# If bkt isn't installed skip its arguments and just execute directly. # If bkt isn't installed skip its arguments and just execute directly.
@@ -213,11 +100,20 @@ else
} }
fi fi
# shorthand for checking if the system has the bin in path. # shorthand for checking if the system has the bin in path,
# this version does not use caching
# usage: have_command php && php -v
function have_command
{
command -v "$1" >&/dev/null
}
# shorthand for checking if the system has the bin in path,
# this version uses caching
# usage: have php && php -v # usage: have php && php -v
function have function have
{ {
bkt -- command -v "$1" >&/dev/null bkt -- which -s "$1" >&/dev/null
} }
function brew_installed function brew_installed
@@ -344,16 +240,8 @@ silent()
"$@" >&/dev/null "$@" >&/dev/null
} }
# Create a prompt which you have to answer y/n to continue # Check if a file contains non-ascii characters
ask() nonascii()
{ {
while true; do LC_ALL=C grep -n '[^[:print:][:space:]]' "${@}"
read -p "$1 ([y]/n) " -r
REPLY=${REPLY:-"y"}
if [[ $REPLY =~ ^[Yy]$ ]]; then
return 1
elif [[ $REPLY =~ ^[Nn]$ ]]; then
return 0
fi
done
} }

1
tools/dotbot-pip Submodule

Submodule tools/dotbot-pip added at 42e6a8f3be

1
tools/dotbot-snap Submodule

Submodule tools/dotbot-snap added at 5722c4e5af

View File

@@ -0,0 +1 @@
openapi-python-client

2919
yarn.lock Normal file

File diff suppressed because it is too large Load Diff