NixOS установка,обзор
Пакетный менеджер Nix размещает все установленные пакеты в собственных подкаталогах внутри каталога /nix/store.
К примеру, установленный пакет Git будет располагаться в каталоге /nix/store/nawl092prjblbhvv16kxxbk6j9gkgcqm-git-2.14.1, где набор цифр — это хеш, образованный от окружения сборки пакета: файлов исходников, дерева зависимостей, флагов компилятора и другого.
Поэтому с помощью Nix можно установить одновременно не только две версии одного приложения, но и даже две разные сборки.
Устанавливаем
В NixOS нет инсталлятора, но если вы когда-нибудь устанавливали Arch Linux, то у вас не должно возникнуть проблем. Для начала скачиваем последнюю версию NixOS с официального сайта и записываем ее на флешку:
-
$ wget https://d3g5gsiof5omrk.cloudfront.net/nixos/18.03/nixos-18.03.133192.45f52f765cd/nixos-graphical-18.03.133192.45f52f765cd-x86_64-linux.iso
-
$ sudo dd if=nixos-graphical-18.03.133192.45f52f765cd-x86_64-linux.iso of=/dev/sdX
Затем перезагружаем машину и грузимся с флешки.
NixOS встретит вас приветствием командной строки.
Первое, что мы должны сделать, — подготовить диск для установки.
Проще всего сделать это с помощью parted (в данном примере мы создаем один большой раздел ext3 на диске с разметкой в стиле DOS):
# parted /dev/sda
(parted) mklabel msdos
(parted) mkpart primary ext4 0% 100%
(parted) quit
Мы будем ставить систему на зашифрованный диск, поэтому для начала инициализируем шифрование:
# export NIXOS_NAME=”name” # Придумай свое имя
# cryptsetup luksFormat /dev/sda1
# cryptsetup luksOpen /dev/sda1 ${NIXOS_NAME}
Затем примонтируем диск к каталогу /mnt:
# mkfs.ext4 -L ${NIXOS_NAME} /dev/mapper/${NIXOS_NAME}
# mount /dev/mapper/${NIXOS_NAME} /mnt
Теперь обновляем репозитории:
# nix-channel –update
И генерируем дефолтовые файлы конфигурации:
# nixos-generate-config –root /mnt
Команда сохранит на диск два файла: configuration.nix и hardware-configuration.nix. Первый — это и есть тот самый файл описания состояния системы, с которым мы будем работать в дальнейшем. Содержимое второго изменять не надо — оно создается автоматически на основании железа, на которое устанавливается NixOS.
Наконец, устанавливаем систему и перезагружаемся:
# nixos-install
Configuration.nix
Файл configuration.nix — основа дистрибутива. В нем пользователь указывает всю желаемую/необходимую конфигурацию (состояние) системы от пользователей и пакетов до шрифтов и в любой момент может ее изменять. Система будет выглядеть ровно так, как ее опишет пользователь в этом файле.
Конечно, можно не заморачиваться и найти уже готовый конфиг на том же Гитхабе и взять его «попользоваться». Но это не имеет особого смысла, потому что рано или поздно придется во всем разбираться самому, да и попасться вам может какое-нибудь непотребство, а не конфиг.
Чтобы изменения конфигурации вступили в силу, необходимо выполнить команду
# nixos-rebuild switch
и перезагрузиться.
Перед этим работоспособность конфига можно проверить командой
# nixos-rebuild test
Выбираем загрузчик
Если вы установили систему на диск с разметкой DOS (как было описано в статье), то в configuration.nix необходимо добавить следующие строки:
# Включаем GRUB
boot.loader.grub.enable = true;
# Нам нужен GRUB 2
boot.loader.grub.version = 2;
# Загрузчик должен быть установлен на /dev/sda
boot.loader.grub.device = “/dev/sda”;
# Включаем поддержку зашифрованных дисков
boot.loader.grub.enableCryptodisk = true;
Для UEFI-систем достаточно двух строчек:
boot.loader.systemd-boot.enable = true;
# Разрешить EFI вносить изменения
boot.loader.efi.canTouchEfiVariables = true;
Имя машины и часовой пояс
Здесь все совсем просто:
networking.hostName = “mymachine”;
time.timeZone = “Europe/Moscow”;
Заодно сразу активируем NetworkManager:
networking.networkmanager.enable = true;
Создаем пользователей
Добавим пользователя vasya:
users.users.vasya = {
isNormalUser = true;
# Дополнительная информация
description = "Userov User";
# Группы, в которые входит пользователь
extraGroups = [ "networkmanager" ];
};
По умолчанию у пользователя не будет пароля, поэтому сразу после логина под его именем стоит запустить команду passwd и указать пароль.