diff --git a/setup/modules/core-packages.sh b/setup/modules/core-packages.sh index 9879c86..243ee50 100644 --- a/setup/modules/core-packages.sh +++ b/setup/modules/core-packages.sh @@ -127,8 +127,11 @@ CORE_PACKAGES=( ripgrep # Fast recursive grep replacement (rg command) rsync # Efficient file sync over SSH or locally ruby-pkg-config # Ruby gem build helper — needed by some AUR packages - rust # Rust compiler (also installed via rustup for toolchain mgmt) - rustup # Rust toolchain manager — switches stable/nightly/beta + # NOTE: do NOT add the `rust` package here — it conflicts with `rustup` (both + # provide cargo/rustc), and pacman --noconfirm cannot resolve the conflict, so + # it aborts the ENTIRE core-packages transaction. We use rustup exclusively + # (`rustup default stable` in package-managers/shell-setup/DE modules). + rustup # Rust toolchain manager — provides rustc/cargo via toolchains # ── System monitoring & debugging ──────────────────────────────────────── smartmontools # S.M.A.R.T. disk health monitoring (smartctl) diff --git a/setup/modules/core.sh b/setup/modules/core.sh index 690a240..1a18d06 100644 --- a/setup/modules/core.sh +++ b/setup/modules/core.sh @@ -49,6 +49,12 @@ enable_service cronie.service # and optionally auto-login settings. # -f flag forces overwrite of any existing config. log "Deploying greetd config..." +# greetd may not be installed yet at this point (the DE module pulls in +# greetd-tuigreet later), so /etc/greetd does not exist and the cp would fail — +# aborting the module under `set -e` before fail2ban/udisks2 get enabled. Create +# the directory first so the config is staged regardless; greetd reads it once +# installed. enable_service is already non-fatal if the unit is absent. +sudo mkdir -p /etc/greetd sudo cp -f ~/Dotfiles/desktopenvs/hyprland/greetd-tuigreet/config.toml /etc/greetd/config.toml enable_service greetd.service