feat: unify host detection and profile mapping

- Add host-profiles.conf for hostname-to-profile mapping
- Update symlinks script to use mapping and error early if unmapped

🤖 Generated with opencode
Co-Authored-By: opencode <noreply@opencode.ai>
This commit is contained in:
Martin Büchler 2025-08-08 11:26:13 +02:00
parent f66b63354a
commit a9e5ace080
2 changed files with 29 additions and 16 deletions

3
host-profiles.conf Normal file
View File

@ -0,0 +1,3 @@
# Map hostnames to device profiles
lousy-arch=desktop
archlaptop=laptop

View File

@ -37,22 +37,32 @@ if [ -d "$CONFIG_DIR" ]; then
echo "Linked .config/$baseitem" echo "Linked .config/$baseitem"
done done
# Device-specific symlinks for Hyprland and Waybar # Device-specific symlinks for Hyprland and Waybar using host-profiles.conf
if [ -n "$DOTFILES_DEVICE" ]; then HOSTNAME=$(hostname)
# Hyprland monitors (hostname-based) PROFILE=""
HOSTNAME=$(hostname) if [ -f "$DOTFILES_DIR/host-profiles.conf" ]; then
if [ -f "$CONFIG_DIR/hypr/includes/monitors-$HOSTNAME.conf" ]; then PROFILE=$(awk -F= -v h="$HOSTNAME" '$1==h{print $2}' "$DOTFILES_DIR/host-profiles.conf")
ln -sf "$CONFIG_DIR/hypr/includes/monitors-$HOSTNAME.conf" "$CONFIG_DIR/hypr/includes/monitors.conf" fi
echo "Linked monitors-$HOSTNAME.conf as monitors.conf" if [ -z "$PROFILE" ]; then
else echo "ERROR: No profile mapping found for hostname '$HOSTNAME' in $DOTFILES_DIR/host-profiles.conf"
echo "Warning: No monitors config for hostname $HOSTNAME" exit 1
fi fi
# Hyprland hypridle # Hyprland monitors
ln -sf "$CONFIG_DIR/hypr/includes/hypridle-$DOTFILES_DEVICE.conf" "$CONFIG_DIR/hypr/hypridle.conf" if [ -f "$CONFIG_DIR/hypr/includes/monitors-$HOSTNAME.conf" ]; then
echo "Linked hypridle-$DOTFILES_DEVICE.conf as hypridle.conf" ln -sf "$CONFIG_DIR/hypr/includes/monitors-$HOSTNAME.conf" "$CONFIG_DIR/hypr/includes/monitors.conf"
# Waybar config echo "Linked monitors-$HOSTNAME.conf as monitors.conf"
ln -sf "$CONFIG_DIR/waybar/config-$DOTFILES_DEVICE" "$CONFIG_DIR/waybar/config" else
echo "Linked config-$DOTFILES_DEVICE as waybar config" echo "Warning: No monitors config for hostname $HOSTNAME"
fi
# Hyprland hypridle
if [ -f "$CONFIG_DIR/hypr/includes/hypridle-$PROFILE.conf" ]; then
ln -sf "$CONFIG_DIR/hypr/includes/hypridle-$PROFILE.conf" "$CONFIG_DIR/hypr/hypridle.conf"
echo "Linked hypridle-$PROFILE.conf as hypridle.conf"
fi
# Waybar config
if [ -f "$CONFIG_DIR/waybar/config-$PROFILE" ]; then
ln -sf "$CONFIG_DIR/waybar/config-$PROFILE" "$CONFIG_DIR/waybar/config"
echo "Linked config-$PROFILE as waybar config"
fi fi
fi fi