You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.4 KiB
Plaintext
48 lines
1.4 KiB
Plaintext
let RUN_IN_CHROOT = true;
|
|
|
|
def set_keymap [keymap: string] {
|
|
debug $"Setting keymap to ($keymap)"
|
|
touch /etc/vconsole.conf
|
|
$"\nKEYMAP=($keymap)" | save -a /etc/vconsole.conf
|
|
}
|
|
|
|
def set_timezone [timezone: string] {
|
|
debug $"Setting timezone to ($timezone)"
|
|
run ln -sf $"/usr/share/zoneinfo/($timezone)" /etc/localtime
|
|
run hwclock --systohc
|
|
}
|
|
|
|
def set_locales [locales] {
|
|
debug $"Setting locales to ($locales)"
|
|
mut new_locales = $locales
|
|
|
|
if ($new_locales | length) == 0 {
|
|
warn "No locale configured. Defaulting to en_US.UTF_8"
|
|
# set a default locale
|
|
$new_locales = ["en_US.UTF-8 UTF-8"]
|
|
"LANG=en_US.UTF-8" | save -f /etc/locale.conf
|
|
} else {
|
|
# save the first locale as the leading one
|
|
let first_locale = ($new_locales.0 | split row " " | get 0)
|
|
$"LANG=($first_locale)" | save -f /etc/locale.conf
|
|
}
|
|
|
|
$new_locales | each {|$locale|
|
|
let locale_parts = ($locale | split row " ")
|
|
let locale_name = $locale_parts.0
|
|
let encoding = $locale_parts.1
|
|
$"($locale_name) ($encoding)\n" | save -a /etc/locale.gen
|
|
}
|
|
run locale-gen
|
|
}
|
|
|
|
# Applies all system changes of `configure-locale`
|
|
def main [cfg] {
|
|
debug $"Configuring locale with config ($cfg)"
|
|
set_keymap $cfg.keymap
|
|
set_timezone $cfg.timezone
|
|
set_locales $cfg.locale
|
|
|
|
info "Locale configured"
|
|
}
|