mirror of
https://github.com/PancakeTAS/lsfg-vk.git
synced 2026-05-10 11:11:40 +00:00
install.sh: nixos option and various improvements
adds a nixos option with its related special handling, uses mktemp instead of a hardcoded tmp folder, adds a check on fetching remote hash and makes the script generally more talkative on what it is doing/failure
This commit is contained in:
parent
83b869b0c4
commit
67f5e4923b
1 changed files with 28 additions and 13 deletions
41
install.sh
41
install.sh
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
: "${INSTALL_PATH:=$HOME/.local}"
|
: "${INSTALL_PATH:=$HOME/.local}"
|
||||||
BASE_URL='https://pancake.gay/lsfg-vk'
|
BASE_URL='https://pancake.gay/lsfg-vk'
|
||||||
|
NIX_FLAKE_REPO='https://github.com/pabloaul/lsfg-vk-flake'
|
||||||
|
|
||||||
# prompt for distro
|
# prompt for distro
|
||||||
echo "Which version would you like to install?"
|
echo "Which version would you like to install?"
|
||||||
|
|
@ -9,7 +10,8 @@ echo "1) Arch Linux (Artix Linux, CachyOS, Steam Deck, etc.)"
|
||||||
echo "2) Debian"
|
echo "2) Debian"
|
||||||
echo "3) Ubuntu"
|
echo "3) Ubuntu"
|
||||||
echo "4) Fedora"
|
echo "4) Fedora"
|
||||||
printf "Enter the number (1-4): "
|
echo "5) NixOS (external flake project)"
|
||||||
|
printf "Enter the number (1-5): "
|
||||||
read -r version_choice < /dev/tty
|
read -r version_choice < /dev/tty
|
||||||
|
|
||||||
case "$version_choice" in
|
case "$version_choice" in
|
||||||
|
|
@ -17,6 +19,7 @@ case "$version_choice" in
|
||||||
2) DISTRO="debian"; DISTRO_PRETTY="Debian" ;;
|
2) DISTRO="debian"; DISTRO_PRETTY="Debian" ;;
|
||||||
3) DISTRO="ubuntu"; DISTRO_PRETTY="Ubuntu" ;;
|
3) DISTRO="ubuntu"; DISTRO_PRETTY="Ubuntu" ;;
|
||||||
4) DISTRO="fedora"; DISTRO_PRETTY="Fedora" ;;
|
4) DISTRO="fedora"; DISTRO_PRETTY="Fedora" ;;
|
||||||
|
5) DISTRO="nixos"; DISTRO_PRETTY="NixOS"; USE_NIX=true ;;
|
||||||
*) echo "Invalid choice."; exit 1 ;;
|
*) echo "Invalid choice."; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
@ -25,12 +28,18 @@ SHA_NAME="lsfg-vk_${DISTRO}.zip.sha"
|
||||||
SHA_FILE="$INSTALL_PATH/share/lsfg-vk.sha"
|
SHA_FILE="$INSTALL_PATH/share/lsfg-vk.sha"
|
||||||
|
|
||||||
# get local and remote versions
|
# get local and remote versions
|
||||||
REMOTE_HASH=$(curl -fsSL "$BASE_URL/$SHA_NAME")
|
|
||||||
LOCAL_HASH=$(test -f "$SHA_FILE" && cat "$SHA_FILE")
|
LOCAL_HASH=$(test -f "$SHA_FILE" && cat "$SHA_FILE")
|
||||||
|
if [ "$USE_NIX" ]; then
|
||||||
|
command -v nix >/dev/null 2>&1 || { echo "Error: nix command not found."; exit 1; }
|
||||||
|
REMOTE_HASH=$(curl -fsSL "${NIX_FLAKE_REPO/github.com/api.github.com/repos}/releases/latest" | grep '"tag_name"' | cut -d '"' -f 4)
|
||||||
|
else
|
||||||
|
REMOTE_HASH=$(curl -fsSL "$BASE_URL/$SHA_NAME")
|
||||||
|
fi
|
||||||
|
[ -z "$REMOTE_HASH" ] && { echo "Failed to fetch latest release."; exit 1; }
|
||||||
|
|
||||||
if [ "$REMOTE_HASH" != "$LOCAL_HASH" ]; then
|
if [ "$REMOTE_HASH" != "$LOCAL_HASH" ]; then
|
||||||
# prompt user for confirmation
|
# prompt user for confirmation
|
||||||
echo -n "Are you sure you want to install lsfg-vk for ${DISTRO_PRETTY}? (y/n) "
|
echo -n "Are you sure you want to install lsfg-vk ($REMOTE_HASH) for ${DISTRO_PRETTY}? (y/n) "
|
||||||
read -r answer < /dev/tty
|
read -r answer < /dev/tty
|
||||||
|
|
||||||
if [ "$answer" != "y" ]; then
|
if [ "$answer" != "y" ]; then
|
||||||
|
|
@ -38,18 +47,24 @@ if [ "$REMOTE_HASH" != "$LOCAL_HASH" ]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# download lsfg-vk
|
TEMP_DIR=$(mktemp -d) && cd "$TEMP_DIR" || { echo "Failed to create temporary directory."; exit 1; }
|
||||||
curl -fsSL -o "/tmp/$ZIP_NAME" "$BASE_URL/$ZIP_NAME"
|
if [ "$USE_NIX" ]; then
|
||||||
if [ $? -ne 0 ]; then
|
# download, build and install lsfg-vk-flake from GitHub
|
||||||
echo "Failed to download lsfg-vk. Please check your internet connection."
|
curl -fsSL "$NIX_FLAKE_REPO/archive/refs/tags/$REMOTE_HASH.tar.gz" | tar -xz
|
||||||
exit 1
|
|
||||||
fi
|
cd lsfg-vk-flake-* && nix build || { echo "Build failed."; rm -vrf "$TEMP_DIR"; exit 1; }
|
||||||
|
|
||||||
|
install -Dvm644 result/lib/liblsfg-vk.so "$INSTALL_PATH/lib/liblsfg-vk.so"
|
||||||
|
install -Dvm644 result/share/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json "$INSTALL_PATH/share/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json"
|
||||||
|
else
|
||||||
|
# download and install prebuilt lsfg-vk
|
||||||
|
curl -fsSL -o "$TEMP_DIR/$ZIP_NAME" "$BASE_URL/$ZIP_NAME" || { echo "Failed to download lsfg-vk. Please check your internet connection."; rm -vrf "$TEMP_DIR"; exit 1; }
|
||||||
|
|
||||||
|
cd "$INSTALL_PATH" && unzip -o "$TEMP_DIR/$ZIP_NAME" || { echo "Extraction failed. Is install path writable or unzip installed?"; rm -vrf "$TEMP_DIR"; exit 1; }
|
||||||
|
fi
|
||||||
|
rm -vrf "$TEMP_DIR"
|
||||||
|
|
||||||
# install lsfg-vk
|
|
||||||
cd "$INSTALL_PATH" || exit 1
|
|
||||||
unzip -o "/tmp/$ZIP_NAME"
|
|
||||||
echo "$REMOTE_HASH" > "$SHA_FILE"
|
echo "$REMOTE_HASH" > "$SHA_FILE"
|
||||||
rm -v "/tmp/$ZIP_NAME"
|
|
||||||
|
|
||||||
echo "lsfg-vk for ${DISTRO_PRETTY} has been installed."
|
echo "lsfg-vk for ${DISTRO_PRETTY} has been installed."
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue