ksevelyar / idempotent-desktop

❄️ nixos, fish, neovim, leftwm
116 stars 6 forks source link

Добавить инструкцию #1

Closed ram0973 closed 2 years ago

ram0973 commented 4 years ago

Можно ли для простых смертных написать инструкцию, как ставить всё это великолепие.

ksevelyar commented 4 years ago

Думаю как сделать ее удобной. Пилю доки по хоткеям; хочу повесить отображение справки на "Win+?". Пока основные хоткеи можно посмотреть тут:

https://github.com/ksevelyar/dotfiles/blob/master/home/.xmonad/xmonad.hs#L275 https://github.com/ksevelyar/dotfiles/blob/master/home/.config/nvim/init.vim#L394

Этот репозиторий сборка модулей NixOS, поэтому идея простая:

Создается конфиг пользователя и хоста, примеры: пользователь, хост

В конфиг хоста добавляются нужные модули и пользователи. И специфичные для железа настройки, например драйвер видеокарты.

Live Usb

1) Установить nix: curl -L https://nixos.org/nix/install | sh (https://nixos.org/download.html) 2) Склонировать репу или ее форк: git clone https://github.com/ksevelyar/dotfiles.git ~/ksevelyar-dotfiles && cd ~/ksevelyar-dotfiles

3) Сгенерировать live-usb: nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=live-usb.nix

Запустить его в любой виртуалке или записать на флешку:

sudo dd bs=4M if=result/iso/nixos.iso of=/dev/sdX status=progress && sync

Где /dev/sdX меняется на флешку из выхлопа lsblk.

Установка основной системой

Загрузиться с live-usb, выполнить команду refresh-channels.

Подготовить и примонтировать / и /boot в /mnt и /mnt/boot. Это можно сделать в gparted из иксов (команда x). Я монтирую диски по меткам, поэтому даю им метки boot и nixos.

Склонировать репу в /mnt/etc/nixos:

sudo git clone https://github.com/ksevelyar/dotfiles.git /mnt/etc/nixos

Слинковать нужный хост: sudo ln -s /etc/nixos/hosts/hk47.nix /etc/nixos/configuration.nix И установить систему: sudo nixos-install

После установки нужно задать пароль пользователю через passwd username.

Сгенерировать конфиги для хоста/пользователя можно так:

sudo nixos-generate-config --root /tmp, создаст hardware-configuration.nix & configuration.nix в папкe /tmp. Что Никсось может определить автоматически? Как минимум: примонтированные диски, сетевые интерфейсы, модули ядра. Возможно нужно будет указать драйвера видео / принтера.

Склеить их в новый хост, и слинковать его через sudo ln -s /etc/nixos/hosts/new-host.nix /etc/nixos/configuration.nix

Пользователь создается просто копированием конфига из users c заменой переменной vars.user: https://github.com/ksevelyar/dotfiles/blob/master/users/live-usb.nix#L3

Использовать конфиги в другом Линуксе

Конфиги хомяка держу текстовыми файлами и линкую через home-manager, поэтому они универсальны: https://github.com/ksevelyar/dotfiles/tree/master/home

Структура файлов повторяет ~.