nixos-private-dots/README.md
2026-01-20 03:17:53 +03:00

13 KiB
Raw Blame History

ВАЖНО

В моём видео использовалась старая версия конфига, которая теперь находится в ветке old-video. Новая версия конфига просто обновлена с ядра 6.12 до ядра 6.18, спустя более года без изменений. За это время изменились многие параметры NixOS и немного изменился процесс установки моего конфига. Так что советую ставить конфиг по инструкции ниже, а не повторять за видео

Другие README файлы в этих дотсах

Навигация

Мини гайд по NixOS

  • Одинаковые вещи могут делаться разными способами. Это норма, ведь nix считается языком програмимрования. По началу меня это бесило, когда читал чужие дотсы
  • Нюансы работы NixOS в этом видео. Мне понравилось
  • Плейлист с английскими видео. Мне больше всего понравились видео под номерами 16, 18, 21, 27 и 28.
  • Пакеты искать тут. Параметры для сток NixOS тут. Параметры для home-manager тут. Для моих конфигов надо обязательно искать в unstable ветке, ибо параметры могут отличаться.
  • Для системной темы тут используется stylix. Все его параметры можно найти тут.

Процесс установки

Сначала качаем NixOS GUI вариант и устанавливаем систему через визуальный установщик. При установке выбираем минимальный вариант, без DE. Для моей системы надо минимум 150гб памяти на диске. Около 80гб весит система, плюс надо место для обновлений будущих. В идеале 250гб иметь.

Когда система установилась и ты сидишь в терминале, делай это:

sudo nano /etc/nixos/configuration.nix

Я добавил туда nix.settings.experimental-features = [ "nix-command" "flakes" ];. Ниже, почти в самом конце, в environment.systemPackages = with pkgs; я добавил пакеты vim, wget, git, curl. В итоге получился такой конфиг (написал лишь его часть):

{
  # Bootloader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  nix.settings.experimental-features = [ "nix-command" "flakes" ];

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
    wget
    git
    curl
  ];
}

После этого сохраняем и пишем в терминале это:

sudo nixos-rebuild switch

Дальше есть два способа. Перед использованием любого из них я рекомендую сделать форк и внести следующие изменения в конфиг перед установкой (либо можно сделать гит клон и через nano/vim внести изменения сразу в системе).

Надо заменить переменную username в nixos/configuration.nix и nixos/home.nix на свой ник, чтоб не сидеть под ником buliway.

Если видеокарта не от AMD, то надо сделать это. Если видеокарта от AMD, то стоит убедиться, что сделано наоборот, то есть включены нужные параметры.

  • Удалить rocmSupport = true; в файле flake.nix
  • Удалить videoDrivers = [ "amdgpu" ]; и deviceSection = ''Option "TearFree" "True"''; в конце файла modules/nixos/xserver.nix. Возможно надо включить videoDrivers = [ "nvidia" ];, если видеокарта от Nvidia. Но лучше почитать https://nixos.wiki/wiki/Nvidia. Для графики Intel читать это https://nixos.wiki/wiki/Intel_Graphics. Мб для Nvidia и Intel не обязательно добавлять настройки и удалить amd конфиги будет достаточно для запуска.
  • Удалить всю категорию настроек amdgpu = {}, удалить boot.initrd.kernelModules, и удалить всю категорию настроек systemd.tmpfiles.rules = let в файле modules/nixos/hardware.nix

А это можно донастроить уже в готовой системе

  • Параметры мониторов закомментированы в файле modules/home-manager/wm/bspwm/bspwm.nix. Можно указать по желанию. Команда xrandr покажет доступные значения и имена мониторов.
  • Если надо задать симлинки, то для этого есть файл modules/home-manager/symlinks.nix. Чтоб файл заработал, надо раскомментировать ./symlinks.nix в файле modules/home-manager/bundle.nix.
  • Если надо монтировать другие диски, то для этого есть файл modules/nixos/filesystems.nix. Там сейчас мой второй ссд. Чтоб файл заработал, надо раскомментировать ./filesystems.nix в файле modules/nixos/bundle.nix.
  • Если нужна гибернация, то её можно настроить в modules/nixos/hibernate.nix. Там надо указать uuid и офсет для swap файла. Чтоб файл заработал, надо раскомментировать ./hibernate.nix в файле modules/nixos/bundle.nix.

С гитом есть нюанс. Если захочешь потом создать свои конфиги или добавить новые файлы, на которые надо ссылаться из nix, то надо указывать либо полный путь до файла, либо добавлять файл в гит. Если указывать относительный путь, как сделано в моих bundle.nix, то все эти файлы должны находиться в гите, либо каталог дотсов должен быть без гита вовсе. Если в каталоге дотсов инициализирован репозиторий гита, то в относительных путях он не видит файлы из gitignore или просто не отслеживаемые гитом файлы.

Первый способ

Установить систему одной командой (я написал пример для github, но сейчас мои дотсы есть лишь на forgejo, не знаю как с него использовать такой синтаксис):

sudo nixos-rebuild boot --flake github:Buliway/nixos-private-dots --impure

Чтоб использовать с репой forgejo, можно попробовать такой синтаксис git@git.buliway.ru:Buliway/nixos-private-dots.

Параметр boot делает так, что настройки не применяются сразу. После установки надо будет перезапустить пк. Если хочешь проверить как оно заработает без ребута пк, то используй switch вместо boot.

Второй способ

Клонировать репозиторий и ребилдить систему с указанием пути:

git clone https://git.buliway.ru/buliway/nixos-private-dots
sudo nixos-rebuild boot --impure --flake ~/nixos-private-dots

Параметр boot делает так, что настройки не применяются сразу. После установки надо будет перезапустить пк. Если хочешь проверить как оно заработает без ребута пк, то используй switch вместо boot.

После установки надо

Эта заметка частично для меня. Каждый ставит то, что ему надо

  • Включить подкачку на 64 гига в /etc/nixos/hardware-configuration.nix через такой синтаксис:
  swapDevices = [ {
    device = "/swapfile";
    size = 64*1024; # В мегабайтах
  } ];
  • Настроить гибренацию в modules/nixos/hibernate.nix
  • Активировать скрипт в shit каталоге, чтоб скопировать нужные конфиги в нужные каталоги. Симлинки не работают
  • Руками настроить thunar, discord, telegram, steam, strawberry и бинды для ksnip
  • Добавить gpg ключи
gpg --import /path/to/your-key.gpg

Если не работает, то смотришь список ключей. Копируешь ID нужного и используешь во второй команде.

gpg --list-keys
gpg --edit-key ID-ключа

В этом режиме надо написать trust и выбрать степень доверия. Например 5 для своих ключей можно задать, это прям самое максимально доверие. Потом Ctrl + D чтоб выйти.

Изменения для виртуалок

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

Это надо, чтоб включить коннект по ssh к виртуалке и сделать с ней общий буфер обмена. Ну и ещё параметры экрана меняю на один 1080p монитор на 60 герц.

В файле modules/nixos/virtualisation.nix раскомментировать эти строки:

+  services = {
+    openssh.enable = true; # Это ставится на виртуалку, чтоб к ней конект по ssh работал.
+    spice-vdagentd.enable = true; # Clipboard sharing
+    qemuGuest = {
+      enable = true; # Fix resolution
+      package = pkgs.qemu_full;
+    };
+  };

В файле modules/home-manager/wm/bspwm/bspwm.nix изменить эти строки:

   extraConfigEarly = ''
-     xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
-     xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2
+     xrandr --output Virtual-1 --mode 1920x1080 --rate 60
   '';

В файле modules/nixos/xserver.nix закомментировать эти строки, даже если amd gpu на хосте:

-    videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
-    deviceSection = ''Option "TearFree" "True"'';
+    # videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
+    # deviceSection = ''Option "TearFree" "True"'';