i20n and universalization for config
Some checks failed
/ build-installer (push) Failing after 2s

This commit is contained in:
Gregory Bednov 2026-09-14 14:21:08 +03:00
commit 4aae45f13b
10 changed files with 588 additions and 180 deletions

View file

@ -1,11 +1,63 @@
{ pkgs, lib, config, ... }:
{
pkgs,
lib,
config,
...
}:
let
# static server IP address, it must be always online and serve as Yggdrasil peer
# (see config.services.ygggdrasil.settings.peers for details)
# WARN: the peer should NOT connect Yggdrasil worldwide network
# if your PC fleet shouldn't be globally accessible around the world
#
# статический IP адрес сервера, который должен быть всегда онлайн и служить пиром Yggdrasil
# (см. подробности config.services.ygggdrasil.settings.peers)
# ПРЕДУПРЕЖДЕНИЕ: этот пир не должен быть подключен к мировой сети Yggdrasil,
# если конечно вы не хотите чтобы весь компьютерный парк был доступен из любой точки мира
serverIP = "10.0.174.12";
# -------
# Yggdrasil address cache build node. It should use the same NixOS config as others
# It's NOT required to be the same server as ${serverIP} but it also should be always online
# It CAN be a NixOS VM installed on the same server ${serverIP} autostarted
#
# Yggdrasil-адрес кэширующего сервера. На нем должна быть установлена NixOS с той
# же конфигурацией, что и у остальных машин. Не обязательно, чтобы эта машина была той же,
# что сервер ${serverIP}, но она также должна быть онлайн.
# Это может быть виртуальная NixOS-машина, установленная на сервере ${serverIP} в режим автозапуска
buildNodeYggIP = "200:ccc6:1361:5c84:aba0:1244:35f5:c903";
# -------
# here is your configuration repo URL. fork it and change it on your own if you want
#
# здесь требуется указать ваш URL-адрес репозитория с конфигурацией. fork-аете, и меняете на свой
configRepoUrl = "https://forgejo.gregorbednov.ru/gregorbednov/configuration.nix.git";
# -------
# here is some university specifics, apps and resources
# e.g. for MIREA it's wallpaper, university logo, utils to show uuniversity schedule week number and so on
#
# LEGALS: I am NOT a creator on wallpaper.svg,
# I do NOT own wallpaper.svg, this doesn't represent any of my ideas or views,
# that's just a logo (a coat of arms to be precise) of a university,
# and it is in the public domain.
#
# здесь могут быть специфические вузовские данные и ресурсы,
# например, обои, логотип университета, утилита для показа номера недели по расписанию, и так далее
#
# ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:
# Я не являюсь владельцем файла wallpaper.svg, его добавление не репрезентует моих идей или взглядов,
# это просто логотип (точнее герб) университета, и он является общественным достоянием.
university = import ../mirea-specific/university.nix;
in
{
isoImage.isoName = lib.mkForce "mirea-nixos-installer.iso";
isoImage.isoName = lib.mkForce university.isoName;
isoImage.squashfsCompression = "zstd -Xcompression-level 6";
services.getty.autologinUser = lib.mkForce "root";
@ -19,15 +71,22 @@ in
git
pv
curl
(writeShellScriptBin "mirea-install" (
(writeShellScriptBin university.installerBin (
builtins.replaceStrings
[ "@CONFIG_REPO_URL@" ]
[ configRepoUrl ]
[ "@CONFIG_REPO_URL@" "@DISTRO_TITLE@" ]
[ configRepoUrl university.shortName ]
(builtins.readFile ./mirea-install.sh)
))
];
# Yggdrasil запускается на установщике — благодаря ему доступен локальный кэш сборок
# Yggdrasil-маршрутизация позволяет целевым ПК автоматически получать статический IPv6 даже в сетях DHCP,
# что также запускается на установщике для максимальной гибкости.
# Благодаря Yggdrasil может быть доступно удаленнное управление и локальный кэш сборок
# Yggdrasil routing above network allows any target PC to get automatically static IPv6 even on DHCP,
# so installer is recommended to use Yggdrasil too for maximum scalability
# With Yggdrasil routing it's easy to connect remotely, and you can use
# nix build cache nodes with DHCP-addresses (e.g. other PCs)
services.yggdrasil = {
enable = true;
persistentKeys = false;
@ -49,7 +108,10 @@ in
];
trusted-substituters = [ "http://nixos.builds.node" ];
connect-timeout = 5;
experimental-features = [ "nix-command" "flakes" ];
experimental-features = [
"nix-command"
"flakes"
];
};
systemd.services.nix-daemon = {
@ -64,10 +126,13 @@ in
environment.etc."issue".text = ''
┌─────────────────────────────────────────┐
│ Установщик NixOS MIREA │
│ Запустите: mirea-install │
│ Установщик NixOS ${university.shortName}
│ Запустите: ${university.installerBin}
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ NixOS Installer ${university.shortName}
│ Run: ${university.installerBin}
└─────────────────────────────────────────┘
'';
system.stateVersion = "24.11";