Refactor directory structure

This commit is contained in:
Manuel Thalmann 2023-01-23 14:19:26 +01:00
parent 7cc0136bec
commit 0d88f63cfa
39 changed files with 98 additions and 95 deletions

View file

@ -0,0 +1,19 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
# Prepare
apt install -y wget unzip jq apt-transport-https curl
curl -fsSLo /usr/share/keyrings/brave-browser-beta-archive-keyring.gpg https://brave-browser-apt-beta.s3.brave.com/brave-browser-beta-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/brave-browser-beta-archive-keyring.gpg arch=amd64] https://brave-browser-apt-beta.s3.brave.com/ stable main" \
| sudo tee /etc/apt/sources.list.d/brave-browser-beta.list
# Install Brave Beta
apt update
apt install -y brave-browser-beta
# Add pre-installed extensions
sudo ln -s /opt/brave.com/brave/extensions /opt/brave.com/brave-beta/extensions
fi

View file

@ -0,0 +1,50 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE" "$USER"
else
# Download and extract `youtube-music-dl`
archiveName=$(sudo -u $1 mktemp)
sudo -u $1 wget https://github.com/dougppaz/youtube-music-dl/releases/download/v1.2.1/youtube-music-dl.zip -O $archiveName
extensionName=youtube-music-dl
contextRoot=$(sudo -u $1 mktemp -d)
extensionDir=$contextRoot/$extensionName
keyFile=$extensionDir.pem
extensionFile=$extensionDir.crx
manifestFile=$extensionDir/manifest.json
extensionRoot=/usr/share/brave-extensions
destination=$extensionRoot/$extensionName.crx
# Prepare extension
mkdir -p $extensionRoot
sudo -u $1 unzip $archiveName -d $extensionDir
sudo -u $1 brave-browser --pack-extension=$extensionDir
rm $archiveName
# Tamper manifest file
manifest="$(cat $manifestFile | jq ". + {key: "'"'"$(openssl rsa -in $keyFile -pubout -outform DER | openssl base64 -A)"'"'"}")"
manifest="$(echo $manifest | jq ".background.persistent = false")"
echo $manifest | sudo -u $1 tee $manifestFile
# Pack extension
extensionID=$(openssl rsa -in $keyFile -pubout -outform DER | sha256sum | head -c32 | tr 0-9a-f a-p)
extensionVersion=$(cat $manifestFile | jq -r '.version')
sudo -u $1 brave-browser --pack-extension=$extensionDir --pack-extension-key=$keyFile
# Install extension and preinstall it
cp $extensionFile $extensionRoot
configRoot=/opt/brave.com/brave/extensions/
rm -rf $contextRoot
chmod -R a+rx $extensionRoot
chmod -R u+w $extensionRoot
mkdir -p $configRoot
{
echo "{"
echo ' "external_crx": "'"$destination"'",'
echo ' "external_version": "'"$extensionVersion"'"'
echo "}"
} | tee $configRoot/$extensionID.json
fi

View file

@ -0,0 +1,19 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
# Prepare
apt install -y wget unzip jq apt-transport-https curl
curl -fsSLo /usr/share/keyrings/brave-browser-nightly-archive-keyring.gpg https://brave-browser-apt-nightly.s3.brave.com/brave-browser-nightly-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/brave-browser-nightly-archive-keyring.gpg arch=amd64] https://brave-browser-apt-nightly.s3.brave.com/ stable main" \
| sudo tee /etc/apt/sources.list.d/brave-browser-nightly.list
# Install Brave Nightly
apt update
apt install -y brave-browser-nightly
# Add pre-installed extensions
sudo ln -s /opt/brave.com/brave/extensions /opt/brave.com/brave-nightly/extensions
fi

View file

@ -0,0 +1,16 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
# Prepare
apt install -y wget unzip jq apt-transport-https curl
curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main" \
| tee /etc/apt/sources.list.d/brave-browser-release.list
# Install Brave
apt update
apt install -y brave-browser
fi

View file

@ -0,0 +1,36 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE" "$USER"
else
tempDir="$(mktemp -d)"
archiveName="$(mktemp)"
destination="/var/lib/godot"
if [ -d "$destination" ]; then
rm -rf "$destination"
fi
wget https://github.com/godotengine/godot/releases/download/3.5.1-stable/Godot_v3.5.1-stable_mono_x11_64.zip -O "$archiveName"
unzip "$archiveName" -d "$tempDir"
mkdir -p "$destination"
mv "$tempDir"/*/* "$destination"
wget https://github.com/godotengine/godot/raw/3.5.1-stable/icon.svg -O "$destination/icon.svg"
rm -rf "$tempDir"
rm -f "$archiveName"
exeFile="$(find "$destination" -maxdepth 1 -perm -111 -type f)"
ln -s "$exeFile" /usr/local/bin/godot
{
echo "[Desktop Entry]"
echo "Encoding=UTF-8"
echo "Type=Application"
echo "Terminal=false"
echo "Exec=$exeFile"
echo "Name=Godot Engine"
echo "Icon=$destination/icon.svg"
} > /usr/share/applications/godot.desktop
fi

View file

@ -0,0 +1,15 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
wget https://dl-ssl.google.com/linux/linux_signing_key.pub -O /tmp/google.pub
gpg --no-default-keyring --keyring /etc/apt/keyrings/google-chrome.gpg --import /tmp/google.pub
echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main' \
| sudo tee /etc/apt/sources.list.d/google-chrome.list
apt update
apt install -y google-chrome-stable
fi

View file

@ -0,0 +1,21 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install gradle 7.5.1
else
apt install -y wget apt-transport-https
mkdir -p /etc/apt/keyrings
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public \
| tee /etc/apt/keyrings/adoptium.asc
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" \
| tee /etc/apt/sources.list.d/adoptium.list
apt update
apt install -y temurin-17-jdk
fi

View file

@ -0,0 +1,25 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
workingDirectory=$(pwd)
contextRoot=$(mktemp -d)
cd $contextRoot
curl -fsSL https://raw.githubusercontent.com/nagygergo/jetbrains-toolbox-install/1.1/jetbrains-toolbox.sh \
| bash
cd $workingDirectory
rm -rf $contextRoot
{
echo "[Desktop Entry]"
echo "Encoding=UTF-8"
echo "Type=Application"
echo "Terminal=false"
echo "Exec=/opt/jetbrains-toolbox/jetbrains-toolbox"
echo "Name=JetBrains Toolbox"
} > /usr/share/applications/jetbrains-toolbox.desktop
fi

View file

@ -0,0 +1,4 @@
#!/bin/bash
export NVS_HOME="$HOME/.nvs"
git clone https://github.com/jasongin/nvs "$NVS_HOME"
. "$NVS_HOME/nvs.sh" install

View file

@ -0,0 +1,25 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE" "$USER"
else
bin=oh-my-posh
workingDirectory=$(pwd)
contextRoot=$(mktemp -d)
cd $contextRoot
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O $bin
install $bin /usr/local/bin
cd $workingDirectory
rm -rf $contextRoot
homeDir=$(sudo -u $1 bash -c 'realpath ~')
sudo -u $1 mkdir -p $homeDir/.omp
sudo -u $1 cp $homeDir/Nextcloud/.omp/manuel.omp.json $homeDir/.omp/manuel.omp.json
echo 'eval "$(oh-my-posh init bash --config ~/.omp/manuel.omp.json)"' \
| sudo -u $1 tee -a $homeDir/.bashrc
fi

View file

@ -0,0 +1,10 @@
#!/bin/bash
curl https://pyenv.run | bash
{
echo ""
echo "# pyenv"
echo 'export PYENV_ROOT="$HOME/.pyenv"'
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"'
echo 'eval "$(pyenv init -)"'
echo 'eval "$(pyenv virtualenv-init -)"'
} >> ~/.bashrc

View file

@ -0,0 +1,9 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
apt install -y python3 python-is-python3 python3-pip
pip install pipenv
fi

View file

@ -0,0 +1,16 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg \
| gpg --dearmor \
| dd of=/usr/share/keyrings/vscodium-archive-keyring.gpg
echo 'deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ] https://download.vscodium.com/debs vscodium main' \
| tee /etc/apt/sources.list.d/vscodium.list
apt update
apt install -y codium
fi

View file

@ -0,0 +1,2 @@
#!/bin/bash
sudo apt install -y swtpm swtpm-tools libvirt-daemon-system virt-manager

View file

@ -0,0 +1,22 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
apt install -y wget gpg
keyFile=$(mktemp)
wget -qO- https://packages.microsoft.com/keys/microsoft.asc \
| gpg --dearmor > $keyFile
install -D -o root -g root -m 644 $keyFile /etc/apt/keyrings/packages.microsoft.gpg
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" \
| tee /etc/apt/sources.list.d/vscode.list
rm -f $keyFile
apt update
apt install -y code
fi

View file

@ -0,0 +1,24 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
workingDirectory=$(pwd)
contextRoot=$(mktemp -d)
cd $contextRoot
# Preview from docker container
# container_id="$(docker create woodpeckerci/woodpecker-cli:next)"
# docker cp $container_id:/bin/woodpecker-cli /usr/local/bin/woodpecker-cli
# Latest from GitHub
wget https://github.com/woodpecker-ci/woodpecker/releases/download/v0.15.5/woodpecker-cli_linux_amd64.tar.gz \
-O woodpecker-cli.tar.gz
tar -xvzf woodpecker-cli.tar.gz
install woodpecker-cli /usr/local/bin
cd $workingDirectory
rm -rf $contextRoot
fi

View file

@ -0,0 +1,8 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
apt install -y screen steam vim docker.io docker-compose
fi

View file

@ -0,0 +1,19 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE" "$USER"
else
package=$(mktemp)
wget https://github.com/Yash-Handa/logo-ls/releases/download/v1.3.7/logo-ls_amd64.deb -O $package
dpkg -i $package
rm -f $package
homeDir=$(sudo -u $1 bash -c 'realpath ~')
{
echo "alias ls='logo-ls -D'"
echo "alias ll='ls -al'"
echo "alias l='ls'"
} | sudo -u $1 tee -a $homeDir/.bashrc
fi

View file

@ -0,0 +1,13 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
package=$(mktemp)
wget https://github.com/rclone/rclone/releases/download/v1.60.0/rclone-v1.60.0-linux-amd64.deb -O $package
dpkg -i $package
rm -f $package
cp ${BASH_SOURCE%/*}/rclone@.service /etc/systemd/user
fi

View file

@ -0,0 +1,24 @@
[Unit]
Description=rclone: Remote FUSE filesystem for cloud storage config %i
Documentation=man:rclone(1)
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
Environment="EXPRESSION=%i"
ExecStart= \
bash -c ' \
target="${EXPRESSION%%":"*}"; \
dirname="${EXPRESSION#*":"}"; \
mkdir -p "%h/$dirname"; \
mkdir -p /tmp/rclone; \
/usr/bin/rclone mount \
--config=%h/.config/rclone/rclone.conf \
--vfs-cache-mode full \
--log-file /tmp/rclone/$target.log \
$target: "%h/$dirname"'
ExecStop=bash -c '/bin/fusermount -zu "%h/${EXPRESSION#*":"}"'
[Install]
WantedBy=default.target

16
scripts/Software/tea/install.sh Executable file
View file

@ -0,0 +1,16 @@
#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
sudo bash "$BASH_SOURCE"
else
workingDirectory=$(pwd)
contextRoot=$(mktemp -d)
cd $contextRoot
wget https://dl.gitea.io/tea/0.9.0/tea-0.9.0-linux-amd64 -O tea
install tea /usr/local/bin
cd $workingDirectory
rm -rf $contextRoot
fi