diff --git a/.editorconfig b/.editorconfig index c02ee54..b2d9f71 100644 --- a/.editorconfig +++ b/.editorconfig @@ -29,6 +29,3 @@ switch_case_indent = true # --case-indent space_redirects = false keep_padding = false function_next_line = true # --func-next-line - -[local/bin/antigen.zsh] -ignore = true diff --git a/base/zshrc b/base/zshrc index 28afee9..f5599e2 100644 --- a/base/zshrc +++ b/base/zshrc @@ -10,13 +10,13 @@ export DOTFILES="$HOME/.dotfiles" # 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 - [ -r "$file" ] && [ -f "$file" ] && source "$file" - [ -r "$file-secret" ] && [ -f "$file-secret" ] && source "$file-secret" - [ -r "$file-$HOSTNAME" ] && [ -f "$file-$HOSTNAME" ] && source "$file-$HOSTNAME" - [ -r "$file-$HOSTNAME-secret" ] && [ -f "$file-$HOSTNAME-secret" ] && source "$file-$HOSTNAME-secret" - done + # Load the shell dotfiles, and then some: + for file in $DOTFILES/config/{exports,alias,functions}; do + [ -f "$file" ] && source "$file" + [ -f "$file-secret" ] && source "$file-secret" + [ -f "$file-$HOSTNAME" ] && source "$file-$HOSTNAME" + [ -f "$file-$HOSTNAME-secret" ] && source "$file-$HOSTNAME-secret" + done } x-load-configs @@ -24,42 +24,17 @@ x-load-configs ssh-add -A 2>/dev/null; # Try to load antigen, if present -[[ -f "$XDG_BIN_HOME/antigen.zsh" ]] && source "$XDG_BIN_HOME/antigen.zsh" +ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh" +[[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH" # antigen is present if command -v antigen &> /dev/null; then - antigen use oh-my-zsh + antigen use oh-my-zsh - antigen bundle ssh-agent - antigen bundle colored-man-pages - antigen bundle jreese/zsh-titles - antigen bundle zsh-users/zsh-syntax-highlighting - antigen bundle zsh-users/zsh-completions - antigen bundle MichaelAquilina/zsh-you-should-use - antigen bundle unixorn/autoupdate-antigen.zshplugin - antigen bundle Sparragus/zsh-auto-nvm-use + # config/functions + x-default-antigen-bundles - hash php 2>/dev/null && antigen bundle php - hash nvm 2>/dev/null && antigen bundle nvm - hash docker 2>/dev/null && antigen bundle docker - hash python 2>/dev/null && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv - hash jq 2>/dev/null && antigen bundle reegnz/jq-zsh-plugin - hash docker-compose 2>/dev/null && antigen bundle sroze/docker-compose-zsh-plugin - - # Platform dependant bundles - if [[ $(uname) == 'Linux' ]]; then - antigen bundle command-not-found - elif [[ $(uname) == 'Darwin' ]]; then - # If we have brew installed - if command -v brew &> /dev/null; then - # Only enable brew plugin if brew exists - antigen bundle brew - # load Z - [[ -f "$(brew --prefix z)/etc/profile.d/z.sh" ]] && source "$(brew --prefix z)/etc/profile.d/z.sh" - fi - fi - - antigen apply + antigen apply fi eval "$(starship init zsh)" diff --git a/config/alias b/config/alias old mode 100644 new mode 100755 index 28f2dde..452ca1f --- a/config/alias +++ b/config/alias @@ -1,5 +1,4 @@ #!/usr/bin/env bash -# macOS specific # Get installed php versions from brew and setup aliases function x-set-php-aliases @@ -42,6 +41,7 @@ if [[ $(uname) == 'Darwin' ]]; then x-set-php-aliases + # Laravel Sail shortcut alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail' # Flush Directory Service cache @@ -60,15 +60,12 @@ alias zapds='find . -name ".DS_Store" -print -delete' alias t='tail -f' # tail with follow flag on alias dn='du -chd1' # directory usage, return only the total -alias code_scanner="docker run \ - --env SOURCE_CODE='${PWD}' \ - --volume '${PWD}':/code \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - registry.gitlab.com/gitlab-org/ci-cd/codequality:${CODEQUALITY_VERSION:-latest} \ - /code" - -alias composerUp='composer global update' -alias npmUp='npm -g up' +alias code_scanner='docker run + --env SOURCE_CODE="$PWD" + --volume "${PWD}":/code + --volume /var/run/docker.sock:/var/run/docker.sock + registry.gitlab.com/gitlab-org/ci-cd/codequality:"${CODEQUALITY_VERSION:-latest}" + /code' alias zedit='$EDITOR ~/.dotfiles' diff --git a/config/exports b/config/exports index eda5395..dd4ab7e 100755 --- a/config/exports +++ b/config/exports @@ -1,17 +1,22 @@ # shellcheck shell=bash -export HIST_STAMPS="yyyy-mm-dd" +# Explicitly set XDG folders +# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_STATE_HOME="$HOME/.local/state" +export XDG_BIN_HOME="$HOME/.local/bin" # this one is custom +# History env variables +export HIST_STAMPS="yyyy-mm-dd" # Larger bash history (allow 32³ entries; default is 500) export HISTSIZE=32768 export HISTFILESIZE=$HISTSIZE # don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options export HISTCONTROL=ignoreboth - # Make some commands not show up in history 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)" @@ -28,12 +33,7 @@ export GREP_OPTIONS="--color=auto" # update the values of LINES and COLUMNS. hash shopt 2> /dev/null && shopt -s checkwinsize -# Explicitly set XDG folders -# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html -export XDG_DATA_HOME="$HOME/.local/share" -export XDG_CONFIG_HOME="$HOME/.config" -export XDG_STATE_HOME="$HOME/.local/state" -export XDG_BIN_HOME="$HOME/.local/bin" # this one is custom +export LC_ALL=fi_FI.utf8 # Antigen configuration # https://github.com/zsh-users/antigen/wiki/Configuration @@ -87,6 +87,7 @@ fi # 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" # composer, https://getcomposer.org/ if command -v composer &> /dev/null; then @@ -138,4 +139,5 @@ fi # Load iterm2 shell integration # https://iterm2.com/documentation-shell-integration.html -[[ -f "$XDG_BIN_HOME/iterm2_shell_integration.zsh" ]] && source "$XDG_BIN_HOME/iterm2_shell_integration.zsh" +[[ -f "$XDG_BIN_HOME/iterm2_shell_integration.zsh" ]] \ + && source "$XDG_BIN_HOME/iterm2_shell_integration.zsh" diff --git a/config/functions b/config/functions index 327940c..355797a 100755 --- a/config/functions +++ b/config/functions @@ -65,3 +65,29 @@ function silent { "$@" >&/dev/null } + +# Defines default antigen bundles +function x-default-antigen-bundles +{ + # these should be always available + antigen bundle colored-man-pages + antigen bundle command-not-found + antigen bundle ssh-agent + antigen bundle MichaelAquilina/zsh-you-should-use + antigen bundle Sparragus/zsh-auto-nvm-use + 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 + hash git 2> /dev/null && antigen bundle git + hash brew 2> /dev/null && antigen bundle brew + hash docker 2> /dev/null && antigen bundle docker + hash docker-compose 2> /dev/null && antigen bundle sroze/docker-compose-zsh-plugin + hash jq 2> /dev/null && antigen bundle reegnz/jq-zsh-plugin + hash nvm 2> /dev/null && antigen bundle nvm + hash php 2> /dev/null && antigen bundle php + hash python 2> /dev/null && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv + hash rvm 2> /dev/null && antigen bundle unixorn/rvm-plugin +} diff --git a/hosts/lakka/base/zshrc b/hosts/lakka/base/zshrc index 8e49fc6..e6c9959 100644 --- a/hosts/lakka/base/zshrc +++ b/hosts/lakka/base/zshrc @@ -1,7 +1,7 @@ # Lakka zsh configuration. # # shellcheck shell=bash -export PATH="/usr/local/bin:/usr/bin:/usr/sbin:$PATH" +export PATH="$HOME/bin:/usr/local/bin:/usr/bin:/usr/sbin:$PATH" # Defaults export DOTFILES="$HOME/.dotfiles" @@ -19,33 +19,23 @@ function x-load-configs() } x-load-configs -export PATH="$XDG_BIN_HOME:$HOME/bin:$HOME/.rvm/bin:$PATH" +export PATH="$XDG_BIN_HOME:$PATH" export LC_ALL=fi_FI.utf8 +export RVM_PATH="$HOME/.rvm" +export PATH="$RVM_PATH/bin:$PATH" +[[ -s "$RVM_PATH/scripts/rvm" ]] && source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function* + # Try to load antigen, if present -[[ -f "$XDG_BIN_HOME/antigen.zsh" ]] && source "$XDG_BIN_HOME/antigen.zsh" +ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh" +[[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH" # If antigen was loaded if command -v antigen &> /dev/null; then antigen use oh-my-zsh - antigen bundle ssh-agent - antigen bundle colored-man-pages - antigen bundle jreese/zsh-titles - antigen bundle zsh-users/zsh-syntax-highlighting - antigen bundle zsh-users/zsh-completions - antigen bundle MichaelAquilina/zsh-you-should-use - antigen bundle unixorn/autoupdate-antigen.zshplugin - antigen bundle Sparragus/zsh-auto-nvm-use - antigen bundle autojump - antigen bundle command-not-found - antigen bundle unixorn/rvm-plugin - - hash git 2>/dev/null && antigen bundle git - hash php 2>/dev/null && antigen bundle php - hash python 2>/dev/null && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv - hash jq 2>/dev/null && antigen bundle reegnz/jq-zsh-plugin - hash docker-compose 2>/dev/null && antigen bundle sroze/docker-compose-zsh-plugin + # config/functions + x-default-antigen-bundles antigen theme oskarkrawczyk/honukai-iterm-zsh honukai @@ -56,6 +46,5 @@ alias logrotate='/usr/sbin/logrotate -s $HOME/logs/state' alias nano='nano -wS -$' alias gpg=gpg2 -export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting -[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" ]] # Load RVM into a shell session *as a function* -. "$HOME/.acme.sh/acme.sh.env" +ACME_PATH="$HOME/.acme.sh" +[[ -s "$ACME_PATH/acme.sh.env" ]] && . "$ACME_PATH/acme.sh.env" diff --git a/install.conf.yaml b/install.conf.yaml index 20deb69..fb14a56 100644 --- a/install.conf.yaml +++ b/install.conf.yaml @@ -6,6 +6,8 @@ ~/.local: recursive: true - create: + ~/.cache: + ~/.cache/git: ~/.config: ~/.local: ~/.local/share: diff --git a/local/bin/dfm b/local/bin/dfm index 1ace731..490d1ab 100755 --- a/local/bin/dfm +++ b/local/bin/dfm @@ -32,6 +32,7 @@ function section_install $0 install nvm $0 install npm $0 install ntfy + $0 install z ;; antigen) curl -L git.io/antigen > "$DOTFILES/local/bin/antigen.zsh" \ @@ -51,16 +52,21 @@ function section_install ;; nvm) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash \ + && git checkout "$HOME/.zshrc" \ && nvm install --lts --latest-npm --default \ && msg_done "🎉 nvm installed!" ;; npm) bash "$DOTFILES/scripts/install-npm-packages.sh" \ - && msg_done "NPM Packages have been installed!" + && msg_done "🎉 NPM Packages have been installed!" ;; ntfy) bash "$DOTFILES/scripts/install-ntfy.sh" \ - && msg_done "ntfy installed!" + && msg_done "🎉 ntfy installed!" + ;; + z) + bash "$DOTFILES/scripts/install-z.sh" \ + && msg_done "🎉 Z has been installed!" ;; *) menu_section "$USAGE_PREFIX" "all | antigen | composer | starship | macos | nvm | npm" @@ -72,6 +78,7 @@ function section_install menu_item "nvm" "Install Node Version Manager (nvm)" menu_item "npm" "Install NPM Packages" menu_item "ntfy" "Install ntfy" + menu_item "z" "Install z" ;; esac } diff --git a/scripts/install-ntfy.sh b/scripts/install-ntfy.sh index 5b38e02..6e7d32d 100755 --- a/scripts/install-ntfy.sh +++ b/scripts/install-ntfy.sh @@ -1,13 +1,33 @@ #!/bin/bash -NTFY_VERSION=2.2.0 -NTFY_URL="https://github.com/binwiederhier/ntfy" -NTFY_DEST="ntfy_${NTFY_VERSION}_macOS_all" +set -e -curl -L "$NTFY_URL/releases/download/v${NTFY_VERSION}/${NTFY_DEST}.tar.gz" > "${NTFY_DEST}.tar.gz" -tar zxvf "${NTFY_DEST}.tar.gz" -cp -a "${NTFY_DEST}/ntfy" ~/.local/bin/ntfy -mkdir -p ~/.config/ntfy -cp "${NTFY_DEST}/client/client.yml" ~/.config/ntfy/client.yml -ntfy --help -rm -rf "${NTFY_DEST}" "${NTFY_DEST}.tar.gz" +if ! command -v ntfy &> /dev/null; then + case $(dfm check arch) in + Linux) + NTFY_ARCH="linux_$(arch)" + ;; + Darwin) + NTFY_ARCH="macOS_all" + ;; + esac + + NTFY_VERSION=2.2.0 + NTFY_URL="https://github.com/binwiederhier/ntfy" + NTFY_DEST="ntfy_${NTFY_VERSION}_${NTFY_ARCH}" + + curl -L "$NTFY_URL/releases/download/v${NTFY_VERSION}/${NTFY_DEST}.tar.gz" \ + > "${NTFY_DEST}.tar.gz" + tar zxvf "${NTFY_DEST}.tar.gz" + cp -a "${NTFY_DEST}/ntfy" ~/.local/bin/ntfy + mkdir -p ~/.config/ntfy + + # copy config only if it does not exist + if [ ! -f "$HOME/.config/ntfy/client.yml" ]; then + cp "${NTFY_DEST}/client/client.yml" ~/.config/ntfy/client.yml + fi + + rm -rf "${NTFY_DEST}" "${NTFY_DEST}.tar.gz" +else + echo "ntfy already installed" +fi diff --git a/scripts/install-z.sh b/scripts/install-z.sh new file mode 100755 index 0000000..8689511 --- /dev/null +++ b/scripts/install-z.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +Z_GIT_PATH="https://github.com/rupa/z.git" +Z_BIN_PATH="$XDG_BIN_HOME/z" + +if [ ! -d "$Z_BIN_PATH" ]; then + git clone "$Z_GIT_PATH" "$Z_BIN_PATH" +else + echo "z ($Z_BIN_PATH/) already installed" +fi