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