gentoo-legion/install/services.sh
2026-01-24 20:47:35 -05:00

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}"