58 lines
2.1 KiB
Bash
Executable File
58 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================================
|
|
# DarkForge Linux Installer — Locale Module
|
|
# ============================================================================
|
|
# Configures locale, timezone, and keyboard layout.
|
|
# ============================================================================
|
|
|
|
configure_locale() {
|
|
# --- Timezone ---
|
|
info "Available timezones: /usr/share/zoneinfo/"
|
|
echo " Common: America/New_York, America/Chicago, America/Denver,"
|
|
echo " America/Los_Angeles, Europe/London, Europe/Berlin"
|
|
echo ""
|
|
ask "Timezone [America/New_York]: "
|
|
read -r tz
|
|
tz="${tz:-America/New_York}"
|
|
|
|
if [ -f "${MOUNT_POINT}/usr/share/zoneinfo/${tz}" ]; then
|
|
ln -sf "/usr/share/zoneinfo/${tz}" "${MOUNT_POINT}/etc/localtime"
|
|
ok "Timezone set to ${tz}"
|
|
else
|
|
warn "Timezone '${tz}' not found — using UTC"
|
|
ln -sf /usr/share/zoneinfo/UTC "${MOUNT_POINT}/etc/localtime"
|
|
tz="UTC"
|
|
fi
|
|
|
|
# --- Locale ---
|
|
echo ""
|
|
ask "Locale [en_US.UTF-8]: "
|
|
read -r locale
|
|
locale="${locale:-en_US.UTF-8}"
|
|
|
|
# Generate locale using localedef (glibc provides this, locale-gen is a wrapper
|
|
# that may not exist on from-scratch systems)
|
|
echo "${locale} UTF-8" > "${MOUNT_POINT}/etc/locale.gen"
|
|
locale_name="${locale%%.*}" # e.g., "en_US" from "en_US.UTF-8"
|
|
charset="${locale##*.}" # e.g., "UTF-8" from "en_US.UTF-8"
|
|
mkdir -p "${MOUNT_POINT}/usr/lib/locale"
|
|
chroot "${MOUNT_POINT}" localedef -i "${locale_name}" -f "${charset}" "${locale}" 2>/dev/null || \
|
|
warn "localedef failed — locale may not be fully generated"
|
|
echo "LANG=${locale}" > "${MOUNT_POINT}/etc/locale.conf"
|
|
ok "Locale set to ${locale}"
|
|
|
|
# --- Keyboard ---
|
|
echo ""
|
|
ask "Keyboard layout [us]: "
|
|
read -r keymap
|
|
keymap="${keymap:-us}"
|
|
|
|
echo "KEYMAP=${keymap}" > "${MOUNT_POINT}/etc/vconsole.conf"
|
|
ok "Keyboard layout set to ${keymap}"
|
|
|
|
# Store for rc.conf generation
|
|
export INSTALL_TIMEZONE="${tz}"
|
|
export INSTALL_LOCALE="${locale}"
|
|
export INSTALL_KEYMAP="${keymap}"
|
|
}
|