From 2a618ce67fc7e4e3603fc91474e98db19e4f9c2a Mon Sep 17 00:00:00 2001 From: Tim Van Baak Date: Wed, 2 Aug 2023 02:28:32 +0000 Subject: [PATCH] Factor out i18n settings --- machine/backyard/default.nix | 15 --------------- modules/beatific.nix | 37 +++++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/machine/backyard/default.nix b/machine/backyard/default.nix index 01bdcf6..58eb05f 100644 --- a/machine/backyard/default.nix +++ b/machine/backyard/default.nix @@ -17,21 +17,6 @@ # Enable networking networking.networkmanager.enable = true; - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "en_US.UTF-8"; - LC_IDENTIFICATION = "en_US.UTF-8"; - LC_MEASUREMENT = "en_US.UTF-8"; - LC_MONETARY = "en_US.UTF-8"; - LC_NAME = "en_US.UTF-8"; - LC_NUMERIC = "en_US.UTF-8"; - LC_PAPER = "en_US.UTF-8"; - LC_TELEPHONE = "en_US.UTF-8"; - LC_TIME = "en_US.UTF-8"; - }; - # Define a user account. Don't forget to set a password with ‘passwd’. users.users.tvb = { isNormalUser = true; diff --git a/modules/beatific.nix b/modules/beatific.nix index 9b82d80..5061d68 100644 --- a/modules/beatific.nix +++ b/modules/beatific.nix @@ -1,36 +1,67 @@ { config, lib, pkgs, ... }: let - inherit (lib) mkIf mkMerge mkOption types; + inherit (lib) mkDefault mkIf mkMerge mkOption types; cfg = config.beatific; in { options = { beatific = { + # The host name is reused for beatific-specific configuration. + # The bulk of common config is handled in beatific.defaults below, but + # having one option without a default ensures that the module cannot be + # imported accidentally. hostName = mkOption { type = types.str; description = "Hostname"; }; + # Groups of related defaults can be disabled by flipping off the switches here: + # beatific.defaults.${category} = false; + # They default to true because the point is to do these things by default. defaults = { time = mkOption { type = types.bool; description = "Default time zone and NTP"; default = true; }; + + i18n = mkOption { + type = types.bool; + description = "Default locale settings"; + default = true; + }; }; }; }; config = mkMerge [ { + # Options to always set networking.hostName = cfg.hostName; - nix.extraOptions = "experimental-features = nix-command flakes"; } + (mkIf cfg.defaults.time { - time.timeZone = "UTC"; + # mkDefault time zone to make it easy to configure it to non-UTC + time.timeZone = mkDefault "UTC"; services.ntp.enable = true; services.ntp.servers = [ "time.nist.gov" ]; }) + + (mkIf cfg.defaults.i18n { + # en_US.UTF-8 + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + }) ]; }