From 4d813084363593037f3d0aaa93916730901dc529 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Fri, 12 Aug 2022 19:09:52 -0300 Subject: etc/{bash => sh}/rc: Separate Bash-specific code, remove unused code --- etc/bash/rc | 341 ------------------------------------------------------------ etc/sh/rc | 295 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 295 insertions(+), 341 deletions(-) delete mode 100644 etc/bash/rc create mode 100644 etc/sh/rc (limited to 'etc') diff --git a/etc/bash/rc b/etc/bash/rc deleted file mode 100644 index 1cfd404..0000000 --- a/etc/bash/rc +++ /dev/null @@ -1,341 +0,0 @@ -#!/bin/sh - -ln -fs .profile ~/.bashrc -export ENV=~/.profile - -XDG_PREFIX=~/.usr -export XDG_CACHE_HOME="$XDG_PREFIX/var/cache" -export XDG_CONFIG_HOME="$XDG_PREFIX/etc" -export XDG_DATA_HOME="$XDG_PREFIX/share" -export XDG_STATE_HOME="$XDG_PREFIX/state" -export XDG_LOG_HOME="$XDG_PREFIX/var/log" -export XDG_DATA_DIRS="$XDG_DATA_HOME/flatpak/exports/share:/var/lib/flatpak/exports/share${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS:-}" - - -mkdir -p \ - "$XDG_CONFIG_HOME" \ - "$XDG_CACHE_HOME" \ - "$XDG_DATA_HOME" \ - "$XDG_STATE_HOME" \ - "$XDG_LOG_HOME" - -GUIX_PROFILE="$XDG_CONFIG_HOME"/guix/current -if [ -e "$GUIX_PROFILE"/etc/profile ]; then - . "$GUIX_PROFILE"/etc/profile -fi - -HISTSIZE=-1 -HISTFILE="$XDG_STATE_HOME/bash-history" -HISTCONTROL=ignorespace:ignoredups - -export SRC=~/dev -export EDITOR='vi' -export VISUAL="$EDITOR" -export PAGER='less -R' -export BROWSER='firefox' -export MAILDIR=~/Maildir -export BACKLIGHT_DEVICE='acpi_video0' - -export GUILE_HISTORY="$XDG_STATE_HOME/guile-history" -export GNUPGHOME="$XDG_CONFIG_HOME/gnupg" -export INPUTRC="$XDG_CONFIG_HOME/bash/inputrc" -export RLWRAP_HOME="$XDG_CACHE_HOME/rlwrap" -export LESSHISTFILE="$XDG_STATE_HOME/lesshst" -export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch/default/config" -export PASSWORD_STORE_DIR="$SRC/others/password-store" -export MAILCAPS="$XDG_CONFIG_HOME/mailcaps/config" -export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc.py" -export EXINIT=' - " set number - set autoindent - set ruler - set showmode - set showmatch -' - -HOSTNAME="$(hostname)" -export BORG_PASSCOMMAND="pass show $HOSTNAME/borg/passphrase" -export BORG_REPO="suyin:borg/$HOSTNAME" -export BORG_REMOTE_PATH='borg1' - -N_PROCS=$(($(nproc) * 2 + 1)) -export MAKEFLAGS="-j $N_PROCS" -export GOPATH="$SRC/go" -export CFLAGS='-std=c99 -Wall -Wextra -Wpedantic -g -flto -Werror' -export CC=tcc -export AR=gcc-ar -export LEX=flex -export LDFLAGS='-flto' -export LISP='sbcl --eval' - -add_prefix() { - export C_INCLUDE_PATH="$1/include${C_INCLUDE_PATH:+:}${C_INCLUDE_PATH:-}" - export LIBRARY_PATH="$1/lib${LIBRARY_PATH:+:}${LIBRARY_PATH:-}" - export INFOPATH="$1/share/info${INFOPATH:+:}${INFOPATH:-}" - export MANPATH="$1/share/man${MANPATH:+:}${MANPATH:-}" - export PATH="$1/bin${PATH:+:}${PATH:-}" -} -export PREFIX="$XDG_PREFIX/var/mkg" -add_prefix "$PREFIX" - -export PATH="$XDG_PREFIX/bin:$PREFIX/bin:$HOME/dev/libre/website/bin:$PATH" - -# FIXME -export GUILE_LOAD_PATH="$HOME/dev/libre/servers/src/infrastructure/lib:$GUILE_LOAD_PATH" - - -# -# Aliases -# - -unalias -a - -alias r='reload' -alias rr='rreload' - -alias p='ping euandre.org -c 3' -alias c='tmux send-keys -R \; clear-history' -alias o='open' -alias mm='msmtp-queue -r' -alias s='vcs_status' -alias d='vcs_diff' -alias ds='vcs_diff_staged' - -alias mk='make clean && make dev-check' -alias wmk='aux/with-container "make clean && make dev-check"' -alias tt='mk && wmk' -alias todos='make public && open public/TODOs.html' -alias valgrind='valgrind --show-error-list=yes --show-leak-kinds=all --leak-check=full --track-origins=yes --error-exitcode=1' -alias check='sh "$XDG_CONFIG_HOME"/bash/check.sh' - -alias l='ls -lahF --color' -alias grep='grep --color=auto' -alias diff='diff --color=auto' -alias watch='watch --color ' -alias man='MANWIDTH=$((COLUMNS > 80 ? 80 : COLUMNS)) man' -alias less='less -R' -alias tree='tree -C' -alias make='make -e' -alias mv='mv -i' -alias rm='rm -i' - -alias sqlite='rlwrap sqlite3' -alias sbcl='rlwrap sbcl' -alias perl='rlwrap perl' -alias guile='guile -l "$XDG_CONFIG_HOME"/guile/init.scm' - -alias flush='sync && echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null' - - - -# -# PS1 -# - -. "$XDG_CONFIG_HOME"/bash/vcs-ps1.sh - - - -# FIXME: fix "history" commands -# g '^\w.*json_destroy(' -g() { - # shellcheck disable=2086 - fn=$(git grep -n -- "$1" ${2:-} | \ - cut -d: -f -2 | \ - fzf --select-1 \ - --exit-0 \ - --preview "echo {} | \ - cut -d: -f1 | \ - xargs -I% awk -v bounds=25 -v pat=\"$1\" -v n=\$(echo {} | cut -d: -f2) ' - (n - bounds < NR) && (NR < n + bounds) && (NR != n) { print } - NR==n { gsub(pat, \"\033[1;33m&\033[1;000m\"); print } - ' %") - if [ -n "$fn" ]; then - f="$(echo "$fn" | cut -d: -f1)" - n="$(echo "$fn" | cut -d: -f2)" - # shellcheck disable=2068 - history -s g "$@" - history -s vi "+$n" "$f" - vi "+$n" "$f" - fi -} - -f() { - # FIXME: speed - # profile="f-shell-function$(pwd | sed -e 's_/_-_g')" - # file="$(git ls-files | grep ${2:-.} | remembering -p "$profile" -c "fzf --select-1 --exit-0 --preview 'cat {}'")" - # shellcheck disable=2086 - file="$(git ls-files | grep ${2:-.} | fzf --select-1 --exit-0 --preview 'cat {}')" - if [ -n "$file" ]; then - # shellcheck disable=2068 - history -s f "$@" - history -s "$1" "$file" - "$1" "$file" - fi -} - -v() { - V_FILES="$( - cat <<-EOF | sed "s|$HOME|~|" - ~/Documents/txt/TODOs.md - ~/Documents/txt/scratch.txt - $XDG_CONFIG_HOME/bash/rc - $XDG_CONFIG_HOME/guix/home.scm - $XDG_CONFIG_HOME/guix/system.scm - $(find ~/Documents/txt/*.md -not -name TODOs.md | - sed "s|^$HOME|~|" | - LANG=POSIX.UTF-8 sort) - ~/dev/libre/package-repository/dependencies.dot - ~/dev/others/dinheiros/dinheiros.ledger - ~/dev/libre/dotfiles/sh/fake-symlinks.sh - $XDG_CONFIG_HOME/guix/channels.scm - EOF - )" - f="$(echo "$V_FILES" | fzf --select-1 --exit-0 --query "$1")" - if [ -n "$f" ]; then - history -s v "$@" - history -s vi "$f" - sh -c "vi $f" - fi -} - -cn() { - CHOICE="$(git log --oneline | fzf)" - git log --oneline | grep -nF "$CHOICE" | cut -d: -f1 -} - -cm() { - n="$(cn)" - git rev-parse "HEAD~$((n - 1))" -} - - - -deps() { - cd ~/dev/libre/package-repository/ || return 1 - rm -f public/dependencies.svg - make public/dependencies.svg > /dev/null - if [ "${1:-}" != '-q' ]; then - open public/dependencies.svg - fi - cd - > /dev/null || return 1 -} -(deps -q &) 2>/dev/null - -rdeps() { - echo ~/dev/libre/package-repository/dependencies.dot | - entr -cs '. ~/.profile' -} - -re() { - if [ "$1" = -h ]; then - echo "Usage: re 's/foo/bar/g' [FILES]" - return - fi - SEPARATOR="$(echo "$1" | cut -c2)" - REGEX="$(echo "$1" | cut -d"$SEPARATOR" -f2)" - if [ -n "${2:-}" ]; then - git grep -l "$REGEX" | xargs -I% sh -c "sed '$1' % | sponge %" - else - sed "$1" "$2" | sponge "$2" - fi -} - -container_dump() { - TARGET_NAME="$(basename "$PWD")" - OUT="$(mktemp -d)" - cp "$(./aux/guix/with-container.sh -C)" "$OUT/docker.tar.gz" - cd "$OUT" || exit 1 - tar xvf docker.tar.gz - # FIXME: Remove doas - doas docker tag \ - "$(doas docker load < docker.tar.gz | grep latest | cut -d: -f2)" \ - "$TARGET_NAME" -} - -svg() { - guix graph "$1" | dot -Tsvg > "$1".svg - open "$1".svg -} - -serve() { - open http://localhost:8000 - if [ -d public ]; then - python3 -m http.server -d public - else - python3 -m http.server - fi -} - -reload() { - . ~/.profile -} - -rreload() { - reload - xset r rate 225 100 # FIXME: move xorg conf - scp \ - ~/dev/libre/package-repository/public/dependencies.svg \ - kuvira:/opt/www/euandreh.xyz/static/package-repository/ -} - -tpd() { - D="$(mkdtemp)" - cd "$D" || return 1 -} - -m() { - notmuch new - mbsync EuAndreh & - mbsync EuAndrehXYZ & - mbsync Nubank & - wait - notmuch new -} - -_edit_without_executing() { - F="$(mkstemp)" - printf '%s\n' "$READLINE_LINE" > "$F" - "${VISUAL:-${EDITOR:-vi}}" "$F" - READLINE_LINE="$(cat "$F")" - READLINE_POINT="${#READLINE_LINE}" - rm -f "$F" -} - -if set -o | grep 'on' | grep -Eq '^(vi|emacs)'; then - bind -x '"\C-x\C-e":_edit_without_executing' -fi - -eval "$(direnv hook bash)" - - - -# -# GPG and SSH agents configuration -# - -SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) -GPG_TTY=$(tty) -export GPG_TTY SSH_AUTH_SOCK -gpgconf --launch gpg-agent -gpg --export-ssh-key eu@euandre.org > "$XDG_CONFIG_HOME"/ssh/id_rsa.pub -chmod 600 "$XDG_CONFIG_HOME"/ssh/id_rsa.pub - - -stty -ixon # Disable C-s/C-q mode - - -if [ -e "$XDG_CONFIG_HOME"/bash/privrc.sh ]; then - # Extra rc code to be loaded, stored in private repository - . "$XDG_CONFIG_HOME"/bash/privrc.sh -fi - -case $- in - *i*) - for f in "$HOME_ENVIRONMENT"/profile/etc/bash_completion.d/*; do - . "$f" - done - ;; - *) - ;; -esac diff --git a/etc/sh/rc b/etc/sh/rc new file mode 100644 index 0000000..1838961 --- /dev/null +++ b/etc/sh/rc @@ -0,0 +1,295 @@ +#!/bin/sh + +export ENV=~/.profile + +export XDG_PREFIX=~/.usr +export XDG_CACHE_HOME="$XDG_PREFIX/var/cache" +export XDG_CONFIG_HOME="$XDG_PREFIX/etc" +export XDG_DATA_HOME="$XDG_PREFIX/share" +export XDG_STATE_HOME="$XDG_PREFIX/state" +export XDG_LOG_HOME="$XDG_PREFIX/var/log" +export XDG_DATA_DIRS="$XDG_DATA_HOME/flatpak/exports/share:/var/lib/flatpak/exports/share${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS:-}" + + +mkdir -p \ + "$XDG_CONFIG_HOME" \ + "$XDG_CACHE_HOME" \ + "$XDG_DATA_HOME" \ + "$XDG_STATE_HOME" \ + "$XDG_LOG_HOME" \ + "$XDG_CACHE_HOME/euandreh" \ + "$XDG_DATA_HOME/euandreh" \ + "$XDG_STATE_HOME/euandreh" \ + "$XDG_LOG_HOME/euandreh" + +GUIX_PROFILE="$XDG_CONFIG_HOME"/guix/current +if [ -e "$GUIX_PROFILE"/etc/profile ]; then + . "$GUIX_PROFILE"/etc/profile +fi + +# FIXME +idempotent_path_add() { + case "$(eval "echo \$$1")" in + *"$2"*) + ;; + *) + eval "export $1=$2\${$1:+:}\${$1:-}" + ;; + esac +} +export A="$HOME${A:+:}${A:-}" +idempotent_path_add B "$HOME" +export XDG_DATA_DIRS="$XDG_DATA_HOME/flatpak/exports/share:/var/lib/flatpak/exports/share${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS:-}" +# idempotent_path_add XDG_DATA_DIRS "$XDG_DATA_HOME/flatpak/exports/share" + + + +# +# +# + +export HISTSIZE=-1 +export HISTFILE="$XDG_STATE_HOME/sh-history" +export SRC=~/dev +export EDITOR='e' +export VISUAL="$EDITOR" +export PAGER='less -R' +export BROWSER='firefox' +export MAILDIR=~/Maildir +export BACKLIGHT_DEVICE='acpi_video0' + +export GUILE_HISTORY="$XDG_STATE_HOME/guile-history" +export GNUPGHOME="$XDG_CONFIG_HOME/gnupg" +export RLWRAP_HOME="$XDG_CACHE_HOME/rlwrap" +export LESSHISTFILE="$XDG_STATE_HOME/lesshst" +export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch/default/config" +export PASSWORD_STORE_DIR="$SRC/private/password-store" +export MAILCAPS="$XDG_CONFIG_HOME/mailcaps/config" +export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc.py" +export EXINIT=' + " set number + " set autoindent + set ruler + set showmode + set showmatch +' + +HOSTNAME="$(hostname)" +export BORG_PASSCOMMAND="pass show $HOSTNAME/borg/passphrase" +export BORG_REPO="suyin:borg/$HOSTNAME" +export BORG_REMOTE_PATH='borg1' + +N_PROCS=$(($(nproc) * 2 + 1)) +GUILE_EFFECTIVE_VERSION="$(guile -c '(display (effective-version))')" +export MAKEFLAGS="-j $N_PROCS" +export GOPATH="$SRC/go" +export CFLAGS='-std=c99 -Wall -Wextra -Wpedantic -g -flto -Werror' +export CC=gcc +export AR=gcc-ar +export LEX=flex +export LDFLAGS='-flto' +export LISP='sbcl --eval' +export N_PROCS GUILE_EFFECTIVE_VERSION + +add_prefix() { + export GUILE_LOAD_PATH="$1/share/guile/site/$GUILE_EFFECTIVE_VERSION${GUILE_LOAD_PATH:+:}${GUILE_LOAD_PATH:-:}" + export GUILE_LOAD_COMPILED_PATH="$1/lib/guile/$GUILE_EFFECTIVE_VERSION/site-ccache${GUILE_LOAD_COMPILED_PATH:+:}${GUILE_LOAD_COMPILED_PATH:-}" + export C_INCLUDE_PATH="$1/include${C_INCLUDE_PATH:+:}${C_INCLUDE_PATH:-}" + export LIBRARY_PATH="$1/lib${LIBRARY_PATH:+:}${LIBRARY_PATH:-}" + export INFOPATH="$1/share/info${INFOPATH:+:}${INFOPATH:-}" + export MANPATH="$1/share/man${MANPATH:+:}${MANPATH:-}" + export PATH="$1/bin${PATH:+:}${PATH:-}" +} +export PREFIX="$XDG_PREFIX/var/mkg" +add_prefix "$PREFIX" +add_prefix "$XDG_PREFIX" + + + +# +# Aliases +# + +unalias -a + +alias r='reload' +alias rr='rreload' + +alias p='ping euandre.org -c 3' +alias c='tmux send-keys -R \; clear-history' +alias o='open' +alias mm='msmtp-queue -r' +alias s='vcs_status' +alias d='vcs_diff' +alias ds='vcs_diff_staged' +alias check='sh "$XDG_CONFIG_HOME"/sh/check.sh' +alias tpd='cd "$(mkdtemp)"' + +alias l='ls -lahF --color' +alias grep='grep --color=auto' +alias diff='diff --color=auto' +alias watch='watch --color ' +alias man='MANWIDTH=$((COLUMNS > 80 ? 80 : COLUMNS)) man' +alias less='less -R' +alias tree='tree -aC' +alias make='make -e' +alias mv='mv -i' +alias rm='rm -i' +alias vi='echo "Use \"e\" instead."; false' + +alias sqlite='rlwrap sqlite3' +alias sbcl='rlwrap sbcl' +alias perl='rlwrap perl' +alias guile='guile -l "$XDG_CONFIG_HOME"/guile/init.scm' + +alias flush='sync && echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null' + + + +# +# PS1 +# + +. "$XDG_CONFIG_HOME"/sh/vcs-ps1.sh + + + +# FIXME: fix "history" commands +# g '^\w.*json_destroy(' +g() { + # shellcheck disable=2086 + fn=$(git grep -n -- "$1" ${2:-} | \ + cut -d: -f -2 | \ + fzf --select-1 \ + --exit-0 \ + --preview "echo {} | \ + cut -d: -f1 | \ + xargs -I% awk -v bounds=25 -v pat=\"$1\" -v n=\$(echo {} | cut -d: -f2) ' + (n - bounds < NR) && (NR < n + bounds) && (NR != n) { print } + NR==n { gsub(pat, \"\033[1;33m&\033[1;000m\"); print } + ' %") + if [ -n "$fn" ]; then + f="$(echo "$fn" | cut -d: -f1)" + n="$(echo "$fn" | cut -d: -f2)" + # shellcheck disable=2068 + # history -s g "$@" + # history -s vi "+$n" "$f" + # vi "+$n" "$f" + history -s g "$@" + history -s e "+$n" "$f" + e "+$n" "$f" + fi +} + +f() { + # FIXME: speed + # profile="f-shell-function$(pwd | sed -e 's_/_-_g')" + # file="$(git ls-files | grep ${2:-.} | remembering -p "$profile" -c "fzf --select-1 --exit-0 --preview 'cat {}'")" + # shellcheck disable=2086 + file="$(git ls-files | grep ${2:-.} | fzf --select-1 --exit-0 --preview 'cat {}')" + if [ -n "$file" ]; then + # shellcheck disable=2068 + history -s f "$@" + history -s "$1" "$file" + "$1" "$file" + fi +} + +cat <<-EOF | sed "s|$HOME|~|" > "$XDG_DATA_HOME"/euandreh/e.list.txt + ~/Documents/txt/TODOs.md + ~/Documents/txt/scratch.txt + $XDG_CONFIG_HOME/sh/rc + $XDG_CONFIG_HOME/guix/home.scm + $XDG_CONFIG_HOME/guix/system.scm + $(find ~/Documents/txt/*.md -not -name TODOs.md | + sed "s|^$HOME|~|" | + LANG=POSIX.UTF-8 sort) + ~/dev/libre/package-repository/dependencies.dot + ~/dev/others/dinheiros/dinheiros.ledger + ~/dev/libre/dotfiles/sh/fake-symlinks.sh + $XDG_CONFIG_HOME/guix/channels.scm +EOF + + + +reload() { + . ~/.profile +} + +rreload() { + reload + echo 'pactl load-module module-echo-cancel' + xset r rate 225 100 # FIXME: move xorg conf +} + +_edit_without_executing() { + F="$(mkstemp)" + printf '%s\n' "$READLINE_LINE" > "$F" + e "$F" + READLINE_LINE="$(cat "$F")" + READLINE_POINT="${#READLINE_LINE}" + rm -f "$F" +} +if set -o | grep 'on' | grep -Eq '^(vi|emacs)'; then + bind -x '"\C-x\C-e":_edit_without_executing' +fi + + + + +# +# GPG and SSH agents configuration +# + +SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) +GPG_TTY=$(tty) +export GPG_TTY SSH_AUTH_SOCK +gpgconf --launch gpg-agent +gpg --export-ssh-key eu@euandre.org > "$XDG_CONFIG_HOME"/ssh/id_rsa.pub +chmod 600 "$XDG_CONFIG_HOME"/ssh/id_rsa.pub + + +PUB_GPG_FILES=" +$HOME/dev/libre/package-repository/EuAndreh.key +$HOME/dev/published/euandre.org/public.asc +" +for f in $PUB_GPG_FILES; do + gpg --armour --export eu@euandre.org > $f +done + + +stty -ixon # Disable C-s/C-q mode + +F="$XDG_CONFIG_HOME"/sh/privrc.sh +if [ -e "$F" ]; then + # Extra rc code to be loaded, stored in private repository + . "$F" +fi + + + + +# +# From here on, bash-specific things. +# + +if [ -z "$BASH_VERSION" ]; then + return +fi + +ln -fs .profile ~/.bashrc + +export INPUTRC="$XDG_CONFIG_HOME/bash/inputrc" +export HISTCONTROL=ignorespace:ignoredups + +eval "$(direnv hook bash)" + +case $- in + *i*) + for f in "$HOME_ENVIRONMENT"/profile/etc/bash_completion.d/*; do + . "$f" + done + ;; + *) + ;; +esac -- cgit v1.2.3