Refactor directory structure
This commit is contained in:
parent
7cc0136bec
commit
0d88f63cfa
39 changed files with 98 additions and 95 deletions
scripts/Software
Brave
Godot
Google Chrome
Java
JetBrains
Node.js
Oh My Posh
Python
VSCodium
Virtual Machine Manager
Visual Studio Code
Woodpecker CLI
common-apt
logo-ls
rclone
tea
19
scripts/Software/Brave/install-beta.sh
Executable file
19
scripts/Software/Brave/install-beta.sh
Executable 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
|
50
scripts/Software/Brave/install-extensions.sh
Executable file
50
scripts/Software/Brave/install-extensions.sh
Executable 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
|
19
scripts/Software/Brave/install-nightly.sh
Executable file
19
scripts/Software/Brave/install-nightly.sh
Executable 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
|
16
scripts/Software/Brave/install-stable.sh
Executable file
16
scripts/Software/Brave/install-stable.sh
Executable 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
|
36
scripts/Software/Godot/install.sh
Executable file
36
scripts/Software/Godot/install.sh
Executable 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
|
15
scripts/Software/Google Chrome/install.sh
Executable file
15
scripts/Software/Google Chrome/install.sh
Executable 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
|
21
scripts/Software/Java/install.sh
Executable file
21
scripts/Software/Java/install.sh
Executable 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
|
25
scripts/Software/JetBrains/install-toolbox.sh
Executable file
25
scripts/Software/JetBrains/install-toolbox.sh
Executable 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
|
4
scripts/Software/Node.js/install.sh
Executable file
4
scripts/Software/Node.js/install.sh
Executable 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
|
25
scripts/Software/Oh My Posh/install.sh
Executable file
25
scripts/Software/Oh My Posh/install.sh
Executable 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
|
10
scripts/Software/Python/pyenv.sh
Executable file
10
scripts/Software/Python/pyenv.sh
Executable 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
|
9
scripts/Software/Python/setup.sh
Executable file
9
scripts/Software/Python/setup.sh
Executable 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
|
16
scripts/Software/VSCodium/install.sh
Executable file
16
scripts/Software/VSCodium/install.sh
Executable 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
|
2
scripts/Software/Virtual Machine Manager/install.sh
Executable file
2
scripts/Software/Virtual Machine Manager/install.sh
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
sudo apt install -y swtpm swtpm-tools libvirt-daemon-system virt-manager
|
22
scripts/Software/Visual Studio Code/install.sh
Executable file
22
scripts/Software/Visual Studio Code/install.sh
Executable 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
|
24
scripts/Software/Woodpecker CLI/install.sh
Executable file
24
scripts/Software/Woodpecker CLI/install.sh
Executable 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
|
8
scripts/Software/common-apt/install.sh
Executable file
8
scripts/Software/common-apt/install.sh
Executable 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
|
19
scripts/Software/logo-ls/install.sh
Executable file
19
scripts/Software/logo-ls/install.sh
Executable 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
|
13
scripts/Software/rclone/install.sh
Executable file
13
scripts/Software/rclone/install.sh
Executable 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
|
24
scripts/Software/rclone/rclone@.service
Normal file
24
scripts/Software/rclone/rclone@.service
Normal 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
16
scripts/Software/tea/install.sh
Executable 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
|
Loading…
Add table
Add a link
Reference in a new issue