diff --git a/.bash-shell-include b/.bash-shell-include
new file mode 100644
index 0000000..4389836
--- /dev/null
+++ b/.bash-shell-include
@@ -0,0 +1 @@
+load
diff --git a/app/brew b/app/brew
deleted file mode 100644
index 08cb2e6..0000000
--- a/app/brew
+++ /dev/null
@@ -1,2 +0,0 @@
-[[ -d "/opt/brew" ]] && path_append /opt/brew/bin
-[[ -d /home/linuxbrew/.linuxbrew/bin ]] && path_append /home/linuxbrew/.linuxbrew/bin
diff --git a/app/bashly b/archive/bashly
similarity index 100%
rename from app/bashly
rename to archive/bashly
diff --git a/archive/git b/archive/git
new file mode 100644
index 0000000..77de38c
--- /dev/null
+++ b/archive/git
@@ -0,0 +1,2 @@
+alias gspa="git subrepo push --all"
+alias gpom="git pull origin master" # update repo from default remove
diff --git a/modules/install/rclone-install.func b/archive/rclone-install.func
similarity index 100%
rename from modules/install/rclone-install.func
rename to archive/rclone-install.func
diff --git a/archive/ssh.env b/archive/ssh.env
new file mode 100644
index 0000000..57d7816
--- /dev/null
+++ b/archive/ssh.env
@@ -0,0 +1,5 @@
+#!/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/modules/chromium/chromium.sh b/install/apps/chromium/chromium.func
similarity index 63%
rename from modules/chromium/chromium.sh
rename to install/apps/chromium/chromium.func
index 4488528..f68a45a 100755
--- a/modules/chromium/chromium.sh
+++ b/install/apps/chromium/chromium.func
@@ -1,11 +1,12 @@
#!/bin/bash
-# user to start MUST be first in arguments
-# if not supplied then will use default
+# improve and refactor
+
chromium_() {
- local DEFAULT=/opt/chromium
- local DEFAULT_USER=$HOME/.browsers
- local DEFAULT_SNAP=$HOME/snap/chromium/common
+ module_load path
+ local path=/opt/chromium
+ local user_data_path=$HOME/.browsers
+ local snap_path=$HOME/snap/chromium/common
# set default exe here (no flag)
local exe="/usr/bin/chromium"
local snap
@@ -15,7 +16,7 @@ chromium_() {
return
fi
- [[ $1 == -d ]] && exe=/usr/bin/chromiium && shift
+ [[ $1 == -d ]] && exe=/usr/bin/chromium && shift
[[ $1 == -g ]] && exe=$(command -v google-chrome) && shift
[[ $1 == -s ]] && snap=true && exe=/snap/bin/chromium && shift
[[ $1 == -u ]] && exe=/opt/bin/ungoogled-chromium && shift
@@ -40,20 +41,29 @@ chromium_() {
fi
fi
- local dir
+
[[ ! $instance ]] && instance=chromium && unset CHROME_CONFIG_HOME
[[ $instance == "incognito" ]] && set -- "$@" "-incognito"
- dir=${DEFAULT_USER}/$instance
- dir=$([[ -d "$dir" ]] && echo $dir || echo "${CHROMIUM_HOME:-$DEFAULT}/$instance")
- # exe="${exe/
/$dir}"
- if [[ $snap ]]; then
- sdir=${DEFAULT_SNAP}/$instance
- mkdir -p $sdir
- fusermount -u $sdir
- /usr/bin/bindfs $dir $sdir
- dir=$sdir
- fi
+ local dir
+ dir=$(isAbsPath $instance)
+ if [[ ! $dir ]]; then
+ dir=${user_data_path}/$instance
+ if [[ ! -d "$dir" ]]; then
+ dir="${CHROMIUM_HOME:-$path}/$instance"
+ [[ ! -d "$dir" ]] && [[ -d ${user_data_path} ]] && dir=${user_data_path}/$instance
+ fi
+ fi
+
+ if [[ $snap ]]; then
+ local bfs=$(command -v bindfs)
+ [[ ! $bfs ]] && echo bindfs not installed - exiting && return 3
+ sdir=${snap_path}/$instance
+ mkdir -p $sdir
+ fusermount -u $sdir
+ $bfs $dir $sdir
+ dir=$sdir
+ fi
mkdir -p $dir
echo $exe $@ --user-data-dir=$dir $url
diff --git a/install/apps/chromium/chromium.inst b/install/apps/chromium/chromium.inst
new file mode 100755
index 0000000..f234cca
--- /dev/null
+++ b/install/apps/chromium/chromium.inst
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+function chromium_install {
+ BASH_SHELL_HOST=${BASH_SHELL_HOST:-$(dirname $BASH_SHELL_BASE)/$(hostname)}
+ mkdir -p $BASH_SHELL_HOST/apps
+ local src
+ local target
+ local dir="$(dirname $(realpath "${BASH_SOURCE:-$0}"))"
+ local script=$dir/chromium.func
+ # todo call distro specific install
+ [[ ! -f $script ]] && echo can not find script chromium function $script && return 2
+ src=$BASH_SHELL_HOST/apps/chromium
+ echo installing chromium script to $src
+ cp $script $src
+ target=${1:-/opt/bin}/chromium
+ chmod +rx $src
+ ln -sf $src $target
+ echo link to $src created at $target
+ ls -la /opt/bin | grep chromium
+ echo with permissions
+ ls -la $src
+}
+
+# if script was executed then call the function
+(return 0 2>/dev/null) || chromium_install $@
diff --git a/modules/vscode.sh b/install/apps/vscode/vscode.func
similarity index 100%
rename from modules/vscode.sh
rename to install/apps/vscode/vscode.func
diff --git a/install/apps/vscode/vscode.inst b/install/apps/vscode/vscode.inst
new file mode 100755
index 0000000..6accc4e
--- /dev/null
+++ b/install/apps/vscode/vscode.inst
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# make generic for an app
+function vscode_install {
+ BASH_SHELL_HOST=${BASH_SHELL_HOST:-$(dirname $BASH_SHELL_BASE)/$(hostname)}
+ mkdir -p $BASH_SHELL_HOST/apps
+ local src
+ local target
+ local dir="$(dirname $(realpath "${BASH_SOURCE:-$0}"))"
+ local script=$dir/vscode.func
+ # todo call distro specific install
+ [[ ! -f $script ]] && echo can not find script chromium function $script && return 2
+ src=$BASH_SHELL_HOST/apps/vscode
+ echo installing vscode to $src
+ cp $script $src
+ target=${1:-/opt/bin}/vscode
+ chmod +rx $src
+ ln -sf $src $target
+ echo link to $src created at $target
+ ls -la /opt/bin | grep vscode
+ echo with permissions
+ ls -la $src
+}
+
+code_install_deb() {
+ sudo apt-get install wget gpg
+ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor >packages.microsoft.gpg
+ sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
+ sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
+ rm -sudo apt update
+ sudo apt install code # or code-insiders
+}
+
+# if script was executed then call the function
+(return 0 2>/dev/null) || vscode_install $@
diff --git a/app/awscli b/install/awscli
similarity index 100%
rename from app/awscli
rename to install/awscli
diff --git a/alias/apps b/install/common/apps
similarity index 100%
rename from alias/apps
rename to install/common/apps
diff --git a/install/common/backintime.inst b/install/common/backintime.inst
new file mode 100644
index 0000000..926ba9d
--- /dev/null
+++ b/install/common/backintime.inst
@@ -0,0 +1,3 @@
+#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/modules/bind-mount/bind-mount.inst b/install/common/bind-mount.inst
similarity index 100%
rename from modules/bind-mount/bind-mount.inst
rename to install/common/bind-mount.inst
diff --git a/modules/install/golang-install.func b/install/common/golang-install.func
similarity index 100%
rename from modules/install/golang-install.func
rename to install/common/golang-install.func
diff --git a/modules/install/hugo-install.func b/install/common/hugo-install.func
similarity index 100%
rename from modules/install/hugo-install.func
rename to install/common/hugo-install.func
diff --git a/install/common/remote-desktop.mod b/install/common/remote-desktop.mod
new file mode 100644
index 0000000..94697ff
--- /dev/null
+++ b/install/common/remote-desktop.mod
@@ -0,0 +1,53 @@
+#!/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/modules/chromium/ungoogled-install.func b/install/common/ungoogled-chromium/ungoogled.inst
similarity index 100%
rename from modules/chromium/ungoogled-install.func
rename to install/common/ungoogled-chromium/ungoogled.inst
diff --git a/modules/chromium/widevine-install.sh b/install/common/ungoogled-chromium/widevine-install.sh
similarity index 100%
rename from modules/chromium/widevine-install.sh
rename to install/common/ungoogled-chromium/widevine-install.sh
diff --git a/modules/chromium/widevine.sh b/install/common/ungoogled-chromium/widevine.sh
similarity index 100%
rename from modules/chromium/widevine.sh
rename to install/common/ungoogled-chromium/widevine.sh
diff --git a/archive/vscode.inst b/install/common/vscode.inst
similarity index 100%
rename from archive/vscode.inst
rename to install/common/vscode.inst
diff --git a/modules/lightdm/.session/session_login b/install/custom-lightdm/.session/session_login
similarity index 100%
rename from modules/lightdm/.session/session_login
rename to install/custom-lightdm/.session/session_login
diff --git a/modules/lightdm/.session/session_logout b/install/custom-lightdm/.session/session_logout
similarity index 100%
rename from modules/lightdm/.session/session_logout
rename to install/custom-lightdm/.session/session_logout
diff --git a/modules/lightdm/.session/slogin b/install/custom-lightdm/.session/slogin
similarity index 100%
rename from modules/lightdm/.session/slogin
rename to install/custom-lightdm/.session/slogin
diff --git a/modules/lightdm/.session/slogout b/install/custom-lightdm/.session/slogout
similarity index 100%
rename from modules/lightdm/.session/slogout
rename to install/custom-lightdm/.session/slogout
diff --git a/modules/lightdm/50-setup-cleanup.conf b/install/custom-lightdm/50-setup-cleanup.conf
similarity index 100%
rename from modules/lightdm/50-setup-cleanup.conf
rename to install/custom-lightdm/50-setup-cleanup.conf
diff --git a/modules/lightdm/cpy.session.sh b/install/custom-lightdm/cpy.session.sh
similarity index 100%
rename from modules/lightdm/cpy.session.sh
rename to install/custom-lightdm/cpy.session.sh
diff --git a/modules/lightdm/loginout-install.sh b/install/custom-lightdm/loginout.inst
similarity index 100%
rename from modules/lightdm/loginout-install.sh
rename to install/custom-lightdm/loginout.inst
diff --git a/modules/lightdm/readme.md b/install/custom-lightdm/readme.md
similarity index 100%
rename from modules/lightdm/readme.md
rename to install/custom-lightdm/readme.md
diff --git a/modules/lightdm/scripts/lightdm-cleanup.sh b/install/custom-lightdm/scripts/lightdm-cleanup.sh
similarity index 100%
rename from modules/lightdm/scripts/lightdm-cleanup.sh
rename to install/custom-lightdm/scripts/lightdm-cleanup.sh
diff --git a/modules/lightdm/scripts/lightdm-setup.sh b/install/custom-lightdm/scripts/lightdm-setup.sh
similarity index 100%
rename from modules/lightdm/scripts/lightdm-setup.sh
rename to install/custom-lightdm/scripts/lightdm-setup.sh
diff --git a/install/distro/debian/apt b/install/distro/debian/apt
new file mode 100644
index 0000000..1ff65af
--- /dev/null
+++ b/install/distro/debian/apt
@@ -0,0 +1,13 @@
+# 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/tools/multipass/multipass.alias b/install/distro/debian/ubuntu/multipass/multipass.alias
similarity index 100%
rename from tools/multipass/multipass.alias
rename to install/distro/debian/ubuntu/multipass/multipass.alias
diff --git a/tools/multipass/multipass.func b/install/distro/debian/ubuntu/multipass/multipass.func
similarity index 100%
rename from tools/multipass/multipass.func
rename to install/distro/debian/ubuntu/multipass/multipass.func
diff --git a/install/distro/debian/ubuntu/remina b/install/distro/debian/ubuntu/remina
new file mode 100644
index 0000000..4c0b53f
--- /dev/null
+++ b/install/distro/debian/ubuntu/remina
@@ -0,0 +1,3 @@
+# https://remmina.org/how-to-install-remmina/#ubuntu
+module_load add-ppa
+add_ppa -i -c remmina -p \"remmina remmina-plugin-rdp remmina-plugin-secret\" ppa:remmina-ppa-team/remmina-next
diff --git a/tools/01-snap/snap.alias b/install/distro/debian/ubuntu/snap/snap.alias
similarity index 100%
rename from tools/01-snap/snap.alias
rename to install/distro/debian/ubuntu/snap/snap.alias
diff --git a/tools/01-snap/snap.func b/install/distro/debian/ubuntu/snap/snap.func
similarity index 100%
rename from tools/01-snap/snap.func
rename to install/distro/debian/ubuntu/snap/snap.func
diff --git a/tools/01-snap/snap.path b/install/distro/debian/ubuntu/snap/snap.path
similarity index 100%
rename from tools/01-snap/snap.path
rename to install/distro/debian/ubuntu/snap/snap.path
diff --git a/tools/docker/00-docker.env b/install/docker/00-docker.env
similarity index 55%
rename from tools/docker/00-docker.env
rename to install/docker/00-docker.env
index 6886770..ab1fea0 100644
--- a/tools/docker/00-docker.env
+++ b/install/docker/00-docker.env
@@ -1,2 +1,4 @@
#!/bin/bash
+command -v docker >/dev/null 2>&1 || return
+
export DOCKER_COMPOSE_ROOT=/opt/containers
diff --git a/tools/docker/docker.alias b/install/docker/01-docker.alias
similarity index 100%
rename from tools/docker/docker.alias
rename to install/docker/01-docker.alias
diff --git a/tools/docker/01-docker b/install/docker/02-docker.lib
similarity index 58%
rename from tools/docker/01-docker
rename to install/docker/02-docker.lib
index e248fe3..40f0f7a 100644
--- a/tools/docker/01-docker
+++ b/install/docker/02-docker.lib
@@ -1,4 +1,5 @@
#!/bin/bash
+command -v docker >/dev/null 2>&1 || return
docker_terminal () {
docker exec -it $1 /bin/sh
}
diff --git a/tools/docker/docker-compose b/install/docker/docker-compose.func
similarity index 100%
rename from tools/docker/docker-compose
rename to install/docker/docker-compose.func
diff --git a/lang/go b/install/lang/go/go
similarity index 100%
rename from lang/go
rename to install/lang/go/go
diff --git a/lang/node/node b/install/lang/node/node
similarity index 100%
rename from lang/node/node
rename to install/lang/node/node
diff --git a/modules/node.sh b/install/lang/node/node.sh
similarity index 100%
rename from modules/node.sh
rename to install/lang/node/node.sh
diff --git a/lang/node/npm b/install/lang/node/npm
similarity index 100%
rename from lang/node/npm
rename to install/lang/node/npm
diff --git a/lang/node/pm2 b/install/lang/node/pm2
similarity index 100%
rename from lang/node/pm2
rename to install/lang/node/pm2
diff --git a/lang/node/yarn b/install/lang/node/yarn
similarity index 100%
rename from lang/node/yarn
rename to install/lang/node/yarn
diff --git a/install/lang/python/python.inst b/install/lang/python/python.inst
new file mode 100755
index 0000000..4d55ded
--- /dev/null
+++ b/install/lang/python/python.inst
@@ -0,0 +1,22 @@
+#!/bin/bash
+declare dir="$(dirname $(realpath "${BASH_SOURCE:-$0}"))"
+# todo call distro specific install
+echo updating...
+sudo apt-get update >/dev/null 2>&1
+echo installing pip and venv for python3
+sudo apt-get install python3-pip python3-venv -y >/dev/null
+echo loading $dir/python.lib
+source $dir/python.lib
+echo available alias for pip use with sudo for libraries
+alias | grep spip
+mkdir -p /opt/python/apps/bin
+echo always use pip with sudo for libraries, for apps use pipx
+sudo -H python3 -m pip install pipx >/dev/null 2>&1
+BASH_SHELL_HOST=${BASH_SHELL_HOST:-$(dirname $BASH_SHELL_BASE)/$(hostname)}
+mkdir -p $BASH_SHELL_HOST/load
+cp $dir/python.lib $BASH_SHELL_HOST/load/
+echo installed pipx version $(pipx --version) at $(which pipx)
+echo installing pypi apps to
+env | grep PIP
+echo available alias
+alias | grep pipx
diff --git a/install/lang/python/python.lib b/install/lang/python/python.lib
new file mode 100644
index 0000000..10c37f4
--- /dev/null
+++ b/install/lang/python/python.lib
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+command -v python3 >/dev/null 2>&1 || return
+
+alias python3x="sudo -H python3 -m"
+
+if command -v pyenv >/dev/null 2>&1; then
+ use_pyenv() {
+ if command -v pyenv >/dev/null 2>&1; then
+ export PYENV_ROOT="/opt/python/pyenv"
+ export PYENV_VERSION=${PYENV_VERSION:-3.8.7}
+ eval "$(pyenv init -)"
+ eval "$(pyenv virtualenv-init -)"
+ fi
+ }
+ [[ $USE_PYENV ]] && use_pyenv
+fi
+
+if command -v pip3 >/dev/null 2>&1; then
+
+ module_load system-path
+
+ alias spip="sudo -H python3 -m pip"
+ alias spipi="sudo -H python3 -m pip install"
+ alias spipiu="sudo -H python3 -m pip install -U"
+ alias spipl="sudo -H python3 -m pip list"
+ alias spiplo="sudo -H python3 -m pip list --outdated"
+ alias pip3="sudo -H python3 -m pip"
+
+ path_append "/opt/python/bin"
+
+ spipua() {
+ module_load confirm
+ echo upgrading all base python packages - requires sudo access
+ # sudo -H python3.8 -m pip list --outdated
+ local List
+ local Ver=${1:-3.8}
+ List="$(sudo -H python$Ver -m pip list -o --format columns)"
+ echo "$List"
+ confirm "ATTENTION: upgrade all these packages at once??" || return 0
+ echo "$List" | cut -d' ' -f1 | xargs -n1 sudo -H python$Ver -m pip install -U
+ }
+
+ if command -v pipx >/dev/null 2>&1; then
+ path_append "/opt/python/apps/bin"
+ export PIPX_HOME=/opt/python/apps
+ export PIPX_BIN_DIR=$PIPX_HOME/bin
+
+ alias pipu="pipx upgrade"
+ alias pipua="pipx upgrade-all"
+ alias pipupip="pipx upgrade pipx"
+ alias pipi="pipx install"
+ alias pipr="pipx uninstall"
+ alias pipl="pipx list"
+ alias piplv="pipx list --verbose"
+
+ fi
+
+fi
diff --git a/install/readme.md b/install/readme.md
new file mode 100644
index 0000000..2ec62a9
--- /dev/null
+++ b/install/readme.md
@@ -0,0 +1,7 @@
+# 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/python b/lang/python
deleted file mode 100644
index 83fa512..0000000
--- a/lang/python
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash
-
-
-use_pyenv() {
- if command -v pyenv >/dev/null 2>&1; then
- export PYENV_ROOT="/opt/python/pyenv"
- export PYENV_VERSION=${PYENV_VERSION:-3.8.7}
- eval "$(pyenv init -)"
- eval "$(pyenv virtualenv-init -)"
- fi
-}
-
-if command -v python3 >/dev/null 2>&1; then
-
-# TODO make alias generating function for versions of python
-alias python3x="sudo -H python3 -m"
-alias spip="sudo -H python3 -m pip"
-alias spipi="sudo -H python3 -m pip install"
-alias spipiu="sudo -H python3 -m pip install -U"
-alias spipl="sudo -H python3 -m pip list"
-alias spiplo="sudo -H python3 -m pip list --outdated"
-alias pip3="sudo -H python3 -m pip"
-
-path_append "/opt/python/bin"
-
-spipua() {
- module_load confirm
- echo upgrading all base python packages - requires sudo access
- # sudo -H python3.8 -m pip list --outdated
- local List
- local Ver=${1:-3.8}
- List="$(sudo -H python$Ver -m pip list -o --format columns)"
- echo "$List"
- confirm "ATTENTION: upgrade all these packages at once??" || return 0
- echo "$List" | cut -d' ' -f1 | xargs -n1 sudo -H python$Ver -m pip install -U
-}
-
-fi
-
-if command -v pipx >/dev/null 2>&1; then
- path_append "/opt/python/apps/bin"
- export PIPX_HOME=/opt/python/apps
- export PIPX_BIN_DIR=$PIPX_HOME/bin
-
- alias pipu="pipx upgrade"
- alias pipua="pipx upgrade-all"
- alias pipupip="pipx upgrade pipx"
- alias pipi="pipx install"
- alias pipr="pipx uninstall"
- alias pipl="pipx list"
- alias piplv="pipx list --verbose"
-
-fi
-
-[[ $USE_PYENV ]] && use_pyenv
-
-
-
diff --git a/modules/add-ppa.sh b/modules/add-ppa.sh
new file mode 100755
index 0000000..e8140e2
--- /dev/null
+++ b/modules/add-ppa.sh
@@ -0,0 +1,120 @@
+#!/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/modules/bind-mount/bind-mount.sh b/modules/bind-mount/bind-mount.sh
index 6bd0bdb..6bbb09a 100755
--- a/modules/bind-mount/bind-mount.sh
+++ b/modules/bind-mount/bind-mount.sh
@@ -1,23 +1,6 @@
#!/bin/bash
-# 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
-# }
+
+
function bumount {
echo "removing bind mount at $1"
@@ -38,5 +21,25 @@ function bmount {
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/chromium/chromium copy.sh b/modules/chromium/chromium copy.sh
deleted file mode 100755
index 5565d47..0000000
--- a/modules/chromium/chromium copy.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-
-# user to start MUST be first in arguments
-# if not supplied then will use default
-chromium_() {
- local DEFAULT=/opt/chromium
- # local DEFAULT="$HOME/.local/share/chromium"
- local exe="/usr/bin/chromium"
- if [[ ! -f $exe ]]; then
- echo deb chromium not installed, checking for flatpak version
- flatpak=$(flatpak info com.github.Eloston.UngoogledChromium | grep error:)
- if [[ $flatpak ]]; then
- echo no flatpak version either - exiting && return 1
- else
- flatpak=true
- exe="/usr/bin/flatpak run --branch=stable --arch=x86_64 --filesystem= --command=/app/bin/chromium --file-forwarding com.github.Eloston.UngoogledChromium @@u"
- fi
- fi
- # an instance gets it's own directory
- local instance=${CHROMIUM_INSTANCE}
- [[ $1 && (! $1 == -*) ]] && instance=$1 && shift
- [[ $1 && (! $1 == -*) ]] && url=$1 && shift
- if [[ $instance =~ http[s]?:\/\/ ]]; then
- url=$instance
- instance=""
- if [[ $url =~ ^-+ ]]; then
- url=""
- set -- "$@" $url
- url=""
- fi
- fi
-
- local dir
- if [[ ! $instance ]]; then
- unset CHROME_CONFIG_HOME
- $HOME/.config/chromium
- dir=$HOME/.config/chromium
- exe="${exe//$dir}"
- echo starting chromium for $USER in
- else
- [[ $instance == "incognito" ]] && set -- "$@" "-incognito"
- dir=${CHROMIUM_HOME:-$DEFAULT}/$instance
- exe="${exe//$dir}"
- fi
- echo $exe $@ --user-data-dir=$dir $url $([[ $flatpak ]] && echo "@@")
-
-}
-
-# # if script was executed then call the function
-(return 0 2>/dev/null) || chromium_ $@
diff --git a/modules/chromium/chromium-install.sh b/modules/chromium/chromium-install.sh
deleted file mode 100755
index 05555d3..0000000
--- a/modules/chromium/chromium-install.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-function chromium_install {
-
-source $BASH_SHELL_BASE/module.lib
-module_load helpers
-NAME="chromium"
-DIR=$(adirname "$0")
-BIN=${1:-/opt/bin/$NAME}
-# [[ $(chown :users $DIR/$NAME.sh) ]] || sudo chown :users $DIR/$NAME.sh
-[[ $(chmod 755 $DIR/$NAME.sh) ]] || sudo chmod 755 $DIR/$NAME.sh
-ln -sf $DIR/$NAME.sh $BIN
-echo link created
-ls -la /opt/bin | grep chromium
-echo with permissions
-ls -la $DIR | grep chromium.sh
-}
-
-# if script was executed then call the function
-(return 0 2>/dev/null) || chromium_install $@
diff --git a/modules/chromium/widevine.inst b/modules/chromium/widevine.inst
deleted file mode 100755
index 169c45e..0000000
--- a/modules/chromium/widevine.inst
+++ /dev/null
@@ -1,66 +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
-}
-
-
-_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
-
-
diff --git a/modules/host-utils.mod b/modules/host-utils.mod
index 81ce8b4..15f60ca 100644
--- a/modules/host-utils.mod
+++ b/modules/host-utils.mod
@@ -1,40 +1,66 @@
#!/bin/bash
-function get_platform () {
+function get_platform() {
- local OS
- local ARCH
- local PLATFORM
+ local OS
+ local ARCH
+ local PLATFORM
- OS="$(uname -s)"
- ARCH="$(uname -m)"
+ 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
+ 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
+ echo $PLATFORM
-}
\ No newline at end of file
+}
+
+# function get_distro() {
+# /bin/cp /etc/os-release /tmp/os-release.tmp
+# source /etc/os-release
+# declare valid=${@:-"arch alpine debian ubuntu"}
+# [[ "${valid}" =~ $ID ]] && echo $ID && return 0
+# [[ "${valid}" =~ $ID_LIKE ]] && echo $ID_LIKE && return 0
+# return 1
+# }
+
+function get_release() {
+
+}
+
+get_distro() {
+ local file=/etc/upstream-release/lsb-release
+ local distro
+ if [[ -f $file ]]; then
+ $(cat $file | tr [:upper:] [:lower:] | grep -Poi '(debian|ubuntu|red hat|centos|arch|alpine)' | uniq)
+ return 0
+ else
+ $file=/etc/os-release
+ if [[ -f $file ]]; then
+ echo $(cat $file | tr [:upper:] [:lower:] | grep -Poi '(debian|ubuntu|red hat|centos|arch|alpine)' | uniq)
+ fi
+}
diff --git a/modules/tools b/modules/tools
deleted file mode 120000
index 25a6ad0..0000000
--- a/modules/tools
+++ /dev/null
@@ -1 +0,0 @@
-/shell/any/host/tools
\ No newline at end of file
diff --git a/modules/trustedkeys.func b/modules/trustedkeys.func
new file mode 100644
index 0000000..4d63568
--- /dev/null
+++ b/modules/trustedkeys.func
@@ -0,0 +1,6 @@
+movekey() {
+ sudo apt-key export $1 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/$2.gpg
+}
+
+alias showkeys="apt-key list"
+alias filterkeys="apt-key list | grep -B1"