configuration.nix/installer/installer-configuration.nix
Gregory Bednov 4aae45f13b
Some checks failed
/ build-installer (push) Failing after 2s
i20n and universalization for config
2026-09-14 14:21:08 +03:00

139 lines
6.3 KiB
Nix
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
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 university.isoName;
isoImage.squashfsCompression = "zstd -Xcompression-level 6";
services.getty.autologinUser = lib.mkForce "root";
environment.systemPackages = with pkgs; [
parted
gptfdisk
util-linux
dosfstools
e2fsprogs
git
pv
curl
(writeShellScriptBin university.installerBin (
builtins.replaceStrings
[ "@CONFIG_REPO_URL@" "@DISTRO_TITLE@" ]
[ configRepoUrl university.shortName ]
(builtins.readFile ./mirea-install.sh)
))
];
# 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;
settings.Peers = [ "tcp://${serverIP}:12345" ];
};
networking.networkmanager.enable = true;
networking.wireless.enable = lib.mkForce false;
networking.hosts."${buildNodeYggIP}" = [ "nixos.builds.node" ];
nix.settings = {
substituters = [
"http://nixos.builds.node"
"https://cache.nixos.org"
];
trusted-public-keys = [
"nixos.builds.node:E/XNkcdzB0EyTyEJuOTXJH8qynxgCfQ87JHkbD88uF8="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
];
trusted-substituters = [ "http://nixos.builds.node" ];
connect-timeout = 5;
experimental-features = [
"nix-command"
"flakes"
];
};
systemd.services.nix-daemon = {
after = [ "yggdrasil.service" ];
wants = [ "yggdrasil.service" ];
};
i18n.defaultLocale = "ru_RU.UTF-8";
time.timeZone = "Europe/Moscow";
console.font = "cyr-sun16";
environment.etc."issue".text = ''
┌─────────────────────────────────────────┐
│ Установщик NixOS ${university.shortName}
│ Запустите: ${university.installerBin}
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ NixOS Installer ${university.shortName}
│ Run: ${university.installerBin}
└─────────────────────────────────────────┘
'';
system.stateVersion = "24.11";
}