diff --git a/airootfs/root/customize_airootfs.sh b/airootfs/root/customize_airootfs.sh index 8ddb6a7..9ca5f60 100644 --- a/airootfs/root/customize_airootfs.sh +++ b/airootfs/root/customize_airootfs.sh @@ -1,4 +1,6 @@ #!/usr/bin/env bash +set -euo pipefail + # Populate the keyring in the built root from the keyring bundles # (/usr/share/pacman/keyrings, incl. the copied cachyos keyring). # This mirrors the guide; it runs inside the image you are making. @@ -10,4 +12,63 @@ pacman-key --populate archlinux cachyos chaotic # 'pacman' package, which ships a stock /etc/pacman.conf and would otherwise # overwrite this directory's configured version. install -m 0644 /root/.live-pacman.conf /etc/pacman.conf -rm -f /root/.live-pacman.conf \ No newline at end of file +rm -f /root/.live-pacman.conf + +# ============================================================================ +# Pre-install dotfile dependencies into /etc/skel so new users get them +# instantly on first login (no network required). +# ============================================================================ + +SKEL="/etc/skel" + +# ── Oh-My-Zsh ──────────────────────────────────────────────────────────────── +if [[ ! -d "${SKEL}/.oh-my-zsh" ]]; then + echo "[customize] Cloning Oh-My-Zsh into skel..." + git clone --depth=1 https://github.com/ohmyzsh/ohmyzsh.git "${SKEL}/.oh-my-zsh" +fi + +# Oh-My-Zsh custom plugins +ZSH_CUSTOM="${SKEL}/.oh-my-zsh/custom" +mkdir -p "${ZSH_CUSTOM}/plugins" + +declare -A OMZ_PLUGINS=( + [zsh-history-substring-search]="https://github.com/zsh-users/zsh-history-substring-search.git" + [zsh-autosuggestions]="https://github.com/zsh-users/zsh-autosuggestions.git" + [zsh-eza]="https://github.com/z-shell/zsh-eza.git" + [fzf-zsh-plugin]="https://github.com/unixorn/fzf-zsh-plugin.git" + [zsh-syntax-highlighting]="https://github.com/zsh-users/zsh-syntax-highlighting.git" + [zsh-autocomplete]="https://github.com/marlonrichert/zsh-autocomplete.git" +) + +for plugin in "${!OMZ_PLUGINS[@]}"; do + target="${ZSH_CUSTOM}/plugins/${plugin}" + if [[ ! -d "${target}" ]]; then + echo "[customize] Cloning OMZ plugin: ${plugin}" + git clone --depth=1 "${OMZ_PLUGINS[${plugin}]}" "${target}" + fi +done + +# ── LazyVim (lazy.nvim bootstraps on first launch, but pre-clone the plugin) ─ +NVIM_DATA="${SKEL}/.local/share/nvim" +mkdir -p "${NVIM_DATA}" +if [[ ! -d "${NVIM_DATA}/lazy/lazy.nvim" ]]; then + echo "[customize] Pre-cloning lazy.nvim for LazyVim..." + git clone --filter=blob:none --branch=stable \ + https://github.com/folke/lazy.nvim.git "${NVIM_DATA}/lazy/lazy.nvim" +fi + +# ── Fish: ensure default shell is set for the live user ────────────────────── +# The live user (usually 'archlinux' or 'root') gets fish as default shell +if command -v fish &>/dev/null; then + echo "[customize] Setting fish as default shell for skel..." + chsh -s /usr/bin/fish root 2>/dev/null || true +fi + +# ── Ensure skel directories have correct permissions ───────────────────────── +chmod 700 "${SKEL}/.config" 2>/dev/null || true +find "${SKEL}/.config" -type f -exec chmod 644 {} \; 2>/dev/null || true +find "${SKEL}/.config" -type d -exec chmod 755 {} \; 2>/dev/null || true +find "${SKEL}/.config" -name '*.sh' -exec chmod 755 {} \; 2>/dev/null || true +find "${SKEL}/.local" -type d -exec chmod 755 {} \; 2>/dev/null || true + +echo "[customize] Dotfile pre-installation complete." \ No newline at end of file diff --git a/localrepo/end4-pkgbuilds/bibata-modern-classic-bin/PKGBUILD b/localrepo/end4-pkgbuilds/bibata-modern-classic-bin/PKGBUILD new file mode 100644 index 0000000..0c32776 --- /dev/null +++ b/localrepo/end4-pkgbuilds/bibata-modern-classic-bin/PKGBUILD @@ -0,0 +1,18 @@ +groups=(illogical-impulse) +pkgname=illogical-impulse-bibata-modern-classic-bin +pkgver=2.0.6 +pkgrel=2 +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" +} diff --git a/localrepo/end4-pkgbuilds/microtex-git/PKGBUILD b/localrepo/end4-pkgbuilds/microtex-git/PKGBUILD new file mode 100644 index 0000000..b8bb738 --- /dev/null +++ b/localrepo/end4-pkgbuilds/microtex-git/PKGBUILD @@ -0,0 +1,39 @@ +groups=(illogical-impulse) +pkgname=illogical-impulse-microtex-git +_pkgname=MicroTeX +pkgver=r494.0e3707f +pkgrel=4 +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}" +url="https://github.com/end-4/${_pkgname}" +license=('MIT') +depends=( + tinyxml2 + gtkmm3 + gtksourceviewmm + cairomm +) +makedepends=("git" "cmake") +source=("git+${url}.git") +sha256sums=("SKIP") + +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 +} diff --git a/localrepo/end4-pkgbuilds/quickshell-git/PKGBUILD b/localrepo/end4-pkgbuilds/quickshell-git/PKGBUILD new file mode 100644 index 0000000..3d6e83a --- /dev/null +++ b/localrepo/end4-pkgbuilds/quickshell-git/PKGBUILD @@ -0,0 +1,82 @@ +_commit='7511545ee20664e3b8b8d3322c0ffe7567c56f7a' +# Useful links: +# https://git.outfoxxed.me/quickshell/quickshell/commits/branch/master +# https://aur.archlinux.org/packages/quickshell-git + +groups=(illogical-impulse) +_prefix='illogical-impulse' +_pkgname=quickshell +pkgname="$_prefix-$_pkgname-git" +pkgver=0.1.0.r1 +pkgrel=8 +pkgdesc="$_pkgname-git pinned commit and extra deps for $_prefix" +arch=(x86_64 aarch64) +url='https://git.outfoxxed.me/quickshell/quickshell' +options=(!strip) +license=('LGPL-3.0-only') +depends=( + 'cpptrace' + 'jemalloc' + 'mesa' + 'qt6-declarative' + 'qt6-base' + 'qt6-svg' + 'libdrm' + 'libpipewire' + 'libxcb' + 'wayland' + # NOTE: Below are custom dependencies of illogical-impulse + qt6-5compat + qt6-avif-image-plugin + qt6-imageformats + qt6-multimedia + qt6-positioning + qt6-quicktimeline + qt6-sensors + qt6-svg + qt6-tools + qt6-translations + qt6-virtualkeyboard + qt6-wayland + kirigami + kdialog + syntax-highlighting +) +makedepends=( + 'cli11' + 'cmake' + 'git' + 'ninja' + 'qt6-shadertools' + 'spirv-tools' + 'vulkan-headers' + 'wayland' + 'wayland-protocols' +) +provides=("$_pkgname" "$_pkgname-git") +conflicts=("$_pkgname" "$_pkgname-git") + +_pkgsrc="$_pkgname" +source=("$_pkgsrc::git+$url.git#commit=$_commit" + quickshell-check.hook) +sha256sums=('SKIP' + '8543e21aeaaa5441b73a679160e7601a957f16c433e8d6bd9257e80bd0e94083') + +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" +} diff --git a/localrepo/end4-pkgbuilds/quickshell-git/quickshell-check.hook b/localrepo/end4-pkgbuilds/quickshell-git/quickshell-check.hook new file mode 100644 index 0000000..a7a97f7 --- /dev/null +++ b/localrepo/end4-pkgbuilds/quickshell-git/quickshell-check.hook @@ -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 diff --git a/localrepo/illogical-impulse-bibata-modern-classic-bin-2.0.6-2-any.pkg.tar.zst b/localrepo/illogical-impulse-bibata-modern-classic-bin-2.0.6-2-any.pkg.tar.zst new file mode 100644 index 0000000..3a659a1 Binary files /dev/null and b/localrepo/illogical-impulse-bibata-modern-classic-bin-2.0.6-2-any.pkg.tar.zst differ diff --git a/localrepo/illogical-impulse-quickshell-git-0.1.0.r1-8-x86_64.pkg.tar.zst b/localrepo/illogical-impulse-quickshell-git-0.1.0.r1-8-x86_64.pkg.tar.zst new file mode 100644 index 0000000..25e7d99 Binary files /dev/null and b/localrepo/illogical-impulse-quickshell-git-0.1.0.r1-8-x86_64.pkg.tar.zst differ diff --git a/packages.x86_64 b/packages.x86_64 index 62cc741..fc926cf 100644 --- a/packages.x86_64 +++ b/packages.x86_64 @@ -14,19 +14,23 @@ base base-devel bash bat +bc bcachefs-tools bind blueman bluez -bluez-uttils +bluez-utils bolt +brightnessctl brltty btop +bullet btrfs-progs bully cachyos-keyring cachyos-mirrorlist catppuccin-cursors-macchiato +cava celt chaotic-keyring chaotic-mirrorlist @@ -34,6 +38,8 @@ cifs-utils clamav clonezilla cloud-init +cliphist +cmake cmatrix code cowsay @@ -50,6 +56,7 @@ dialog diffutils dmidecode dmraid +ddcutil dnsmasq dolphin-plugins dosfstools @@ -69,6 +76,9 @@ exfatprogs f2fs-tools faac faad2 +fish +flac +fontconfig fastfetch fatresize fcitx5 @@ -93,6 +103,7 @@ fzf ghostty ghostty-terminfo git +geoclue glib2-devel gnome-disk-utility gnome-font-viewer @@ -100,6 +111,7 @@ gnome-online-accounts gnome-power-manager gpart gparted +go-yq gpm gptfdisk grml-zsh-config @@ -120,13 +132,20 @@ hcxtools hdparm htop hyperv +hypridle +hyprlock hyprpolkitagent +hyprpicker +hyprshot +hyprsunset +icu intel-ucode inxi irssi iw iwd jfsutils +jq just kdeconnect kde-inotify-survey @@ -134,6 +153,8 @@ kdenetwork-filesharing kimageformats kio-admin kio-gdrive +kirigami +kitty kitty-terminfo kleopatra kmscon-terminfo @@ -146,6 +167,14 @@ kwalletmanager lazygit ldns less +libass +libdbusmenu-gtk3 +libdecor +libevdev +libportal +libportal-gtk4 +libqalculate +libpipewire lftp libfido2 libfprint @@ -172,10 +201,12 @@ magic-wormhole mako man-db man-pages +matugen mc mdadm memtest86+ memtest86+-efi +meson meshy-git mkinitcpio mkinitcpio-archiso @@ -188,6 +219,7 @@ mplayer mpv-mpris mtools nano +ncurses nbd ndisc6 neofetch @@ -220,6 +252,7 @@ open-vm-tools openvpn os-prober otf-font-awesome +otf-space-grotesk pacman-contrib pacserve pamixer @@ -231,8 +264,11 @@ pcsclite perl-image-exiftool piper pipewire-alsa +pipewire-pulse plasma-browser-integration +playerctl plocate +polkit power-profiles-daemon ppp pptpclient @@ -246,11 +282,24 @@ python-pyquery python-ufonormalizer python-uv python-virtualenv +python-aiohttp +python-packaging qalculate-gtk qemu-full qemu-guest-agent qt5-quickcontrols2 qt6ct +qt6-5compat +qt6-avif-image-plugin +qt6-imageformats +qt6-multimedia +qt6-positioning +qt6-quicktimeline +qt6-sensors +qt6-tools +qt6-translations +qt6-virtualkeyboard +qt6-wayland rclone refind reflector @@ -275,15 +324,18 @@ smartmontools snapd sof-firmware sox +songrec speech-dispatcher squashfs-tools sshfs ssh-import-id +starship steam sudo swaync syncthing syncthingtray-qt6 +syntax-highlighting syslinux systemd-resolvconf tailscale @@ -291,6 +343,8 @@ tcpdump tea terminus-font termshark +tesseract +tesseract-data-eng testdisk texlive-bin thunar @@ -310,7 +364,12 @@ ttf-droid ttf-fantasque-nerd ttf-fira-code ttf-jetbrains-mono +ttf-jetbrains-mono-nerd +ttf-material-symbols-variable-git ttf-ms-fonts +ttf-readex-pro +ttf-rubik-vf +ttf-twemoji ttf-victor-mono tty-clock tumbler @@ -318,6 +377,7 @@ udftools uget umockdev unrar +upower upscayl-bin uriparser usbguard @@ -333,6 +393,7 @@ virt-manager virtualbox-guest-utils-nox vpnc wallust +wayland-protocols wine winetricks wireless-regdb @@ -340,16 +401,20 @@ wireless_tools woeusb-ng wpa_supplicant wvdial +wtype xarchiver xclip xdg-utils +xdg-user-dirs xdotool xfsprogs xl2tpd xwaylandvideobridge yay +ydotool yt-dlp zen-browser-bin +yq zram-generator zsh zsh-completions