2023-06-11 23:09:59 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
# SPDX-FileCopyrightText: 2022 Richard Brežák <richard@brezak.sk>
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
|
|
|
|
[[ -e /etc/profile.d/nix.sh ]] && . /etc/profile.d/nix.sh
|
|
|
|
|
|
|
|
# If not running interactively, don't do anything
|
|
|
|
[[ $- != *i* ]] && return
|
|
|
|
|
|
|
|
[[ $DISPLAY ]] && shopt -s checkwinsize
|
|
|
|
|
|
|
|
[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
|
|
|
|
|
|
|
|
## Enable color on grep
|
|
|
|
alias grep='grep --color=auto'
|
|
|
|
|
|
|
|
if [ -z "${SHLVL_INIT+x}" ]; then
|
|
|
|
export SHLVL_INIT=1 SHLVL=1
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$SHLVL" = 1 ]; then
|
|
|
|
export PS1="\u@\[\e[37m\]\h\[\e[m\]:\[\e[32m\]\w\[\e[m\]\[\e[31m\]\\$\[\e[m\] "
|
|
|
|
else
|
|
|
|
export PS1="$SHLVL: \u@\[\e[37m\]\h\[\e[m\]:\[\e[32m\]\w\[\e[m\]\[\e[31m\]\\$\[\e[m\] "
|
|
|
|
fi
|
|
|
|
|
|
|
|
emacsclient() {
|
|
|
|
if [[ -e "$HOME/.ssh/emacs-server" ]] && \
|
|
|
|
nc -Uz "$HOME/.ssh/emacs-server" >/dev/null 2>&1 && \
|
|
|
|
[[ ! -z ${INSIDE_EMACS+x} ]] ; then
|
|
|
|
params=()
|
|
|
|
sudo=0
|
|
|
|
nowait=0
|
|
|
|
|
|
|
|
host=$(echo $SSH_CONNECTION | cut -d' ' -f3)
|
|
|
|
port=$(echo $SSH_CONNECTION | cut -d' ' -f4)
|
|
|
|
|
|
|
|
for p in "${@}"; do
|
|
|
|
if [[ "${p}" == "-s" || "${p}" == "--sudo" ]]; then
|
|
|
|
sudo=1
|
|
|
|
elif [[ "${p}" == "-n" || "${p}" == "--no-wait" ]]; then
|
|
|
|
params+=( "-nowait" )
|
|
|
|
else
|
|
|
|
if [[ ${sudo} -eq 1 ]]; then
|
|
|
|
params+=( "-file /ssh:${USER}@${host}#${port}|sudo::"$(realpath -m "${p}") )
|
|
|
|
else
|
|
|
|
params+=( "-file /ssh:${USER}@${host}#${port}:"$(realpath "${p}") )
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
if [[ ${nowait} -eq 0 ]] ; then
|
|
|
|
printf 'Waiting for Emacs...\n'
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "${params[@]}" | nc -U "$HOME/.ssh/emacs-server" >/dev/null 2>&1
|
|
|
|
else
|
|
|
|
sudo=0
|
|
|
|
args=()
|
|
|
|
for p in "${@}"; do
|
|
|
|
if [[ "${p}" == "-s" || "${p}" == "--sudo" ]]; then
|
|
|
|
sudo=1
|
|
|
|
else
|
|
|
|
args+=( "${p}" )
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
if [[ ${sudo} -eq 1 ]]; then
|
|
|
|
echo env emacsclient "/sudo::${args[0]}" "${args[@]:1}"
|
|
|
|
env emacsclient "/sudo::${args[0]}" "${args[@]:1}"
|
|
|
|
else
|
|
|
|
env emacsclient "${@}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
alias e='emacsclient'
|
|
|
|
alias E='emacsclient -s'
|
|
|
|
|
|
|
|
|
|
|
|
## Set prompt
|
|
|
|
|
|
|
|
export EDITOR="emacsclient"
|
|
|
|
export BROWSER="firefox-nightly"
|
|
|
|
|
|
|
|
## Clear scrollback for vterm
|
|
|
|
if [[ "$INSIDE_EMACS" = 'vterm' ]]; then
|
|
|
|
function clear(){
|
|
|
|
vterm_printf "51;Evterm-clear-scrollback";
|
|
|
|
tput clear;
|
|
|
|
}
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ "$INSIDE_EMACS" = 'vterm' ]] \
|
|
|
|
&& [[ -n ${EMACS_VTERM_PATH} ]] \
|
|
|
|
&& [[ -f ${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh ]]; then
|
|
|
|
source ${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh
|
|
|
|
fi
|
|
|
|
|
|
|
|
eval "$(direnv hook bash)"
|
|
|
|
|
|
|
|
alias zlist="zfs list -r -o name,used,avail,refer,compression,compressratio,recordsize,snapdir,sharenfs,mountpoint"
|
|
|
|
|
|
|
|
function loadenv()
|
|
|
|
{
|
|
|
|
function passhead()
|
|
|
|
{
|
|
|
|
pass $1 | tail -n +2
|
|
|
|
}
|
|
|
|
|
|
|
|
export \
|
|
|
|
$(passhead Infrastructure/Nomad) \
|
|
|
|
$(passhead Infrastructure/Vault) \
|
|
|
|
$(passhead Infrastructure/Consul) \
|
2023-06-22 17:20:21 +02:00
|
|
|
$(passhead Infrastructure/Influx) \
|
|
|
|
$(passhead Infrastructure/HCloud)
|
2023-06-11 23:09:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function yaml2nix()
|
|
|
|
{
|
|
|
|
input_file="$1"
|
|
|
|
output_file="$2"
|
|
|
|
|
|
|
|
if [ "${input_file}" = "${output_file}" ] ; then
|
|
|
|
remarshal -if yaml -of json -i "${input_file}" -o /dev/stdout | nix eval --impure --expr 'builtins.fromJSON (builtins.readFile "/dev/stdin")' > "${input_file}.tmp"
|
|
|
|
mv "${input_file}.tmp" "${output_file}"
|
|
|
|
else
|
|
|
|
remarshal -if yaml -of json -i "${input_file}" -o /dev/stdout | nix eval --impure --expr 'builtins.fromJSON (builtins.readFile "/dev/stdin")' > "${output_file}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
nixfmt "${output_file}"
|
|
|
|
}
|
2023-11-24 15:33:24 +01:00
|
|
|
|
|
|
|
function zpool_warning()
|
|
|
|
{
|
|
|
|
if ! ( echo "$@" | grep -v create ) ; then
|
|
|
|
if [[ "$ZFS_I_REMEMBERED_TO_DISABLE_BLOCK_CLONING" == "1" ]] ; then
|
|
|
|
echo "I trust you, carry on! But be careful to disable block cloning..."
|
|
|
|
env zpool "$@"
|
|
|
|
else
|
|
|
|
echo "Disable block cloning or you will have a very bad time!"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
env zpool "$@"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
alias zpool="zpool_warning"
|