130 lines
4.0 KiB
Bash
130 lines
4.0 KiB
Bash
#!/bin/bash
|
|
|
|
# services.sh - Configure Essential System Tools and OpenRC
|
|
# Run this inside the chroot after emerging @world
|
|
|
|
# --- Colors for Output ---
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
NC='\033[0m'
|
|
|
|
set -e
|
|
|
|
echo -e "${YELLOW}--- Configuring Essential System Tools and OpenRC ---${NC}"
|
|
|
|
# --- Part 1: Emerge Essential Service Packages ---
|
|
echo -e "${YELLOW}Emerging essential service packages...${NC}"
|
|
|
|
PACKAGES_TO_EMERGE=(
|
|
app-admin/sysklogd
|
|
net-misc/networkmanager
|
|
net-misc/chrony
|
|
net-wireless/bluez
|
|
net-wireless/blueman
|
|
sys-fs/udisks
|
|
sys-process/cronie
|
|
sys-power/power-profiles-daemon
|
|
sys-auth/rtkit
|
|
gui-libs/greetd
|
|
gui-apps/regreet
|
|
gui-libs/display-manager-init
|
|
net-firewall/iptables
|
|
app-backup/snapper
|
|
app-containers/podman
|
|
app-containers/podman-compose
|
|
app-containers/podman-tui
|
|
)
|
|
|
|
if ! emerge --ask --verbose "${PACKAGES_TO_EMERGE[@]}"; then
|
|
echo -e "${RED}Error: Failed to emerge essential service packages.${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}Essential service packages emerged successfully.${NC}"
|
|
|
|
# --- Part 2: Configure greetd as Display Manager ---
|
|
echo -e "${YELLOW}Configuring greetd as display manager...${NC}"
|
|
|
|
# Set greetd in display-manager config
|
|
if [ -f /etc/conf.d/display-manager ]; then
|
|
sed -i 's/^DISPLAYMANAGER=.*/DISPLAYMANAGER="greetd"/' /etc/conf.d/display-manager
|
|
echo -e "${GREEN}Set greetd as display manager${NC}"
|
|
else
|
|
echo -e "${YELLOW}Creating /etc/conf.d/display-manager...${NC}"
|
|
echo 'DISPLAYMANAGER="greetd"' > /etc/conf.d/display-manager
|
|
echo -e "${GREEN}Created display-manager config with greetd${NC}"
|
|
fi
|
|
|
|
# Configure greetd - copy config files from repo
|
|
# NOTE: Run this script from the repo root directory
|
|
echo -e "${YELLOW}Configuring greetd...${NC}"
|
|
cp greetd/config.toml /etc/greetd/config.toml
|
|
cp greetd/regreet.toml /etc/greetd/regreet.toml
|
|
cp greetd/hyprland.conf /etc/greetd/hyprland.conf
|
|
cp greetd/greetd.pam /etc/pam.d/greetd
|
|
|
|
# Create greeter log file with correct permissions
|
|
touch /var/log/hyprland-greeter.log
|
|
chown greetd:greetd /var/log/hyprland-greeter.log
|
|
|
|
# Install user session launcher script
|
|
cp greetd/start-hyprland-dbus /usr/local/bin/start-hyprland-dbus
|
|
chmod +x /usr/local/bin/start-hyprland-dbus
|
|
|
|
# Update Hyprland desktop entry to use our launcher
|
|
if [ -f /usr/share/wayland-sessions/hyprland.desktop ]; then
|
|
sed -i 's|^Exec=.*|Exec=/usr/local/bin/start-hyprland-dbus|' /usr/share/wayland-sessions/hyprland.desktop
|
|
fi
|
|
|
|
echo -e "${GREEN}greetd configured${NC}"
|
|
|
|
# --- Part 3: Add Services to OpenRC Runlevels ---
|
|
echo -e "${YELLOW}Adding services to OpenRC runlevels...${NC}"
|
|
|
|
# NOTE: udisks is D-Bus activated and doesn't need an OpenRC service
|
|
# NOTE: wpa_supplicant is managed by NetworkManager, not added separately
|
|
|
|
# Boot runlevel - essential services needed early
|
|
SERVICES_BOOT=(
|
|
dbus
|
|
elogind
|
|
dmcrypt
|
|
)
|
|
|
|
# Default runlevel - user services
|
|
SERVICES_DEFAULT=(
|
|
sysklogd
|
|
sshd
|
|
NetworkManager
|
|
chronyd
|
|
cronie
|
|
power-profiles-daemon
|
|
display-manager
|
|
bluetooth
|
|
iptables
|
|
ip6tables
|
|
)
|
|
|
|
echo -e "${YELLOW}Adding boot runlevel services...${NC}"
|
|
for service in "${SERVICES_BOOT[@]}"; do
|
|
echo -e "${YELLOW} Adding ${service} to boot runlevel...${NC}"
|
|
if ! rc-update add "$service" boot 2>/dev/null; then
|
|
echo -e "${RED} Warning: Could not add ${service} (may not exist or already added)${NC}"
|
|
else
|
|
echo -e "${GREEN} Added ${service} to boot${NC}"
|
|
fi
|
|
done
|
|
|
|
echo -e "${YELLOW}Adding default runlevel services...${NC}"
|
|
for service in "${SERVICES_DEFAULT[@]}"; do
|
|
echo -e "${YELLOW} Adding ${service} to default runlevel...${NC}"
|
|
if ! rc-update add "$service" default 2>/dev/null; then
|
|
echo -e "${RED} Warning: Could not add ${service} (may not exist or already added)${NC}"
|
|
else
|
|
echo -e "${GREEN} Added ${service} to default${NC}"
|
|
fi
|
|
done
|
|
|
|
echo -e "${GREEN}OpenRC services configured.${NC}"
|
|
echo -e "${GREEN}--- Services Setup Complete ---${NC}"
|