diff --git a/config/alias b/config/alias index 452ca1f..168ecb1 100755 --- a/config/alias +++ b/config/alias @@ -15,9 +15,6 @@ function x-set-php-aliases # replace "php@" with "p" so "php@80" becomes "p80" local php_alias="${php_abbr//php@/p}" - # Skip php = php aliasing - # if [[ "$php_abbr" == "$php_alias" ]]; then continue; fi; - # Fetch the exec path once php_exec="$(brew --prefix "$version")/bin/php" @@ -69,6 +66,11 @@ alias code_scanner='docker run alias zedit='$EDITOR ~/.dotfiles' +if hash irssi 2> /dev/null; then + # shellcheck disable=2139 + alias irssi="irssi --config='$IRSSI_CONFIG_FILE' --home='$IRSSI_CONFIG_HOME'" +fi + if [[ -f "$HOME/.aliases.local" ]]; then # shellcheck disable=SC1091 source "$HOME/.aliases.local" diff --git a/config/dircolors b/config/dircolors new file mode 100644 index 0000000..a0d6184 --- /dev/null +++ b/config/dircolors @@ -0,0 +1,233 @@ +# Configuration file for dircolors, a utility to help you set the +# LS_COLORS environment variable used by GNU ls with the --color option. +# Copyright (C) 1996-2023 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted provided the copyright notice and this notice are preserved. +# +# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the +# slackware version of dircolors) are recognized but ignored. +# Global config options can be specified before TERM or COLORTERM entries +# =================================================================== +# Terminal filters +# =================================================================== +# Below are TERM or COLORTERM entries, which can be glob patterns, which +# restrict following config to systems with matching environment variables. +COLORTERM ?* +TERM Eterm +TERM ansi +TERM *color* +TERM con[0-9]*x[0-9]* +TERM cons25 +TERM console +TERM cygwin +TERM *direct* +TERM dtterm +TERM gnome +TERM hurd +TERM jfbterm +TERM konsole +TERM kterm +TERM linux +TERM linux-c +TERM mlterm +TERM putty +TERM rxvt* +TERM screen* +TERM st +TERM terminator +TERM tmux* +TERM vt100 +TERM xterm* +# =================================================================== +# Basic file attributes +# =================================================================== +# Below are the color init strings for the basic file types. +# One can use codes for 256 or more colors supported by modern terminals. +# The default color codes use the capabilities of an 8 color terminal +# with some additional attributes as per the following codes: +# Attribute codes: +# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed +# Text color codes: +# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white +# Background color codes: +# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white +#NORMAL 00 # no color code at all +#FILE 00 # regular file: use no color at all +RESET 0 # reset to "normal" color +DIR 01;34 # directory +LINK 01;36 # symbolic link. (If you set this to 'target' instead of a + # numerical value, the color is as for the file pointed to.) +MULTIHARDLINK 00 # regular file with more than one link +FIFO 40;33 # pipe +SOCK 01;35 # socket +DOOR 01;35 # door +BLK 40;33;01 # block device driver +CHR 40;33;01 # character device driver +ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ... +MISSING 00 # ... and the files they point to +SETUID 37;41 # file that is setuid (u+s) +SETGID 30;43 # file that is setgid (g+s) +CAPABILITY 00 # file with capability (very expensive to lookup) +STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w) +OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky +STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable +# This is for files with execute permission: +EXEC 01;32 +# =================================================================== +# File extension attributes +# =================================================================== +# List any file extensions like '.gz' or '.tar' that you would like ls +# to color below. Put the suffix, a space, and the color init string. +# (and any comments you want to add after a '#'). +# Suffixes are matched case insensitively, but if you define different +# init strings for separate cases, those will be honored. +# +# If you use DOS-style suffixes, you may want to uncomment the following: +#.cmd 01;32 # executables (bright green) +#.exe 01;32 +#.com 01;32 +#.btm 01;32 +#.bat 01;32 +# Or if you want to color scripts even if they do not have the +# executable bit actually set. +#.sh 01;32 +#.csh 01;32 +# archives or compressed (bright red) +.tar 01;31 +.tgz 01;31 +.arc 01;31 +.arj 01;31 +.taz 01;31 +.lha 01;31 +.lz4 01;31 +.lzh 01;31 +.lzma 01;31 +.tlz 01;31 +.txz 01;31 +.tzo 01;31 +.t7z 01;31 +.zip 01;31 +.z 01;31 +.dz 01;31 +.gz 01;31 +.lrz 01;31 +.lz 01;31 +.lzo 01;31 +.xz 01;31 +.zst 01;31 +.tzst 01;31 +.bz2 01;31 +.bz 01;31 +.tbz 01;31 +.tbz2 01;31 +.tz 01;31 +.deb 01;31 +.rpm 01;31 +.jar 01;31 +.war 01;31 +.ear 01;31 +.sar 01;31 +.rar 01;31 +.alz 01;31 +.ace 01;31 +.zoo 01;31 +.cpio 01;31 +.7z 01;31 +.rz 01;31 +.cab 01;31 +.wim 01;31 +.swm 01;31 +.dwm 01;31 +.esd 01;31 +# image formats +.avif 01;35 +.jpg 01;35 +.jpeg 01;35 +.mjpg 01;35 +.mjpeg 01;35 +.gif 01;35 +.bmp 01;35 +.pbm 01;35 +.pgm 01;35 +.ppm 01;35 +.tga 01;35 +.xbm 01;35 +.xpm 01;35 +.tif 01;35 +.tiff 01;35 +.png 01;35 +.svg 01;35 +.svgz 01;35 +.mng 01;35 +.pcx 01;35 +.mov 01;35 +.mpg 01;35 +.mpeg 01;35 +.m2v 01;35 +.mkv 01;35 +.webm 01;35 +.webp 01;35 +.ogm 01;35 +.mp4 01;35 +.m4v 01;35 +.mp4v 01;35 +.vob 01;35 +.qt 01;35 +.nuv 01;35 +.wmv 01;35 +.asf 01;35 +.rm 01;35 +.rmvb 01;35 +.flc 01;35 +.avi 01;35 +.fli 01;35 +.flv 01;35 +.gl 01;35 +.dl 01;35 +.xcf 01;35 +.xwd 01;35 +.yuv 01;35 +.cgm 01;35 +.emf 01;35 +# https://wiki.xiph.org/MIME_Types_and_File_Extensions +.ogv 01;35 +.ogx 01;35 +# audio formats +.aac 00;36 +.au 00;36 +.flac 00;36 +.m4a 00;36 +.mid 00;36 +.midi 00;36 +.mka 00;36 +.mp3 00;36 +.mpc 00;36 +.ogg 00;36 +.ra 00;36 +.wav 00;36 +# https://wiki.xiph.org/MIME_Types_and_File_Extensions +.oga 00;36 +.opus 00;36 +.spx 00;36 +.xspf 00;36 +# backup files +*~ 00;90 +*# 00;90 +.bak 00;90 +.old 00;90 +.orig 00;90 +.part 00;90 +.rej 00;90 +.swp 00;90 +.tmp 00;90 +.dpkg-dist 00;90 +.dpkg-old 00;90 +.ucf-dist 00;90 +.ucf-new 00;90 +.ucf-old 00;90 +.rpmnew 00;90 +.rpmorig 00;90 +.rpmsave 00;90 +# +# Subsequent TERM or COLORTERM entries, can be used to add / override +# config specific to those matching environment variables. diff --git a/config/exports b/config/exports index 7ee799e..a08b270 100755 --- a/config/exports +++ b/config/exports @@ -1,53 +1,19 @@ #!/usr/bin/env bash -# shellcheck shell=bash +# shellcheck shell=zsh +# vim: filetype=zsh + +export DOTFILES="$HOME/.dotfiles" # 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_DATA_HOME="$HOME/.local/share" 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)" - -# Highlight section titles in manual pages -export LESS_TERMCAP_md="$ORANGE" - -# Don’t clear the screen after quitting a manual page -export MANPAGER="less -X" - -# Always enable colored `grep` output -export GREP_OPTIONS="--color=auto" - -# check the window size after each command and, if necessary, -# update the values of LINES and COLUMNS. -hash shopt 2> /dev/null && shopt -s checkwinsize - -export LC_ALL=fi_FI.utf8 - -# If we are using zsh, color our dir lists and such -if [ $SHELL = $(which zsh) ]; then - LS_COLORS='no=00;37:fi=00:di=00;33:ln=04;36:pi=40;33:so=01;35:bd=40;33;01:' - export LS_COLORS - zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} -fi - -# Antigen configuration -# https://github.com/zsh-users/antigen/wiki/Configuration -export ADOTDIR="$XDG_DATA_HOME/antigen" -export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate" -export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate" +# custom variables +export XDG_BIN_HOME="$HOME/.local/bin" +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_RUNTIME_DIR="$HOME/.local/run" # Homebrew configuration export HOMEBREW="/opt/homebrew" @@ -68,85 +34,9 @@ if command -v brew &> /dev/null; then export PATH="$BREW_PYTHON:$GNUBIN_DIR:$BREW_GEMS:$BREW_RUBY:$PATH" fi -# 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 - -# If we have go packages, include them to the PATH -if command -v go &> /dev/null; then - export GOPATH="$XDG_DATA_HOME/go" - export GOBIN="$XDG_BIN_HOME" - mkdir -p "$GOPATH" -fi +source "$DOTFILES/config/exports-shell" +source "$DOTFILES/config/exports-apps" if command -v nvim &> /dev/null; then export EDITOR="nvim" fi - -# docker, https://docs.docker.com/engine/reference/commandline/cli/ -if command -v docker &> /dev/null; then - export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker" - mkdir -p "$DOCKER_CONFIG" -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 - export COMPOSER_HOME="$XDG_STATE_HOME/composer" - export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin" - export PATH="$COMPOSER_BIN:$PATH" -fi - -# gem, rubygems -if command -v gem &> /dev/null; then - export GEM_HOME="$XDG_STATE_HOME/gem" - export GEM_PATH="$XDG_STATE_HOME/gem" - export PATH="$GEM_HOME/bin:$PATH" -fi - -# pyenv, python environments -export PYENV_ROOT="$XDG_STATE_HOME/pyenv" -mkdir -p "$PYENV_ROOT" -export PATH="$PYENV_ROOT/bin:$PATH" - -if command -v pyenv &> /dev/null; then - eval "$(pyenv init -)" -fi - -# wakatime, https://github.com/wakatime/wakatime-cli -export WAKATIME_HOME="$XDG_STATE_HOME/wakatime" - -# op (1Password cli) is present -if hash op 2> /dev/null; then - export OP_CACHE="$XDG_STATE_HOME/1password" - mkdir -p "$OP_CACHE" - eval "$(op completion zsh)" - compdef _op op -fi - -# Ansible configuration -# https://docs.ansible.com/ansible/latest/reference_appendices/config.html -if hash ansible 2> /dev/null; then - export ANSIBLE_HOME="$XDG_STATE_HOME/ansible" - mkdir -p "$ANSIBLE_HOME" -fi - -# gcloud is present -if hash gcloud 2>/dev/null; then - 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" -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" - diff --git a/config/exports-apps b/config/exports-apps new file mode 100755 index 0000000..ae7346f --- /dev/null +++ b/config/exports-apps @@ -0,0 +1,104 @@ +#!/usr/bin/env bash +# shellcheck shell=zsh +# vim: filetype=zsh + +# Antigen configuration +# https://github.com/zsh-users/antigen/wiki/Configuration +export ADOTDIR="$XDG_DATA_HOME/antigen" +export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate" +export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate" + +# Ansible configuration +# https://docs.ansible.com/ansible/latest/reference_appendices/config.html +if hash ansible 2> /dev/null; then + 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" + x-dc "$ANSIBLE_HOME" + x-dc "$ANSIBLE_GALAXY_CACHE_DIR" +fi + +# composer, https://getcomposer.org/ +if command -v composer &> /dev/null; then + export COMPOSER_HOME="$XDG_STATE_HOME/composer" + export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin" + export PATH="$COMPOSER_BIN:$PATH" +fi + +# docker, https://docs.docker.com/engine/reference/commandline/cli/ +if command -v docker &> /dev/null; then + export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker" + x-dc "$DOCKER_CONFIG" +fi + +# ffmpeg +if hash ffmpeg 2> /dev/null; then + export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg" + x-dc "$FFMPEG_DATADIR" +fi + +# gcloud +if hash gcloud 2>/dev/null; then + 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" +fi + +# gem, rubygems +if command -v gem &> /dev/null; then + export GEM_HOME="$XDG_STATE_HOME/gem" + export GEM_PATH="$XDG_STATE_HOME/gem" + export PATH="$GEM_HOME/bin:$PATH" +fi + +# If we have go packages, include them to the PATH +if command -v go &> /dev/null; then + export GOPATH="$XDG_DATA_HOME/go" + export GOBIN="$XDG_BIN_HOME" + x-dc "$GOPATH" +fi + +# irssi +if hash irssi 2> /dev/null; then + # These variables are used in ./alias with --config and --home + export IRSSI_CONFIG_HOME="$XDG_CONFIG_HOME/irssi" + export IRSSI_CONFIG_FILE="$IRSSI_CONFIG_HOME/config" + x-dc "$IRSSI_CONFIG_HOME" +fi + +# 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 + +# op (1Password cli) is present +if hash op 2> /dev/null; then + export OP_CACHE="$XDG_STATE_HOME/1password" + x-dc "$OP_CACHE" + eval "$(op completion zsh)" + compdef _op op +fi + +# pyenv, python environments +if command -v pyenv &> /dev/null; then + export PYENV_ROOT="$XDG_STATE_HOME/pyenv" + x-dc "$PYENV_ROOT" + export PATH="$PYENV_ROOT/bin:$PATH" + + eval "$(pyenv init -)" +fi + +# wakatime, https://github.com/wakatime/wakatime-cli +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 ANDROID_HOME="$XDG_DATA_HOME/android" +export GNUPGHOME="$XDG_DATA_HOME/gnupg" diff --git a/config/exports-shell b/config/exports-shell new file mode 100755 index 0000000..6ee5e8b --- /dev/null +++ b/config/exports-shell @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +# shellcheck shell=zsh +# vim: filetype=zsh + +export LC_ALL=fi_FI.utf8 + +# Bash completion file location +export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion" + +# 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)" + +# Highlight section titles in manual pages +export LESS_TERMCAP_md="$ORANGE" + +# Don’t clear the screen after quitting a manual page +export MANPAGER="less -X" + +# Always enable colored `grep` output +export GREP_OPTIONS="--color=auto" + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +hash shopt 2> /dev/null && shopt -s checkwinsize + +# Load iterm2 shell integration +# https://iterm2.com/documentation-shell-integration.html +[[ -f "$XDG_BIN_HOME/iterm2_shell_integration.zsh" ]] \ + && source "$XDG_BIN_HOME/iterm2_shell_integration.zsh" + +# Set dircolors based on the file, if it exists +if command -v dircolors &> /dev/null; then + eval $(dircolors "$XDG_CONFIG_HOME/dircolors") +fi + +# If we are using zsh, color our dir lists and such +if [ "$SHELL" = "$(which zsh)" ]; then + x-dc "$XDG_CACHE_HOME/zsh" + x-dc "$XDG_STATE_HOME/zsh" + export HISTFILE="$XDG_STATE_HOME/zsh/history" + zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/zcompcache" + zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" +fi diff --git a/install.conf.yaml b/install.conf.yaml index fb14a56..0c7caab 100644 --- a/install.conf.yaml +++ b/install.conf.yaml @@ -10,6 +10,7 @@ ~/.cache/git: ~/.config: ~/.local: + ~/.local/run: ~/.local/share: ~/.local/state: ~/.ssh: diff --git a/local/bin/x-dc b/local/bin/x-dc new file mode 100755 index 0000000..40fc240 --- /dev/null +++ b/local/bin/x-dc @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# Verify folder exists, and if it does not, create it. + +dir="$1" + +[ $# -eq 0 ] && { echo "Usage: $0 full/path/to/dir/to/create"; exit 1; } + +if [ ! -d "$dir" ]; then + mkdir -p "$dir" && exit 0; +fi +