NixOS установка,обзор

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 и указать пароль.