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.
tourmaline/configs/crystal/configure-locale/up.nu

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