139 lines
6.3 KiB
Nix
139 lines
6.3 KiB
Nix
{
|
||
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";
|
||
}
|