Move sdist/ID to sdata/dist-ID

This commit is contained in:
clsty
2025-10-26 21:27:41 +08:00
parent c13ba5f25e
commit 5a846cdec5
66 changed files with 73 additions and 74 deletions
+3
View File
@@ -0,0 +1,3 @@
/*/*.tar.*
/*/pkg/
/*/src/
+20
View File
@@ -0,0 +1,20 @@
# Install scripts for Arch Linux
- See also [Install scripts | illogical-impulse](https://ii.clsty.link/en/dev/inst-script/)
## Old Dependency Installation Method
The old deps install method mainly involved `./sdata/dependencies.conf` (which has been removed now).
## Current Dependency Installation
Local PKGBUILDs under `./sdata/dist-arch/` are used to install dependencies.
The mechanism is introduced by [Makrennel](https://github.com/Makrennel) in [PR#570](https://github.com/end-4/dots-hyprland/pull/570).
Why is this awesome?
- It makes it possible to control version since some packages may involve breaking changes from time to time.
- It makes the dependency trackable for package manager, so that you always know why you have installed some package.
- As a result, it enables a workable `uninstall.sh` script.
The PKGBUILDs contains two forms of dependencies:
- Package name written in dependencies, like a "meta" package.
- Normal PKGBUILD content to build dependencies, e.g. AGS, which is often for version controlling.
@@ -0,0 +1,14 @@
pkgname=illogical-impulse-audio
pkgver=1.0
pkgrel=1
pkgdesc='Illogical Impulse Audio Dependencies'
arch=(any)
license=(None)
depends=(
cava
pavucontrol-qt
wireplumber
libdbusmenu-gtk3
playerctl
)
@@ -0,0 +1,12 @@
pkgname=illogical-impulse-backlight
pkgver=1.0
pkgrel=1
pkgdesc='Illogical Impulse Backlight Dependencies'
arch=(any)
license=(None)
depends=(
geoclue
brightnessctl
ddcutil
)
@@ -0,0 +1,20 @@
pkgname=illogical-impulse-basic
pkgver=1.0
pkgrel=1
pkgdesc='Illogical Impulse Basic Dependencies'
arch=(any)
license=(None)
depends=(
axel
bc
coreutils
cliphist
cmake
curl
rsync
wget
ripgrep
jq
meson
xdg-user-dirs
)
@@ -0,0 +1,17 @@
pkgname=illogical-impulse-bibata-modern-classic-bin
pkgver=2.0.6
pkgrel=1
pkgdesc="Material Based Cursor Theme, installed for illogical-impulse dotfiles"
arch=('any')
url="https://github.com/ful1e5/Bibata_Cursor"
license=('GPL-3.0-or-later')
conflicts=("bibata-cursor-theme" "bibata-cursor-theme-bin")
options=('!strip')
_variant=Bibata-Modern-Classic
source=("${pkgname%-bin}-$pkgver.tar.xz::$url/releases/download/v$pkgver/$_variant.tar.xz")
sha256sums=('SKIP')
package() {
install -dm755 "$pkgdir/usr/share/icons"
cp -dr --no-preserve=mode $_variant "$pkgdir/usr/share/icons"
}
@@ -0,0 +1,25 @@
pkgname=illogical-impulse-fonts-themes
pkgver=1.0
pkgrel=2
pkgdesc='Illogical Impulse Fonts and Theming Dependencies'
arch=(any)
license=(None)
depends=(
adw-gtk-theme-git
breeze
breeze-plus
darkly-bin
eza
fish
fontconfig
kitty
matugen-bin
otf-space-grotesk
starship
ttf-gabarito-git
ttf-jetbrains-mono-nerd
ttf-material-symbols-variable-git
ttf-readex-pro
ttf-rubik-vf
ttf-twemoji
)
@@ -0,0 +1,21 @@
pkgname=illogical-impulse-hyprland
pkgver=1.0
pkgrel=1
pkgdesc='Illogical Impulse Hyprland relatated packages'
arch=(any)
license=(None)
depends=(
hypridle
hyprcursor
hyprland
hyprland-qtutils
hyprland-qt-support
hyprlang
hyprlock
hyprpicker
hyprsunset
hyprutils
hyprwayland-scanner
xdg-desktop-portal-hyprland
wl-clipboard
)
@@ -0,0 +1,15 @@
pkgname=illogical-impulse-kde
pkgver=1.0
pkgrel=2
pkgdesc='Illogical Impulse KDE Dependencies'
arch=(any)
license=(None)
depends=(
bluedevil
gnome-keyring
networkmanager
plasma-nm
polkit-kde-agent
dolphin
systemsettings
)
@@ -0,0 +1 @@
/MicroTeX/
@@ -0,0 +1,42 @@
pkgname=illogical-impulse-microtex-git
_pkgname=MicroTeX
pkgver=r494.0e3707f
pkgrel=2
pkgdesc='MicroTeX for illogical-impulse dotfiles.'
#pkgdesc="A dynamic, cross-platform, and embeddable LaTeX rendering library"
arch=("x86_64")
url="https://github.com/NanoMichael/${_pkgname}"
license=('MIT')
depends=(
tinyxml2
gtkmm3
gtksourceviewmm
cairomm
)
makedepends=("git" "cmake")
source=("git+${url}.git")
sha256sums=("SKIP")
pkgver() {
cd $_pkgname
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
prepare() {
cd $_pkgname
sed -i 's/gtksourceviewmm-3.0/gtksourceviewmm-4.0/' CMakeLists.txt
sed -i 's/tinyxml2.so.10/tinyxml2.so.11/' CMakeLists.txt
}
build() {
cd $_pkgname
cmake -B build -S . -DCMAKE_BUILD_TYPE=None
cmake --build build
}
package() {
cd $_pkgname
install -Dm0755 -t "$pkgdir/opt/$_pkgname/" build/LaTeX
cp -r build/res "$pkgdir/opt/$_pkgname/"
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" LICENSE
}
@@ -0,0 +1 @@
/OneUI4-Icons/
@@ -0,0 +1,24 @@
pkgname=illogical-impulse-oneui4-icons-git
_pkgname=OneUI4-Icons
pkgver=r70.55eada4
pkgrel=1
pkgdesc="A fork of mjkim0727/OneUI4-Icons for illogical-impulse dotfiles."
arch=('x86_64')
url="https://github.com/end-4/OneUI4-Icons"
license=('GPL3')
source=("git+${url}.git")
sha256sums=('SKIP')
options=('!strip')
pkgver(){
cd $srcdir/$_pkgname
printf 'r%s.%s' "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
package() {
cd $srcdir/$_pkgname
install -dm755 "$pkgdir/usr/share/icons"
for _i in OneUI{,-dark,-light}; do
cp -dr --no-preserve=mode "$_i" "$pkgdir/usr/share/icons/$_i"
done
}
@@ -0,0 +1,13 @@
pkgname=illogical-impulse-portal
pkgver=1.0
pkgrel=2
pkgdesc='Illogical Impulse XDG Desktop Portals'
arch=(any)
license=(None)
depends=(
xdg-desktop-portal
xdg-desktop-portal-kde
xdg-desktop-portal-gtk
xdg-desktop-portal-hyprland
)
@@ -0,0 +1,16 @@
pkgname=illogical-impulse-python
pkgver=1.1
pkgrel=4
pkgdesc='Illogical Impulse Python Dependencies'
arch=(any)
license=(None)
depends=(
clang
uv
gtk4
libadwaita
libsoup3
libportal-gtk4
gobject-introspection
sassc
)
@@ -0,0 +1,73 @@
_commit='3e2ce40b18af943f9ba370ed73565e9f487663ef'
# Useful links:
# https://git.outfoxxed.me/quickshell/quickshell/commits/branch/master
# https://aur.archlinux.org/packages/quickshell-git
_prefix='illogical-impulse'
conflicts=("quickshell-git")
_pkgname=quickshell
pkgname="$_prefix-$_pkgname-git"
pkgver=0.1.0.r1
pkgrel=2
pkgdesc="$_pkgname-git which version pinned for $_prefix"
arch=(x86_64 aarch64)
url='https://git.outfoxxed.me/quickshell/quickshell'
options=(!strip)
license=('LGPL-3.0-only')
depends=(
'qt6-declarative'
'qt6-base'
'jemalloc'
'qt6-svg'
'libpipewire'
'libxcb'
'wayland'
'libdrm'
'mesa'
'google-breakpad'
)
makedepends=(
'spirv-tools'
'qt6-shadertools'
'wayland'
'wayland-protocols'
'cli11'
'ninja'
'cmake'
'git'
)
provides=("$_pkgname")
conflicts=("$_pkgname")
_pkgsrc="$_pkgname"
source=("$_pkgsrc::git+$url.git#commit=$_commit"
quickshell-check.hook)
sha256sums=('SKIP'
'8543e21aeaaa5441b73a679160e7601a957f16c433e8d6bd9257e80bd0e94083')
pkgver() {
cd "$_pkgsrc"
git describe --long --tags --abbrev=7 --exclude='*[a-zA-Z][a-zA-Z]*' \
| sed -E 's/^[^0-9]*//;s/([^-]*-g)/r\1/;s/-/./g'
}
build() {
cd "$_pkgname"
cmake -GNinja -B build \
-DCMAKE_BUILD_TYPE="RelWithDebInfo" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DDISTRIBUTOR="AUR (package: quickshell-git)" \
-DDISTRIBUTOR_DEBUGINFO_AVAILABLE=NO \
-DINSTALL_QML_PREFIX=lib/qt6/qml
cmake --build build
}
package() {
install -Dm644 "quickshell-check.hook" -t "$pkgdir/usr/share/libalpm/hooks"
cd "$_pkgname"
DESTDIR="$pkgdir" cmake --install build
install -Dm644 "LICENSE" -t "$pkgdir/usr/share/licenses/$_pkgname"
}
@@ -0,0 +1,10 @@
[Trigger]
Operation = Upgrade
Operation = Install
Type = Package
Target = qt6-base
Target = qt6-wayland
[Action]
Description = Querying Quickshell compatibility after Qt6 update...
When = PostTransaction
Exec = /usr/bin/quickshell --private-check-compat
@@ -0,0 +1,14 @@
pkgname=illogical-impulse-screencapture
pkgver=1.0
pkgrel=1
pkgdesc='Illogical Impulse Screenshot and Recording Dependencies'
arch=(any)
license=(None)
depends=(
hyprshot
slurp
swappy
tesseract
tesseract-data-eng
wf-recorder
)
@@ -0,0 +1,27 @@
pkgname=illogical-impulse-toolkit
pkgver=1.0
pkgrel=1
pkgdesc='Illogical Impulse GTK/Qt Dependencies'
arch=(any)
license=(None)
depends=(
kdialog
qt6-5compat
qt6-avif-image-plugin
qt6-base
qt6-declarative
qt6-imageformats
qt6-multimedia
qt6-positioning
qt6-quicktimeline
qt6-sensors
qt6-svg
qt6-tools
qt6-translations
qt6-virtualkeyboard
qt6-wayland
syntax-highlighting
upower
wtype
ydotool
)
@@ -0,0 +1,18 @@
pkgname=illogical-impulse-widgets
pkgver=1.0
pkgrel=4
pkgdesc='Illogical Impulse Widget Dependencies'
arch=(any)
license=(None)
depends=(
fuzzel
glib2 # for `gsettings` it seems?
imagemagick
hypridle
hyprutils
hyprlock
hyprpicker
nm-connection-editor
translate-shell
wlogout
)
+110
View File
@@ -0,0 +1,110 @@
# This script is meant to be sourced.
# It's not for directly running.
install-yay(){
x sudo pacman -S --needed --noconfirm base-devel
x git clone https://aur.archlinux.org/yay-bin.git /tmp/buildyay
x cd /tmp/buildyay
x makepkg -o
x makepkg -se
x makepkg -i --noconfirm
x cd ${REPO_ROOT}
rm -rf /tmp/buildyay
}
# NOTE: `handle-deprecated-dependencies` was for the old days when we just switch from dependencies.conf to local PKGBUILDs.
# However, let's just keep it as references for other distros writing their `sdata/dist-<DISTRO_ID>/install-deps.sh`, if they need it.
handle-deprecated-dependencies(){
printf "${STY_CYAN}[$0]: Removing deprecated dependencies:${STY_RST}\n"
for i in illogical-impulse-{microtex,pymyc-aur} {quickshell,hyprutils,hyprpicker,hyprlang,hypridle,hyprland-qt-support,hyprland-qtutils,hyprlock,xdg-desktop-portal-hyprland,hyprcursor,hyprwayland-scanner,hyprland}-git;do try sudo pacman --noconfirm -Rdd $i;done
# Convert old dependencies to non explicit dependencies so that they can be orphaned if not in meta packages
remove_bashcomments_emptylines ./sdata/dist-arch/previous_dependencies.conf ./cache/old_deps_stripped.conf
readarray -t old_deps_list < ./cache/old_deps_stripped.conf
pacman -Qeq > ./cache/pacman_explicit_packages
readarray -t explicitly_installed < ./cache/pacman_explicit_packages
echo "Attempting to set previously explicitly installed deps as implicit..."
for i in "${explicitly_installed[@]}"; do for j in "${old_deps_list[@]}"; do
[ "$i" = "$j" ] && yay -D --asdeps "$i"
done; done
return 0
}
#####################################################################################
if ! command -v pacman >/dev/null 2>&1; then
printf "${STY_RED}[$0]: pacman not found, it seems that the system is not ArchLinux or Arch-based distros. Aborting...${STY_RST}\n"
exit 1
fi
# Issue #363
case $SKIP_SYSUPDATE in
true) sleep 0;;
*) v sudo pacman -Syu;;
esac
# Use yay. Because paru does not support cleanbuild.
# Also see https://wiki.hyprland.org/FAQ/#how-do-i-update
if ! command -v yay >/dev/null 2>&1;then
echo -e "${STY_YELLOW}[$0]: \"yay\" not found.${STY_RST}"
showfun install-yay
v install-yay
fi
showfun handle-deprecated-dependencies
v handle-deprecated-dependencies
# https://github.com/end-4/dots-hyprland/issues/581
# yay -Bi is kinda hit or miss, instead cd into the relevant directory and manually source and install deps
install-local-pkgbuild() {
local location=$1
local installflags=$2
x pushd $location
source ./PKGBUILD
x yay -S --sudoloop $installflags --asdeps "${depends[@]}"
# man makepkg:
# -A, --ignorearch: Ignore a missing or incomplete arch field in the build script.
# -s, --syncdeps: Install missing dependencies using pacman. When build-time or run-time dependencies are not found, pacman will try to resolve them.
# -f, --force: build a package even if it already exists in the PKGDEST
# -i, --install: Install or upgrade the package after a successful build using pacman(8).
# In https://github.com/end-4/dots-hyprland/issues/823#issuecomment-3394774645 it's suggested to use `sudo pacman -U --noconfirm *.pkg.tar.zst` instead of `makepkg -i`, however it's possible that multiple *.pkg.tar.zst exist, which makes this command not reliable.
x makepkg -Afsi --noconfirm
x popd
}
# Install core dependencies from the meta-packages
metapkgs=(./sdata/dist-arch/illogical-impulse-{audio,backlight,basic,fonts-themes,kde,portal,python,screencapture,toolkit,widgets})
metapkgs+=(./sdata/dist-arch/illogical-impulse-hyprland)
metapkgs+=(./sdata/dist-arch/illogical-impulse-microtex-git)
metapkgs+=(./sdata/dist-arch/illogical-impulse-quickshell-git)
# metapkgs+=(./sdata/dist-arch/packages/illogical-impulse-oneui4-icons-git)
[[ -f /usr/share/icons/Bibata-Modern-Classic/index.theme ]] || \
metapkgs+=(./sdata/dist-arch/illogical-impulse-bibata-modern-classic-bin)
for i in "${metapkgs[@]}"; do
metainstallflags="--needed"
$ask && showfun install-local-pkgbuild || metainstallflags="$metainstallflags --noconfirm"
v install-local-pkgbuild "$i" "$metainstallflags"
done
## Optional dependencies
if pacman -Qs ^plasma-browser-integration$ ;then SKIP_PLASMAINTG=true;fi
case $SKIP_PLASMAINTG in
true) sleep 0;;
*)
if $ask;then
echo -e "${STY_YELLOW}[$0]: NOTE: The size of \"plasma-browser-integration\" is about 600 MiB.${STY_RST}"
echo -e "${STY_YELLOW}It is needed if you want playtime of media in Firefox to be shown on the music controls widget.${STY_RST}"
echo -e "${STY_YELLOW}Install it? [y/N]${STY_RST}"
read -p "====> " p
else
p=y
fi
case $p in
y) x sudo pacman -S --needed --noconfirm plasma-browser-integration ;;
*) echo "Ok, won't install"
esac
;;
esac
+15
View File
@@ -0,0 +1,15 @@
# This script is meant to be sourced.
# It's not for directly running.
#####################################################################################
# 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
v sudo usermod -aG video,i2c,input "$(whoami)"
v bash -c "echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf"
v systemctl --user enable ydotool --now
v sudo systemctl enable bluetooth --now
v gsettings set org.gnome.desktop.interface font-name 'Rubik 11'
v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly
+1
View File
@@ -0,0 +1 @@
AUTO
@@ -0,0 +1,79 @@
### This file contains a list of dependencies which were previously explicitly installed that are now installed using meta packages
### Must be one package per line as it needs to be compared against the explicitly installed list from pacman
illogical-impulse-ags
archlinux-xdg-menu
axel
bc
coreutils
cliphist
cmake
curl
fuzzel
rsync
wget
ripgrep
gojq
npm
meson
typescript
gjs
xdg-user-dirs
tinyxml2
gtkmm3
gtksourceviewmm
cairomm
python-build
python-pillow
python-pywal
python-setuptools-scm
python-wheel
xdg-desktop-portal
xdg-desktop-portal-gtk
xdg-desktop-portal-hyprland-git
pavucontrol
wireplumber
libdbusmenu-gtk3
playerctl
swww
webp-pixbuf-loader
gtk-layer-shell
gtk3
gtksourceview3
gobject-introspection
upower
yad
ydotool
xdg-user-dirs-gtk
polkit-gnome
gnome-keyring
gnome-control-center
blueberry
gammastep
gnome-bluetooth-3.0
brightnessctl
ddcutil
dart-sass
python-pywayland
python-psutil
hypridle-git
hyprlock-git
wlogout
wl-clipboard
hyprpicker-git
adw-gtk3-git
qt5ct
qt5-wayland
fontconfig
ttf-readex-pro
ttf-jetbrains-mono-nerd
ttf-material-symbols-variable-git
ttf-space-mono-nerd
fish
foot
starship
swappy
wf-recorder
grim
tesseract
tesseract-data-eng
slurp