Compare commits

...

16 Commits

Author SHA1 Message Date
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
73 changed files with 4089 additions and 808 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_style = tab
[{local/bin/*,**/*.sh,**/zshrc}]
[{local/bin/*,**/*.sh,**/zshrc,config/*}]
shell_variant = bash # --language-variant
binary_next_line = true
switch_case_indent = true # --case-indent
space_redirects = true
keep_padding = true
keep_padding = false
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
## text and leave all files detected as binary untouched.
## This will handle all files NOT defined below.
* text=auto
* text=auto oel=lf
# Source code
*.bash text eol=lf

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@ name: Release Daily State # Workflow name displayed on GitHub
on:
workflow_dispatch: # Trigger manually
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:
contents: write
jobs:

View File

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

2
.gitignore vendored
View File

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

9
.gitmodules vendored
View File

@@ -47,3 +47,12 @@
[submodule "tmux/tmux-window-name"]
path = config/tmux/plugins/tmux-window-name
url = https://github.com/ofirgall/tmux-window-name.git
[submodule "dotbot-crontab"]
path = tools/dotbot-crontab
url = https://github.com/codekansas/dotbot-crontab.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-brew/**
tools/dotbot-include/**
node_modules

View File

@@ -1,5 +1,5 @@
{
"extends": "markdownlint/style/prettier",
"extends": "@ivuorinen/markdownlint-config",
"code-block-style": {
"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
git submodule add --name dotbot -f https://github.com/anishathalye/dotbot.git tools/dotbot
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 cheat-community -f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
# dotbot and plugins
git submodule add --name dotbot \
-f https://github.com/anishathalye/dotbot.git tools/dotbot
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
git submodule add --name tmux/tpm \

27
base/bashrc Normal file → Executable file
View File

@@ -3,23 +3,34 @@
# Defaults
export DOTFILES="$HOME/.dotfiles"
export DOTFILES_SHARED_LOADED=""
# shellcheck source=scripts/shared.sh
source "$DOTFILES/scripts/shared.sh"
# 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)"
# 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
# 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
# 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" ] \

66
base/zshrc Normal file → Executable file
View File

@@ -3,6 +3,7 @@
# Defaults
export DOTFILES="$HOME/.dotfiles"
export DOTFILES_SHARED_LOADED=""
# shellcheck source=scripts/shared.sh
source "$DOTFILES/scripts/shared.sh"
@@ -30,39 +31,69 @@ function 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"
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
# Add completion scripts to zsh path
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
autoload -Uz compinit
if type brew &>/dev/null
then
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
if type brew &> /dev/null; then
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
fi
compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION"
# Try to load antigen, if present
ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
# shellcheck source=../../.local/bin/antigen.zsh
[[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH"
# antigen is present
have antigen && {
antigen use oh-my-zsh
antigen use oh-my-zsh
# config/functions
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
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
[ -f "${DOTFILES}/config/fzf/fzf.zsh" ] \
@@ -70,4 +101,3 @@ have antigen && {
# Start starship
eval "$(starship init zsh)"

View File

@@ -1,3 +1,4 @@
---
# Configuration for Alacritty, the GPU enhanced terminal emulator
# Any items in the `env` entry below will be added as
@@ -16,6 +17,7 @@ env:
# Window dimensions in character columns and lines
# (changes require restart)
window:
dynamic_title: true
dimensions:
columns: 130
lines: 40
@@ -38,19 +40,19 @@ draw_bold_text_with_bright_colors: true
font:
# The normal (roman) font face to use.
normal:
family: JetBrainsMono Nerd Font
family: JetBrainsMonoNL Nerd Font Mono
# Style can be specified to pick a specific face.
# style: Regular
style: ExtraLight
# The bold font face
bold:
family: JetBrainsMono Nerd Font
family: JetBrainsMonoNL Nerd Font Mono
# Style can be specified to pick a specific face.
style: Bold
# The italic font face
italic:
family: JetBrainsMono Nerd Font
family: JetBrainsMonoNL Nerd Font Mono
# Style can be specified to pick a specific face.
style: Italic
@@ -76,82 +78,82 @@ debug.render_timer: false
# https://github.com/catppuccin/alacritty
colors:
primary:
background: "#1E1E2E" # base
foreground: "#CDD6F4" # text
background: '#1E1E2E' # base
foreground: '#CDD6F4' # text
# Bright and dim foreground colors
dim_foreground: "#CDD6F4" # text
bright_foreground: "#CDD6F4" # text
dim_foreground: '#CDD6F4' # text
bright_foreground: '#CDD6F4' # text
# Cursor colors
cursor:
text: "#1E1E2E" # base
cursor: "#F5E0DC" # rosewater
text: '#1E1E2E' # base
cursor: '#F5E0DC' # rosewater
vi_mode_cursor:
text: "#1E1E2E" # base
cursor: "#B4BEFE" # lavender
text: '#1E1E2E' # base
cursor: '#B4BEFE' # lavender
# Search colors
search:
matches:
foreground: "#1E1E2E" # base
background: "#A6ADC8" # subtext0
foreground: '#1E1E2E' # base
background: '#A6ADC8' # subtext0
focused_match:
foreground: "#1E1E2E" # base
background: "#A6E3A1" # green
foreground: '#1E1E2E' # base
background: '#A6E3A1' # green
footer_bar:
foreground: "#1E1E2E" # base
background: "#A6ADC8" # subtext0
foreground: '#1E1E2E' # base
background: '#A6ADC8' # subtext0
# Keyboard regex hints
hints:
start:
foreground: "#1E1E2E" # base
background: "#F9E2AF" # yellow
foreground: '#1E1E2E' # base
background: '#F9E2AF' # yellow
end:
foreground: "#1E1E2E" # base
background: "#A6ADC8" # subtext0
foreground: '#1E1E2E' # base
background: '#A6ADC8' # subtext0
# Selection colors
selection:
text: "#1E1E2E" # base
background: "#F5E0DC" # rosewater
text: '#1E1E2E' # base
background: '#F5E0DC' # rosewater
# Normal colors
normal:
black: "#45475A" # surface1
red: "#F38BA8" # red
green: "#A6E3A1" # green
yellow: "#F9E2AF" # yellow
blue: "#89B4FA" # blue
magenta: "#F5C2E7" # pink
cyan: "#94E2D5" # teal
white: "#BAC2DE" # subtext1
black: '#45475A' # surface1
red: '#F38BA8' # red
green: '#A6E3A1' # green
yellow: '#F9E2AF' # yellow
blue: '#89B4FA' # blue
magenta: '#F5C2E7' # pink
cyan: '#94E2D5' # teal
white: '#BAC2DE' # subtext1
# Bright colors
bright:
black: "#585B70" # surface2
red: "#F38BA8" # red
green: "#A6E3A1" # green
yellow: "#F9E2AF" # yellow
blue: "#89B4FA" # blue
magenta: "#F5C2E7" # pink
cyan: "#94E2D5" # teal
white: "#A6ADC8" # subtext0
black: '#585B70' # surface2
red: '#F38BA8' # red
green: '#A6E3A1' # green
yellow: '#F9E2AF' # yellow
blue: '#89B4FA' # blue
magenta: '#F5C2E7' # pink
cyan: '#94E2D5' # teal
white: '#A6ADC8' # subtext0
# Dim colors
dim:
black: "#45475A" # surface1
red: "#F38BA8" # red
green: "#A6E3A1" # green
yellow: "#F9E2AF" # yellow
blue: "#89B4FA" # blue
magenta: "#F5C2E7" # pink
cyan: "#94E2D5" # teal
white: "#BAC2DE" # subtext1
black: '#45475A' # surface1
red: '#F38BA8' # red
green: '#A6E3A1' # green
yellow: '#F9E2AF' # yellow
blue: '#89B4FA' # blue
magenta: '#F5C2E7' # pink
cyan: '#94E2D5' # teal
white: '#BAC2DE' # subtext1
indexed_colors:
- { index: 16, color: "#FAB387" }
- { index: 17, color: "#F5E0DC" }
- { index: 16, color: '#FAB387' }
- { index: 17, color: '#F5E0DC' }
# Visual Bell
#
@@ -260,7 +262,7 @@ key_bindings:
- { key: F10, chars: "\e[21~" }
- { key: F11, chars: "\e[23~" }
- { key: F12, chars: "\e[24~" }
- { key: Back, chars: "" }
- { key: Back, chars: '' }
- { key: Back, mods: Alt, chars: "\e" }
- { key: Insert, chars: "\e[2~" }
- { key: Delete, chars: "\e[3~" }
@@ -298,7 +300,6 @@ mouse:
selection:
semantic_escape_chars: ',│`|:"'' ()[]{}<>'
# Shell
#
# 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 && {
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'
@@ -58,6 +58,9 @@ fi
# Be nice
alias please="sudo "
# Color the grep output
alias grep='grep --color'
! have eza && alias ls='ls --color=auto'
have eza && {
alias ls='eza -h -s=type --git --icons --group-directories-first'
@@ -68,9 +71,12 @@ alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
# Colors for ls
alias ll="ls -l"
alias l="ls"
# cd to git root directory
alias cdgr='cd "$(git root)"'
# Shortcuts for listing
alias ll="ls -la"
alias l="ls -a"
# Prevent common typos
alias cd..="cd .."
@@ -79,12 +85,6 @@ alias sl="ls"
# List only directories
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
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en1"
@@ -118,6 +118,10 @@ alias ta='tmux attach || tmux'
alias watchx='watch -dpbc'
# delete .DS_Store files
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
alias t='tail -f'
# directory usage, return only the total

View File

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

View File

@@ -23,11 +23,6 @@ have brew && eval "$(brew shellenv)"
path_append "/usr/local/bin"
path_append "$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-apps"

View File

@@ -3,6 +3,7 @@
# shellcheck enable=external-sources
# shellcheck disable=1091,2139
# vim: filetype=zsh
export DOTFILES="$HOME/.dotfiles"
source "$DOTFILES/scripts/shared.sh"
@@ -17,10 +18,8 @@ export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
have ansible && {
x-dc "$ANSIBLE_HOME"
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
}
x-dc "$ANSIBLE_HOME"
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
export ANDROID_HOME="$XDG_DATA_HOME/android"
@@ -29,29 +28,18 @@ export HOMEBREW_NO_ENV_HINTS=true
# composer, https://getcomposer.org/
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
have composer && {
export PATH="$COMPOSER_BIN:$PATH"
}
path_append "$COMPOSER_BIN"
# docker, https://docs.docker.com/engine/reference/commandline/cli/
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
have docker && {
x-dc "$DOCKER_CONFIG"
# Docker: Disable snyk ad
export DOCKER_SCAN_SUGGEST=false
}
x-dc "$DOCKER_CONFIG"
# Docker: Disable snyk ad
export DOCKER_SCAN_SUGGEST=false
# ffmpeg
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
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
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
@@ -71,17 +59,7 @@ have irssi && {
export NBRC_PATH="$XDG_CONFIG_HOME/nbrc"
export NB_DIR="$XDG_STATE_HOME/nb"
# nvm, the node version manager
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
# NPM: Add npm packages to path
have node && {
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
path_append "$NVM_NODE_BIN_DIR"
@@ -100,8 +78,7 @@ have op && {
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
have pyenv && {
path_append "$(pyenv root)/shims"
path_append "$PYENV_ROOT/bin"
path_append "$PYENV_ROOT/shims"
eval "$(pyenv init -)"
}
@@ -115,10 +92,11 @@ export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
export RBENV_ROOT="$XDG_STATE_HOME/rbenv"
x-dc "$RBENV_ROOT"
have gem && path_append "$(gem environment gemdir)/bin"
have gem && path_append "${GEM_HOME}/bin"
have rbenv && eval "$(rbenv init - zsh)"
# Rust / cargo
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
export CARGO_HOME="$XDG_DATA_HOME/cargo"
path_append "$CARGO_HOME/bin"
@@ -138,10 +116,6 @@ export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
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
export BAT_THEME="ansi"
export CHEAT_USE_FZF=true

View File

@@ -2,6 +2,7 @@
# shellcheck shell=bash
# shellcheck disable=1091,2046
# vim: filetype=zsh
export DOTFILES="$HOME/.dotfiles"
source "$DOTFILES/scripts/shared.sh"
@@ -23,9 +24,16 @@ export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
# And include the parameter for ZSH
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
# Less history location
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
# Highlight section titles in manual pages
export LESS_TERMCAP_md="$ORANGE"
# zsh autoloaded terminfo
export TERMINFO="$XDG_DATA_HOME"/terminfo
export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo
# Dont clear the screen after quitting a manual page
export MANPAGER="less -X"
@@ -46,6 +54,10 @@ have dircolors && eval $(dircolors "$XDG_CONFIG_HOME/dircolors")
# If we are using zsh, color our dir lists and such
if [ "$SHELL" = "$(which 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_STATE_HOME/zsh"
export HISTFILE="$XDG_STATE_HOME/zsh/history"

View File

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

View File

@@ -1,417 +1,410 @@
{
"Badge Text" : "",
"Working Directory" : "\/Users\/ivuorinen\/Code",
"Prompt Before Closing 2" : false,
"Selected Text Color" : {
"Red Component" : 0.80392156862745101,
"Color Space" : "sRGB",
"Blue Component" : 0.95686274509803926,
"Alpha Component" : 1,
"Green Component" : 0.83921568627450982
"Badge Text": "",
"Working Directory": "/Users/ivuorinen/Code",
"Prompt Before Closing 2": false,
"Selected Text Color": {
"Red Component": 0.80392156862745101,
"Color Space": "sRGB",
"Blue Component": 0.95686274509803926,
"Alpha Component": 1,
"Green Component": 0.83921568627450982
},
"Rows" : 25,
"Ansi 11 Color" : {
"Red Component" : 0.97647058823529409,
"Color Space" : "sRGB",
"Blue Component" : 0.68627450980392157,
"Alpha Component" : 1,
"Green Component" : 0.88627450980392153
"Rows": 25,
"Ansi 11 Color": {
"Red Component": 0.97647058823529409,
"Color Space": "sRGB",
"Blue Component": 0.68627450980392157,
"Alpha Component": 1,
"Green Component": 0.88627450980392153
},
"Use Italic Font" : true,
"Foreground Color" : {
"Red Component" : 0.80392156862745101,
"Color Space" : "sRGB",
"Blue Component" : 0.95686274509803926,
"Alpha Component" : 1,
"Green Component" : 0.83921568627450982
"Use Italic Font": true,
"Foreground Color": {
"Red Component": 0.80392156862745101,
"Color Space": "sRGB",
"Blue Component": 0.95686274509803926,
"Alpha Component": 1,
"Green Component": 0.83921568627450982
},
"Right Option Key Sends" : 0,
"Character Encoding" : 4,
"Selection Color" : {
"Red Component" : 0.34509803921568627,
"Color Space" : "sRGB",
"Blue Component" : 0.4392156862745098,
"Alpha Component" : 1,
"Green Component" : 0.35686274509803922
"Right Option Key Sends": 0,
"Character Encoding": 4,
"Selection Color": {
"Red Component": 0.34509803921568627,
"Color Space": "sRGB",
"Blue Component": 0.4392156862745098,
"Alpha Component": 1,
"Green Component": 0.35686274509803922
},
"Blend" : 0.24709154211956524,
"Mouse Reporting" : true,
"Cursor Boost" : 0,
"Ansi 4 Color" : {
"Red Component" : 0.53725490196078429,
"Color Space" : "sRGB",
"Blue Component" : 0.98039215686274506,
"Alpha Component" : 1,
"Green Component" : 0.70588235294117652
"Blend": 0.24709154211956524,
"Mouse Reporting": true,
"Cursor Boost": 0,
"Ansi 4 Color": {
"Red Component": 0.53725490196078429,
"Color Space": "sRGB",
"Blue Component": 0.98039215686274506,
"Alpha Component": 1,
"Green Component": 0.70588235294117652
},
"Non-ASCII Anti Aliased" : true,
"Sync Title" : false,
"Badge Font" : "JetBrainsMonoNerdFontCompleteM-Bold",
"Disable Window Resizing" : true,
"Description" : "Default",
"Close Sessions On End" : true,
"Jobs to Ignore" : [
"rlogin",
"ssh",
"slogin",
"telnet"
],
"Scrollback Lines" : 0,
"Draw Powerline Glyphs" : true,
"Flashing Bell" : true,
"Cursor Guide Color" : {
"Red Component" : 0.80392156862745101,
"Color Space" : "sRGB",
"Blue Component" : 0.95686274509803926,
"Alpha Component" : 0.070000000000000007,
"Green Component" : 0.83921568627450982
"Non-ASCII Anti Aliased": true,
"Sync Title": false,
"Badge Font": "JetBrainsMonoNerdFontCompleteM-Bold",
"Disable Window Resizing": true,
"Description": "Default",
"Close Sessions On End": true,
"Jobs to Ignore": ["rlogin", "ssh", "slogin", "telnet"],
"Scrollback Lines": 0,
"Draw Powerline Glyphs": true,
"Flashing Bell": true,
"Cursor Guide Color": {
"Red Component": 0.80392156862745101,
"Color Space": "sRGB",
"Blue Component": 0.95686274509803926,
"Alpha Component": 0.070000000000000007,
"Green Component": 0.83921568627450982
},
"BM Growl" : true,
"Ansi 3 Color" : {
"Red Component" : 0.97647058823529409,
"Color Space" : "sRGB",
"Blue Component" : 0.68627450980392157,
"Alpha Component" : 1,
"Green Component" : 0.88627450980392153
"BM Growl": true,
"Ansi 3 Color": {
"Red Component": 0.97647058823529409,
"Color Space": "sRGB",
"Blue Component": 0.68627450980392157,
"Alpha Component": 1,
"Green Component": 0.88627450980392153
},
"Icon" : 1,
"Use Non-ASCII Font" : false,
"Link Color" : {
"Red Component" : 0.53725490196078429,
"Color Space" : "sRGB",
"Blue Component" : 0.92156862745098034,
"Alpha Component" : 1,
"Green Component" : 0.86274509803921573
"Icon": 1,
"Use Non-ASCII Font": false,
"Link Color": {
"Red Component": 0.53725490196078429,
"Color Space": "sRGB",
"Blue Component": 0.92156862745098034,
"Alpha Component": 1,
"Green Component": 0.86274509803921573
},
"Shortcut" : "",
"Background Image Location" : "",
"Bold Color" : {
"Red Component" : 0.80392156862745101,
"Color Space" : "sRGB",
"Blue Component" : 0.95686274509803926,
"Alpha Component" : 1,
"Green Component" : 0.83921568627450982
"Shortcut": "",
"Background Image Location": "",
"Bold Color": {
"Red Component": 0.80392156862745101,
"Color Space": "sRGB",
"Blue Component": 0.95686274509803926,
"Alpha Component": 1,
"Green Component": 0.83921568627450982
},
"Use Cursor Guide" : false,
"Unlimited Scrollback" : true,
"Custom Command" : "No",
"Title Components" : 512,
"Keyboard Map" : {
"0xf700-0x260000" : {
"Action" : 10,
"Text" : "[1;6A"
"Use Cursor Guide": false,
"Unlimited Scrollback": true,
"Custom Command": "No",
"Title Components": 512,
"Keyboard Map": {
"0xf700-0x260000": {
"Action": 10,
"Text": "[1;6A"
},
"0x37-0x40000" : {
"Action" : 11,
"Text" : "0x1f"
"0x37-0x40000": {
"Action": 11,
"Text": "0x1f"
},
"0x32-0x40000" : {
"Action" : 11,
"Text" : "0x00"
"0x32-0x40000": {
"Action": 11,
"Text": "0x00"
},
"0xf709-0x20000" : {
"Action" : 10,
"Text" : "[17;2~"
"0xf709-0x20000": {
"Action": 10,
"Text": "[17;2~"
},
"0xf70c-0x20000" : {
"Action" : 10,
"Text" : "[20;2~"
"0xf70c-0x20000": {
"Action": 10,
"Text": "[20;2~"
},
"0xf729-0x20000" : {
"Action" : 10,
"Text" : "[1;2H"
"0xf729-0x20000": {
"Action": 10,
"Text": "[1;2H"
},
"0xf72b-0x40000" : {
"Action" : 10,
"Text" : "[1;5F"
"0xf72b-0x40000": {
"Action": 10,
"Text": "[1;5F"
},
"0xf705-0x20000" : {
"Action" : 10,
"Text" : "[1;2Q"
"0xf705-0x20000": {
"Action": 10,
"Text": "[1;2Q"
},
"0xf703-0x260000" : {
"Action" : 10,
"Text" : "[1;6C"
"0xf703-0x260000": {
"Action": 10,
"Text": "[1;6C"
},
"0xf700-0x220000" : {
"Action" : 10,
"Text" : "[1;2A"
"0xf700-0x220000": {
"Action": 10,
"Text": "[1;2A"
},
"0xf701-0x280000" : {
"Action" : 11,
"Text" : "0x1b 0x1b 0x5b 0x42"
"0xf701-0x280000": {
"Action": 11,
"Text": "0x1b 0x1b 0x5b 0x42"
},
"0x38-0x40000" : {
"Action" : 11,
"Text" : "0x7f"
"0x38-0x40000": {
"Action": 11,
"Text": "0x7f"
},
"0x33-0x40000" : {
"Action" : 11,
"Text" : "0x1b"
"0x33-0x40000": {
"Action": 11,
"Text": "0x1b"
},
"0xf703-0x220000" : {
"Action" : 10,
"Text" : "[1;2C"
"0xf703-0x220000": {
"Action": 10,
"Text": "[1;2C"
},
"0xf701-0x240000" : {
"Action" : 10,
"Text" : "[1;5B"
"0xf701-0x240000": {
"Action": 10,
"Text": "[1;5B"
},
"0xf70d-0x20000" : {
"Action" : 10,
"Text" : "[21;2~"
"0xf70d-0x20000": {
"Action": 10,
"Text": "[21;2~"
},
"0xf702-0x260000" : {
"Action" : 10,
"Text" : "[1;6D"
"0xf702-0x260000": {
"Action": 10,
"Text": "[1;6D"
},
"0xf729-0x40000" : {
"Action" : 10,
"Text" : "[1;5H"
"0xf729-0x40000": {
"Action": 10,
"Text": "[1;5H"
},
"0xf706-0x20000" : {
"Action" : 10,
"Text" : "[1;2R"
"0xf706-0x20000": {
"Action": 10,
"Text": "[1;2R"
},
"0x34-0x40000" : {
"Action" : 11,
"Text" : "0x1c"
"0x34-0x40000": {
"Action": 11,
"Text": "0x1c"
},
"0xf700-0x280000" : {
"Action" : 11,
"Text" : "0x1b 0x1b 0x5b 0x41"
"0xf700-0x280000": {
"Action": 11,
"Text": "0x1b 0x1b 0x5b 0x41"
},
"0x2d-0x40000" : {
"Action" : 11,
"Text" : "0x1f"
"0x2d-0x40000": {
"Action": 11,
"Text": "0x1f"
},
"0xf70e-0x20000" : {
"Action" : 10,
"Text" : "[23;2~"
"0xf70e-0x20000": {
"Action": 10,
"Text": "[23;2~"
},
"0xf702-0x220000" : {
"Action" : 10,
"Text" : "[1;2D"
"0xf702-0x220000": {
"Action": 10,
"Text": "[1;2D"
},
"0xf703-0x280000" : {
"Action" : 11,
"Text" : "0x1b 0x1b 0x5b 0x43"
"0xf703-0x280000": {
"Action": 11,
"Text": "0x1b 0x1b 0x5b 0x43"
},
"0xf700-0x240000" : {
"Action" : 10,
"Text" : "[1;5A"
"0xf700-0x240000": {
"Action": 10,
"Text": "[1;5A"
},
"0xf707-0x20000" : {
"Action" : 10,
"Text" : "[1;2S"
"0xf707-0x20000": {
"Action": 10,
"Text": "[1;2S"
},
"0xf70a-0x20000" : {
"Action" : 10,
"Text" : "[18;2~"
"0xf70a-0x20000": {
"Action": 10,
"Text": "[18;2~"
},
"0x35-0x40000" : {
"Action" : 11,
"Text" : "0x1d"
"0x35-0x40000": {
"Action": 11,
"Text": "0x1d"
},
"0xf70f-0x20000" : {
"Action" : 10,
"Text" : "[24;2~"
"0xf70f-0x20000": {
"Action": 10,
"Text": "[24;2~"
},
"0xf703-0x240000" : {
"Action" : 10,
"Text" : "[1;5C"
"0xf703-0x240000": {
"Action": 10,
"Text": "[1;5C"
},
"0xf701-0x260000" : {
"Action" : 10,
"Text" : "[1;6B"
"0xf701-0x260000": {
"Action": 10,
"Text": "[1;6B"
},
"0xf702-0x280000" : {
"Action" : 11,
"Text" : "0x1b 0x1b 0x5b 0x44"
"0xf702-0x280000": {
"Action": 11,
"Text": "0x1b 0x1b 0x5b 0x44"
},
"0xf72b-0x20000" : {
"Action" : 10,
"Text" : "[1;2F"
"0xf72b-0x20000": {
"Action": 10,
"Text": "[1;2F"
},
"0x36-0x40000" : {
"Action" : 11,
"Text" : "0x1e"
"0x36-0x40000": {
"Action": 11,
"Text": "0x1e"
},
"0xf708-0x20000" : {
"Action" : 10,
"Text" : "[15;2~"
"0xf708-0x20000": {
"Action": 10,
"Text": "[15;2~"
},
"0xf701-0x220000" : {
"Action" : 10,
"Text" : "[1;2B"
"0xf701-0x220000": {
"Action": 10,
"Text": "[1;2B"
},
"0xf70b-0x20000" : {
"Action" : 10,
"Text" : "[19;2~"
"0xf70b-0x20000": {
"Action": 10,
"Text": "[19;2~"
},
"0xf702-0x240000" : {
"Action" : 10,
"Text" : "[1;5D"
"0xf702-0x240000": {
"Action": 10,
"Text": "[1;5D"
},
"0xf704-0x20000" : {
"Action" : 10,
"Text" : "[1;2P"
"0xf704-0x20000": {
"Action": 10,
"Text": "[1;2P"
}
},
"Ansi 14 Color" : {
"Red Component" : 0.58039215686274515,
"Color Space" : "sRGB",
"Blue Component" : 0.83529411764705885,
"Alpha Component" : 1,
"Green Component" : 0.88627450980392153
"Ansi 14 Color": {
"Red Component": 0.58039215686274515,
"Color Space": "sRGB",
"Blue Component": 0.83529411764705885,
"Alpha Component": 1,
"Green Component": 0.88627450980392153
},
"Ansi 2 Color" : {
"Red Component" : 0.65098039215686276,
"Color Space" : "sRGB",
"Blue Component" : 0.63137254901960782,
"Alpha Component" : 1,
"Green Component" : 0.8901960784313725
"Ansi 2 Color": {
"Red Component": 0.65098039215686276,
"Color Space": "sRGB",
"Blue Component": 0.63137254901960782,
"Alpha Component": 1,
"Green Component": 0.8901960784313725
},
"Send Code When Idle" : false,
"ASCII Anti Aliased" : true,
"Tags" : [
],
"Ansi 9 Color" : {
"Red Component" : 0.95294117647058818,
"Color Space" : "sRGB",
"Blue Component" : 0.6588235294117647,
"Alpha Component" : 1,
"Green Component" : 0.54509803921568623
"Send Code When Idle": false,
"ASCII Anti Aliased": true,
"Tags": [],
"Ansi 9 Color": {
"Red Component": 0.95294117647058818,
"Color Space": "sRGB",
"Blue Component": 0.6588235294117647,
"Alpha Component": 1,
"Green Component": 0.54509803921568623
},
"Badge Right Margin" : 10,
"Use Bold Font" : true,
"Silence Bell" : false,
"Ansi 12 Color" : {
"Red Component" : 0.53725490196078429,
"Color Space" : "sRGB",
"Blue Component" : 0.98039215686274506,
"Alpha Component" : 1,
"Green Component" : 0.70588235294117652
"Badge Right Margin": 10,
"Use Bold Font": true,
"Silence Bell": false,
"Ansi 12 Color": {
"Red Component": 0.53725490196078429,
"Color Space": "sRGB",
"Blue Component": 0.98039215686274506,
"Alpha Component": 1,
"Green Component": 0.70588235294117652
},
"Window Type" : 0,
"Use Bright Bold" : true,
"Cursor Text Color" : {
"Red Component" : 0.80392156862745101,
"Color Space" : "sRGB",
"Blue Component" : 0.95686274509803926,
"Alpha Component" : 1,
"Green Component" : 0.83921568627450982
"Window Type": 0,
"Use Bright Bold": true,
"Cursor Text Color": {
"Red Component": 0.80392156862745101,
"Color Space": "sRGB",
"Blue Component": 0.95686274509803926,
"Alpha Component": 1,
"Green Component": 0.83921568627450982
},
"Default Bookmark" : "No",
"Cursor Color" : {
"Red Component" : 0.96078431372549022,
"Color Space" : "sRGB",
"Blue Component" : 0.86274509803921573,
"Alpha Component" : 1,
"Green Component" : 0.8784313725490196
"Default Bookmark": "No",
"Cursor Color": {
"Red Component": 0.96078431372549022,
"Color Space": "sRGB",
"Blue Component": 0.86274509803921573,
"Alpha Component": 1,
"Green Component": 0.8784313725490196
},
"Ansi 1 Color" : {
"Red Component" : 0.95294117647058818,
"Color Space" : "sRGB",
"Blue Component" : 0.6588235294117647,
"Alpha Component" : 1,
"Green Component" : 0.54509803921568623
"Ansi 1 Color": {
"Red Component": 0.95294117647058818,
"Color Space": "sRGB",
"Blue Component": 0.6588235294117647,
"Alpha Component": 1,
"Green Component": 0.54509803921568623
},
"Name" : "Default",
"Blinking Cursor" : false,
"Guid" : "82636119-EA17-4A26-9AA7-408172F4A9C8",
"Badge Max Width" : 0.45000000000000001,
"Idle Code" : 0,
"Ansi 10 Color" : {
"Red Component" : 0.65098039215686276,
"Color Space" : "sRGB",
"Blue Component" : 0.63137254901960782,
"Alpha Component" : 1,
"Green Component" : 0.8901960784313725
"Name": "Default",
"Blinking Cursor": false,
"Guid": "82636119-EA17-4A26-9AA7-408172F4A9C8",
"Badge Max Width": 0.45000000000000001,
"Idle Code": 0,
"Ansi 10 Color": {
"Red Component": 0.65098039215686276,
"Color Space": "sRGB",
"Blue Component": 0.63137254901960782,
"Alpha Component": 1,
"Green Component": 0.8901960784313725
},
"Ansi 8 Color" : {
"Red Component" : 0.34509803921568627,
"Color Space" : "sRGB",
"Blue Component" : 0.4392156862745098,
"Alpha Component" : 1,
"Green Component" : 0.35686274509803922
"Ansi 8 Color": {
"Red Component": 0.34509803921568627,
"Color Space": "sRGB",
"Blue Component": 0.4392156862745098,
"Alpha Component": 1,
"Green Component": 0.35686274509803922
},
"Badge Color" : {
"Red Component" : 1,
"Color Space" : "sRGB",
"Blue Component" : 0,
"Alpha Component" : 0.5,
"Green Component" : 0.14910030364990234
"Badge Color": {
"Red Component": 1,
"Color Space": "sRGB",
"Blue Component": 0,
"Alpha Component": 0.5,
"Green Component": 0.14910030364990234
},
"Smart Cursor Color" : true,
"Ambiguous Double Width" : false,
"Blur Radius" : 9.5927277260638313,
"Badge Max Height" : 0.10000000000000001,
"Ansi 0 Color" : {
"Red Component" : 0.27058823529411763,
"Color Space" : "sRGB",
"Blue Component" : 0.35294117647058826,
"Alpha Component" : 1,
"Green Component" : 0.27843137254901962
"Smart Cursor Color": true,
"Ambiguous Double Width": false,
"Blur Radius": 9.5927277260638313,
"Badge Max Height": 0.10000000000000001,
"Ansi 0 Color": {
"Red Component": 0.27058823529411763,
"Color Space": "sRGB",
"Blue Component": 0.35294117647058826,
"Alpha Component": 1,
"Green Component": 0.27843137254901962
},
"Blur" : true,
"Normal Font" : "JetBrainsMonoNerdFontCompleteM-Light 15",
"Vertical Spacing" : 1,
"Ansi 7 Color" : {
"Red Component" : 0.72941176470588232,
"Color Space" : "sRGB",
"Blue Component" : 0.87058823529411766,
"Alpha Component" : 1,
"Green Component" : 0.76078431372549016
"Blur": true,
"Normal Font": "JetBrainsMonoNerdFontCompleteM-Light 15",
"Vertical Spacing": 1,
"Ansi 7 Color": {
"Red Component": 0.72941176470588232,
"Color Space": "sRGB",
"Blue Component": 0.87058823529411766,
"Alpha Component": 1,
"Green Component": 0.76078431372549016
},
"Command" : "",
"Terminal Type" : "xterm-256color",
"Horizontal Spacing" : 1,
"Option Key Sends" : 0,
"Only The Default BG Color Uses Transparency" : true,
"Minimum Contrast" : 0.14973958333333334,
"Ansi 15 Color" : {
"Red Component" : 0.65098039215686276,
"Color Space" : "sRGB",
"Blue Component" : 0.78431372549019607,
"Alpha Component" : 1,
"Green Component" : 0.67843137254901964
"Command": "",
"Terminal Type": "xterm-256color",
"Horizontal Spacing": 1,
"Option Key Sends": 0,
"Only The Default BG Color Uses Transparency": true,
"Minimum Contrast": 0.14973958333333334,
"Ansi 15 Color": {
"Red Component": 0.65098039215686276,
"Color Space": "sRGB",
"Blue Component": 0.78431372549019607,
"Alpha Component": 1,
"Green Component": 0.67843137254901964
},
"Ansi 6 Color" : {
"Red Component" : 0.58039215686274515,
"Color Space" : "sRGB",
"Blue Component" : 0.83529411764705885,
"Alpha Component" : 1,
"Green Component" : 0.88627450980392153
"Ansi 6 Color": {
"Red Component": 0.58039215686274515,
"Color Space": "sRGB",
"Blue Component": 0.83529411764705885,
"Alpha Component": 1,
"Green Component": 0.88627450980392153
},
"Badge Top Margin" : 10,
"Transparency" : 0.10293218085106381,
"Background Color" : {
"Red Component" : 0.11764705882352941,
"Color Space" : "sRGB",
"Blue Component" : 0.1803921568627451,
"Alpha Component" : 1,
"Green Component" : 0.11764705882352941
"Badge Top Margin": 10,
"Transparency": 0.10293218085106381,
"Background Color": {
"Red Component": 0.11764705882352941,
"Color Space": "sRGB",
"Blue Component": 0.1803921568627451,
"Alpha Component": 1,
"Green Component": 0.11764705882352941
},
"Screen" : -2,
"Non Ascii Font" : "Monaco 12",
"Ansi 13 Color" : {
"Red Component" : 0.96078431372549022,
"Color Space" : "sRGB",
"Blue Component" : 0.90588235294117647,
"Alpha Component" : 1,
"Green Component" : 0.76078431372549016
"Screen": -2,
"Non Ascii Font": "Monaco 12",
"Ansi 13 Color": {
"Red Component": 0.96078431372549022,
"Color Space": "sRGB",
"Blue Component": 0.90588235294117647,
"Alpha Component": 1,
"Green Component": 0.76078431372549016
},
"Columns" : 120,
"Visual Bell" : true,
"ASCII Ligatures" : false,
"Ansi 5 Color" : {
"Red Component" : 0.96078431372549022,
"Color Space" : "sRGB",
"Blue Component" : 0.90588235294117647,
"Alpha Component" : 1,
"Green Component" : 0.76078431372549016
"Columns": 120,
"Visual Bell": true,
"ASCII Ligatures": false,
"Ansi 5 Color": {
"Red Component": 0.96078431372549022,
"Color Space": "sRGB",
"Blue Component": 0.90588235294117647,
"Alpha Component": 1,
"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,7 +1,7 @@
{
"LazyVim": { "branch": "main", "commit": "a72a84972d85e5bbc6b9d60a0983b37efef21b8a" },
"LuaSnip": { "branch": "master", "commit": "1fd22fa96c11573248f9fdd09f25e724c7bb3dd4" },
"SchemaStore.nvim": { "branch": "main", "commit": "d2a3d1da007549c921f7b0e22521d1c20d09c8a7" },
"LazyVim": { "branch": "main", "commit": "50401d358b7be9b931b42fc3b537794920308bef" },
"LuaSnip": { "branch": "master", "commit": "480b032f6708573334f4437d3f83307d143f1a72" },
"SchemaStore.nvim": { "branch": "main", "commit": "917083c0ab4fc328628f0a55c72415e1bd72ab13" },
"alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" },
"animation.nvim": { "branch": "main", "commit": "fb77091ab72ec9971aee0562e7081182527aaa6a" },
"bufdelete.nvim": { "branch": "master", "commit": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4" },
@@ -32,36 +32,36 @@
"mini.pairs": { "branch": "main", "commit": "dfa9f6e2576bb8853be277d96b735af59d9be7c2" },
"mini.surround": { "branch": "main", "commit": "9d1956b576d7051da3a483b251dfc778121c60db" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "71f1841ba6c652908678cece623f52c1fea8a6cd" },
"neoconf.nvim": { "branch": "main", "commit": "360805250fe45391d30b96b6640d03e2c35597ee" },
"neodev.nvim": { "branch": "main", "commit": "ddf29935af5a510307850919d6772ea6a4e2c008" },
"neoconf.nvim": { "branch": "main", "commit": "909179f44e94b4cb8331d46b31d3b77ca71127d5" },
"neodev.nvim": { "branch": "main", "commit": "67b7a5c9facd65077cc4486c73d1774d1a2ed582" },
"neogen": { "branch": "main", "commit": "cb1f384df804c1bf729332c4f728253fe17962d4" },
"noice.nvim": { "branch": "main", "commit": "74c2902146b080035beb19944baf6f014a954720" },
"noice.nvim": { "branch": "main", "commit": "396f9146529130904e07c45e90ecdbfa607534f3" },
"nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" },
"null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
"nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
"nvim-lspconfig": { "branch": "master", "commit": "ede4114e1fd41acb121c70a27e1b026ac68c42d6" },
"nvim-lspconfig": { "branch": "master", "commit": "bfdf2e91e7297a54bcc09d3e092a12bff69a1cf4" },
"nvim-navic": { "branch": "master", "commit": "0ffa7ffe6588f3417e680439872f5049e38a24db" },
"nvim-notify": { "branch": "master", "commit": "94859430020f5cf32a1b97ddd9e596fed9db7981" },
"nvim-regexplainer": { "branch": "main", "commit": "4250c8f3c1307876384e70eeedde5149249e154f" },
"nvim-spectre": { "branch": "master", "commit": "97cfd1b0f5a6ab35979ce1bee6c17f54745fd1e5" },
"nvim-treesitter": { "branch": "master", "commit": "0960322686bfa38afd4f1e0b9660473cf77e24b6" },
"nvim-treesitter": { "branch": "master", "commit": "d6c9c85e14e15bc59478a0d5d810e88dad0ac53f" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "95e9ba9de4289d221666b66fd930d157c7ca08c6" },
"nvim-ufo": { "branch": "main", "commit": "6f2ccdf2da390d62f8f9e15fc5ddbcbd312e1e66" },
"nvim-web-devicons": { "branch": "master", "commit": "480a756df82a0c231622c9bf2173bb6634713716" },
"nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" },
"persistence.nvim": { "branch": "main", "commit": "4b8051c01f696d8849a5cb8afa9767be8db16e40" },
"plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
"promise-async": { "branch": "main", "commit": "e94f35161b8c5d4a4ca3b6ff93dd073eb9214c0e" },
"stickybuf.nvim": { "branch": "master", "commit": "e3db41f2c1bb2df3ee6ff964ee74fe991f6f9566" },
"tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "bc25c56083939f274edcfe395c6ff7de23b67c50" },
"telescope.nvim": { "branch": "master", "commit": "ed9574dd6dde143d009b2528ea6d79bd34bbe6c8" },
"telescope.nvim": { "branch": "master", "commit": "84d53dfdbefbdf84e861a288abc71ef8ccafd04e" },
"todo-comments.nvim": { "branch": "main", "commit": "3094ead8edfa9040de2421deddec55d3762f64d1" },
"tokyonight.nvim": { "branch": "main", "commit": "9a01eada39558dc3243278e6805d90e8dff45dc0" },
"tokyonight.nvim": { "branch": "main", "commit": "8e670218651eaf02bf61c68ecdfdaa572bc14b47" },
"transparent.nvim": { "branch": "main", "commit": "3af6232c8d39d51062702e875ff6407c1eeb0391" },
"trouble.nvim": { "branch": "main", "commit": "3f85d8ed30e97ceeddbbcf80224245d347053711" },
"typescript.nvim": { "branch": "main", "commit": "4de85ef699d7e6010528dcfbddc2ed4c2c421467" },
"venv-selector.nvim": { "branch": "main", "commit": "14d6e866070f759e9014a8053954f835294f56f9" },
"vim-illuminate": { "branch": "master", "commit": "6acf7d4a18255a3ddc43770866c8e148fe85af7b" },
"vim-illuminate": { "branch": "master", "commit": "1b5d70332a51a1de05f281069851865a2bb1e6d7" },
"vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
"vim-wakatime": { "branch": "master", "commit": "0d2efa2daff34b27b0d227d4c3b136811c93db93" },
"which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" },

View File

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

View File

@@ -40,6 +40,8 @@ disabled = true
[directory]
read_only = " 󰌾"
style = "blue"
before_repo_root_style = "white"
truncation_symbol = "…/"
[docker_context]
symbol = " "

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
# 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>

View File

@@ -1,9 +1,7 @@
# tmux keybindings
Leader: `<ctrl><space>`
```
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
@@ -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-S-Tab next-window
```

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
- include: "tools/dotbot-defaults.yaml"
- include: 'tools/dotbot-defaults.yaml'
- shell:
- echo "Configuring tunkki"
- link:
@@ -6,8 +6,11 @@
force: true
glob: true
path: hosts/tunkki/base/**
prefix: "."
prefix: '.'
~/.config/:
glob: true
force: true
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:
- echo "Configuring v"
- brewfile:
- Brewfile
- link:
~/:
force: true
glob: true
path: hosts/v/base/**
prefix: "."
prefix: '.'
~/.config/:
glob: true
force: true

View File

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

View File

@@ -1,40 +1,67 @@
- include: "tools/dotbot-defaults.yaml"
- include: 'tools/dotbot-defaults.yaml'
- clean:
~/:
~/.config:
recursive: true
~/.local:
recursive: true
~/.ssh:
recursive: true
- create:
~/.cache:
~/.cache/git:
~/.config:
~/.config/cheat/cheatsheets/personal:
~/.config/cheat/cheatsheets/pure-bash-bible:
~/.config/cheat/cheatsheets/tldr:
~/.local:
~/.local/bin:
~/.local/run:
~/.local/share:
~/.local/state:
~/.ssh:
mode: 0700
~/.ssh/local.d:
mode: 0700
~/Code:
- link:
~/:
force: true
glob: true
path: base/**
prefix: "."
path: base/*
prefix: '.'
~/.config/:
glob: true
path: config/**
~/.local/:
relink: true
path: config/*
exclude: [config/nvm]
~/.config/nvm/default-packages:
create: true
relink: true
path: config/nvm/default-packages
~/.local/bin:
glob: true
path: local/**
path: local/bin/*
~/.local/man:
glob: true
path: local/man/**
~/.local/share:
glob: true
path: local/share/*
~/.ssh/:
glob: true
mode: 0600
path: ssh/**
path: ssh/*
- shell:
- git submodule update --init --recursive --force
- bash local/bin/dfm install all
- pipx:
file: tools/requirements-pipx.txt
stdout: false
stderr: true
- crontab:
- time: 0 5 * * *
command: brew update && brew upgrade
platform: darwin # Optional
- time: 0 5 * * *
command: apt update && apt upgrade
platform: linux # Optional
- time: 0 5 * * *
command: task sync

View File

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

View File

@@ -18,6 +18,7 @@ SCRIPT=$(basename "$0")
VERSION_NVM="v0.39.5"
export DOTFILES_SHARED_LOADED=""
# shellcheck source=./../../scripts/shared.sh
source "$SHARED_SCRIPT"
@@ -32,6 +33,7 @@ function section_install
"cheat-databases:Install cheat external cheatsheet databases"
"composer:Install composer"
"dotenv:Install dotenv-linter"
"fonts:Install programming fonts"
"gh:Install GitHub CLI Extensions"
"go:Install Go Packages"
"imagick:Install ImageMagick CLI"
@@ -48,6 +50,7 @@ function section_install
case "$1" in
all)
$0 install macos
$0 install fonts
$0 install antigen
$0 brew install
$0 install pip
@@ -89,6 +92,10 @@ function section_install
| sh -s -- -b "$XDG_BIN_HOME" \
&& msg_yay "dotenv-linter installed!"
;;
fonts)
bash "$DOTFILES/scripts/install-fonts.sh" \
&& msg_yay "Installed fonts!"
;;
fzf)
bash "$DOTFILES/scripts/install-fzf.sh" \
&& msg_yay "fzf installed!"
@@ -244,10 +251,8 @@ function section_dotfiles
~/.local/share/nvim \
~/.local/state/nvim \
~/.cache/nvim \
~/.config/astronvim \
~/.config/nvim
msg_ok "Deleted old nvim files"
ln -s "$DOTFILES/config/astronvim" ~/.config/astronvim
msg_ok "Deleted old nvim files (share, state and cache + config)"
ln -s "$DOTFILES/config/nvim" ~/.config/nvim
msg_ok "Linked nvim and astronvim"
have npm && $0 install npm

View File

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

View File

@@ -1,136 +1,195 @@
#!/usr/bin/python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Python script to find the largest files in a git repository.
# 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/
#
# The above script worked for me, but was very slow on my 11GB repository. 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 above script worked for me, but was very slow on my 11GB repository.
# 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)
# 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
# associated documentation files (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge, publish, distribute,
# sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# 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:
#
# The above copyright notice and this permission notice shall be included in all copies or
# substantial portions of the Software.
# The above copyright notice and this permission notice shall be included in all copies
# or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
# NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
# OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# 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 signal
import sys
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():
global sortByOnDiskSize
global sortByOnDiskSize
signal.signal(signal.SIGINT, signal_handler)
args = parseArguments()
sortByOnDiskSize = args.sortByOnDiskSize
sizeLimit = 1024*args.filesExceeding
signal.signal(signal.SIGINT, signal_handler)
if args.filesExceeding > 0:
print "Finding objects larger than {}kB…".format(args.filesExceeding)
else:
print "Finding the {} largest objects…".format(args.matchCount)
args = parse_arguments()
sortByOnDiskSize = args.sortByOnDiskSize
sizeLimit = 1024*args.filesExceeding
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)
printOutBlobs(blobs)
blobs = get_top_blobs(args.matchCount, sizeLimit)
def getTopBlobs(count, sizeLimit):
sortColumn = 4
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
populate_blob_paths(blobs)
print_out_blobs(blobs)
def populateBlobPaths(blobs):
if len(blobs):
print "Finding object paths…"
def get_top_blobs(count, sizeLimit):
"""Get top blobs from git repository
# Only include revs which have a path. Other revs aren't blobs.
revList = "git rev-list --all --objects | awk '$2 {print}'"
allObjectLines = check_output(revList, shell=True).split("\n")[:-1]
Args:
count (int): How many items to return
sizeLimit (int): What is the size limit
outstandingKeys = blobs.keys()
Returns:
dict: Dictionary of Blobs
"""
sortColumn = 4
for line in allObjectLines:
cols = line.split()
sha1, path = cols[0], " ".join(cols[1:])
if sortByOnDiskSize:
sortColumn = 3
if (sha1 in outstandingKeys):
outstandingKeys.remove(sha1)
blobs[sha1].path = path
verifyPack = "git verify-pack -v `git rev-parse --git-dir`/objects/pack/pack-*.idx | grep blob | sort -k{}nr".format(sortColumn) # noqa: E501
output = check_output(verifyPack, shell=True).decode('utf-8').strip().split("\n")[:-1] # noqa: E501
# short-circuit the search if we're done
if not len(outstandingKeys):
break
blobs = dict()
# use __lt__ to do the appropriate comparison
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):
if len(blobs):
csvLines = ["size,pack,hash,path"]
def populate_blob_paths(blobs):
"""Populate blob paths that only have a path
for blob in sorted(blobs.values(), reverse=True):
csvLines.append(blob.csvLine())
Args:
blobs (Blob, dict): Dictionary of Blobs
"""
if len(blobs):
print("Finding object paths…")
p = Popen(["column", "-t", "-s", "','"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate("\n".join(csvLines)+"\n")
# Only include revs which have a path. Other revs aren't blobs.
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"
print stdout.rstrip('\n')
else:
print "No files found which match those criteria."
for line in all_object_lines:
cols = line.split()
sha1, path = cols[0], " ".join(cols[1:])
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():
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='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.')
def print_out_blobs(blobs):
if len(blobs):
csvLines = ["size,pack,hash,path"]
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):
@@ -138,29 +197,6 @@ def signal_handler(signal, frame):
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()
if __name__ == '__main__':
main()
main()

View File

@@ -16,21 +16,22 @@ COLOR_S='\033[0;36m'
RESET='\033[0m'
# Print time-based personalized message, using figlet & lolcat if availible
function welcome_greeting () {
function welcome_greeting()
{
h=$(date +%H)
if [ "$h" -lt 04 ] || [ "$h" -gt 22 ];
then greeting="Good Night"
elif [ "$h" -lt 12 ];
then greeting="Good morning"
elif [ "$h" -lt 18 ];
then greeting="Good afternoon"
elif [ "$h" -lt 22 ];
then greeting="Good evening"
if [ "$h" -lt 04 ] || [ "$h" -gt 22 ]; then
greeting="Good Night"
elif [ "$h" -lt 12 ]; then
greeting="Good morning"
elif [ "$h" -lt 18 ]; then
greeting="Good afternoon"
elif [ "$h" -lt 22 ]; then
greeting="Good evening"
else
greeting="Hello"
fi
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
else
echo -e "$COLOR_P${WELCOME_MSG}${RESET}\n"
@@ -38,8 +39,9 @@ function welcome_greeting () {
}
# Print system information with neofetch, if it's installed
function welcome_sysinfo () {
if hash neofetch 2>/dev/null; then
function welcome_sysinfo()
{
if hash neofetch 2> /dev/null; then
neofetch --shell_version off \
--disable kernel distro shell resolution cpu gpu de wm wm_theme theme icons terminal \
--backend off \
@@ -50,7 +52,8 @@ function welcome_sysinfo () {
}
# Print todays info: Date, IP, weather, etc
function welcome_today () {
function welcome_today()
{
timeout=1
echo -e "\033[1;34mToday\n------"
@@ -62,7 +65,7 @@ function welcome_today () {
echo -e "${RESET}"
# 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_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})"
@@ -71,23 +74,11 @@ function welcome_today () {
}
# Putting it all together
function welcome() {
function welcome()
{
welcome_greeting
welcome_sysinfo
welcome_today
}
# Determine if file is being run directly or sourced
([[ -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
welcome "$@"

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

@@ -2,11 +2,12 @@
# Install cargo/rust packages.
#
# shellcheck source=shared.sh
DOTFILES_SHARED_LOADED=""
source "$HOME/.dotfiles/scripts/shared.sh"
! have cargo && {
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
}
packages=(
@@ -18,6 +19,14 @@ packages=(
"eza"
# A simple, fast and user-friendly alternative to '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
@@ -26,7 +35,19 @@ for pkg in "${packages[@]}"; do
# Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
cargo install $pkg
msg_run "Installing cargo package $pkg"
cargo install "$pkg"
echo ""
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
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
# shellcheck source=shared.sh
DOTFILES_SHARED_LOADED=""
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
! have "$t" && echo "(!) $t is missing, can't continue..." && exit 1
done

View File

@@ -1,9 +1,10 @@
#!/usr/bin/env bash
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
# shellcheck source=shared.sh
DOTFILES_SHARED_LOADED=""
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
! have "$t" && echo "(!) $t is missing, can't continue..." && exit 1
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"
source "$HOME/.dotfiles/scripts/shared.sh"
msg_run "Installing gh (GitHub Client) extensions"
! have gh \
&& msg_err "gh (GitHub Client) could not be found, please install it first" \
&& exit 0
@@ -28,15 +30,13 @@ extensions=(
rsese/gh-actions-status
)
msg "Starting to install GitHub CLI extensions..."
for ext in "${extensions[@]}"; do
# Trim spaces
ext=${ext// /}
# Skip comments
if [[ ${ext:0:1} == "#" ]]; then continue; fi
msg_run "Installing $ext"
msg_nested "Installing $ext"
gh extensions install "$ext"
echo ""
done

View File

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

View File

@@ -4,6 +4,8 @@
# shellcheck source=shared.sh
source "$HOME/.dotfiles/scripts/shared.sh"
msg_run "Installing go packages"
! have go && msg "go hasn't been installed yet." && exit 0
packages=(
@@ -33,16 +35,17 @@ for pkg in "${packages[@]}"; do
# Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
msg_run "Installing go package:" "$pkg"
msg_nested "Installing go package: $pkg"
go install "$pkg"
echo ""
done
msg "Installing completions for selected packages"
msg_run "Installing completions for selected packages"
have 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"

View File

@@ -9,6 +9,7 @@ source "$HOME/.dotfiles/scripts/shared.sh"
}
packages=(
"pipx"
"libtmux"
)
@@ -18,7 +19,7 @@ for pkg in "${packages[@]}"; do
# Skip comments
if [[ ${pkg:0:1} == "#" ]]; then continue; fi
python3 -m pip install --user $pkg
python3 -m pip install --user "$pkg"
echo ""
done

View File

@@ -8,6 +8,11 @@
[ "$(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
sudo -v
@@ -19,6 +24,8 @@ while true; do
kill -0 "$$" || exit
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.
if hash zsh 2> /dev/null; then
[[ "$SHELL" != $(which zsh) ]] && chsh -s "$(which zsh)"
@@ -28,6 +35,8 @@ fi
# General UI/UX #
###############################################################################
msg_nested "Setting General UI/UX settings"
# Disable the sound effects on boot
sudo nvram SystemAudioVolume=" "
@@ -80,6 +89,8 @@ defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
# SSD-specific tweaks #
###############################################################################
msg_nested "Setting SSD-specific tweaks"
# Disable hibernation (speeds up entering sleep mode)
sudo pmset -a hibernatemode 0
@@ -90,6 +101,8 @@ sudo pmset -a sms 0
# 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
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" 80
@@ -124,6 +137,8 @@ defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
# Screen #
###############################################################################
msg_nested "Settings for Screen"
# Require password immediately after sleep or screen saver begins
defaults write com.apple.screensaver askForPassword -int 1
defaults write com.apple.screensaver askForPasswordDelay -int 0
@@ -132,6 +147,8 @@ defaults write com.apple.screensaver askForPasswordDelay -int 0
# Finder #
###############################################################################
msg_nested "Settings for Finder"
# Set Desktop as the default location for new Finder windows
# For other paths, use `PfLo` and `file:///full/path/here/`
defaults write com.apple.finder NewWindowTarget -string "PfDe"
@@ -190,6 +207,8 @@ defaults write com.apple.finder FXInfoPanesExpanded -dict \
# Screenshots #
###############################################################################
msg_nested "Settings for Screenshots"
# Set default screenshot location
mkdir -p "$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 #
###############################################################################
msg_nested "Settings for Dock, Dashboard, and hot corners"
# Prevent applications from bouncing in Dock
defaults write com.apple.dock no-bouncing -bool true
@@ -234,6 +255,8 @@ defaults write com.apple.dock showhidden -bool true
# Safari & WebKit #
###############################################################################
msg_nested "Settings for Safari & WebKit"
# Enable Safaris debug menu
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
@@ -258,6 +281,8 @@ defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
# Activity Monitor #
###############################################################################
msg_nested "Settings for ActivityMonitor"
# Show the main window when launching Activity Monitor
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 #
###############################################################################
msg_nested "Settings for Address Book, Dashboard, iCal, TextEdit, and Disk Utility"
# Use plain text mode for new TextEdit documents
defaults write com.apple.TextEdit RichText -int 0
@@ -286,6 +313,8 @@ defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
# Messages #
###############################################################################
msg_nested "Settings for Messages"
# Disable smart quotes as its annoying for messages that contain code
defaults write com.apple.messageshelper.MessageController \
SOInputLineSettings \
@@ -298,6 +327,8 @@ defaults write com.apple.messageshelper.MessageController \
-dict-add "continuousSpellCheckingEnabled" \
-bool false
msg_nested "Restarting applications to apply changes"
###############################################################################
# Kill affected applications #
###############################################################################
@@ -307,4 +338,5 @@ for app in "Activity Monitor" "Address Book" "Calendar" "Contacts" "cfprefsd" \
"Terminal" "Transmission" "Twitter" "iCal"; do
killall "${app}" > /dev/null 2>&1
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,6 +6,10 @@
# Helper env variables. Use like this: VERBOSE=1 ./script.sh
: "${VERBOSE:=0}"
# If this file has already been loaded, no need to reload it.
[ "$DOTFILES_SHARED_LOADED" = "yes" ] && return
export DOTFILES_SHARED_LOADED="yes"
# -- Colors -- #
CLR_RED="\033[1;31m"
CLR_YELLOW="\033[1;33m"
@@ -201,7 +205,7 @@ function menu_usage()
if command -v bkt >&/dev/null; then
bkt()
{
command bkt "$@"
command bkt --cache-dir="$XDG_CACHE_HOME/bkt" "$@"
}
else
# If bkt isn't installed skip its arguments and just execute directly.
@@ -213,7 +217,16 @@ else
}
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
function have
{
@@ -357,3 +370,9 @@ ask()
fi
done
}
# Check if a file contains non-ascii characters
nonascii()
{
LC_ALL=C grep -n '[^[:print:][:space:]]' "${@}"
}

1
tools/dotbot-crontab Submodule

Submodule tools/dotbot-crontab added at ea900a7cf6

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,3 @@
ensurepath
openapi-python-client
libtmux

2919
yarn.lock Normal file

File diff suppressed because it is too large Load Diff