diff --git a/.gitignore b/.gitignore index 69b9588..42b5694 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,12 @@ Configs/ssh/.ssh/* # Ignore everything by default, then manage by exception -Configs/emacs/.emacs.d/* -!Configs/emacs/.emacs.d/init.el -!Configs/emacs/.emacs.d/snippets/ -!Configs/emacs/.emacs.d/templates/ -!Configs/emacs/.emacs.d/early-init.el +emacs/config/.emacs.d/* +!emacs/config/.emacs.d/init.el +!emacs/config/.emacs.d/snippets/ +!emacs/config/.emacs.d/templates/ +!emacs/config/.emacs.d/early-init.el +!emacs/config_wsl + CLAUDE.md diff --git a/Configs/awscli/.local/share/bash-completion/completions/aws.bash b/Configs/awscli/.local/share/bash-completion/completions/aws.bash deleted file mode 100644 index 04bbfe1..0000000 --- a/Configs/awscli/.local/share/bash-completion/completions/aws.bash +++ /dev/null @@ -1 +0,0 @@ -complete -C '~/.local/bin/aws_completer' aws diff --git a/Configs/azure-cli/.local/share/bash-completion/completions/azure-cli-completion.bash b/Configs/azure-cli/.local/share/bash-completion/completions/azure-cli-completion.bash deleted file mode 100644 index 622664b..0000000 --- a/Configs/azure-cli/.local/share/bash-completion/completions/azure-cli-completion.bash +++ /dev/null @@ -1,2 +0,0 @@ - -source ~/.local/share/uv/tools/azure-cli/bin/az.completion.sh diff --git a/Configs/azure-cli/.zshrc.d/azure-cli-completion.zsh b/Configs/azure-cli/.zshrc.d/azure-cli-completion.zsh deleted file mode 100644 index 622664b..0000000 --- a/Configs/azure-cli/.zshrc.d/azure-cli-completion.zsh +++ /dev/null @@ -1,2 +0,0 @@ - -source ~/.local/share/uv/tools/azure-cli/bin/az.completion.sh diff --git a/Configs/bash/.bashrc-custom b/Configs/bash/.bashrc-custom deleted file mode 100644 index eed350c..0000000 --- a/Configs/bash/.bashrc-custom +++ /dev/null @@ -1,15 +0,0 @@ -LOCAL_BIN="$HOME/.local/bin" - -if [[ ! ":$PATH:" == *:"$LOCAL_BIN":* ]]; then - PATH=$LOCAL_BIN:$PATH -fi - -# User specific aliases and functions -if [ -d ~/.bashrc.d ]; then - for rc in ~/.bashrc.d/*; do - if [ -f "$rc" ]; then - . "$rc" - fi - done -fi -unset rc diff --git a/Configs/bash/.bashrc.d/bash.bash b/Configs/bash/.bashrc.d/bash.bash deleted file mode 100644 index 34e90ec..0000000 --- a/Configs/bash/.bashrc.d/bash.bash +++ /dev/null @@ -1,109 +0,0 @@ -######################################################################################################################## -# Some nice aliases and functions -######################################################################################################################## -alias hs="history | grep -i" -alias ll="ls -1ABhlv --group-directories-first" -alias la='ls -A' -alias l='ls -CF' - -# If we have fd, use it for faster git dir finding -if command -v "fd" >/dev/null 2>&1; then - alias gitdirs="fd -t d --prune -H "\.git" -c never ${DEFAULT_CODE_DIR:-$PWD} | xargs -n 1 dirname | sort -u" -else - alias gitdirs="find ${DEFAULT_CODE_DIR:-$PWD} -type d -name '.git' -prune -exec dirname {} \; | sort -u" -fi - -alias gitchooser='cd $(gitdirs | fzf)' -alias dotenv="[[ -f .env ]] && set -a && source .env && set +a" -alias histoff="set +o history" -alias histon="set -o history" - -# create a file and the leading directories -function touchpath { mkdir -p "$(dirname "$1")" && touch "$1" ; } - -# load a dotenv file at .env or specified via an alternate filename -# $1 = the filepath, default .env -function dotenv { - local f=${1:-".env"} - if [ -f ${f} ]; then - set -a - source $f - set +a - fi -} - -function git-clonepath { - bd=${DEFAULT_CODE_DIR:-${PWD}} - re='^(https?:\/\/.+:.+@|https?:\/\/|git@|git\+ssh@)(.*\/)([^\/]*\.git)$' - - if [[ $1 =~ $re ]]; then - ep=${BASH_REMATCH[2]} - pathchk $ep - - echo "Cloning $1 to $bd/$ep" - mkdir -p $bd/$ep || true - cd $bd/$ep - - git clone $1 - else - echo "Could not pass $1" - exit 1 - fi - -} - -# parse your netrc file for a credential from a given machine -# $1 machine match criteria -# $2 credential [machine|login|password] default password -function netrc-credential { - match=$1 - case "$2" in - machine) - field_num=2 - ;; - login) - field_num=4 - ;; - password) - field_num=6 - ;; - *) - exit 1 - ;; - esac - awk -v machine="$match" -v RS="" -v field_num="$field_num" \ - '/^machine[[:space:]]*(.*)[[:space:]]*login(.*)[[:space:]]*password(.*)$/ $2 ~ machine { print $field_num }' \ - ~/.netrc -} - -######################################################################################################################## -# Enable local settings if available. -# This file can contain whatever env vars you like -######################################################################################################################## -# if local settings file is present, then treat as a .env file and export the variables by default -if [ -f ~/.localsettings ]; then - set -a - source ~/.localsettings - set +a -fi - -######################################################################################################################## -# Load completions from standard areas -######################################################################################################################## -[[ -f /usr/share/bash-completion/bash_completion ]] && source /usr/share/bash-completion/bash_completion -local_completions_dir=~/.local/share/bash-completion/completions/ - -if [ -d $local_completions_dir ]; then - for c in $(ls $local_completions_dir); do - source ${local_completions_dir}/$c - done -fi - -######################################################################################################################## -# Some nice history settings -HISTFILE=~/.histfile -export HISTCONTROL=ignoreboth:erasedups -export HISTFILESIZE=10000 -export HISTSIZE=10000 -export SAVEHIST=10000 -export HISTIGNORE="ls:ps:history" diff --git a/Configs/bash_wsl/.bashrc.d/wsl.bash b/Configs/bash_wsl/.bashrc.d/wsl.bash deleted file mode 100644 index 26521ab..0000000 --- a/Configs/bash_wsl/.bashrc.d/wsl.bash +++ /dev/null @@ -1,6 +0,0 @@ -if [ -n "$WSLENV" ]; then - alias explorer="explorer.exe" - # Set an alias for the Windows User profile area - export WINPROFILE=/mnt/c/Users/${USER} - export COLORTERM=truecolor -fi diff --git a/Configs/delta/.gitconfig.d/delta b/Configs/delta/.gitconfig.d/delta deleted file mode 100644 index 4d7ea6b..0000000 --- a/Configs/delta/.gitconfig.d/delta +++ /dev/null @@ -1,17 +0,0 @@ -[core] - pager = delta - -[interactive] - diffFilter = delta --color-only - -[delta] - navigate = true - side-by-side = true - line-numbers = true - syntax-theme = Dracula - -[merge] - conflictstyle = diff3 - -[diff] - colorMoved = default diff --git a/Configs/direnv/.bashrc.d/direnv.bash b/Configs/direnv/.bashrc.d/direnv.bash deleted file mode 100644 index 885c279..0000000 --- a/Configs/direnv/.bashrc.d/direnv.bash +++ /dev/null @@ -1 +0,0 @@ -eval "$(direnv hook bash)" diff --git a/Configs/direnv/.zshrc.d/direnv.zsh b/Configs/direnv/.zshrc.d/direnv.zsh deleted file mode 100644 index 6aa8b1f..0000000 --- a/Configs/direnv/.zshrc.d/direnv.zsh +++ /dev/null @@ -1 +0,0 @@ -eval "$(direnv hook zsh)" diff --git a/Configs/editorconfig/%DEFAULT_CODE_DIR/.editorconfig b/Configs/editorconfig/%DEFAULT_CODE_DIR/.editorconfig deleted file mode 100644 index 626d3e9..0000000 --- a/Configs/editorconfig/%DEFAULT_CODE_DIR/.editorconfig +++ /dev/null @@ -1,67 +0,0 @@ -# EditorConfig is awesome: https://EditorConfig.org - -# top-most EditorConfig file -root = true - -[*] -charset = utf-8 -end_of_line = lf # it is the law -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true -insert_final_newline = true -max_line_length = 120 - -# Markdown -[*.md] -trim_trailing_whitespace = false # markdown uses trailing whitespace for instruction -max_line_length = 120 - -# config files -[*.{ini,json,json5,yaml,yml}] -indent_size = 2 # matching standards -[*.toml] -indent_size = 4 # matching uv pyproject.toml defaults - -# Python -[*.py] -max_line_length = 120 - -[*.cs] -indent_size = 4 # match https://github.com/dotnet/sdk/blob/main/.editorconfig - -# Javascript and Typescript -[*.{js,jsx,ts,tsx,vue}] -indent_size = 4 # match eslint - https://eslint.style/rules/indent - -# HTML and CSS -[*.{htm,html,css,sass,scss,less}] -indent_size = 2 # match prettier - https://github.com/prettier/prettier - -# Docker -[Dockerfile] -indent_size = unset # Dockerfile doesn't have an expected indent - -# Terraform -[*.{tf,tfvars}] -indent_size = 2 # https://developer.hashicorp.com/terraform/language/style#code-formatting - -# Shell scripts -[*.{sh,zsh}] -indent_size = 4 # to match shfmt - https://github.com/mvdan/sh/ - -# Makefiles -[{Makefile,Makefile.tpl}] -indent_style = tab # Makefiles require tabs - -# windows scripts -[*.{cmd,bat}] -end_of_line = crlf # windows files are windows format - -# diff files -[*.diff] -trim_trailing_whitespace = false - -[justfile, Justfile] -indent_style = space -indent_size = 4 diff --git a/Configs/git/.gitconfig b/Configs/git/.gitconfig deleted file mode 100644 index 5a5a741..0000000 --- a/Configs/git/.gitconfig +++ /dev/null @@ -1,84 +0,0 @@ -[http] - sslVerify = false - postBuffer = 100000000 - -[core] - editor = "vi" - autocrlf = input - #whitespace = cr-at-eol - safecrlf = false - eol = lf - filemode = false - excludesFile = ~/.config/git/ignore - -[fetch] - prune = true - -[push] - default = current - autoSetupRemote = true - followTags = true - -[alias] - s = status - semver = tag --list release/* --sort=-version:refname - gl = log --simplify-by-decoration --decorate --oneline - purge-tag = !git tag --delete $1 && git push --delete origin $1 && : - ec = config --global -e - hist = log --pretty=format:'%C(yellow)[%ad]%C(reset) %C(green)[%h]%C(reset) | %C(red)%s %C(bold red){{%an}}%C(reset) %C(blue)%d%C(reset)' --graph --date=short --all - ci = commit - co = checkout - ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate - ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat - lds = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short - lol = log --graph --decorate --pretty=oneline --abbrev-commit - lola = log --graph --decorate --pretty=oneline --abbrev-commit --all - unstage = reset HEAD -- - last = log -1 HEAD - amend = commit --amend --no-edit - # $1 - the repo url - # $2 - the optional base private or work extra path - clone-path = "! fn() { \ - bd=${DEFAULT_CODE_DIR:-${PWD}}/$2 ;\ - re='^(https?:\\/\\/.+:.+@|https?:\\/\\/|git@|git\\+ssh@)(.*\\/)([^\\/]*\\.git)$' ;\ - if [[ $1 =~ $re ]] \ - then \ - ep=${BASH_REMATCH[2]} ;\ - pathchk $ep ;\ - echo "Cloning $1 to $bd/$ep" ;\ - mkdir -p $bd/$ep || true ;\ - cd $bd/$ep ;\ - git clone $1 ;\ - else \ - echo "Could not pass $1" ;\ - exit 1 ;\ - fi \ - }; fn" - clone-work = "!git clone-path $1 work" - clone-private = "!git clone-path $1 private" - -[pull] - rebase = false - -[color "status"] - branch = magenta - untracked = cyan - unmerged = yellow - -[init] - defaultBranch = main - -[credential] - helper = store - -[include] - path = ~/.gitconfig.d/* - -# Include any personal configurations in known spots. -# included at the end to allow a personal config to override any of the above defaults -[include] - path = ~/.gitconfig-private - -# Is this a sweeping statement that most companies would use gitlab for work? -[includeIf "gitdir:**/work/"] - path = ~/.gitconfig-work diff --git a/Configs/nvm/.bashrc.d/nvm.bash b/Configs/nvm/.bashrc.d/nvm.bash deleted file mode 100644 index 6d6e483..0000000 --- a/Configs/nvm/.bashrc.d/nvm.bash +++ /dev/null @@ -1,4 +0,0 @@ - -export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" - -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" diff --git a/Configs/nvm/.zshrc.d/nvm.zsh b/Configs/nvm/.zshrc.d/nvm.zsh deleted file mode 100644 index 6d6e483..0000000 --- a/Configs/nvm/.zshrc.d/nvm.zsh +++ /dev/null @@ -1,4 +0,0 @@ - -export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" - -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" diff --git a/Configs/pandoc/.bashrc.d/pandoc.bash b/Configs/pandoc/.bashrc.d/pandoc.bash deleted file mode 100644 index dddf2a1..0000000 --- a/Configs/pandoc/.bashrc.d/pandoc.bash +++ /dev/null @@ -1 +0,0 @@ -alias pandoc-preview='pandoc --metadata=title=markdown --template=GitHub.html5 --from gfm --to html5 --mathjax --highlight-style=pygments -o preview.html --standalone' diff --git a/Configs/pandoc/.pandoc/templates/GitHub.html5 b/Configs/pandoc/.pandoc/templates/GitHub.html5 deleted file mode 100644 index b00c09e..0000000 --- a/Configs/pandoc/.pandoc/templates/GitHub.html5 +++ /dev/null @@ -1,166 +0,0 @@ -$--| GitHub HTML5 Pandoc Template" v2.2 | 2020/08/12 | pandoc v2.1.1 - - -$-------------------------------------------------------------------------> lang - - -$--============================================================================= -$-- METADATA -$--============================================================================= - - - -$-----------------------------------------------------------------------> author -$for(author-meta)$ - -$endfor$ -$-------------------------------------------------------------------------> date -$if(date-meta)$ - -$endif$ -$---------------------------------------------------------------------> keywords -$if(keywords)$ - -$endif$ -$------------------------------------------------------------------> description -$if(description)$ - -$endif$ -$------------------------------------------------------------------------> title - $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ -$--=========================================================================== -$-- CSS STYLESHEETS -$--=========================================================================== -$-- Here comes the placeholder (within double braces) that will be replaced -$-- by the CSS file in the finalized template: - -$------------------------------------------------------------------------------- - -$------------------------------------------------------------------------------- -$if(quotes)$ - -$endif$ -$-------------------------------------------------------------> highlighting-css -$if(highlighting-css)$ - -$endif$ -$--------------------------------------------------------------------------> css -$for(css)$ - -$endfor$ -$-------------------------------------------------------------------------> math -$if(math)$ - $math$ -$endif$ -$------------------------------------------------------------------------------- - -$--------------------------------------------------------------> header-includes -$for(header-includes)$ - $header-includes$ -$endfor$ -$------------------------------------------------------------------------------- - - -
-$---------------------------------------------------------------> include-before -$for(include-before)$ -$include-before$ -$endfor$ -$-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> IF: title -$if(title)$ -
-

$title$

-$---------------------------------------------------------------------> subtitle -$if(subtitle)$ -

$subtitle$

-$endif$ -$-----------------------------------------------------------------------> author -$for(author)$ -

$author$

-$endfor$ -$-------------------------------------------------------------------------> date -$if(date)$ -

$date$

-$endif$ -$----------------------------------------------------------------------> summary -$if(summary)$ -
-$summary$ -
-$endif$ -$------------------------------------------------------------------------------- -
-$endif$ -$--<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< END IF: title -$--------------------------------------------------------------------------> toc -$if(toc)$ -
- -
-$endif$ -$-------------------------------------------------------------------------> body -$body$ -$----------------------------------------------------------------> include-after -$for(include-after)$ -$include-after$ -$endfor$ -$------------------------------------------------------------------------------- -
- - diff --git a/Configs/pandoc/.zshrc.d/pandoc.zsh b/Configs/pandoc/.zshrc.d/pandoc.zsh deleted file mode 100644 index dddf2a1..0000000 --- a/Configs/pandoc/.zshrc.d/pandoc.zsh +++ /dev/null @@ -1 +0,0 @@ -alias pandoc-preview='pandoc --metadata=title=markdown --template=GitHub.html5 --from gfm --to html5 --mathjax --highlight-style=pygments -o preview.html --standalone' diff --git a/Configs/pycharm/.bashrc.d/pycharm.bash b/Configs/pycharm/.bashrc.d/pycharm.bash deleted file mode 100644 index 39f0089..0000000 --- a/Configs/pycharm/.bashrc.d/pycharm.bash +++ /dev/null @@ -1,6 +0,0 @@ - -PYCHARM_PATH="/opt/pycharm/bin/" - -if [[ ! ":$PATH:" == *:"$PYCHARM_PATH":* ]]; then - PATH=$PYCHARM_PATH:$PATH -fi diff --git a/Configs/pycharm/.local/share/applications/pycharm.desktop b/Configs/pycharm/.local/share/applications/pycharm.desktop deleted file mode 100644 index 90261b7..0000000 --- a/Configs/pycharm/.local/share/applications/pycharm.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Application -Name=PyCharm -Icon=pycharm -Comment=The only Python IDE you need -Exec=/opt/pycharm/bin/pycharm %f -Terminal=false -Categories=Development;IDE;Python; -StartupNotify=true -StartupWMClass=jetbrains-pycharm \ No newline at end of file diff --git a/Configs/ruff/.config/ruff/ruff.toml b/Configs/ruff/.config/ruff/ruff.toml deleted file mode 100644 index b50619c..0000000 --- a/Configs/ruff/.config/ruff/ruff.toml +++ /dev/null @@ -1,46 +0,0 @@ -# Standard ruff linting rules lifted mainly from chats and wiki -target-version = "py314" -line-length = 120 - -[lint] -select = [ - # https://docs.astral.sh/ruff/rules/ - "RUF", # Ruff specific rules - https://docs.astral.sh/ruff/rules/#ruff-specific-rules-ruf - "C", # mccabe rules - https://pypi.org/project/mccabe/ - "F", # pyflakes rules - https://pypi.org/project/pyflakes/ - "E", # pycodestyle error rules - https://pypi.org/project/pycodestyle/ - "W", # pycodestyle warning rules - https://pypi.org/project/pycodestyle/ - "N", # Naming - https://pypi.org/project/pep8-naming/ - "A", # builtins - https://pypi.org/project/flake8-builtins/ - "B", # flake8-bugbear rules - https://pypi.org/project/flake8-bugbear/ - "I", # isort rules - https://pypi.org/project/isort/ - "LOG", # logging rules - https://pypi.org/project/flake8-logging/ - "PT", # PyTest - https://pypi.org/project/flake8-pytest-style/ - "INP", # no-pep420 - https://pypi.org/project/flake8-no-pep420/ - "ANN", # annotation rules - https://pypi.org/project/flake8-annotations/ - "UP", # pyupgrade - https://pypi.org/project/pyupgrade/ - "RET", # returns - https://pypi.org/project/flake8-return/ - "SIM", # simplify - https://pypi.org/project/flake8-simplify/ - "PL", # PyLint (ALL) - https://pypi.org/project/pylint/ - "PLC", # PyLint Conventions - https://pypi.org/project/pylint/ - "PLE", # PyLint Error - https://pypi.org/project/pylint/ - "PLR", # PyLint Refactor - https://pypi.org/project/pylint/ - "PLW", # PyLint Warnings - https://pypi.org/project/pylint/ - "FURB", # refurb - https://pypi.org/project/refurb/ - "ASYNC",# async - https://pypi.org/project/flake8-async/ - "DJ", # django - https://pypi.org/project/flake8-django/ - "FAST", # fastapi - https://pypi.org/project/fastapi/ - "AIR", # Airflow rules - https://pypi.org/project/apache-airflow/ -] -# Ignore specific rules globally, for example, a line-too-long rule -ignore = ["E501"] - -[per-file-ignores] -"tests/*" = ["PLC0415"] # import-outside-top-level (PLC0415) -"**/{tests,docs,tools}/*" = ["E402"] -"__init__.py" = ["F401"] - -[flake8-annotations] -allow-star-arg-any = true -ignore-fully-untyped = true -suppress-dummy-args = true diff --git a/Configs/rumdl/.config/rumdl/rumdl.toml b/Configs/rumdl/.config/rumdl/rumdl.toml deleted file mode 100644 index 6ab7f7b..0000000 --- a/Configs/rumdl/.config/rumdl/rumdl.toml +++ /dev/null @@ -1,21 +0,0 @@ -[global] -line-length = 120 -disable = ["MD013", "MD041"] - -# Exclude files and directories -exclude = [ - "node_modules", - "build", - "dist", - "*.tmp.md", - "docs/generated/**", - ".amazonq/**", -] - -# Include only specific files -include = [ - "README.md", - "docs/**/*.md", - "**/*.markdown", - "readme.md", -] diff --git a/Configs/ssh/.ssh/config b/Configs/ssh/.ssh/config deleted file mode 100644 index 2bafe9c..0000000 --- a/Configs/ssh/.ssh/config +++ /dev/null @@ -1,13 +0,0 @@ -Host * - ServerAliveInterval 30 - ControlMaster auto - ControlPath ~/.ssh/control:%h:%p:%r - ForwardAgent yes - Compression yes - ServerAliveCountMax 30 - TCPKeepAlive yes - ControlPersist 60 - IdentitiesOnly yes - - -Include ~/.ssh/config.d/* diff --git a/Configs/starship/.bashrc.d/starship.bash b/Configs/starship/.bashrc.d/starship.bash deleted file mode 100644 index 20de15d..0000000 --- a/Configs/starship/.bashrc.d/starship.bash +++ /dev/null @@ -1,3 +0,0 @@ - -export STARSHIP_CONFIG=~/.starship.toml -eval "$(starship init bash)" diff --git a/Configs/starship/.starship.toml b/Configs/starship/.starship.toml deleted file mode 100644 index e69de29..0000000 diff --git a/Configs/starship/.zshrc.d/starship.zsh b/Configs/starship/.zshrc.d/starship.zsh deleted file mode 100644 index fc906f6..0000000 --- a/Configs/starship/.zshrc.d/starship.zsh +++ /dev/null @@ -1,7 +0,0 @@ - -if [ command -v starship &>/dev/null ] && [ -f ~/.starship.toml ]; then - - export STARSHIP_CONFIG=~/.starship.toml - eval "$(starship init zsh)" - -fi diff --git a/Configs/tmux/.tmux.conf b/Configs/tmux/.tmux.conf deleted file mode 100644 index d744ddd..0000000 --- a/Configs/tmux/.tmux.conf +++ /dev/null @@ -1,5 +0,0 @@ -new -neww -splitw -h -splitw -v -set-option -g default-shell /bin/bash diff --git a/Configs/xonsh/.xonshrc b/Configs/xonsh/.xonshrc deleted file mode 100644 index e69de29..0000000 diff --git a/Configs/zsh/.zshrc-custom b/Configs/zsh/.zshrc-custom deleted file mode 100644 index ae63b0f..0000000 --- a/Configs/zsh/.zshrc-custom +++ /dev/null @@ -1,15 +0,0 @@ -LOCAL_BIN="$HOME/.local/bin" - -if [[ ! ":$PATH:" == *:"$LOCAL_BIN":* ]]; then - PATH=$LOCAL_BIN:$PATH -fi - -# User specific aliases and functions -if [ -d ~/.zshrc.d ]; then - for rc in ~/.zshrc.d/*; do - if [ -f "$rc" ]; then - . "$rc" - fi - done -fi -unset rc diff --git a/Configs/zsh/.zshrc.d/aliases.zsh b/Configs/zsh/.zshrc.d/aliases.zsh deleted file mode 100644 index dda1864..0000000 --- a/Configs/zsh/.zshrc.d/aliases.zsh +++ /dev/null @@ -1,8 +0,0 @@ - -function touchpath { mkdir -p "$(dirname "$1")" && touch "$1" ; } - -if [ -f ~/.localsettings ]; then - set -a - source ~/.localsettings - set +a -fi diff --git a/Hooks/ansible/pre.sh b/Hooks/ansible/pre.sh deleted file mode 100755 index efa4d46..0000000 --- a/Hooks/ansible/pre.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - rootdo dnf install -y sshpass -} - -linux() { - has uv - uv tool install --with-executables-from ansible-core,ansible-lint \ - --with requests \ - ansible -} diff --git a/Hooks/awscli/pre.sh b/Hooks/awscli/pre.sh deleted file mode 100755 index 573142d..0000000 --- a/Hooks/awscli/pre.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -linux() { - curl -s "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" - unzip awscliv2.zip - ./aws/install --bin-dir $HOME/.local/bin/ --install-dir $HOME/.local/awscli/ --update - mkdir -p ~/.aws -} diff --git a/Hooks/awscli/rm.sh b/Hooks/awscli/rm.sh deleted file mode 100755 index 3aabee1..0000000 --- a/Hooks/awscli/rm.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -linux() { - rm -f ~/.local/bin/aws - rm -f ~/.local/bin/aws_completer - rm -rf ~/.local/awscli -} diff --git a/Hooks/azure-cli/pre.sh b/Hooks/azure-cli/pre.sh deleted file mode 100755 index 51604b3..0000000 --- a/Hooks/azure-cli/pre.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -steamos() { - rootdo pacman -S --noconfirm python-argcomplete -} - - -fedora() { - rootdo dnf install -y python3-argcomplete -} - - -generic() { - uv_install --prerelease allow azure-cli@latest -} diff --git a/Hooks/azure-cli/rm.sh b/Hooks/azure-cli/rm.sh deleted file mode 100755 index d0c9c67..0000000 --- a/Hooks/azure-cli/rm.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_uninstall azure-cli -} diff --git a/Hooks/basedpyright/pre.sh b/Hooks/basedpyright/pre.sh deleted file mode 100755 index 2d8e629..0000000 --- a/Hooks/basedpyright/pre.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic_install() { - uv_install basedpyright -} - -install_for_os diff --git a/Hooks/bash-language-server/pre.sh b/Hooks/bash-language-server/pre.sh deleted file mode 100755 index 4366427..0000000 --- a/Hooks/bash-language-server/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -linux() { - npm_install bash-language-server -} diff --git a/Hooks/bash/pre.sh b/Hooks/bash/pre.sh deleted file mode 100755 index 4b73791..0000000 --- a/Hooks/bash/pre.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -# Make the completions directory in advance, which will be used for dynamic and static completions -generic() { - add_line_to_file "source ~/.bashrc-custom" ~/.bashrc - mkdir -p ~/.local/share/bash-completion/completions/ - mkdir -p ~/.bashrc.d/ -} diff --git a/Hooks/bootstrap/post.sh b/Hooks/bootstrap/post.sh deleted file mode 100755 index 2c2ea7d..0000000 --- a/Hooks/bootstrap/post.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -# $1 - ca destination path -# $2 - ca update trust bundle command -# $3 - optional prefix to add to the certificate when copying -install_certs() { - LOCAL_CERT_DIR=~/.local/share/certificates - for cert in $(ls ${LOCAL_CERT_DIR}); do - if [ -n "$1" ] && [ -n "$2" ]; then - echo "Importing CA for $OS_ID" - rootdo cp ${LOCAL_CERT_DIR}/$cert ${1}/$cert${3} - rootdo $2 - fi - done - -} - -fedora() { - install_certs "/etc/pki/ca-trust/source/anchors" "update-ca-trust" ".pem" - - rootdo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm - rootdo dnf install -y https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm - rootdo dnf install -y git-core jq -} - -debian() { - rootdo apt install -y jq - install_certs "/usr/local/share/ca-certificates" "update-ca-certificates" ".crt" -} - -ubuntu() { - debian -} diff --git a/Hooks/bootstrap/pre.sh b/Hooks/bootstrap/pre.sh deleted file mode 100755 index f8d5de9..0000000 --- a/Hooks/bootstrap/pre.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -macos() { - brew install coreutils git curl jq -} - -fedora() { - rootdo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm - rootdo dnf install -y https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm - rootdo dnf install -y git-core jq curl -} - -debian() { - rootdo apt install -y jq curl git -} - -steamos() { - rootdo steamos-readonly disable - rootdo pacman-key --init - rootdo pacman-key --populate archlinux - rootdo pacman-key --populate holo - rootdo pacman -S --noconfirm jq git curl -} - -generic() { - - # link in tuckr and the dots if it hasn't already happened - # is it safe to assume that this will always be dotfiles? Might need to think about that - if [ ! -f $HOME/.config/dotfiles/bin/$(uname -s)/$(uname -m)/tuckr ] ; then - ln -s $HOME/.config/dotfiles/bin/$(uname -s)/$(uname -m)/tuckr ${HOME}/.local/bin/tuckr - fi - - # Lets make these directories ahead of time, since they are used by so many other groups - mkdir -p ~/.local/share/bash-completion/completions/ - mkdir -p ~/.zshrc.d/ - mkdir -p ~/.bashrc.d/ - mkdir -p ~/.local/share/certificates/ - mkdir -p ~/.gitconfig.d/ -} diff --git a/Hooks/bump-my-version/pre.sh b/Hooks/bump-my-version/pre.sh deleted file mode 100755 index 3bb0bee..0000000 --- a/Hooks/bump-my-version/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_install bump-my-version -} diff --git a/Hooks/cruft/pre.sh b/Hooks/cruft/pre.sh deleted file mode 100755 index 71ec7f1..0000000 --- a/Hooks/cruft/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_install cruft -} diff --git a/Hooks/delta/pre.sh b/Hooks/delta/pre.sh deleted file mode 100755 index de2a63d..0000000 --- a/Hooks/delta/pre.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -arch() { - rootdo pacman -S --noconfirm git-delta -} - -fedora() { - rootdo dnf install -y git-delta -} - -debian() { - rootdo apt install -y git-delta -} - -ubuntu() { - debian -} - -steamos() { - arch -} - -macos() { - brew install git-delta -} - -linux() { - # Fallback for Linux distros without package manager support - LATEST_VERSION=$(github_latest_tag "dandavison/delta") - VERSION=${DELTA_VERSION:=$LATEST_VERSION} - FILENAME="delta-${VERSION}-$(uname -m)-unknown-linux-gnu.tar.gz" - curl -fOL "https://github.com/dandavison/delta/releases/download/${VERSION}/${FILENAME}" - tar -xzf ${FILENAME} - mv delta-${VERSION}-$(uname -m)-unknown-linux-gnu/delta ~/.local/bin/ - chmod +x ~/.local/bin/delta -} diff --git a/Hooks/direnv/pre.sh b/Hooks/direnv/pre.sh deleted file mode 100755 index 02bb291..0000000 --- a/Hooks/direnv/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - rootdo dnf install -y direnv -} diff --git a/Hooks/dive/pre.sh b/Hooks/dive/pre.sh deleted file mode 100755 index 7d8fa89..0000000 --- a/Hooks/dive/pre.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - LATEST_VERSION=$(github_latest_tag "wagoodman/dive") - VERSION=${DIVE_VERSION:=$LATEST_VERSION} - curl -sfOL https://github.com/wagoodman/dive/releases/download/v${VERSION}/dive_${VERSION}_linux_amd64.rpm - rootdo dnf install -y dive_${VERSION}_linux_amd64.rpm ncurses -} - -debian() { - VERSION=$(github_latest_tag "wagoodman/dive") - curl -sfOL https://github.com/wagoodman/dive/releases/download/v${VERSION}/dive_${VERSION}_linux_amd64.deb - rootdo apt install ./dive_${VERSION}_linux_amd64.deb -} diff --git a/Hooks/docker-cli/pre.sh b/Hooks/docker-cli/pre.sh deleted file mode 100755 index 7a40c6a..0000000 --- a/Hooks/docker-cli/pre.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -debian() { - # Add Docker's official GPG key: - rootdo install -m 0755 -d /etc/apt/keyrings && \ - rootdo curl -fsSL https://download.docker.com/linux/$OS_ID/gpg -o /etc/apt/keyrings/docker.asc && \ - rootdo chmod a+r /etc/apt/keyrings/docker.asc && \ - (rootdo tee /etc/apt/sources.list.d/docker.sources < ${GLOBAL_IGNORE_FILE} - - echo "Downloading common gitignores from https://github.com/github/gitignore..." - for ignore_file in $GLOBAL_IGNORES; do - echo "" >> ${GLOBAL_IGNORE_FILE} - echo "## Start ${ignore_file}" >> ${GLOBAL_IGNORE_FILE} - curl -sL https://raw.githubusercontent.com/github/gitignore/refs/heads/main/${ignore_file} >> ${GLOBAL_IGNORE_FILE} - echo "## End ${ignore_file}" >> ${GLOBAL_IGNORE_FILE} - done -} diff --git a/Hooks/git/pre.sh b/Hooks/git/pre.sh deleted file mode 100755 index b0adb4d..0000000 --- a/Hooks/git/pre.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -echo "Gathering some information that will be used for git work or private configurations" -printf "%-50s\n" "Is this a [work] or [private] configuration? [default private]" -read conf_type -printf "%-50s\n" 'Author name for git commits? ' -read git_author -printf "%-50s\n" 'Email for git commits? ' -read git_email -printf "%-50s\n" 'Base directory for git clones? [default ~/code/] ' -read default_dir - -default_dir=${default_dir:-~/code} -conf_type=${conf_type:-private} -conf_type_lower=$(echo $conf_type | tr '[:upper:]' '[:lower:]') -conf_type_upper=$(echo $conf_type | tr '[:lower:]' '[:upper:]') - -add_line_to_file "${conf_type_upper}_GIT_AUTHOR_NAME=\"$git_author\"" ~/.localsettings -add_line_to_file "${conf_type_upper}_GIT_AUTHOR_EMAIL=\"$git_email\"" ~/.localsettings -add_line_to_file "DEFAULT_CODE_DIR=$default_dir" ~/.localsettings - -echo "Contents of ~/.localsettings" -cat ~/.localsettings -echo - -cat <~/.gitconfig-${conf_type_lower} -[user] - name = ${git_author} - email = ${git_email} -EOF - -echo "Custom work include for gitconfig has been created at ~/.gitconfig-${conf_type_lower}" -cat ~/.gitconfig-${conf_type_lower} diff --git a/Hooks/gitu/pre.sh b/Hooks/gitu/pre.sh deleted file mode 100755 index 1b1108f..0000000 --- a/Hooks/gitu/pre.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -linux() { - LATEST_VERSION=$(github_latest_tag "altsem/gitu") - VERSION=${GITU_VERSION:=$LATEST_VERSION} - FILENAME="gitu-v${version}-$(uname -m)-unknown-linux-gnu" - curl -sLO https://github.com/altsem/gitu/releases/download/v${VERSION}/${FILENAME}.zip - unzip -o ${FILENAME}.zip - mv ${FILENAME}/gitu ~/.local/bin/ - chmod +x ~/.local/bin/gitu -} diff --git a/Hooks/glab/pre.sh b/Hooks/glab/pre.sh deleted file mode 100755 index 276e9a1..0000000 --- a/Hooks/glab/pre.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -linux() { - VERSION=$(gitlab_latest_tag "gitlab-org%2Fcli") - FILENAME="glab_${VERSION}_linux_amd64" - - curl -Ls https://gitlab.com/gitlab-org/cli/-/releases/v${VERSION}/downloads/${FILENAME}.tar.gz | tar xvzf - - mv bin/glab ~/.local/bin/glab -} diff --git a/Hooks/just-lsp/pre.sh b/Hooks/just-lsp/pre.sh deleted file mode 100755 index 37e9139..0000000 --- a/Hooks/just-lsp/pre.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -linux() { - LATEST_VERSION=$(github_latest_tag "terror/just-lsp") - VERSION=${JUST_LSP_VERSION:=$LATEST_VERSION} - - FILENAME=just-lsp-${VERSION}-x86_64-unknown-linux-gnu.tar.gz - curl -sLO https://github.com/terror/just-lsp/releases/download/${VERSION}/${FILENAME} - tar -xzf ${FILENAME} - mv just-lsp ~/.local/bin/ - chmod +x ~/.local/bin/just-lsp -} diff --git a/Hooks/just-lsp/rm.sh b/Hooks/just-lsp/rm.sh deleted file mode 100755 index 7d71e77..0000000 --- a/Hooks/just-lsp/rm.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -linux() { - rm -f ~/.local/bin/just-lsp -} diff --git a/Hooks/just/post.sh b/Hooks/just/post.sh deleted file mode 100755 index 9bc8ce5..0000000 --- a/Hooks/just/post.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -if [ -d ~/.local/share/bash-completion/completions/ ]; then - just --completions bash > ~/.local/share/bash-completion/completions/just-completions.bash -fi - -if [ -d ~/.zshrc.d/ ]; then - just --completions zsh > ~/.zshrc.d/just-completions.zsh -fi diff --git a/Hooks/just/pre.sh b/Hooks/just/pre.sh deleted file mode 100755 index 6942bd9..0000000 --- a/Hooks/just/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_install rust-just -} diff --git a/Hooks/lazydocker/pre.sh b/Hooks/lazydocker/pre.sh deleted file mode 100755 index cb8068e..0000000 --- a/Hooks/lazydocker/pre.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -linux() { - # This works for both linux and macos, however some might prefer to install from homebrew - curl -sL https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash -} - -macos() { - brew install jesseduffield/lazydocker/lazydocker -} diff --git a/Hooks/marksman/pre.sh b/Hooks/marksman/pre.sh deleted file mode 100755 index 2b80678..0000000 --- a/Hooks/marksman/pre.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -MARKSMAN_VERSION="2025-11-30" - -linux() { - curl --output-dir ~/.local/bin -o marksman -L --create-dirs https://github.com/artempyanykh/marksman/releases/download/${MARKSMAN_VERSION}/marksman-linux-x64 - chmod +x ~/.local/bin/marksman -} - -macos() { - brew install marksman -} diff --git a/Hooks/nodejs/pre.sh b/Hooks/nodejs/pre.sh deleted file mode 100755 index 8c642ae..0000000 --- a/Hooks/nodejs/pre.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - rootdo dnf install -y nodejs-npm - mkdir -p ~/.local/lib/node_modules - npm config set prefix '~/.local' -} diff --git a/Hooks/nvm/pre.sh b/Hooks/nvm/pre.sh deleted file mode 100755 index af96b28..0000000 --- a/Hooks/nvm/pre.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -has "bash" -has "curl" - -# disable the automatic profile installation because it tampers directly with the ~/.bashrc or ~/.zshrc files -PROFILE=/dev/null bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash' diff --git a/Hooks/oras/pre.sh b/Hooks/oras/pre.sh deleted file mode 100755 index 8e79933..0000000 --- a/Hooks/oras/pre.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -linux() { - - LATEST_VERSION="$(github_latest_tag 'oras-project/oras')" - VERSION=${ORAS_VERSION:=$LATEST_VERSION} - FILENAME="oras_${VERSION}_linux_amd64" - curl -fLO "https://github.com/oras-project/oras/releases/download/v${VERSION}/${FILENAME}.tar.gz" - mkdir -p oras-install/ - tar -zxf ${FILENAME}.tar.gz -C oras-install/ - mv oras-install/oras ~/.local/bin/ -} diff --git a/Hooks/pandoc/pre.sh b/Hooks/pandoc/pre.sh deleted file mode 100755 index 716c402..0000000 --- a/Hooks/pandoc/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - rootdo dnf install -y pandoc -} diff --git a/Hooks/poetry/pre.sh b/Hooks/poetry/pre.sh deleted file mode 100755 index 00d3096..0000000 --- a/Hooks/poetry/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_install poetry -} diff --git a/Hooks/pre-commit/pre.sh b/Hooks/pre-commit/pre.sh deleted file mode 100755 index 51e7d59..0000000 --- a/Hooks/pre-commit/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_install pre-commit -} diff --git a/Hooks/pycharm/post.sh b/Hooks/pycharm/post.sh deleted file mode 100755 index 4245d1a..0000000 --- a/Hooks/pycharm/post.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -linux() { - rootdo cp $HOME/.local/share/applications/pycharm.desktop /usr/local/share/applications/pycharm.desktop -} diff --git a/Hooks/pycharm/pre.sh b/Hooks/pycharm/pre.sh deleted file mode 100755 index 8440499..0000000 --- a/Hooks/pycharm/pre.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -linux() { - VERSION=${PYCHARM_VERSION:-"2025.3.1"} - curl -sL -o pycharm.tar.gz https://download-cf.jetbrains.com/python/pycharm-${VERSION}.tar.gz - rootdo tar xzf pycharm.tar.gz -C /opt - rootdo mv /opt/pycharm-${VERSION}/ /opt/pycharm/ -} diff --git a/Hooks/pycharm/rm.sh b/Hooks/pycharm/rm.sh deleted file mode 100755 index 072dc98..0000000 --- a/Hooks/pycharm/rm.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -linux() { - - rm -rf ~/.local/pycharm/ - rootdo unlink /usr/local/share/applications/pycharm.desktop - rootdo rm -rf /opt/pycharm/ -} diff --git a/Hooks/pyright/pre.sh b/Hooks/pyright/pre.sh deleted file mode 100755 index 9dbeb78..0000000 --- a/Hooks/pyright/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_install pyright -} diff --git a/Hooks/ripgrep/pre.sh b/Hooks/ripgrep/pre.sh deleted file mode 100755 index b2240c0..0000000 --- a/Hooks/ripgrep/pre.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - rootdo dnf install -y ripgrep -} - -ubuntu() { - debian_install -} - -debian() { - rootdo apt install -y ripgrep -} diff --git a/Hooks/ruff/pre.sh b/Hooks/ruff/pre.sh deleted file mode 100755 index 0cb4ac9..0000000 --- a/Hooks/ruff/pre.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -uv_install ruff diff --git a/Hooks/rumdl/pre.sh b/Hooks/rumdl/pre.sh deleted file mode 100755 index 9d1c60e..0000000 --- a/Hooks/rumdl/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_install rumdl -} diff --git a/Hooks/shellcheck/pre.sh b/Hooks/shellcheck/pre.sh deleted file mode 100755 index cf17f3f..0000000 --- a/Hooks/shellcheck/pre.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -linux() { - LATEST_VERSION=$(github_latest_tag "koalaman/shellcheck") - VERSION=${SHELLCHECK_VERSION:=$LATEST_VERSION} - FILENAME=shellcheck-v${VERSION}.linux.x86_64.tar.gz - curl -LO https://github.com/koalaman/shellcheck/releases/download/v${VERSION}/${FILENAME} - tar zxf $FILENAME - mv shellcheck-v${VERSION}/shellcheck ~/.local/bin/shellcheck - chmod +x ~/.local/bin/shellcheck -} diff --git a/Hooks/ssh/pre.sh b/Hooks/ssh/pre.sh deleted file mode 100755 index f8ea0e6..0000000 --- a/Hooks/ssh/pre.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -mkdir -p ~/.ssh/config.d diff --git a/Hooks/starship/pre.sh b/Hooks/starship/pre.sh deleted file mode 100755 index 5cc1136..0000000 --- a/Hooks/starship/pre.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - rootdo dnf -y copr enable chronoscrat/starship - rootdo dnf install -y starship -} - -debian() { - rootdo apt install -y starship -} - -ubuntu() { - debian -} - -steamos() { - rootdo pacman -S --noconfirm starship -} diff --git a/Hooks/terraform/pre.sh b/Hooks/terraform/pre.sh deleted file mode 100755 index 4a5a019..0000000 --- a/Hooks/terraform/pre.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - rootdo dnf config-manager addrepo --from-repofile https://rpm.releases.hashicorp.com/$ID/hashicorp.repo - rootdo dnf update - rootdo dnf install -y terraform -} diff --git a/Hooks/tmux/pre.sh b/Hooks/tmux/pre.sh deleted file mode 100755 index 5374985..0000000 --- a/Hooks/tmux/pre.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -steamos() { - rootdo pacman -S --noconfirm tmux -} - -fedora() { - rootdo dnf install -y tmux -} diff --git a/Hooks/trivy/pre.sh b/Hooks/trivy/pre.sh deleted file mode 100755 index 00a8a3a..0000000 --- a/Hooks/trivy/pre.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -macos() { - brew install trivy -} - -linux() { - LATEST_VERSION=$(github_latest_tag "aquasecurity/trivy") - VERSION=${TRIVY_VERSION:=$LATEST_VERSION} - FILENAME="trivy_${VERSION}_Linux-64bit.tar.gz" - curl -sL https://github.com/aquasecurity/trivy/releases/download/v${VERSION}/${FILENAME} | tar -xz - install -m "0755" ./trivy ~/.local/bin/ - install -d ~/.local/share/trivy/templates/ - install contrib/*.tpl ~/.local/share/trivy/templates/ -} diff --git a/Hooks/tuckr/pre.sh b/Hooks/tuckr/pre.sh deleted file mode 100755 index 88524c1..0000000 --- a/Hooks/tuckr/pre.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -linux() { - if [ ! -f $HOME/.local/bin/tuckr ]; then - ln -s $(realpath ../../bin/$(uname -s)/$(uname -m)/tuckr) $HOME/.local/bin/tuckr - else - echo "link to tuckr in $HOME/.local/bin/tuckr already exists!" - fi - -} diff --git a/Hooks/ty/pre.sh b/Hooks/ty/pre.sh deleted file mode 100755 index 443cf3f..0000000 --- a/Hooks/ty/pre.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -generic() { - uv_install ty -} diff --git a/Hooks/uv/pre.sh b/Hooks/uv/pre.sh deleted file mode 100755 index f7e6271..0000000 --- a/Hooks/uv/pre.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -generic() { - curl -LsSf https://astral.sh/uv/install.sh | sh -} diff --git a/Hooks/watchexec/pre.sh b/Hooks/watchexec/pre.sh deleted file mode 100755 index 47a0794..0000000 --- a/Hooks/watchexec/pre.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -fedora() { - has "curl" - has "tar" - - LATEST_VERSION=$(github_latest_tag "watchexec/watchexec") - VERSION=${WATCHEXEC_VERSION:=$LATEST_VERSION} - FILENAME="watchexec-${version}-$(uname -m)-unknown-linux-gnu.rpm" - curl -fOL "https://github.com/watchexec/watchexec/releases/download/v${VERSION}/${FILENAME}" - rootdo dnf install -y ${FILENAME} -} - -debian() { - LATEST_VERSION=$(github_latest_tag "watchexec/watchexec") - VERSION=${WATCHEXEC_VERSION:=$LATEST_VERSION} - FILENAME="watchexec-${version}-$(uname -m)-unknown-linux-gnu.deb" - curl -fOL "https://github.com/watchexec/watchexec/releases/download/v${VERSION}/${FILENAME}" - rootdo apt install -y ${FILENAME} -} diff --git a/Hooks/youtube-dl/pre.sh b/Hooks/youtube-dl/pre.sh deleted file mode 100755 index e5c7429..0000000 --- a/Hooks/youtube-dl/pre.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - - -steamos() { - rootdo pacman -S --noconfirm yt-dlp -} diff --git a/Hooks/zsh/pre.sh b/Hooks/zsh/pre.sh deleted file mode 100755 index c777722..0000000 --- a/Hooks/zsh/pre.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -. ../../lib/lib.sh - -fedora() { - rootdo dnf install -y zsh - - # Support .zshrc.d/ organisation - add_line_to_file "source ~/.zshrc-custom" ~/.zshrc - mkdir -p ~/.zshrc.d/ || true - -} - -debian() { - rootdo apt install -y zsh - - # Support .zshrc.d/ organisation - add_line_to_file "source ~/.zshrc-custom" ~/.zshrc - mkdir -p ~/.zshrc.d/ || true -} - -ubuntu() { - debian -} diff --git a/bin/Linux/x86_64/tuckr b/bin/Linux/x86_64/tuckr deleted file mode 100755 index f1fd00f..0000000 Binary files a/bin/Linux/x86_64/tuckr and /dev/null differ diff --git a/Configs/emacs/.bashrc.d/emacs.bash b/emacs/config/.bashrc.d/emacs.bash similarity index 100% rename from Configs/emacs/.bashrc.d/emacs.bash rename to emacs/config/.bashrc.d/emacs.bash diff --git a/Configs/emacs/.emacs.d/early-init.el b/emacs/config/.emacs.d/early-init.el similarity index 100% rename from Configs/emacs/.emacs.d/early-init.el rename to emacs/config/.emacs.d/early-init.el diff --git a/Configs/emacs/.emacs.d/init.el b/emacs/config/.emacs.d/init.el similarity index 93% rename from Configs/emacs/.emacs.d/init.el rename to emacs/config/.emacs.d/init.el index d95493b..4f1d742 100644 --- a/Configs/emacs/.emacs.d/init.el +++ b/emacs/config/.emacs.d/init.el @@ -310,10 +310,17 @@ ) ;; Consolidates project buffers into a tab -(use-package project-tab-groups - :ensure t - :config - (project-tab-groups-mode 1)) +;;;;(use-package project-tab-groups +;;;; :ensure t +;;;; :config +;;;; (project-tab-groups-mode 1)) + +(use-package otpp + :ensure t + :after project + :init + (otpp-mode 1) + (otpp-override-mode 1)) ;; Make the tab-bar look more flat, like what's in neovim @@ -364,9 +371,10 @@ ;; Allows auto completion of commands in the command buffer (use-package ivy - :ensure t - :config + :ensure t + :init (ivy-mode t) + :config (setq ivy-use-virtual-buffers t) (setq ivy-count-format "(%d/%d) ") :bind @@ -562,17 +570,21 @@ '(company-quickhelp-color-foreground "#DCDCCC") '(css-indent-offset 4) '(custom-safe-themes - '("37768a79b479684b0756dec7c0fc7652082910c37d8863c35b702db3f16000f8" "2dff5f0b44a9e6c8644b2159414af72261e38686072e063aa66ee98a2faecf0e" "3f44e2d33b9deb2da947523e2169031d3707eec0426e78c7b8a646ef773a2077" "aaffceb9b0f539b6ad6becb8e96a04f2140c8faa1de8039a343a4f1e009174fb" "190a9882bef28d7e944aa610aa68fe1ee34ecea6127239178c7ac848754992df" "a4df5d4a4c343b2712a8ed16bc1488807cd71b25e3108e648d4a26b02bc990b3" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" default)) + '("37768a79b479684b0756dec7c0fc7652082910c37d8863c35b702db3f16000f8" + "2dff5f0b44a9e6c8644b2159414af72261e38686072e063aa66ee98a2faecf0e" + "3f44e2d33b9deb2da947523e2169031d3707eec0426e78c7b8a646ef773a2077" + "aaffceb9b0f539b6ad6becb8e96a04f2140c8faa1de8039a343a4f1e009174fb" + "190a9882bef28d7e944aa610aa68fe1ee34ecea6127239178c7ac848754992df" + "a4df5d4a4c343b2712a8ed16bc1488807cd71b25e3108e648d4a26b02bc990b3" + "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" default)) '(js-indent-level 4) '(newsticker-url-list - '(("phoronix" "https://www.phoronix.com/phoronix-rss.php" nil nil nil) - ("hacker news" "https://news.ycombinator.com/rss" nil nil nil))) - '(package-selected-packages - '(ace-window ag aggressive-indent all-the-icons-dired color-theme-sanityinc-tomorrow company counsel csv-mode dashboard dired-gitignore dired-subtree docker dockerfile-mode doom-modeline dracula-theme eldoc-box flycheck json-mode just-ts-mode magit makefile-executor markdown-mode material-theme move-text project-tab-groups python-mode restclient spacemacs-theme terraform-mode vim-tab-bar web-mode x509-mode yaml-mode yasnippet)) + '(("phoronix" "https://www.phoronix.com/phoronix-rss.php" nil nil nil) + ("hacker news" "https://news.ycombinator.com/rss" nil nil nil))) + '(package-selected-packages nil) '(pdf-view-midnight-colors '("#DCDCCC" . "#383838")) '(safe-local-variable-values '((just-ts-indent-offset . 4))) '(sgml-basic-offset 4) - '(warning-suppress-types '((comp)))) (custom-set-faces ;; custom-set-faces was added by Custom. diff --git a/Configs/emacs/.emacs.d/snippets/csharp-mode/xml-summary.yas b/emacs/config/.emacs.d/snippets/csharp-mode/xml-summary.yas similarity index 100% rename from Configs/emacs/.emacs.d/snippets/csharp-mode/xml-summary.yas rename to emacs/config/.emacs.d/snippets/csharp-mode/xml-summary.yas diff --git a/Configs/emacs/.emacs.d/snippets/python-mode/block-comment.yas b/emacs/config/.emacs.d/snippets/python-mode/block-comment.yas similarity index 100% rename from Configs/emacs/.emacs.d/snippets/python-mode/block-comment.yas rename to emacs/config/.emacs.d/snippets/python-mode/block-comment.yas diff --git a/Configs/emacs/.emacs.d/snippets/python-mode/future-annotations.yas b/emacs/config/.emacs.d/snippets/python-mode/future-annotations.yas similarity index 100% rename from Configs/emacs/.emacs.d/snippets/python-mode/future-annotations.yas rename to emacs/config/.emacs.d/snippets/python-mode/future-annotations.yas diff --git a/Configs/emacs/.emacs.d/snippets/python-mode/logger.yas b/emacs/config/.emacs.d/snippets/python-mode/logger.yas similarity index 100% rename from Configs/emacs/.emacs.d/snippets/python-mode/logger.yas rename to emacs/config/.emacs.d/snippets/python-mode/logger.yas diff --git a/Configs/emacs/.emacs.d/snippets/python-mode/tdd-comment.yas b/emacs/config/.emacs.d/snippets/python-mode/tdd-comment.yas similarity index 100% rename from Configs/emacs/.emacs.d/snippets/python-mode/tdd-comment.yas rename to emacs/config/.emacs.d/snippets/python-mode/tdd-comment.yas diff --git a/Configs/emacs_wsl/.bashrc.d/emacs_wsl.bash b/emacs/config_wsl/.bashrc.d/emacs_wsl.bash similarity index 100% rename from Configs/emacs_wsl/.bashrc.d/emacs_wsl.bash rename to emacs/config_wsl/.bashrc.d/emacs_wsl.bash diff --git a/emacs/config_wsl/.config/gtk-3.0/gtk.css b/emacs/config_wsl/.config/gtk-3.0/gtk.css new file mode 100644 index 0000000..1ef7edb --- /dev/null +++ b/emacs/config_wsl/.config/gtk-3.0/gtk.css @@ -0,0 +1,45 @@ +/* Place in ~/.config/gtk-3.0/gtk.css */ + +/* Inspired by: https://ogbe.net/blog/gnome_titles */ +/* shrink headerbars (don't forget semicolons after each property) */ +headerbar { + min-height: 0px; + padding-left: 2px; /* same as childrens vertical margins for nicer proportions */ + padding-right: 2px; + background-color: #2d2d2d; + font-size: 10px; + font-weight: normal; + font-weight: lighter; +} + +headerbar entry, +headerbar spinbutton, +headerbar button, +headerbar separator { + margin-top: 0px; /* same as headerbar side padding for nicer proportions */ + margin-bottom: 0px; +} + +/* shrink ssd titlebars */ +.default-decoration { + min-height: 0; /* let the entry and button drive the titlebar size */ + padding: 3px; + background-color: #2d2d2d; +} + +.default-decoration .titlebutton { + min-height: 0px; /* tweak these two props to reduce button size */ + min-width: 0px; +} + +window.ssd headerbar.titlebar { + padding-top: 3px; + padding-bottom: 3px; + min-height: 0; +} + +window.ssd headerbar.titlebar button.titlebutton { + padding-top: 3px; + padding-bottom:3px; + min-height: 0; +} diff --git a/Hooks/emacs/pre.sh b/emacs/hooks/pre.sh similarity index 96% rename from Hooks/emacs/pre.sh rename to emacs/hooks/pre.sh index 8664d91..cdb6cf3 100755 --- a/Hooks/emacs/pre.sh +++ b/emacs/hooks/pre.sh @@ -1,6 +1,5 @@ #!/bin/sh -. ../../lib/lib.sh fedora() { installs="emacs-pgtk aspell aspell-en" diff --git a/install.sh b/install.sh deleted file mode 100755 index eaaae83..0000000 --- a/install.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -CLONE_URL=${CLONE_URL:="https://github.com/vasdee/dotfiles.git"} -LOCAL_CLONE_PATH=${LOCAL_CLONE_PATH:=~/.config/dotfiles} -DOTFILES_TAG="" -LOCAL_BIN="$HOME/.local/bin" - -echo "Starting dotfile install" - -echo "Cloning $CLONE_URL to $CLONE_DIR" -mkdir -p $LOCAL_CLONE_PATH $LOCAL_BIN - -GIT_OPTIONS="" -if [ -n "${DOTFILES_TAG}" ]; then - GIT_OPTIONS="--branch $DOTFILES_TAG" -fi -git clone $GIT_OPTIONS $CLONE_URL $LOCAL_CLONE_PATH - -echo "linking tuckr to ~/.local/bin/tuckr - make sure this is set in your path or run bash or zsh hooks" -ln -s $LOCAL_CLONE_PATH/bin/$(uname -s)/$(uname -m)/tuckr ~/.local/bin/tuckr - -# Add the path temporarily -export PATH=$LOCAL_BIN:$PATH - -echo "Finished install!" -echo "$HOME/.local/bin has been added to PATH for the current session only." -echo "Consider adding ~/.local/bin permanently to your PATH or; " -echo "run tuckr set bash ( or zsh ) to get it linked in for you now" diff --git a/lib/lib.sh b/lib/lib.sh deleted file mode 100644 index 77a76df..0000000 --- a/lib/lib.sh +++ /dev/null @@ -1,164 +0,0 @@ -# $1 - line to conditionally add -# $2 - file path to add -add_line_to_file() { - mkdir -p $(dirname $2) - touch $2 - if ! grep -q "${1}" ${2}; then - echo "${1}" >> ${2} - echo "Added ${1} to ${2}" - else - echo "$1 already exists in ${2}....skipping" - fi -} - -# $1 name or path to executable -has() { - if command -v $1 &>/dev/null; then - echo "$1 exists and is executable." - else - echo "$1 does not exist or is not executable" - echo "you might need to run `tuckr set $1` to install it" - exit 1 - fi -} - -# Checks if a given function $1 exists and executes -# with remaining parameters -check_and_exec_function() { - func_name=$1 - if type $func_name > /dev/null 2>&1; then - shift 1 - eval $func_name $* - fi -} - -# This helper function can be used for installing tools via uv -# If a corresponding env var of the form $_VERSION exists, then this is assumed to be -# a version number required for the package. It will be appended to the uv install command via the == syntax -# $1 name of the tool to install via uv -uv_install() { - - has uv - PACKAGE=$1 - shift 1 - PACKAGE_UPPERCASE=$(echo "$PACKAGE" | tr '[:lower:]' '[:upper:]' | tr '-' '_') - PACKAGE_VERSION_VARNAME="${PACKAGE_UPPERCASE}_VERSION" - PACKAGE_VERSION=$(eval echo "\$$PACKAGE_VERSION_VARNAME") - - if [ -n "$PACKAGE_VERSION" ]; then - PACKAGE="$PACKAGE==$PACKAGE_VERSION" - fi - uv tool install --upgrade $PACKAGE $* -} - -# Removes a package via a uv tool install -uv_uninstall() { - uv tool uninstall $@ -} - -# Install a package via npm. -# You should ensure that the nodejs hook has been run previously, otherwise packages will be -# installed to non-shell aware locations -# $1 name of the package -npm_install() { - has npm - PACKAGE=$1 - shift 1 - PACKAGE_UPPERCASE=$(echo "$PACKAGE" | tr '[:lower:]' '[:upper:]' | tr '-' '_') - PACKAGE_VERSION_VARNAME="${PACKAGE_UPPERCASE}_VERSION" - PACKAGE_VERSION=$(eval echo "\$$PACKAGE_VERSION_VARNAME") - - if [ -n "$PACKAGE_VERSION" ]; then - PACKAGE="${PACKAGE}@${PACKAGE_VERSION}" - fi - npm install --global $PACKAGE $* -} - -# Removes a managed package via npm -npm_uninstall() { - npm uninstall --global $@ -} - -# Gets the latest github tag from a given repo -# Note: this function removes any optional v prefix of the tag, which seems to be a github convention -# $1 repo path -github_latest_tag() { - echo $(curl -sL https://api.github.com/repos/${1}/releases/latest | jq -r | grep '"tag_name":' | sed -E 's/.*"v?([^"]+)".*/\1/') -} - -# Gets the latest tag for a given gitlab repository -# Note: this function removes any optional v prefix of the tag, which seems to be a github convention -# $1 project name or id -gitlab_latest_tag() { - echo $(curl -sL https://gitlab.com/api/v4/projects/${1}/releases?per_page=1 | jq -r | grep '"tag_name":' | sed -E 's/.*"v?([^"]+)".*/\1/') -} - - -# A wrapper function for elevating to sudo if required. -# This function helps during container builds, as usually the container runs as root and sudo isn't installed. -# This negates the need to add sudo, but must be run as root now -rootdo() { - # If this is not run as an elevated user, then attempt to run the entire script again as sudo - if [ "$(id -u)" -ne 0 ]; then - sudo $@ - else - $@ - fi -} - - -# Generic install script for installing per OS_ID based on the above global -# variables that determine cross platform OS infomation -# -# *_install functions are considered hooks, and should be developed per pre.sh or post.sh script as -# required -run() { - - echo "Running $SCRIPT_ACTION hook for $SCRIPT_GROUP on ${OS_TYPE}/${OS_ID}($OS_ARCH)" - - TMP_DIR=$(mktemp -d) - cd ${TMP_DIR} - case "$OS_TYPE" in - Linux) - # Run the specific OS installers before the general purpose linux one - check_and_exec_function ${OS_ID} - - check_and_exec_function linux - ;; - Darwin) - check_and_exec_function macos - ;; - *) - echo "Not a supported OS" - exit 1 - ;; - esac - - # perhaps there's a generic install for all operating systems. Eg uv - check_and_exec_function generic - - # clean up the tempdir - rm -rf ${TMP_DIR} -} - -# Get the script name -SCRIPT_ACTION=$(basename "$0" ".sh") -SCRIPT_GROUP=$(basename "$(dirname "$0")") - -# Some global variables tha will be useful for performing actions based on specific flavours of linux / osx -OS_TYPE=$(uname -s) -OS_ID="" -OS_VERSION_ID="" -OS_ARCH=$(uname -m) - -if [ ${OS_TYPE} = "Linux" ]; then - . /etc/os-release - OS_ID=${ID} - OS_VERSION_ID=${VERSION_ID} - -elif [ ${OS_TYPE} = "Darwin" ]; then - OS_ID=$(sw_vers -productName) - OS_VERSION_ID=$(sw_vers -productVersion) -fi - -trap run EXIT diff --git a/readme.md b/readme.md index 199aa5c..1f1efbe 100644 --- a/readme.md +++ b/readme.md @@ -1,423 +1,7 @@ -# Dotfiles +# dotfiles (using caifs) -![SHOW ME WHAT YOU DOT!](img/what-you-dot-50.jpg) +My personal supplemental dotfiles using (caifs) -Dotfiles and general purpose installers for various flavours of linux (and macos). +It is basically a personal emacs configuration, as everything is standard in https://github.com/caifs-org/caifs-common -Uses [tuckr](https://github.com/RaphGL/Tuckr) under the hood to provide the symlinking and pre/post/hook running -Currently Fedora/RHEL, Debian/Ubuntu and SteamOS are supported - -It has cross platform support, so volunteers who want to add OSX support are welcome to contribute to that side of -things. - -## Why would you use this? - -* Because you can't remember where that work proxy certificate needs to be before you call that update-ca command you - can't remember either... -* Because you can't remember how to officially install docker within your chosen distro, then change it for container - builds... -* Because you aren't sure if you should install pre-commit manually via your package manager or some other way... -* Because you want to consistently install software locally and in pipelines or docker builds... -* Because you gaslit yourself with the average notes you left yourself last time you did this... - -## Install - -Yolo it onto your system via a single command - -``` bash -curl -sL https://raw.githubusercontent.com/vasdee/dotfiles/install.sh | sh -``` - -Or run the guts of the install manually - -```bash -CLONE_URL=https://github.com/vasdee/dotfiles.git -CLONE_DIR=~/.config/dotfiles -mkdir -p $CLONE_DIR -git clone $CLONE_URL $CLONE_DIR -cd $CLONE_DIR -ln -s $PWD/bin/$(uname -s)/$(uname -m)/tuckr ~/.local/bin/tuckr -``` - -## Some opinionated notes - -## ~/.localsettings - -There is nothing stopping you from using multiple `tuckr` profiles and running things like -`tuckr -p mydots my-emacs-config` alongside this dotfiles repo. However, for those small configuration choices where -another fullblown dotfile repo isn't required, then you can use the `~/.localsettings` to provide whatever variable -customisations you require. - -Currently it holds the `DEFAULT_CODE_DIR` and `git` usernames and emails for work/private configurations. - -## Shell directories - -Where possible, `config.d` practices are adopted for including separate config files. This is generally a good practice -everywhere, as it allows your most "top-most" config file, say `~/.bashrc`, `~/.zshrc` or `~/.ssh/config` to not be -manipulated by this library. Often a default is provided by your distro of choice, or you may version control your own -dot file. Either way, this library will avoid touching these files when possible and support the use of `config.d` style -includes, which provide minimal impact to your top-most config files. - -> [!TIP] -> each group that sets a config file in either `~/.bashrc.d/` or `~/.zshrc.d` will use the practice of using the group -> name of the thing being installed as the config file name. -> E.g. `tuckr add starship` will add a `~/.bashrc.d/starship.bash` config file via symlink - -## Git'isms and DEFAULT_CODE_DIR - -The git config provided prompts for a `DEFAULT_CODE_DIR` location, which is typically a directory where all your repos -get cloned to. You do clone all your repos to a single directory right? And not to the desktop and all over the place?? - -This git config takes it a step further and separates "work" from "private" locations and includes username and email -credentials based on this structure. - -For example, if you take the default `DEFAULT_CODE_DIR=~/code` setting. Then this gitconfig will assume all your 'work' -repos sit under `~/code/work` and similarly all your private repos are under `~/code/private`. - -To take it another step further, the gitconfig supplied offers some nice function aliases to provide further -organisation. - -`git clone-private` and `git clone-work` will clone the supplied repository, with the full path, under the respective -`~/code/private` and `~/code/work` directories. - -For example, running the following on this repo (which is where the installer will put it by default) - -```bash -git clone-private https://github.com/vasdee/dotfiles.git - -``` - -Will result in the `dotfiles` repo being located at `~/code/private/github.com/vasdee/dotfiles` - -Is it a bit java and dotnetty namespace looking? Kinda. Does it make things easier when you are dealing with a lot of -enterprise level repositories scattered all over the place? Absolutely! - -To make it even easier to navigate, if you are using `bash` or `zsh` via this repo, you will get a nice interactive -navigator via the alias, `gitchooser` - -> [!NOTE] -> The git group prompts during the run of tuckr set git for the variables to populate localsettings -> You can always manually edit this file - -## Passwords - -I like using a `~/.netrc` file as my single source of truth for credential management. Others might not, but either -way I like to keep the contents of that file within a dedicated password manager, rather than keep it within these dots, -which is an option with `tuckr` - -## Supported installs - -| Software group | Description | -|:---------------------|:------------------------------------------------------------------------------------| -| azure-cli | Official Azure CLI | -| awscli | Official AWS CLI | -| docker | Docker community edition engine & CLI tooling | -| docker-cli | Docker CE CLI tooling only, no engine install | -| uv | Python dependency management | -| ruff | extremely fast linter for python | -| just | a command runner, inspired by make but much better | -| starship | a terminal prompt prettier, written in rust | -| ripgrep | A faster, enhanced version of grep. Often integrated into editors | -| nvm | manage multiple node versions | -| pre-commit | run checks and validation before committing to git | -| poetry | a perfectly fine python project management tool, but deprecated in favour of uv now | -| trivy | container image scanning tool | -| bash | some nice, minimal configuration for bash shells | -| zsh | some nice, minimal configuration for zsh shells | -| lazydocker | tui for managing local docker containers | -| gitu | TUI for git interaction, based on magit | -| editorConfig | default editor configurations for maintaining consistency between teams | -| direnv | manage environment variables per directory | -| git | some nice configuration specifically for work | -| oras | CLI tool for interfacing with OCI objects | -| bump-my-version | CLI for applying semver practices to git repos | -| cruft | CookieCutter template manager | -| ansible | Configuration automation tool for | -| dive | TUI tool for inspecting docker images | -| pandoc | Markup conversion tool | -| watchexec | monitor file changes and run commands | -| glab | gitlab CLI tool for interacting with gitlab apis | -| pyright | M$ Python Language server | -| basedpyright | A based version of the pyright lang server with saner defaults | -| rumdl | A modern Markdown linter and formatter, built for speed with Rust | -| nodejs | Javascript runtime (mainly used for managing packages via this tool) see NVM | -| ty | An extremely fast python type checker and language server from astral | -| bash-language-server | LSP server for bash and sh | -| just-lsp | LSP server for Just | -| tmux | A terminal multiplexer | -| fd | fd is a fast find alternative written in rust | -| fzf | fast fuzzy finder utility | -| shellcheck | a static analysis tool for shell scripts | -| delta | a syntax-highlighting pager for git, diff, and grep output | -| | | - -> [!TIP] -> All can be installed and configured via `tuckr set ` - -## Notes on Install - -Some of the installs might prompt or include some extras that you did not know about. Anything of note -is detailed below. - -### Installing specific versions - -While the most common use case for these dots if or bootstrapping a local dev machine, there is a potential use case for -using these dot installers within a container build. - -For local dev, it is usually perfectly fine to install the latest of whatever software you are installing, and that is -why it is the default. For those odd times where you require a specific version of a piece of software, then _most_ of -the installs support installing a specific version via supplying an env var of the form `$_VERSION` - -For example, the following will attempt to install `poetry` version 1.8.2, in this case via `uv` - -`POETRY_VERSION=1.8.2 tuckr set poetry` - -### Docker community edition - -Installs docker engine, cli and all the bits and pieces required for docker development. - -The docker install occurs via the recommended way via - -`tuckr set docker` - -If you want just the CLI tooling for docker, minus the engine - particularly useful in docker pipeline builds, -then the docker-cli target is an alternative. - -### Install uv - -Installing uv is a requirement for other tools, such as pre-commit, ruff, poetry and just. - -The install occurs via the currently recommended way on - -`tuckr set uv` - -### Various UV tools - -Tools like pre-commit, just, ruff, ansible etc which can be installed via the `uv tool install`. - -This is considered best practice for non system wide installs and hence is the preferred method when available - -> [!Note] -> Once tools are installed this way, be sure to periodically update them via_ `uv tool update` -> or by running the _set_ hook again for that group. - -### editorConfig - -A root level editorConfig is supplied and will be installed in `$DEFAULT_CODE_DIR` - -> [!IMPORTANT] -> In order for this root revel editorConfig to take effect, any custom editorConfigs within your -> repo ( or other locations ) should set `root = false` in order for these defaults to be discovered. -> The most simplest form of this is to add a blank `.editorconfig` into your repo - -### Shells BASH and ZSH - -Both can be installed and basically configured via their respective groups `bash` and `zsh` - -Other tools that require bash or zsh integration manage their own configuration for the shells, for instance -`starship`. In order to keep this consistent, the generally well accepted practice of organsing your custom -import shell scripts under a specifc directory is adopted and setup during the first run - -For bash, custom scripts should be placed in `~/.bashrc.d/` while for zsh, it is `~/.zshrc.d/` - -Some distributions already adopt this practice, in which case nothing else needs to be done. For those that don't, -the addition is contained with a `.bashrc-custom` or `.zshrc-custom` file and the source line is automatically appended -to `.bashrc` or `.zshrc`. - -### Git config - -On the off chance you want to work with work and personal accounts on the same machine, provisions have been made to -cater for both configs. - -This repository assumes that you will use the `git clone-work` or `git clone-private` alias to clone ALL repositories, -both personal and work related. This will make organising mostly straight forward as _most_ people will use github.com -for personal and gitlab.com for work related. - -### Global gitignore - -The git hook also downloads and consolidates common `.gitignore` rules into `$HOME/.config/git/ignore` - -The list comes from and the currently consolidated ones can be added to within the -[Hooks/git/post.sh](Hooks/git/post.sh) hook script - -> [!NOTE] -> The global ignore can always be tailored to suit a per-project `.gitignore` by negating a rule -> using the ! operator - -### Pandoc - -Gitlab and Github both use extensions to markdown that are not 100% compatible. - -Unless you want to jump back and forth between the online Gitlab markdown editor, you can also get a decent -representation via using `pandoc` - -Installing `pandoc` will also install the github html rendering template, which is much better than stock standard. - -For a "good enough" local verification of a readme file that will render in Gitlab, you can run the following. - -```shell -pandoc \ - --metadata=title=markdown \ - --template=GitHub.html5 \ - --from gfm \ - --to html5 \ - --mathjax \ - --highlight-style=pygments \ - --standalone \ - -o preview.html - readme.md -``` - -which is also provided as an alias, provided you have installed the bash or zsh group previously: - -```shell -pandoc-preview readme.md -``` - -For bonus points, you can also run `watchexec` and have the preview.html auto-reload in your browser - -```shell -watchexec readme.md pandoc-preview readme.md -``` - -### Ruff - -A global `ruff.toml` file is provided within `~/.config/ruff/ruff.toml` which contains some commonly accepted standards. - -Consider extending the global file when developing in order to not have to duplicate the same settings across projects. - -An example project level `pyproject.toml` - -``` toml -[tool.ruff] -# Extend the `pyproject.toml` file in the user config directory... -extend = "~/.config/ruff/pyproject.toml" -``` - -OR - -An example project level `ruff.toml` - -``` toml -# Extend the `ruff.toml` file in the user config directory... -extend = "~/.config/ruff/ruff.toml" - -# ...but use a different line length. -line-length = 100 -``` - -See here for more information on the limits of how this config file discovery works - - - -### Rumdl - -Rumdl is a fast markdown linter and LSP server. It is backwards compatible with `markdownlint`, aka `mdl`. - -A global `rumdl.toml` is provided as part of the install. Unlike ruff, it cannot be extended in a per-project basis, so -it might not be as useful. - -A potential pattern for using `rumdl` within `pre-commit` checks in a pipeline for instance, is to install the `rumdl` -config during the pipeline - -### Emacs - -Run these after first boot of emacs `M-x all-the-icons-install ` and `M-x nerd-icons-install ` - -## Usage within docker builds - -``` dockerfile -FROM debian:trixie as build - -RUN curl -sL https://raw.githubusercontent.com/vasdee/dotfiles/install.sh | bash && \ - tuckr set uv pre-commit ruff - -FROM debian:trixe as run - -RUN cp --from build - -``` - -## Adding new Hooks and Configs - -For anything that requires more than just a config file, use the hooks features to provide installs. - -`lib/lib.sh` will give you a good starting point for how to structure installs based on the linux distro or osx - -Before adding anything extra into the basics group, consider if it is truly required. Otherwise make it optional in its -own group - -If root privileges are required for any installs, rather than specifying `sudo`, considering using the provided function -`rootdo`, which will check if the current user is root, and run the command with or without sudo depending on the user. - -This is very useful particularly when using it within dockerfiles, which typically are built with root - -The following is the list of supported hooks that can be used for installing software. The name of the hook is -based on the `ID` field from `/etc/os-release` on linux, or `sw_vers -productName` on MacOS - -`fedora() {}` - fedora specific install, using dnf for example - -`debian() {}` - debian specific install, using apt for example - -`ubuntu() {}` - ubuntu specific install, often this can just call `debian` - -`steamos() {}` - steam os specific install, which is built on arch - -`macos() {}` - macos specific install hook. Could use brew install if required - -`linux() {}` - a linux installer, useful for things that might use a pre-compiled linux binary for instance - -`generic() {}` - a generic installer hook, when doing curl-sudo-pipe-bash installs or perhaps when using `uv tool` as -the install target - -If using `uv tool` to install software, a convenience function is provided that will ensure `uv` is installed. - -```bash -uv_install() { - has uv - ... - uv tool install $* -} -``` - -> [!NOTE] -> The `uv tool` install also respects package versions, which can be set via `$_VERSION` -> For example, `RUFF_VERSION=1.0.0 tuckr set ruff` will install the equivalent of `uv tool install ruff==1.0.0` - -If using `npm` to install software, then a convenience function is provided that will ensure `npm` is installed and -packages end up on the standard `~/.local/` prefix - -``` bash -npm_install() { - has npm - ... - npm install --global ... -} -``` - -> [!NOTE] -> The `npm install --global` install also respects package versions, which can be set via `$_VERSION` -> For example, `BASH_LANGUAGE_SERVER_VERSION=1.0.0 tuckr set bash-language-server` will install the equivalent of -> `npm install --global bash-language-server@1.0.0` - -For `npm` and `uv` based installs, an equivalent of `npm_uninstall` and `uv_uninstall` exists to be used within removal -scripts. - -## lib.sh functions - -There are some handy functions included in [lib/lib.sh](lib/lib.sh) that are worth exploring but included here as well - -## Updating local tuckr as new version emerge - -Will differ depending on OS flavour, but the general gist is to have cargo installed and build tuckr. - -This then gets copied to the appropriate bin location - -```text -sudo dnf install cargo -cargo install tuckr -mv ~/.cargo/bin/tuckr ~/.config/dotfiles/bin/$(uname -s)/$(uname -m)/ -TUCKR_VERSION=$(tuckr --version) -git commit -m "updated ${TUCKR_VERSION// /-}" -```