Use a locally built RPM instead of directly modifying it.

This commit is contained in:
Elysia
2025-11-08 10:48:23 +08:00
parent 1a58f1258a
commit b08a545ece
12 changed files with 419 additions and 113 deletions
+14 -105
View File
@@ -1,115 +1,24 @@
# This script is meant to be sourced.
# It's not for directly running.
install_Font() {
local FONT_NAME="${FUNCNAME[2]#install_}"
local CACHE_DIR="$REPO_ROOT/cache/${FONT_NAME:-noname}/"
local LOCAL_FONT_DIR="/usr/local/share/fonts/${1^^}/${FONT_NAME:-noname}/"
local LOCAL_FONT_LICENSES_DIR="/usr/local/share/licenses/${FONT_NAME:-noname}/"
local DL_FILE
x mkdir -p "$CACHE_DIR"
x wget --content-disposition -q -N -P "$CACHE_DIR" "$2"
mapfile -t -d '' files < <(find "$CACHE_DIR" -maxdepth 1 -type f -print0)
DL_FILE="${files[0]}"
x wget -q -N -O "$CACHE_DIR/LICENSE" "$3"
x sudo mkdir -p "$LOCAL_FONT_DIR"
x sudo mkdir -p "$LOCAL_FONT_LICENSES_DIR"
x sudo cp "$CACHE_DIR/LICENSE" "$LOCAL_FONT_LICENSES_DIR"
x sudo cp "$CACHE_DIR"/*.$1 "$LOCAL_FONT_DIR"
x fc-cache -fv
# Start building the missing RPM package locally.
install_RPMS() {
rpmbuildroot=${REPO_ROOT}/sdata/dist-fedora
x mkdir $rpmbuildroot/{BUILD,RPMS,SOURCES}
x cd $rpmbuildroot/SPECS
mapfile -t -d '' local_specs < <(find "$rpmbuildroot/SPECS" -maxdepth 1 -type f -name "*.spec" -print0)
for spec_file in ${local_specs[@]}; do
x rpmbuild -bb --define "_topdir $rpmbuildroot" $spec_file
done
mapfile -t -d '' local_rpms < <(find "$rpmbuildroot/RPMS" -maxdepth 2 -type f -name '*.rpm' -not -name '*debug*' -print0)
x sudo dnf install "${local_rpms[@]}" -y
cd ${REPO_ROOT}
}
install_ttf_material_symbols_variable() {
local ttf_material_symbols_variable="https://github.com/google/material-design-icons/raw/refs/heads/master/variablefont/MaterialSymbolsRounded%5BFILL,GRAD,opsz,wght%5D.ttf"
local ttf_material_symbols_variable_license="https://raw.githubusercontent.com/google/material-design-icons/refs/heads/master/LICENSE"
showfun install_Font
x install_Font ttf "$ttf_material_symbols_variable" "$ttf_material_symbols_variable_license"
}
install_JetBrainsMonoNerdFont() {
local JetBrainsMonoNerdFont="https://github.com/Zhaopudark/JetBrainsMonoNerdFonts/releases/download/v1.2/JetBrainsMonoNerdFont-Regular-v1.2.ttf"
local JetBrainsMonoNerdFontLicense="https://raw.githubusercontent.com/JetBrains/JetBrainsMono/refs/heads/master/OFL.txt"
showfun install_Font
x install_Font ttf "$JetBrainsMonoNerdFont" "$JetBrainsMonoNerdFontLicense"
}
install_RobotoFlex() {
local RobotoFlexFont="https://github.com/googlefonts/roboto-flex/raw/refs/heads/main/fonts/RobotoFlex%5BGRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght%5D.ttf"
local RobotoFlexFontLicense="https://github.com/googlefonts/roboto-flex/raw/refs/heads/main/OFL.txt"
showfun install_Font
x install_Font ttf "$RobotoFlexFont" "$RobotoFlexFontLicense"
}
install_SpaceGroteskFont() {
local FONT_NAME="${FUNCNAME[0]#install_}"
local CACHE_DIR="$REPO_ROOT/cache/${FONT_NAME:-noname}/"
local LOCAL_FONT_DIR="/usr/local/share/fonts/OTF/${FONT_NAME:-noname}/"
local LOCAL_FONT_LICENSES_DIR="/usr/local/share/licenses/${FONT_NAME:-noname}/"
local SpaceGroteskFont="https://github.com/floriankarsten/space-grotesk/releases/download/2.0.0/SpaceGrotesk-2.0.0.zip"
x mkdir -p "$CACHE_DIR"
x wget -q -N -P "$CACHE_DIR" "$SpaceGroteskFont"
x unzip -j "$CACHE_DIR/$(basename "$SpaceGroteskFont")" -d "$CACHE_DIR"
x sudo mkdir -p "$LOCAL_FONT_DIR"
x sudo mkdir -p "$LOCAL_FONT_LICENSES_DIR"
x sudo cp "$CACHE_DIR"/SpaceGrotesk*.otf "$LOCAL_FONT_DIR"
x sudo cp "$CACHE_DIR"/OFL.txt "$LOCAL_FONT_LICENSES_DIR"
x fc-cache -fv
x cd "$REPO_ROOT"
}
install_breeze_plus(){
x mkdir -p $REPO_ROOT/cache/breeze-plus
x cd $REPO_ROOT/cache/breeze-plus
try git init -b main
try git remote add origin https://github.com/mjkim0727/breeze-plus.git
x git pull origin main
x sudo mkdir -p /usr/share/icons
x cd ./src
x sudo cp -r breeze-plus-dark /usr/share/icons
x sudo cp -r breeze-plus /usr/share/icons
x cd "$REPO_ROOT"
}
install_Bibata_Modern_Classic() {
local BibataModernClassic="https://github.com/ful1e5/Bibata_Cursor/releases/download/v2.0.7/Bibata-Modern-Classic.tar.xz"
x mkdir -p "$REPO_ROOT/cache/"
x wget -q -N -P "$REPO_ROOT/cache/" "$BibataModernClassic"
x tar -xf "$REPO_ROOT/cache/$(basename "$BibataModernClassic")" -C "$REPO_ROOT/cache/"
x sudo cp -r "$REPO_ROOT/cache/Bibata-Modern-Classic" /usr/share/icons/
}
showfun install_RPMS
v install_RPMS
#####################################################################################
showfun install-MicroTeX
v install-MicroTeX
showfun install_Bibata_Modern_Classic
v install_Bibata_Modern_Classic
showfun install_breeze_plus
v install_breeze_plus
showfun install-Rubik
v install-Rubik
showfun install-Gabarito
v install-Gabarito
showfun install_SpaceGroteskFont
v install_SpaceGroteskFont
showfun install_ttf_material_symbols_variable
v install_ttf_material_symbols_variable
showfun install_RobotoFlex
v install_RobotoFlex
showfun install_JetBrainsMonoNerdFont
v install_JetBrainsMonoNerdFont
v install-uv
# These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies.
showfun install-python-packages
v install-python-packages