diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a012ec2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +archive/ diff --git a/apps/chromium/chromium.func b/apps/chromium/chromium.func index f68a45a..c565f9e 100755 --- a/apps/chromium/chromium.func +++ b/apps/chromium/chromium.func @@ -22,6 +22,7 @@ chromium_() { [[ $1 == -u ]] && exe=/opt/bin/ungoogled-chromium && shift [[ $1 == -v ]] && exe=/opt/vivaldi/vivaldi && shift [[ $1 == -c ]] && exe=/usr/bin/chromium && shift + [[ $1 == -m ]] && exe=/opt/mqttbox/chrome-linux/chrome-wrapper && shift echo execuatble to be used: $exe if [[ ! -f $exe ]]; then echo chromium/chrome not installed at $exe diff --git a/apps/vscode/vscode.func b/apps/vscode/vscode.func index 53597f5..7ca4f65 100755 --- a/apps/vscode/vscode.func +++ b/apps/vscode/vscode.func @@ -1,25 +1,35 @@ #!/bin/bash -VSCODE_BIN=$(command -v code) -VSCODE_BIN=${VSCODE_BIN:-$(command -v codium)} -[[ $VSCODE_BIN ]] || { - echo "no vscode binary on machine" - exit -} -# set default home here -# can pass + vscode() { - #local home=$HOME - local home=/opt/vscode - home=${VSCODE_HOME:-$home} - [[ $1 == "-h" ]] && home=$2 && shift 2 - mkdir -p ${home}/${USER} - [[ $? -ne 0 ]] && echo "unable to set vscode home at $home/$USER, aborting" && return 1 - exts=${home}/${USER}/extensions - user=${home}/${USER}/data - echo $VSCODE_BIN --user-data-dir=$user --extensions-dir=$exts "$@" - $VSCODE_BIN --user-data-dir=$user --extensions-dir=$exts "$@" + + CODE_BIN=/opt/vscode/bin/code + VSCODIUM_BIN=$(command -v code-oss) + local home=/opt/vscode;local code=-codium + local exts; local user; local bin=$VSCODIUM_BIN + [[ $1 == "-c" ]] && code=-code && bin=$CODE_BIN && shift 1 + if [[ $1 == "-h" ]]; then + home=$2 + shift 2 + else + home=${VSCODE_HOME:-$home}/${USER}$code + fi + exts=$home/extensions + user=$home/data + if [[ -x $bin ]]; then + if ! mkdir -p ${home} ; then + echo "unable to set vscode home at $home, aborting" + return 1 + else + echo "saving vscode user data and extentions to $home" + fi + echo $bin --user-data-dir=$user --extensions-dir=$exts "$@" + $bin --user-data-dir=$user --extensions-dir=$exts "$@" + else + echo "can't find binary $bin" + fi } + # # if script was executed then call the function (return 0 2>/dev/null) || vscode $@ diff --git a/archive/bashly b/archive/bashly deleted file mode 100644 index 417c153..0000000 --- a/archive/bashly +++ /dev/null @@ -1,4 +0,0 @@ -command -v docker >/dev/null 2>&1 || return - -alias bashly='docker run --rm -it --volume "$PWD:/app" dannyben/bashly' -alias bashly-update='docker pull dannyben/bashly:latest' diff --git a/archive/chromium.inst b/archive/chromium.inst deleted file mode 100644 index 35e3efe..0000000 --- a/archive/chromium.inst +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -module_load notify -_ch=$(command -v _chromium) -if [[ $_ch ]]; then - ch=$(dirname "$_ch")/chromium - ## if chromium exits probably an update to so move again - msg="new version availabe, run: sudo mv $ch $_ch" - [[ -f $ch ]] && llog $msg && notify-send $msg - export CHROME_CONFIG_HOME="/opt/chromium" - # chmod +x $BASH_SHELL_HOST/all/modules/chromium.sh - ln -sf $BASH_SHELL_HOST/all/modules/chromium.sh /opt/bin/chromium - llog "chromium sucessfully set up on $HOSTNAME" - login_notify "chromium sucessfully set up on $HOSTNAME" - else -# echo no _chromium - ch=$(command -v chromium) - if [[ $ch ]];then - llog "chromium availabe, need to run this command and log in again" - login_notify "chromium availabe but need to run this command and log in again" - llog "sudo mv $ch $(dirname $ch)/_chromium" - login_notify "sudo mv $ch $(dirname $ch)/_chromium" - else - llog "Warning: ungoogled chromimum not installed on $HOSTNAME" - login_notify "Warning: ungoogled chromimum not installed on $HOSTNAME" - fi -fi \ No newline at end of file diff --git a/archive/git b/archive/git deleted file mode 100644 index 77de38c..0000000 --- a/archive/git +++ /dev/null @@ -1,2 +0,0 @@ -alias gspa="git subrepo push --all" -alias gpom="git pull origin master" # update repo from default remove diff --git a/archive/rclone-install.func b/archive/rclone-install.func deleted file mode 100644 index 1ba88d2..0000000 --- a/archive/rclone-install.func +++ /dev/null @@ -1,29 +0,0 @@ -sudo rclone.bin - chmod 775 rclone.bin - touch $INSTALL_DIR/rclone - touch $INSTALL_DIR/rclone.conf - mkdir $INSTALL_DIR/cache 2> /dev/null || true - echo '#!/bin/bash' > $INSTALL_DIR/rclone - CMD=$(echo $INSTALL_DIR/rclone.bin \ - --config=$INSTALL_DIR/rclone.conf \ - --cache-dir=$INSTALL_DIR/cache \ - '$@' \ - ) - echo "$CMD" >> $INSTALL_DIR/rclone - chown :sudo rclone - chmod 775 rclone - rm $BIN_DIR/rclone - ln -s $INSTALL_DIR/rclone $BIN_DIR/rclone - echo -e "rclone customized command can be launched from $(command -v rclone) \n $CMD" - echo -e "uncustomized rclone can be run from $INSTALL_DIR/rclone.bin" - cd .. - - - #update version variable post install - version=`rclone --version 2>>errors | head -n 1` - - printf "\n${last_version} has successfully installed." - printf '\nNow run "rclone config" to set up remotes. Check https://rclone.org/docs/ for more details.\n\n' - return 0 - -} diff --git a/archive/ssh.env b/archive/ssh.env deleted file mode 100644 index 57d7816..0000000 --- a/archive/ssh.env +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# where public keys are stored. default is $HOME/.ssh -# export SSH_PUB_KEYS=/data/secure/pubkeys -# default user for any ssh -export SSH_USER=sysadmin diff --git a/distro/alpine b/distro/alpine deleted file mode 100644 index e69de29..0000000 diff --git a/distro/arch/pacman b/distro/arch/pacman index b168b12..7b64558 100644 --- a/distro/arch/pacman +++ b/distro/arch/pacman @@ -7,6 +7,10 @@ alias pmi="sudo pacman -S --needed" alias pmr="sudo pacman -Rs" alias pmua="sudo pacman -Syu" alias pms="pacman -Ss" +alias pml="pacman -Qe" +alias pmlg="pacman -Qe | grep" +# https://unix.stackexchange.com/a/409903/201387 +alias pmlf="comm -23 <(pacman -Qqett | sort | uniq) <(pacman -Qqg base-devel | sort | uniq)" alias pkgst="pacman -Qi" alias pkgi="pacman -Si" diff --git a/distro/debian/apt b/distro/debian/apt deleted file mode 100644 index 1ff65af..0000000 --- a/distro/debian/apt +++ /dev/null @@ -1,13 +0,0 @@ -# apt package manager -# TODO only add if apt is package manager -alias installa="sudo apt-get install" -alias reinstall="sudo apt install --reinstall" -# change depending on distro - need to have backports loaded in apt sources -# FYI can just load individual binaries from the wiki using deb files say from testing or unstable -alias remove="sudo apt-get remove" -alias aremove="sudo apt-get autoremove" -alias purge="sudo apt-get purge" -alias update="sudo apt-get update" -alias pkgst="apt policy" -alias esources='sudo nano /etc/apt/sources.list.d/' -alias ppa='sh -c '\''sudo add-apt-repository ppa:$1/ppa'\'' _' diff --git a/distro/ubuntu/add-ppa.sh b/distro/ubuntu/add-ppa.sh deleted file mode 100755 index e8140e2..0000000 --- a/distro/ubuntu/add-ppa.sh +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -add_ppa () { - -if [ $EUID != 0 ]; then - echo calling with sudo - sudo bash -c "$(declare -f add_ppa); add_ppa $*" - else - - VERSION=jammy - KEYSDIR=/etc/apt/trusted.gpg.d - KEYSERVER=keyserver.ubuntu.com - - declare OPTION; declare OPTARG; declare OPTIND - while getopts 'v:p:s:k:c:d:oi' OPTION; do - echo processing: option:$OPTION argument:$OPTARG index:$OPTIND remaining:${@:$OPTIND} - case "$OPTION" in - i) - INSTALL=true - ;; - v) - VERSION=$OPTARG - ;; - p) - PACKAGE=$OPTARG - ;; - c) - CMD=$OPTARG - ;; - d) - KEYSDIR=$OPTARG - ;; - s) - KEYSERVER=$OPTARG - ;; - o) - # overwrite any exising public key - KEYOVERWRITE=true - ;; - *) echo unknown run option -$OPTARG - echo "USAGE: add-ppa package/branch (e.g. git-core/ppa)" - echo "available options -v ; -p " - ;; - esac - done - - shift $((OPTIND - 1)) - - #check input - if [ -z ${1+x} ]; then - echo "No ppa provided!" - return 1 - fi - - LAUNCHPAD="https://ppa.launchpadcontent.net" - DEV=$(echo $1 | cut -d ':' -f 2 | cut -d '/' -f1 ) - PACKAGE=${PACKAGE:-$DEV} - CMD=${CMD:-$PACKAGE} - BRANCH=${2:-$(echo $1| cut -d '/' -f 2)} - URL="$LAUNCHPAD/$DEV/$BRANCH/ubuntu $VERSION main" - - echo "*********** Adding PPA Repository ************" - echo DEVELOPER: $DEV - echo BRANCH: $BRANCH - echo PACKAGE: $PACKAGE - echo COMMAND: $CMD - echo URL: $URL - - if [[ -t 0 ]]; then - read -n 1 -p "do you want to continue [y]=>" REPLY - [[ $REPLY != "y" ]] && return 0 - fi - - echo -e "\n*********************************************" - #create source list file - echo "deb $URL" > /etc/apt/sources.list.d/$DEV.list - echo "***** added /etc/apt/sources.list.d/$DEV.list with****" - cat /etc/apt/sources.list.d/$DEV.list - echo "*********************************************" - - KEYFILE=$KEYSDIR/$DEV.gpg - - [[ $KEYOVERWRITE ]] && rm $KEYFILE - if [ ! -f $KEYFILE ]; then - # using an update error to grab key id - KEY_ERROR=/tmp/${DEV}_key_error - touch $KEY_ERROR - apt-get update > /dev/null 2> $KEY_ERROR - cat $KEY_ERROR - KEY=$(sed -n 's/^.*NO_PUBKEY //p' "$KEY_ERROR" | head -1) - # echo Reposity Public Key Settings - # echo KEYS DIRECTORY: $KEYSDIR - # echo KEY SERVER: $KEYSERVER - # echo KEY: $KEY - if [ ! $KEY ]; then - echo can not determine $DEV/$BRANCH key sign - echo "removing file: /etc/apt/sources.list.d/$DEV.list and aborting" - rm /etc/apt/sources.list.d/$DEV.list - return 1 - fi - echo downloading and saving public key $KEY for $DEV/$BRANCH to $KEYFILE - gpg --keyserver $KEYSERVER --recv $KEY - gpg --export $KEY > $KEYFILE - else - echo " >>>>>> $KEYFILE already exists, using that key $KEY <<<<<" - fi - echo ppa repo $DEV/$BRANCH for package $PACKAGE now registered, updating... - apt-get update 1> /dev/null - if [[ $INSTALL ]]; then - echo installing $PACKAGE - [[ -t 0 ]] && apt policy $PACKAGE - apt-get install $PACKAGE -y - $CMD --version - fi -fi - -} - -# # if script was executed then call the function -(return 0 2>/dev/null) || add_ppa $@ \ No newline at end of file diff --git a/distro/ubuntu/multipass/multipass.alias b/distro/ubuntu/multipass/multipass.alias deleted file mode 100644 index d5ab130..0000000 --- a/distro/ubuntu/multipass/multipass.alias +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -command -v multipass >/dev/null 2>&1 || return -# [[ ! -f /snap/bin/multipass ]] && return - -alias mpls="multipass list" -alias mp="multipass" -alias mpl="multipass_launch" -alias mps="multipass shell" -alias mpssh="multipass_ssh" -alias mprm="multipass_remove" -alias mph="multipass --help" -alias mpscr="multipass_ssh_script" -alias mprd="sudo snap restart multipass.multipassd" diff --git a/distro/ubuntu/multipass/multipass.func b/distro/ubuntu/multipass/multipass.func deleted file mode 100644 index 24450c0..0000000 --- a/distro/ubuntu/multipass/multipass.func +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash - -command -v multipass >/dev/null 2>&1 || return - -multipass_launch () { - subdir=${MULTIPASS_HOME:-multipass} - [[ $1 ]] && name="-n $1" - if [[ $2 ]]; then - file="$HOME/$subdir/cloud-init/$2.yaml" - if [[ -f $file ]]; then - init="--cloud-init $file" - else - echo no cloud init file $file - return 1 - fi - fi - echo running: multipass launch $name $init - multipass launch $name $init - } - - multipass_remove () { - [[ ! $1 ]] && echo must supply an instance name && return 1 - module_load confirm - confirm "delete and purge instance $1?" || return 1 - multipass delete -p $1 - - } - - multipass_get_sshid () { - dest=${1:-$HOME/.ssh/multipass_key} - [[ -f $dest ]] && echo $dest && return 0 - src=${SNAP_VAR:-/var/snap}/multipass/common/data/multipassd/ssh-keys/id_rsa - [[ ! -f $src ]] && return 1 - sudo cp $src $dest - sudo chown $USER:$USER $dest - chmod 600 $dest - echo $dest - } - -multipass_get_ip () { - [[ ! $1 ]] && return 1 - json=$(multipass info --format json $1 2> /dev/null) - [[ ! $json ]] && return 2 - ip=$(echo "$json" | jq -r .info.$1.ipv4[0] 2> /dev/null) - [[ $ip = "null" ]] && return 3 - [[ $ip ]] && echo $ip || return 4 - return 0 -} - - multipass_ssh_options () { - id=$(multipass_get_sshid) - [[ $? -gt 0 ]] && return 1 - echo -o IdentitiesOnly=yes -o IdentityFile=$id - return 0 - } - - - multipass_ssh_cmd () { - [[ ! $1 ]] && { echo must supply name of instance name; return 1; } - ip=$(multipass_get_ip $1) - [[ ! $ip ]] && { echo "no ip for instance $1"; return 2; } - user=${2:-ubuntu} - opts=$(multipass_ssh_options) - [[ ! $opts ]] && return 3 - echo $opts $user@$ip - return 0 - } - - - multipass_ssh () { - cmd=$(multipass_ssh_cmd $@) || { echo failed: $cmd;return $?; } - echo ssh $cmd - ssh $cmd - } - - multipass_scp () { - [[ $1 = "-u" ]] && user=$2 && shift 2 || user=ubuntu - [[ ! $1 ]] && echo must supply name of instance name && return 1 - ip=$(multipass_get_ip $1) - [[ ! $ip ]] && echo "no ip for instance $1, aborting" && return - id=$(multipass_get_sshid) - cat $id - return - echo sudo scp -i $id -r $2 $user@$ip:$3 - sudo scp -i $id $2 $user@$ip:$3 - } - - -multipass_ssh_script () { - cmd=$(multipass_ssh_cmd $2) || { echo failed: $cmd;return $?; } - module_load remote - remote_script $1 "$cmd" -} diff --git a/distro/ubuntu/snap/snap.alias b/distro/ubuntu/snap/snap.alias deleted file mode 100644 index df0232e..0000000 --- a/distro/ubuntu/snap/snap.alias +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -command -v snap >/dev/null 2>&1 || return - diff --git a/distro/ubuntu/snap/snap.func b/distro/ubuntu/snap/snap.func deleted file mode 100644 index df0232e..0000000 --- a/distro/ubuntu/snap/snap.func +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -command -v snap >/dev/null 2>&1 || return - diff --git a/distro/ubuntu/snap/snap.path b/distro/ubuntu/snap/snap.path deleted file mode 100644 index dddcd93..0000000 --- a/distro/ubuntu/snap/snap.path +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -command -v snap >/dev/null 2>&1 || return - -path_append /snap/bin - - diff --git a/docker/02-docker.lib b/docker/02-docker.lib deleted file mode 100644 index 40f0f7a..0000000 --- a/docker/02-docker.lib +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -command -v docker >/dev/null 2>&1 || return -docker_terminal () { -docker exec -it $1 /bin/sh -} diff --git a/docker/docker.inst b/docker/docker.inst new file mode 100755 index 0000000..33789cd --- /dev/null +++ b/docker/docker.inst @@ -0,0 +1 @@ +ln -s $BASH_SHELL_ANY_HOST/docker/docker $BASH_SHELL_HOST/load \ No newline at end of file diff --git a/docker/00-docker.env b/docker/docker/00-docker.env similarity index 100% rename from docker/00-docker.env rename to docker/docker/00-docker.env diff --git a/docker/01-docker.alias b/docker/docker/01-docker.alias similarity index 100% rename from docker/01-docker.alias rename to docker/docker/01-docker.alias diff --git a/docker/docker/02-docker.lib b/docker/docker/02-docker.lib new file mode 100644 index 0000000..a83dc79 --- /dev/null +++ b/docker/docker/02-docker.lib @@ -0,0 +1,16 @@ +#!/bin/bash +command -v docker >/dev/null 2>&1 || return +docker_terminal () { +docker exec -it $1 /bin/sh +} + +docker_latest_image() { + image=$1 + major=${2:-1} + tokenUri="https://auth.docker.io/token" + data=("service=registry.docker.io" "scope=repository:$image:pull") + token="$(curl --silent --get --data-urlencode ${data[0]} --data-urlencode ${data[1]} $tokenUri | jq --raw-output '.token')" + listUri="https://registry-1.docker.io/v2/$image/tags/list" + curl --silent --get -H "Accept: application/json" -H "Authorization: Bearer $token" $listUri \ + | jq --raw-output ".tags[] | select(. | startswith(\"$major.\"))" | sort -V | sed -n \$p + } diff --git a/docker/docker-compose.func b/docker/docker/docker-compose.func similarity index 100% rename from docker/docker-compose.func rename to docker/docker/docker-compose.func diff --git a/install/awscli b/install/awscli deleted file mode 100644 index e48e402..0000000 --- a/install/awscli +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -command -v docker >/dev/null 2>&1 || return - -aws_docker () { -local cred -local profile -local profile_env -if [[ $1 == "--cred" ]]; then -cred=$2 -shift 2 -else -cred=${HOME}/.aws -fi -if [[ $1 == "--profile" ]]; then -profile=$2 -shift 2 -else -profile=${AWS_PROFILE} -fi -[[ ! $(cat $cred/config 2> /dev/null | grep ${profile}]) ]] && echo no profile ${profile} in $cred/config && return -[[ $profile ]] && profile_env="--env AWS_PROFILE=${profile}" -# echo credentials directory $cred -# echo using profile $profile -[[ ! -f $cred/credentials ]] && echo no credentails file at $cred/credentails && return - -# echo remaining args: $@ -docker run --rm -it -v ${cred}:/root/.aws --env AWS_PAGER="" ${profile_env} -v $(pwd):/aws amazon/aws-cli "$@" -} - -aws_docker-update () { -docker pull amazon/aws-cli:latest -} - -_alt_=$([[ $(command -v aws >/dev/null 2>&1) ]] || echo d) - -alias aws${_alt_}='aws_docker' -alias aws${_alt_}-update='aws_docker_update' - -unset _alt_ diff --git a/install/common/apps b/install/common/apps deleted file mode 100644 index 1f42f9f..0000000 --- a/install/common/apps +++ /dev/null @@ -1,3 +0,0 @@ -if command -v npm >/dev/null 2>&1; then -alias gterm="GNOME_TERMINAL_SCREEN='' gnome-terminal" -fi \ No newline at end of file diff --git a/install/common/backintime.inst b/install/common/backintime.inst deleted file mode 100644 index 926ba9d..0000000 --- a/install/common/backintime.inst +++ /dev/null @@ -1,3 +0,0 @@ -#todo check for ubuntu first, need script from docker build -module_load add-ppa -add_ppa -i -c backintime -p backintime-qt ppa:bit-team/testing diff --git a/install/common/bind-mount.inst b/install/common/bind-mount.inst deleted file mode 100755 index 09ea24a..0000000 --- a/install/common/bind-mount.inst +++ /dev/null @@ -1,7 +0,0 @@ -DIR="$(cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" -BIN=${1:-/opt/bin/bmount} -ln -s $DIR/bind-mount.sh $BIN -sudo chown root:sudo $DIR/bind-mount.sh -sudo chmod 771 $DIR/bind-mount.sh -echo "%users $HOSTNAME=(ALL) NOPASSWD:SETENV: /bin/bash $BIN" | sudo tee /etc/sudoers.d/bmount -sudo chmod 440 /etc/sudoers.d/bmount diff --git a/install/common/golang-install.func b/install/common/golang-install.func deleted file mode 100755 index 7ddf556..0000000 --- a/install/common/golang-install.func +++ /dev/null @@ -1,227 +0,0 @@ -#!/bin/bash -# shellcheck disable=SC2016 -# set -e - - # golang_install remove - # golang_ install -e m - -function get_platform () { - - local OS - local ARCH - local PLATFORM - - OS="$(uname -s)" - ARCH="$(uname -m)" - - case $OS in - "Linux") - case $ARCH in - "x86_64") - ARCH=amd64 - ;; - "aarch64") - ARCH=arm64 - ;; - "armv6") - ARCH=armv6l - ;; - "armv8") - ARCH=arm64 - ;; - .*386.*) - ARCH=386 - ;; - esac - PLATFORM="linux-$ARCH" - ;; - "Darwin") - PLATFORM="darwin-amd64" - ;; - esac - - echo $PLATFORM -} - -golang_install () { - -## START INSTALL -PLATFORM=$(get_platform) -if [ -z "$PLATFORM" ]; then - echo "Your operating system is not supported by this install script." - return 1 -fi - -module_load block -[ ! "$(module_loaded block)" ] && echo unable to load block module, exiting && return 1 -module_load confirm - -declare ENV_TYPE="u" # Which shell repo for the block -declare ENV_FILE # override shell repo location -# u=user h=host n=network b=base -# by default it is installed in userspace -# local versions of these -declare goroot -declare gopath -local force - -declare OPTION -declare OPTARG -declare OPTIND - -while getopts 're:f:r:p:' OPTION; do - # echo $OPTION $OPTARG - case "$OPTION" in - r) - force=true - ;; - f) - ENV_FILE=$OPTARG - echo explicing setting block to $ENV_FILE - ;; - e) - ENV_TYPE=$OPTARG - echo - ;; - r) - goroot=$OPTARG - echo setting root $goroot - ;; - p) - gopath=$OPTARG - echo setting path $gopath - ;; - *) - echo unknown option $OPTION - ;; - esac -done - -shift $(( OPTIND - 1 )) - -if [[ ! $ENV_FILE ]]; then - FILE=lang/go - case $ENV_TYPE in - # h=host m=machine n=network b=base - "h") - [[ -d $BASH_SHELL_HOST/$(hostname) ]] && ENV_FILE=$BASH_SHELL_HOST/$(hostname)/$FILE - ;& - "m") - [[ -d $BASH_SHELL_HOST/all ]] && ENV_FILE=$BASH_SHELL_HOST/all/$FILE - ;& - "n") - ([[ -d $BASH_SHELL_NETWORK/$NETWORKNAME ]] && [[ ! $ENV_FILE ]]) && ENV_FILE=$BASH_SHELL_NETWORK/$NETWORKNAME/$FILE - ;& - "b") - ([[ -d $BASH_SHELL_BASE ]] && [[ ! $ENV_FILE ]]) && ENV_FILE=$BASH_SHELL_BASE/$FILE - ;; - esac - [[ ! $ENV_FILE ]] && ENV_FILE=$HOME/.bashrc # default is userspace - ENV_TYPE="u" -fi - -if [[ ! $goroot ]]; then - goroot=$GOROOT - if [[ ! $goroot ]]; then - [[ $ENV_TYPE = "u" ]] && goroot="$HOME/go" || goroot="/opt/go" - fi -fi - -if [[ ! $gopath ]]; then - gopath=$GOPATH - if [[ ! $gopath ]]; then - [[ $ENV_TYPE = "u" ]] && gopath="$HOME/go/apps" || gopath="/opt/go/apps" - fi -fi - -echo --- go environment settings are ----- -echo GOROOT: $goroot -echo GOPATH: $gopath -echo --------------------------------------- - -goenv=('export GOROOT='"$goroot"'\n' -'export PATH=$PATH:'"$goroot"'/bin\n' -'export GOPATH='"$gopath"'\n' -'export PATH=$PATH:'"$gopath"'/bin') - -echo ==== envionrment block is ==== -printf "${goenv[*]}\n" -echo ========================================= -echo environment block file is $ENV_FILE -confirm Do you want to continue || return 1 - -set_block -f $ENV_FILE -n "Go Language Environment" - -if [[ $1 = remove ]]; then - confirm Do you really want to remove the go installation? || return 1 - remove_block - confirm Delete directory $gopath??? && rm -rf $gopath - confirm Delete directory $goroot??? && rm -rf $goroot - return 1 -fi - - # the github api doesn't show any release records to had to grab this way -VERSION=$(echo "$(wget -qO- https://github.com/golang/go/tags)" | sed -e 's/<[^>]*>//g'| sed '/^\s*$/d'| grep release-branch| awk '{ print $2 }'|grep -v runtime|sort -V|tail -1|cut -c 3-) -if [[ $(which go) ]]; then - INSTALLED_VERSION=$(echo $(go version)| awk '{print $3}' | cut -c 3-) - # INSTALLED_VERSION=1.15.2 # this is for testing, comment out for production - echo installed: $INSTALLED_VERSION available: $VERSION - if [ "$INSTALLED_VERSION" == "$VERSION" ]; then - if [[ ! $force ]]; then - echo Installed Version $INSTALLED_VERSION is current nothing to do, exiting - echo use -r flag to force reinstall - return 2 - fi - fi -fi - -if [ -d "$goroot" ]; then - echo "The Go install directory ($goroot) already exists. " - confirm Do you want to upgrade to $VERSION? || return 0 -fi - -echo installing version $VERSION ...... - -PACKAGE_NAME="go$VERSION.$PLATFORM.tar.gz" -TEMP_DIRECTORY=$(mktemp -d) - -echo "Downloading $PACKAGE_NAME ..." -if hash wget 2>/dev/null; then - wget https://storage.googleapis.com/golang/$PACKAGE_NAME -O "$TEMP_DIRECTORY/go.tar.gz" -else - curl -o "$TEMP_DIRECTORY/go.tar.gz" https://storage.googleapis.com/golang/$PACKAGE_NAME -fi - -if [ $? -ne 0 ]; then - echo "Download failed! Exiting." - return 1 -fi - -echo "Extracting File..." -mkdir -p "$goroot" -# TODO set correct permissions here if necessary - -sudo tar -C "$goroot" --strip-components=1 -xzf "$TEMP_DIRECTORY/go.tar.gz" - - -echo done installing go binary and support files -rm -rf $TEMP_DIRECTORY -echo making go workspace directories - -mkdir -p "${gopath}/"{src,pkg,bin} -# TODO set correct permission if all have access - -echo "Configuring GO environment in: $ENV_FILE" - -mkdir -p "$(dirname $ENV_FILE)" -touch "$ENV_FILE" -add_block -block_add_line "${goenv[*]}" -# echo ---------contents of $ENV_FILE------------------ -# cat $ENV_FILE -# echo ------------------------------------------------ - -echo -e "\nGo $VERSION was installed into $goroot.\n(re)start a new shell environment to take effect" -echo NOTE: all files have root:root user:group, run a chown/chmod/setfacl commands if need be -return 0 -} diff --git a/install/common/hugo-install.func b/install/common/hugo-install.func deleted file mode 100755 index 958ef61..0000000 --- a/install/common/hugo-install.func +++ /dev/null @@ -1,142 +0,0 @@ -#!/bin/bash - -hugo_install() { - # inspried from this forum post https://discourse.gohugo.io/t/script-to-install-latest-hugo-release-on-macos-and-ubuntu/14774/10 - # if you have run into github api anonymous access limits which happens during debugging/dev then add user and token here or sourced from a separate file - # . ~/githubapitoken - #GITHUB_USER="" - #GITHUB_TOKEN="" - - if [ "$GITHUB_TOKEN" != "" ]; then - echo using access token with script - echo $GITHUB_USER $GITHUB_TOKEN - fi - - EXTENDED=false - FORCE=false - EFILE="" - - # options - # e - download and install the extended version - # c - use 'hugoe' as the install command for extended version otherwise 'hugo' will launch extended version - # f - force download/overwrite of same version - - declare OPTION - declare OPTARG - declare OPTIND - - while getopts 'ecf' OPTION; do - case "$OPTION" in - e) - echo "installing extended hugo" - EXTENDED=true - ;; - c) - if [ $EXTENDED = true ]; then - EFILE="e" - echo using hugoe for extended command - fi - ;; - f) - echo "FORCING download/overwrite" - FORCE=true - ;; - esac - done - - shift $((OPTIND - 1)) - - DEFAULT_BIN_DIR="/usr/local/bin" - # Single optional argument is directory in which to install hugo - BIN_DIR=${1:-"$DEFAULT_BIN_DIR"} - - BIN_PATH="$(which hugo$EFILE)" - declare -A ARCHES - ARCHES=(["arm64"]="ARM64" ["aarch64"]="ARM64" ["x86_64"]="64bit" ["arm32"]="ARM" ["armhf"]="ARM") - ARCH=$(arch) - - if [ -z "${ARCHES[$ARCH]}" ]; then - echo Your machine kernel architecture $ARCH is not supported by this script, aborting - exit 1 - fi - - INSTALLED="$(hugo$EFILE version 2>/dev/null | cut -d'v' -f2 | cut -c 1-6)" - CUR_VERSION=${INSTALLED:-"None"} - # echo $(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep tag_name) - # NEW_VERSION="$(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohugoio/hugo/releases/latest \ - # | grep tag_name \ - # | cut -d'v' -f2 | cut -c 1-6)" - - NEW_VERSION=$(lastversion hugo) - - echo "Hugo $([ $EXTENDED == true ] && echo "Extended"): Current Version : $CUR_VERSION => New Version: $NEW_VERSION" - - # if [ -z "$NEW_VERSION" ]; then - # echo Unable to retrieve new version number - Likely you have reached github anonymous limit - # echo set environment variable $($GITHUB_USER) and $($GITHUB_TOKEN) and try again - # exit 1 - # fi - - [[ $NEW_VERSION = $CUR_VERSION ]] && [[ $FORCE = false ]] && echo Latest version already installed at $BIN_PATH && return 0 - - pushd /tmp/ >/dev/null - - # curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohug#oio/hugo/releases/latest | - # grep "browser_download_url.*hugo.*._Linux-${ARCHES[$ARCH]}\.tar\.gz" | - - URL=$( - lastversion hugo --format assets --filter Linux-${ARCHES[$ARCH]}\.tar\.gz | - if [ $EXTENDED = true ]; then - grep "_extended" - else - grep -v "_extended" - fi - # | - # cut -d ":" -f 2,3 | - # tr -d \" - ) - - echo $URL - - echo "Installing version $NEW_VERSION $([ $EXTENDED == true ] && echo "Extended") " - echo "This machine's architecture is $ARCH" - echo "Downloading Tarball $URL" - - wget --user=-u $GITHUB_USER --password=$GITHUB_TOKEN -q $URL - - TARBALL=$(basename $URL) - # TARBALL="$(find . -name "*Linux-${ARCHES[$ARCH]}.tar.gz" 2>/dev/null)" - echo Expanding Tarball, $TARBALL - tar -xzf $TARBALL hugo - - chmod +x hugo - - if [ -w $BIN_DIR ]; then - echo "Installing hugo to $BIN_DIR" - mv hugo -f $BIN_DIR/hugo$EFILE - else - echo "installing hugo to $BIN_DIR (sudo)" - sudo mv -f hugo $BIN_DIR/hugo$EFILE - fi - - rm $TARBALL - - popd >/dev/null - - echo Installing hugo $([ $EXTENDED == true ] && echo "extended") as hugo$EFILE - - BIN_PATH="$(which hugo$EFILE)" - - if [ -z "$BIN_PATH" ]; then - printf "WARNING: Installed Hugo Binary in $BIN_DIR is not in your environment path\nPATH=$PATH\n" - else - if [ "$BIN_DIR/hugo$EFILE" != "$BIN_PATH" ]; then - echo "WARNING: Just installed Hugo binary hugo$EFILE to, $BIN_DIR , conflicts with existing Hugo in $BIN_PATH" - echo "add $BIN_DIR to path and delete $BIN_PATH" - else - echo "--- Installation Confirmation ---" - printf "New Hugo binary version at $BIN_PATH is\n $($BIN_PATH version)\n" - fi - fi - -} diff --git a/install/common/remote-desktop.mod b/install/common/remote-desktop.mod deleted file mode 100644 index 94697ff..0000000 --- a/install/common/remote-desktop.mod +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -# module to load some remote desktop server - -tigervnc_install () { -local usesudo -[[ $EUID -ne 0 ]] && usesudo=sudo -pass=$1 -[[ ! $pass ]] && echo password argument required && return 1 -# TODO check for binary and if not go grab it -user=$2 -[[ $usesudo ]] && user=${user:-$USER} || user=${user:-$(getent passwd 1000 | cut -f 1 -d ":")} -echo creating password file with $pass for user $user -echo "==========================" -mkdir /home/$user/.vnc -echo $pass | vncpasswd -f > /home/$user/.vnc/passwd -chown -R $user:$user /home/$user/.vnc -chmod 0600 /home/$user/.vnc/passwd -ls -la /home/$user/.vnc/ -server=/bin/x0vncserver -# server=/bin/vncserver -service=/etc/systemd/system/tigervnc.service -machine=$(hostname | tr '[:lower:]' '[:upper:]') -echo creating systemd service $service -cat </dev/null) ]] && echo unable to create service file && return 2 -$usesudo systemctl daemon-reload -$usesudo systemctl restart tigervnc -$usesudo systemctl enable tigervnc -$usesudo systemctl status tigervnc - -} \ No newline at end of file diff --git a/install/common/ungoogled-chromium/ungoogled.inst b/install/common/ungoogled-chromium/ungoogled.inst deleted file mode 100755 index 3f7f29e..0000000 --- a/install/common/ungoogled-chromium/ungoogled.inst +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -ungoogled_install() { - module_load confirm - module_load helpers - - SDIR=$(adirname ${1:-$(dirname ${BASH_SOURCE[0]})}) - - if [[ ! $(which lastversion) ]]; then - echo lastversion is not installed - echo it is a required dependency for this script - echo see https://github.com/dvershinin/lastversion - return - fi - - CUR_VERSION=$( /usr/bin/chromium -version | grep -oP '(?<=Chromium )[^ ]*') - - _repo="Eloston/ungoogled-chromium-binaries" - - NEW_VERSION=$(lastversion ${_repo}) - - echo "Ungoogled: Current Version : $CUR_VERSION => New Version: $NEW_VERSION" - - [[ $NEW_VERSION = $CUR_VERSION ]] && [[ ! ${1} == "-f" ]] && echo Latest version is already installed - - _temp=/tmp/ungoogled_chromium - echo $_temp to download deb and install - mkdir -p $_temp || exit &> /dev/null - pushd $_temp &> /dev/null || exit - - echo downloading common deb - lastversion ${_repo} --format assets --filter common_ -d common.deb - lastversion ${_repo} --format assets --filter mium_.+amd64.deb -d chromium.deb - echo installing common libraries - sudo dpkg -i common.deb - echo installing ungoogled-chromium - sudo dpkg -i chromium.deb - - echo done installing, removing $_temp - rm -r $_temp &> /dev/null || true - - popd >/dev/null - -confirm "do you want to install WidevineCDM for digital streaming rights?" -if [ $? -eq 0 ]; then - module_load widevine-install - widevine_install -fi - -confirm "do you want to install the uci chromium start script in /opt/bin ?" -if [ $? -eq 0 ]; then - module_load chromium-install - chromium_install -fi - - -} - -# # if script was executed then call the function -(return 0 2>/dev/null) || ungoogled_install $@ diff --git a/install/common/ungoogled-chromium/widevine-install.sh b/install/common/ungoogled-chromium/widevine-install.sh deleted file mode 100755 index 4ebbb40..0000000 --- a/install/common/ungoogled-chromium/widevine-install.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash -# -eux -function confirm() -{ - echo -n "$@ " - read -e answer - for response in y Y yes YES Yes Sure sure SURE OK ok Ok - do - if [ "_$answer" == "_$response" ] - then - return 0 - fi - done - - # Any answer other than the list above is considered a "no" answer - return 1 -} - -function widevine_install { - -_chrome_ver=$( /usr/bin/chromium -version | grep -oP '(?<=Chromium )[^ ]*') - -_l_target_dir=~/.local/lib/WidevineCdm -_target_dir=/usr/lib/chromium/WidevineCdm -_sudo="sudo" - -if [[ "${1}" == "-l" ]]; then - _sudo="" - _target_dir=$_l_target_dir - shift -fi - -echo "install widevineCDM for chromium version $_chrome_ver" -echo "into $_target_dir" - -confirm "confirm (y/n)" || exit - -_temp=/tmp/chromium_widevine -echo using $_temp to download deb and extract widevine -mkdir -p $_temp || exit &> /dev/null -pushd $_temp &> /dev/null || exit - -# Download deb, which has corresponding Widevine version -# Support resuming partially downloaded (or skipping re-download) with -c flag -if [[ "${1}" == "-u" ]]; then - _un="un" -fi -_url=https://dl.google.com/linux/deb/pool/main/g/google-chrome-${_un}stable/google-chrome-${_un}stable_${_chrome_ver}-1_amd64.deb -echo downloading $_url - -wget -c $_url || exit - -# Unpack deb -rm -r unpack_deb &> /dev/null || true -mkdir -p unpack_deb -echo extracting package... -dpkg-deb -R google-chrome-stable_${_chrome_ver}-1_amd64.deb unpack_deb || exit -echo removing any old WidevineCDM installs at $_target_dir -$_sudo rm -r $_target_dir &> /dev/null || true -echo moving WidevineCDM to target $_target_dir -$_sudo mv unpack_deb/opt/google/chrome/WidevineCdm $_target_dir &> /dev/null || exit -[[ $_sudo ]] && $_sudo chown -R root:root $_target_dir -echo done, removing $_temp -rm -r $_temp &> /dev/null || true -popd &> /dev/null - -} - -# if script was executed then call the function -(return 0 2>/dev/null) || widevine_install $@ - diff --git a/install/common/ungoogled-chromium/widevine.sh b/install/common/ungoogled-chromium/widevine.sh deleted file mode 100755 index a11c4f7..0000000 --- a/install/common/ungoogled-chromium/widevine.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash -# https://raw.githubusercontent.com/flathub/com.github.Eloston.UngoogledChromium/master/widevine-install.sh -# https://github.com/flathub/com.github.Eloston.UngoogledChromium -# Exit on error and forbid unset variables -set -eu - -# Get latest WideVine Version by getting last line in https://dl.google.com/widevine-cdm/versions.txt -_widevine_ver="$(wget -qO- https://dl.google.com/widevine-cdm/versions.txt | tail -n1)" - -# Get the architecture of the current machine -ARCH="$(uname -m)" -case "$ARCH" in -x86_64) - WIDEVINE_ARCH="x64" - CHROMIUM_ARCH="x64" - ;; - -*) - echo "The architecture $ARCH is not supported." >&2 - exit 1 - ;; -esac - -# Download WideVine into a temporary file and use trap to delete it on exit -widevine_zip="$(mktemp)" -trap 'rm -f "${widevine_zip:?}"' EXIT -wget -O "$widevine_zip" "https://dl.google.com/widevine-cdm/${_widevine_ver}-linux-${WIDEVINE_ARCH}.zip" - -# Install WideVine from zip file into UngoogledChromium flatpak -_install_prefix="/opt/chromium/$1/WidevineCdm/${_widevine_ver}" -unzip -p "$widevine_zip" libwidevinecdm.so | install -Dm644 "/dev/stdin" "${_install_prefix}/_platform_specific/linux_$CHROMIUM_ARCH/libwidevinecdm.so" -unzip -p "$widevine_zip" manifest.json | install -m644 "/dev/stdin" "${_install_prefix}/manifest.json" -unzip -p "$widevine_zip" LICENSE.txt | install -m644 "/dev/stdin" "${_install_prefix}/LICENSE.txt" diff --git a/install/common/vscode.inst b/install/common/vscode.inst deleted file mode 100644 index 06cc58b..0000000 --- a/install/common/vscode.inst +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -if [[ $(command -v code) ]]; then -export VSCODE_HOME="/opt/vscode" -chmod +x $BASH_SHELL_HOST/all/modules/vscode.sh -ln -sf $BASH_SHELL_HOST/all/modules/vscode.sh /opt/bin/vscode -fi \ No newline at end of file diff --git a/install/custom-lightdm/.session/session_login b/install/custom-lightdm/.session/session_login deleted file mode 100755 index 57f9f7a..0000000 --- a/install/custom-lightdm/.session/session_login +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -log=$HOME/.session/session.log -&>> $log -echo $USER $HOME -echo "lightdm login setup $(date)" - -# example commands to run when logging in, here binding some other directories for the user -#echo "binding chromium browsers to .browsers" -#/usr/bin/bindfs --map=sysadmin/$USER:@users/@$USER /opt/chromium/default $HOME/.browsers/default -# bind alternate downloads directory -#/usr/bin/bindfs --map=sysadmin/$USER:@users/@$USER /data/downloads $HOME/Downloads - diff --git a/install/custom-lightdm/.session/session_logout b/install/custom-lightdm/.session/session_logout deleted file mode 100755 index d985884..0000000 --- a/install/custom-lightdm/.session/session_logout +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -log=$HOME/.session/session.log -&>> $log -echo $USER $HOME -echo "lightdm logout cleanup $(date)" -# example complimentary cleanup here unmounting those mounted in session_login -#echo "un mounting chromium browsers from .browsers" -#/bin/fusermount -u $HOME/.browsers/default -#/bin/fusermount -u $HOME/Downloads diff --git a/install/custom-lightdm/.session/slogin b/install/custom-lightdm/.session/slogin deleted file mode 100755 index 2423345..0000000 --- a/install/custom-lightdm/.session/slogin +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -# run the session login script manually, used for debugging -sudo -E HOME=$HOME USER=$USER ./session_login diff --git a/install/custom-lightdm/.session/slogout b/install/custom-lightdm/.session/slogout deleted file mode 100755 index b90e33a..0000000 --- a/install/custom-lightdm/.session/slogout +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -# run the session logout script manually, used for debugging -sudo -E HOME=$HOME USER=$USER /bin/bash session_logout - diff --git a/install/custom-lightdm/50-setup-cleanup.conf b/install/custom-lightdm/50-setup-cleanup.conf deleted file mode 100644 index 3e6c851..0000000 --- a/install/custom-lightdm/50-setup-cleanup.conf +++ /dev/null @@ -1,4 +0,0 @@ -[Seat:*] -session-setup-script=/opt/session/lightdm-setup.sh -session-cleanup-script=/opt/session/lightdm-cleanup.sh - diff --git a/install/custom-lightdm/cpy.session.sh b/install/custom-lightdm/cpy.session.sh deleted file mode 100644 index 24fc0d2..0000000 --- a/install/custom-lightdm/cpy.session.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -function confirm() -{ - echo -n "$@ " - read -e answer - for response in y Y yes YES Yes Sure sure SURE OK ok Ok - do - if [ "_$answer" == "_$response" ] - then - return 0 - fi - done - - # Any answer other than the list above is considered a "no" answer - return 1 -} - -if [[ -d $HOME/.session ]]; then -echo $HOME/.session folder already exists -confirm "!overwrite??? (y/n)" || exit -/bin/cp -r -f $HOME/.session/ $HOME/.session-saved/ -echo saved copy first to $HOME/.session-saved -fi -echo copying .session from $(pwd) to $HOME -/bin/cp -r -f .session/ $HOME -echo setting execute permissions -chmod +x $HOME/.session/* \ No newline at end of file diff --git a/install/custom-lightdm/loginout.inst b/install/custom-lightdm/loginout.inst deleted file mode 100755 index 81ea48f..0000000 --- a/install/custom-lightdm/loginout.inst +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -loginout_install() { - module_load confirm - module_load helpers - - [[ ! $(systemctl list-units | grep lightdm) ]] && echo lightdm not running on this machine, aborting && return - - SDIR=$(adirname "${BASH_SOURCE[0]}") - # echo source directory: $SDIR - - - pushd $SDIR &> /dev/null || exit - [[ ! -d /etc/lightdm/lightdm.conf.d ]] && mkdir -p /etc/lightdm/lightdm.conf.d - echo copying 50-setup-cleanup.conf to /etc/lightdm/lightdm.conf.d - sudo cp -f 50-setup-cleanup.conf /etc/lightdm/lightdm.conf.d - - if [[ ! -d /opt/session ]]; then - if [[ ! $(mkdir -p /opt/session) ]]; then - echo unable to make /opt/session with user $USER, elevating to sudo - _sudo="sudo" - [[ $($_sudo mkdir -p /opt/session) ]] && echo can not make /opt/session, aborting && return - fi - fi - - - echo copying lightdm-cleanup.sh and lightdm-setup.sh to /opt/session - $_sudo cp -f scripts/* /opt/session - echo setting execute permissions - $_sudo chmod -R +x /opt/session/*.sh - - - - popd >/dev/null - - _user=${1:-${USER}} - confirm "add a user .session folder for $_user" && add_user_session $1 - - -} - -function add_user_session { - - module_load confirm - module_load helpers - - SDIR=$(adirname "${BASH_SOURCE[0]}") - # echo source directory: $SDIR - - pushd $SDIR &> /dev/null || exit - - _user=${1:-${USER}} - - [[ ! $(user_exists $_user) ]] && echo user $_user does not exist, aborting && return - _home=$(bash -c "cd ~$(printf %q $_user) && pwd") - - echo making $_home/.session folder for $_user - # mkdir $USER/.session - - sudo -H -E -u "$_user" -s /bin/bash cpy.session.sh - - popd >/dev/null - - -# confirm "do you want to install WidevineCDM for digital streaming rights?" -# if [ $? -eq 0 ]; then -# module_load widevine-install -# widevine_install -# fi - - -} - -# if script was executed then call the function -(return 0 2>/dev/null) || loginout_install $@ diff --git a/install/custom-lightdm/readme.md b/install/custom-lightdm/readme.md deleted file mode 100644 index b25a7e8..0000000 --- a/install/custom-lightdm/readme.md +++ /dev/null @@ -1,51 +0,0 @@ - -Lightdm (gdm) is the login manager for linux ubuntu and mint (by default) - -If you need setup and cleanup that is ONLY done at lightdm login/logout then -one can run a script to setup and cleanup the session by - -running the loginout-install script, requires sudo - -`module_load loginout-install; loginout_install ` # default is current user - -after loading common scripts this will ask if you want to add the .session folder for the user - -or if you just need to add a user .session folder afterward - -`module_load loginout-install; add_user_session ` - - -the script does this - -in `/etc/lightdm/lightdm.conf.d` adds a file `50-setup-cleanup.conf` - -``` -[Seat:*] -session-cleanup-script=/opt/scripts/lightdm-cleanup.sh -session-setup-script=/opt/scripts/lightdm-setup.sh -``` - -in /opt/scripts put two files below and make sure they are +x executable - -``` -#!/bin/bash -#lightdm-setup.sh -echo "setup for ${USER}:${HOME} $(date)" >> /opt/scripts/lightdm.log -log=${HOME}/.session.log -if [[ -e $HOME/.session_login ]]; then su -c "/bin/bash $HOME/.session_login 1>>${log} 2>>${log} || true" $USER; fi -``` - -``` -#!/bin/bash -#lightdm-cleanup.sh -echo "cleanup for ${USER}:${HOME} $(date)" >> /opt/scripts/lightdm.log -log=${HOME}/.session.log -if [[ -e $HOME/.session_logout ]]; then su -c "/bin/bash $HOME/.session_logout 1>>${log} 2>>${log} || true" $USER; fi -``` - -then in the user home puts -`.session_login` and `.session_logout` files both executable -in those you can do anything like bindfs and fusermount -u - -make sure you restart lightdm or reboot -`sdr lightdm` \ No newline at end of file diff --git a/install/custom-lightdm/scripts/lightdm-cleanup.sh b/install/custom-lightdm/scripts/lightdm-cleanup.sh deleted file mode 100644 index 382f507..0000000 --- a/install/custom-lightdm/scripts/lightdm-cleanup.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -_udir=${HOME}/.session -_uscript=${_udir}/session_logout -_log=${_udir}/session.log -_sdir=$(dirname "${BASH_SOURCE[0]}") -echo "${UID:-$(id -u)}:$(whoami) is running CLEANUP script in $_sdir for ${USER} sourcing ${_uscript}::$(date)" >> ${_sdir}/lightdm.log -if [[ -e ${_uscript} ]]; then - /bin/bash ${_uscript} 1>>${_log} 2>>${_log} || true -fi \ No newline at end of file diff --git a/install/custom-lightdm/scripts/lightdm-setup.sh b/install/custom-lightdm/scripts/lightdm-setup.sh deleted file mode 100644 index c878e2f..0000000 --- a/install/custom-lightdm/scripts/lightdm-setup.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -_udir=${HOME}/.session -_uscript=${_udir}/session_login -_log=${_udir}/session.log -_sdir=$(dirname "${BASH_SOURCE[0]}") -echo "${UID:-$(id -u)}:$(whoami) is running SETUP script in $_sdir for ${USER} sourcing ${_uscript}::$(date)" >> ${_sdir}/lightdm.log -if [[ -e ${_uscript} ]]; then - /bin/bash ${_uscript} 1>>${_log} 2>>${_log} || true -fi diff --git a/install/readme.md b/install/readme.md deleted file mode 100644 index 2ec62a9..0000000 --- a/install/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Install scripts for a new host machine - -each file or folder in this directory can load another asset to a new host machine - -the install_host function can be loaded which will allow easy install of these assets - - diff --git a/lang/fnm/00-fnm.env b/lang/fnm/00-fnm.env new file mode 100644 index 0000000..12902e4 --- /dev/null +++ b/lang/fnm/00-fnm.env @@ -0,0 +1 @@ + export FNM_DIR="/opt/node-fnm" \ No newline at end of file diff --git a/lang/fnm/fnm b/lang/fnm/fnm new file mode 100644 index 0000000..122d8de --- /dev/null +++ b/lang/fnm/fnm @@ -0,0 +1,25 @@ +#!/bin/bash +if command -v fnm >/dev/null 2>&1; then + + _fnmenv="$(fnm env --fnm-dir $FNM_DIR --use-on-cd)" + # echo "$_fnmenv" + # echo "---------" + eval "$_fnmenv" + + if ! fnm use lts-latest >/dev/null 2>&1; then + echo the latest long term support version is not installed so installing + fnm install --lts + fvm use lts-lastest + echo current active version $(node --version) + fi + + alias fnml="fnm use lts-latest" + # alias nvmil="nvm install --lts --latest-npm" + alias fnmu="fnm use" + alias fnmls="fnm ls" + alias fnmc="fnm current" + # echo added fnm to shell, $NVM_DIR +else + echo FATAL! fnm is not installed or in the path cannot add node via fnm to shell +fi + diff --git a/lang/fnm/fnm.inst b/lang/fnm/fnm.inst new file mode 100755 index 0000000..6eb75a9 --- /dev/null +++ b/lang/fnm/fnm.inst @@ -0,0 +1,9 @@ +#!/bin/bash +if command -v fnm >/dev/null 2>&1; then +mkdir -p $BASH_SHELL_HOST/load/coding +ln -s $BASH_SHELL_ANY_HOST/lang/fnm $BASH_SHELL_HOST/load/coding/00-fnm +ln -s -f $BASH_SHELL_ANY_HOST/lang/node $BASH_SHELL_HOST/load/coding/node +else +echo fnm has not been installed on this machine or is not in the path +echo do so and try again +fi \ No newline at end of file diff --git a/lang/fnm/fnm.uinst b/lang/fnm/fnm.uinst new file mode 100755 index 0000000..1500f7f --- /dev/null +++ b/lang/fnm/fnm.uinst @@ -0,0 +1,2 @@ +rm -r $BASH_SHELL_HOST/load/coding/00-fnm +rm -r $BASH_SHELL_HOST/load/coding/node \ No newline at end of file diff --git a/lang/go/go.inst b/lang/go/go.inst index 1231244..c75b904 100755 --- a/lang/go/go.inst +++ b/lang/go/go.inst @@ -1,11 +1,6 @@ #!/bin/bash - - - go_install () { - - local latest_url="https://go.dev/VERSION?m=text" ## START INSTALL @@ -24,9 +19,12 @@ declare OPTION declare OPTARG declare OPTIND -while getopts 'fr:' OPTION; do +while getopts 'fv:r:' OPTION; do # echo $OPTION $OPTARG case "$OPTION" in + v) + VERSION=$OPTARG + ;; f) force=true ;; @@ -65,7 +63,7 @@ echo go install and environment will be printf "${goenv[*]}\n" confirm Do you want to continue || return 1 -VERSION=$(curl -s $latest_url | sed 's/^go//') +VERSION=${VERSION:-$(curl -s $latest_url | sed 's/^go//')} if [[ $(which go) ]]; then INSTALLED_VERSION=$(echo $(go version)| awk '{print $3}' | cut -c 3-) # INSTALLED_VERSION=1.15.2 # this is for testing upgrade, comment out for production @@ -77,7 +75,7 @@ if [[ $(which go) ]]; then return 2 fi fi - confirm Do you want to upgrade || return 1 + confirm Do you want to install || return 1 fi echo installing version $VERSION ...... diff --git a/lang/node/node b/lang/node/node index 021c6f0..6071138 100644 --- a/lang/node/node +++ b/lang/node/node @@ -1,9 +1,7 @@ #!/bin/bash +if command -v node >/dev/null 2>&1; then -if command -v npm >/dev/null 2>&1; then +alias ndv="node --version" +alias ndw="command -v node" -path_append ./node_modules/.bin -# load in any node functions -module_load node - -fi +fi \ No newline at end of file diff --git a/lang/node/node.sh b/lang/node/node.lib old mode 100644 new mode 100755 similarity index 87% rename from lang/node/node.sh rename to lang/node/node.lib index f6b9b92..5eabb45 --- a/lang/node/node.sh +++ b/lang/node/node.lib @@ -1,4 +1,4 @@ - +#!/bin/bash module_load confirm rm_node_modules () { diff --git a/lang/node/npm b/lang/node/npm index b475a2f..10012c7 100644 --- a/lang/node/npm +++ b/lang/node/npm @@ -1,5 +1,6 @@ #!/bin/bash - +# echo loading npm aliasg +# command -v npm if command -v npm >/dev/null 2>&1; then # echo addding node langauge stuff # gives access to packages with bin in a project diff --git a/lang/node/readme.md b/lang/node/readme.md new file mode 100644 index 0000000..847f6a1 --- /dev/null +++ b/lang/node/readme.md @@ -0,0 +1 @@ +this gets loaded via one of the version managers (nvm,fnm,proto) \ No newline at end of file diff --git a/lang/nvm/00-nvm.env b/lang/nvm/00-nvm.env new file mode 100644 index 0000000..a16c53b --- /dev/null +++ b/lang/nvm/00-nvm.env @@ -0,0 +1,2 @@ + export NVM_DIR="/opt/node-nvm" + export NVM_SCRIPTS_DIR="/usr/share/nvm" \ No newline at end of file diff --git a/lang/nvm/nvm b/lang/nvm/nvm new file mode 100644 index 0000000..f1303c1 --- /dev/null +++ b/lang/nvm/nvm @@ -0,0 +1,22 @@ +#!/bin/bash +echo adding nvm to shell +if [[ -f $NVM_SCRIPTS_DIR/init-nvm.sh ]]; then + mkdir -p $NVM_DIR + source $NVM_SCRIPTS_DIR/init-nvm.sh +fi + +if command -v nvm >/dev/null 2>&1; then +# echo node version manager installed $NVM_DIR +if ! nvm use --lts >/dev/null 2>&1; then +echo a long term support version is not installed so installing $(nvm version-remote --lts) +nvm install --lts --latest-npm +nvm use --lts +echo current active version $(node --version) +fi + +alias nvml="nvm use --lts" +alias nvmil="nvm install --lts --latest-npm" +alias nvmu="nvm use" +alias nvmls="nvm ls" + +fi \ No newline at end of file diff --git a/lang/nvm/nvm.inst b/lang/nvm/nvm.inst new file mode 100755 index 0000000..f6f6664 --- /dev/null +++ b/lang/nvm/nvm.inst @@ -0,0 +1,3 @@ +mkdir -p $BASH_SHELL_HOST/load/coding +ln -s $BASH_SHELL_ANY_HOST/lang/nvm $BASH_SHELL_HOST/load/coding/00-nvm +ln -s -f $BASH_SHELL_ANY_HOST/lang/node $BASH_SHELL_HOST/load/coding/node \ No newline at end of file diff --git a/lang/nvm/nvm.uinst b/lang/nvm/nvm.uinst new file mode 100755 index 0000000..2c06d36 --- /dev/null +++ b/lang/nvm/nvm.uinst @@ -0,0 +1,2 @@ +rm -r $BASH_SHELL_HOST/load/coding/00-nvm +rm -r $BASH_SHELL_HOST/load/coding/node \ No newline at end of file diff --git a/lang/proto/proto b/lang/proto/proto new file mode 100644 index 0000000..174c803 --- /dev/null +++ b/lang/proto/proto @@ -0,0 +1,13 @@ +#!/bin/bash +if command -v proto >/dev/null 2>&1; then +export PROTO_HOME=/opt/coding +mkdir -p $PROTO_HOME/shims +mkdir -p $PROTO_HOME/bin +module_load system-path +path_append "$PROTO_HOME/shims" +path_append "$PROTO_HOME/bin" +fi + + + + diff --git a/lang/proto/proto.inst b/lang/proto/proto.inst new file mode 100755 index 0000000..61efd63 --- /dev/null +++ b/lang/proto/proto.inst @@ -0,0 +1,3 @@ +mkdir -p $BASH_SHELL_HOST/load/coding +ln -s $BASH_SHELL_ANY_HOST/lang/proto $BASH_SHELL_HOST/load/coding/00-proto +ln -s $BASH_SHELL_ANY_HOST/lang/node $BASH_SHELL_HOST/load/coding/node \ No newline at end of file diff --git a/lang/proto/proto.uinst b/lang/proto/proto.uinst new file mode 100755 index 0000000..939028f --- /dev/null +++ b/lang/proto/proto.uinst @@ -0,0 +1,2 @@ +rm -r $BASH_SHELL_HOST/load/coding/00-proto +rm -r $BASH_SHELL_HOST/load/coding/node diff --git a/modules/bind-mount/bind-mount.sh b/modules/bind-mount/bind-mount.sh deleted file mode 100755 index 6bbb09a..0000000 --- a/modules/bind-mount/bind-mount.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - - - -function bumount { - echo "removing bind mount at $1" - notify-send "removing bind mount at ${1}" --icon=dialog-information -t 2000 - fusermount -u "$1" -} - -function bmount { - if [ "$1" == "-d" ]; then - bumount $2 - else - # if [[ " ${array[@]} " =~ " ${value} " ]]; then - # # whatever you want to do when array contains value - # fi - # mp="${@: -2}" - echo mounting $@ - bindfs $@ - fi -} - -# must have fuser and bindfs installed -# for use by sudoers -# ln -s $BASH_SHELL_HOST/all/modules/bind-mount/bind-mount.sh /opt/bin/bmount -# function xxbmount () { -# if [ "$1" == "-mp" ]; then -# MOUNTED=$(mountpoint "$2" | grep not) -# if [ -z "$MOUNTED" ]; then -# echo $2 is a mount point so bind mounting $2/$3 to $4 -# notify-send "bind mounting ${2}/${3} to ${4}" --icon=dialog-information -t 2000 -# bindfs "$2/$3" "$4" -# else -# notify-send "${2} not a mount point - Unable to bind mount ${2}/${3} to ${4}" --icon=dialog-error -t 2000 -# fi -# else -# echo bind mounting $1 to $2 -# notify-send "bind mounting ${1} to ${2}" --icon=dialog-information -t 2000 -# bindfs "$1" "$2" -# fi -# } - -# if script was executed then call the function -(return 0 2>/dev/null) || bmount $@ \ No newline at end of file diff --git a/modules/bindfs.lib b/modules/bindfs.lib index 885d786..df3675a 100644 --- a/modules/bindfs.lib +++ b/modules/bindfs.lib @@ -1,99 +1,101 @@ #!/bin/bash - -#bmount () {} -# sudo bindfs -o allow_other -o map=root/1001:@root/@1001 /var/lib/docker/volumes /data/dvols - +# echo loading bindfs +export BFS_MOUNT_DIR=${BFS_MOUNT_DIR:-/mnt/bfs} if [ -v PS1 ]; then - alias drbu="dir_rebind_user" - alias dbu="dir_bind_user" - alias dbum="dir_bind_unmount" + alias rbfsu="dir_rebind_user" + alias rbfs="dir_rebind" + alias bfsu="dir_bind_user" + alias bfs="dir_bind" + alias bfsum="dir_bind_unmount" + alias bfse="bfs_vscode" + + sudo mkdir $BFS_MOUNT_DIR 2> /dev/null + sudo chown $USER:$USER $BFS_MOUNT_DIR fi -dir_rebind_user () { - local usesudo; local dir;local user;local group - # $1 new owner - # $2 dir - -[ $# -lt 2 ] && echo minimum args needed to rebind are user and directory && return 1 -[[ $EUID -ne 0 ]] && usesudo=sudo - -[[ $(id -u $1 2> /dev/null) ]] || { echo user $1 does not exist can not continue; return 2; } - -dir=$(realpath $2) -user=$(stat -c '%U' $dir) -group=$(stat -c '%G' $dir) -$usesudo bindfs --force-user=$1 --force-group=$1 --create-for-user=$user --create-for-group=$group --chown-ignore --chgrp-ignore $dir $dir -# echo use \'dir_rebind_user_remove $dir\' to remove +mounted () { + mountpoint "$1" &> /dev/null && echo yes || return 1 } dir_bind_unmount () { - local usersudo + local usesudo + local mp=$1 + [[ ! $(mounted $mp) ]] && echo no mountpoint at $mp && mp=$BFS_MOUNT_DIR/$(basename $mp) + [[ ! $(mounted $mp) ]] && echo no mountpoint at $mp either, aborting && return 1 [[ $EUID -ne 0 ]] && usesudo=sudo - $usesudo fusermount -u $1 + if $usesudo fusermount -u $mp; then + echo unmounted $mp, removing empty mountpoint directory + rm -rf $mp + else + echo error, unable to unmount $mp + fi } - dir_bind_user () { local usesudo; local dir;local user;local group;local mp -[ $# -lt 3 ] && echo minimum 3 args needed to rebind are user, source directory and mountpoint && return 1 +if [ $# -lt 3 ]; then + echo "minimum 3 args needed to rebind " + echo passed were $@ + return 1 +fi + [[ $EUID -ne 0 ]] && usesudo=sudo [[ $(id -u $1 2> /dev/null) ]] || { echo user $1 does not exist can not continue; return 2; } dir=$(realpath $2) mp=$3 +[[ $(mounted $mp) ]] && echo something already mounted at $mp, aborting && return 1 if ! $usesudo mkdir -p $mp; then echo unable to make mountpoint aborting; return 2; fi $usesudo chown $1:$1 $mp -user=$(stat -c '%U' $dir) -group=$(stat -c '%G' $dir) +user=$(stat -c '%u' $dir) +group=$(stat -c '%g' $dir) $usesudo bindfs --force-user=$1 --force-group=$1 --create-for-user=$user --create-for-group=$group --chown-ignore --chgrp-ignore $dir $mp -# echo use \'dir_rebind_user_remove $dir\' to remove +[[ $? -gt 0 ]] && echo error in call to bindfs + +if [[ $(mounted $mp) ]]; then + echo $dir has been mounted at $mp for user $1 + echo "to unmount use: dir_bind_unmount $mp or bfsum $mp" + else + echo unable to mount $dir at $mp as user $user + fi + + } + +dir_bind () { +mp=${2:-$BFS_MOUNT_DIR/$(basename $1)} +dir_bind_user $USER $1 $mp +if [ -v PS1 ]; then +echo enter \"u\" when you ready to unmount, otherwise any other key will leave mounted +read -n1 ans +echo -e "\n" +[[ $ans == "u" ]] && dir_bind_unmount $mp +fi } -# module_load bindfs && dir_bind_user david /mnt/datadrive/@images /data/images +dir_rebind () { +dir_bind_user $USER $1 $1 +} +dir_rebind_user () { +dir_bind_user $1 $2 $2 +} + +bfs_vscode () { +mp=${2:-$BFS_MOUNT_DIR/$(basename $1)} +dir_bind_user $USER $1 $mp +/opt/bin/vscode $mp +if [ -v PS1 ]; then +echo when you ready to unmount FIRST close your vscode window then enter \"u\" +echo otherwise any other key will leave mounted +read -n1 ans +echo -e "\n" +[[ $ans == "u" ]] && dir_bind_unmount $mp +fi + +} (return 0 2>/dev/null) || dir_bind_user $@ - -# function bumount { -# echo "removing bind mount at $1" -# notify-send "removing bind mount at ${1}" --icon=dialog-information -t 2000 -# fusermount -u "$1" -# } - -# function bmount { -# if [ "$1" == "-d" ]; then -# bumount $2 -# else - # if [[ " ${array[@]} " =~ " ${value} " ]]; then - # # whatever you want to do when array contains value - # fi - # mp="${@: -2}" -# echo mounting $@ -# bindfs $@ -# fi -# } - -# must have fuser and bindfs installed -# for use by sudoers -# ln -s $BASH_SHELL_HOST/all/modules/bind-mount/bind-mount.sh /opt/bin/bmount -# function xxbmount () { -# if [ "$1" == "-mp" ]; then -# MOUNTED=$(mountpoint "$2" | grep not) -# if [ -z "$MOUNTED" ]; then -# echo $2 is a mount point so bind mounting $2/$3 to $4 -# notify-send "bind mounting ${2}/${3} to ${4}" --icon=dialog-information -t 2000 -# bindfs "$2/$3" "$4" -# else -# notify-send "${2} not a mount point - Unable to bind mount ${2}/${3} to ${4}" --icon=dialog-error -t 2000 -# fi -# else -# echo bind mounting $1 to $2 -# notify-send "bind mounting ${1} to ${2}" --icon=dialog-information -t 2000 -# bindfs "$1" "$2" -# fi -# } - diff --git a/modules/btrbk.lib b/modules/btrbk.lib index 7b1994d..d6bcf7c 100644 --- a/modules/btrbk.lib +++ b/modules/btrbk.lib @@ -25,6 +25,12 @@ btrbk_conf () { return 1 } +btrbk_clean () { + local file=$(btrbk_conf $1) + [[ ! $file ]] && return 1 + sudo btrbk -c $file clean $2 +} + btrbk_src () { local file=$(btrbk_conf $1) [[ ! $file ]] && return 1 @@ -86,17 +92,19 @@ local snaps=$(sudo btrbk -c $file list source --format col:h:snapshot_name) local dests=$(sudo btrbk -c $file list config --format col:h:snapshot_path | tail -1) local dests+=" $(btrbk -c $file list target --format col:h:target_path)" +# todo distinguish local from remote destinations and deal with differently for latest link + # any pre snap tasks -for dest in $dests; do - if [[ ! -d $dest ]]; then - if confirm directory $dest does not exist, create; then - sudo mkdir -p $dest - else - echo destination $dest directory MUST exist aborting brtbk run - return 2 - fi - fi -done +# for dest in $dests; do +# if [[ ! -d $dest ]]; then +# if confirm directory $dest does not exist, create; then +# sudo mkdir -p $dest +# else +# echo destination $dest directory MUST exist aborting brtbk run +# return 2 +# fi +# fi +# done echo using configuration file: $file echo creating snapshots: $snaps diff --git a/modules/host-utils.mod b/modules/host-utils.mod index 359b7e1..3ce186a 100644 --- a/modules/host-utils.mod +++ b/modules/host-utils.mod @@ -4,34 +4,31 @@ arch () { uname -m } -function get_chip_type() { +get_arch () { + local arch + arch=$(uname -m) + [[ ! $arch ]] && return 1 + case $arch in + x86_64) binArch='amd64' ;; + armhf) binArch='armv6' ;; + armv7) binArch='armv7' ;; + aarch64) binArch='arm64' ;; + ppc64el|ppc64le) binArch='ppc64le' ;; + s390x) binArch='s390x' ;; + .*386.*) binArch='amd32' ;; + *) return 2 ;;\ + esac; + echo $binArch +} - local ARCH - - case $(arch) in - "x86_64") - ARCH=amd64 - ;; - "aarch64") - ARCH=arm64 - ;; - "armv8") - ARCH=arm64 - ;; - .*386.*) - ARCH=amd32 - ;; - *) - ARCH=arm32 - ;; - esac - - echo $ARCH +function get_os () { + declare -l os + os=$(uname -s) + echo $os } function get_platform() { - - echo $(uname -s)-$(get_chip_type) + echo $(get_os)-$(get_chip_type) } @@ -75,3 +72,22 @@ get_distro() { fi fi } + +# function get_distro() { +# /bin/cp /etc/os-release /tmp/os-release.tmp +# if [[ $1 == "-d" ]]; then +# shift 1 +# # docker run -it --name get_container_os --rm --entrypoint cat $1 /etc/os-release +# docker create --name dummy $1 > /dev/null +# docker cp -L dummy:/etc/os-release /tmp/os-release.tmp +# docker rm -f dummy > /dev/null +# # docker run -it --name get_container_os --rm --entrypoint cat $1 /etc/os-release > /tmp/container-os.tmp 2> /dev/null +# shift 1 +# fi +# source /tmp/os-release.tmp +# declare valid=${@:-"alpine debian ubuntu"} +# # echo $ID $ID_LIKE +# [[ "${valid}" =~ $ID ]] && echo $ID && return 0 +# [[ "${valid}" =~ $ID_LIKE ]] && echo $ID_LIKE && return 0 +# return 1 +# } diff --git a/sudoers/20-dir b/sudoers/20-dir old mode 100644 new mode 100755 diff --git a/sudoers/20-ln b/sudoers/20-ln new file mode 100644 index 0000000..b1e319e --- /dev/null +++ b/sudoers/20-ln @@ -0,0 +1 @@ +%sudo, %wheel ALL=(ALL) NOPASSWD:/bin/ln diff --git a/sudoers/20-passwd b/sudoers/20-passwd new file mode 100644 index 0000000..39dc252 --- /dev/null +++ b/sudoers/20-passwd @@ -0,0 +1 @@ +%sudo, %wheel ALL=(ALL) NOPASSWD:/bin/passwd