{ config, lib, ... }: with lib; let cfg = config.custom.settings.environment; in { options.custom.settings.environment = { enable = mkOption { default = false; }; builder = mkOption { default = config.custom.full; }; timezone = mkOption { default = "America/Chicago"; }; wayland = mkOption { default = config.custom.minimal; }; }; config = mkIf cfg.enable { time.timeZone = cfg.timezone; # https://wiki.nixos.org/wiki/Cross_Compiling boot.binfmt.emulatedSystems = mkIf cfg.builder [ "aarch64-linux" ]; # Emulate architecture #// nixpkgs.buildPlatform = "x86_64-linux"; # Binary caches often not available environment = { localBinInPath = true; # HACK: Nix does not currently handle locale properly, so force default # https://github.com/NixOS/nixpkgs/issues/183960 et al. #// i18n.defaultLocale = "C.UTF-8"; sessionVariables = { GDK_SCALE = toString config.custom.scale; # Steam HiDPI # https://wiki.nixos.org/wiki/Wayland#Electron_and_Chromium NIXOS_OZONE_WL = mkIf cfg.wayland "1"; }; shellAliases = { backup = "sudo borgmatic -v 1 create --progress --stats"; extract = "sudo borgmatic -v 1 extract --progress"; restore = "sudo borgmatic -v 1 restore"; list = "sudo borgmatic -v 1 list"; init = "sudo borgmatic init -e repokey-blake2"; key = "sudo borgmatic key export"; reboot = "sudo systemctl reboot"; restart = "sudo systemctl reboot"; poweroff = "sudo systemctl poweroff"; shutdown = "sudo systemctl poweroff"; rsync = "rsync --info=progress2"; # https://github.com/aksiksi/compose2nix?tab=readme-ov-file#usage # https://github.com/aksiksi/compose2nix?tab=readme-ov-file#agenix compose2nix = concatStringsSep " " [ "compose2nix" "--inputs compose.yaml" "--output compose.nix" "--root_path /containers" "--auto_format" "--check_systemd_mounts" "--env_files_only" "--ignore_missing_env_files" "--include_env_files" #?? --env_files /run/agenix/containers/*/.env ]; }; }; }; }