nixos-private-dots/README.md
2025-08-05 15:47:55 +03:00

160 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Навигация
- [Другие README файлы в этих дотсах](#другие-readme-файлы-в-этих-дотсах)
- [TODO](#todo)
- [Мини гайд по NixOS](#мини-гайд-по-nixos)
- [Процесс установки](#процесс-установки)
- [Первый способ](#первый-способ)
- [Второй способ](#второй-способ)
- [После установки надо](#после-установки-надо)
- [Изменения для виртуалок](#изменения-для-виртуалок)
## Другие README файлы в этих дотсах
- [Бинды системы](./BINDINGS.md)
- [Список базового софта в системе](./SOFTWARE.md)
- [Цвета и иконки тем, храню для себя](./THEMES.md)
- [Список известных проблем при настройке системы](./PROBLEMS.md)
- [Копия man page для bspwm с доп инфой](./modules/home-manager/wm/bspwm/bspwm.md)
- [Описание плагинов для mpv](./modules/home-manager/mpv/README.md)
- [NeoVim config](./nvim/README.md)
## Мини гайд по NixOS
- Одинаковые вещи могут делаться разными способами. Это норма, ведь nix считается языком програмимрования. По началу меня это бесило, когда читал чужие дотсы
- Нюансы работы NixOS в [этом](https://www.youtube.com/watch?v=7f19R8BWUnU&t=960s) видео. Мне понравилось
- [Плейлист](https://www.youtube.com/playlist?list=PLko9chwSoP-15ZtZxu64k_CuTzXrFpxPE) с английскими видео. Мне больше всего понравились видео под номерами [16](https://youtu.be/a67Sv4Mbxmc), [18](https://youtu.be/b641h63lqy0), [21](https://youtu.be/rEovNpg7J0M), [27](https://youtu.be/ljHkWgBaQWU) и [28](https://youtu.be/JCeYq72Sko0).
- Пакеты искать [тут](https://search.nixos.org/packages). Параметры для сток NixOS [тут](https://search.nixos.org/options). Параметры для home-manager [тут](https://home-manager-options.extranix.com/?query=&release=master). Для моих конфигов надо обязательно искать в unstable ветке, ибо параметры могут отличаться.
- Для системной темы тут используется stylix. Все его параметры можно найти [тут](https://stylix.danth.me/options/nixos.html).
## Процесс установки
Сначала качаем nixos kde или nixos gnome вариант и устанавливаем систему через визуальный установщик. При установке выбираем минимальный вариант, без DE.
Кто-то говорит, что потом достаточно просто забилдить одной командой чужой конфиг, но это не так. Будет ошибка, что нет гита. Если использовать nix-shell для гита, то скажет, что нет экспериментальной функции. Либо писать огромную команду, либо, как советую сделать я, изменить стоковый конфиг никса. Для этого пишем следующее:
```sh
sudo nano /etc/nixos/configuration.nix
```
Я добавил туда `nix.settings.experimental-features = [ "nix-command" "flakes" ];` сразу после настроек `boot`. Ниже, почти в самом конце, в `environment.systemPackages = with pkgs;` я добавил пакеты `wget, git, curl`. В итоге получился такой конфиг (написал лишь его часть):
```nix
{
# 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
fastfetch
];
}
```
После этого сохраняем и пишем в терминале это:
```sh
sudo nixos-rebuild switch
```
Дальше есть два способа. Перед использованием любого из них я рекомендую сделать форк и внести следующие изменения в конфиг перед установкой (либо можно сделать гит клон и через nano/vim внести изменения для первых трёх пунктов, остальное менять на готовой системе):
- Переменную `username` в `nixos/configuration.nix`.
- `username` и `homeDirectory` в `nixos/home.nix`.
- `userName` и `userEmail` в `modules/home-manager/terminal/git.nix`.
А это можно донастроить уже в готовой системе
- Путь до `home` в `shit/qt5ct/qt5ct.conf` и `shit/qt6ct/qt6ct.conf`.
- Параметры мониторов закомментированы в файле `modules/home-manager/wm/bspwm/bspwm.nix`. Можно указать по желанию. Команда xrandr покажет доступные значения и имена мониторов.
- Если видеокарта не от amd, то, надо удалить `videoDrivers` в `modules/nixos/xserver.nix`, `boot.initrd.kernelModules` и всю категорию настроек `amdgpu` в `modules/nixos/hardware.nix`. Это настройки для amd gpu, чтоб не было тиринга на x11.
- Если надо задать симлинки, то для этого есть файл `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, не знаю как с него использовать такой синтаксис):
```sh
sudo nixos-rebuild boot --flake github:Buliway/nixos-private-dots --impure
```
Чтоб использовать с репой forgejo, можно попробовать такой синтаксис `git@git.buliway.ru:Buliway/nixos-private-dots`.
Параметр `boot` делает так, что настройки не применяются сразу. После установки надо будет перезапустить пк. Если хочешь проверить как оно заработает без ребута пк, то используй `switch` вместо `boot`.
### Второй способ
Клонировать репозиторий и ребилдить систему с указанием пути:
```sh
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` через такой синтаксис:
```nix
swapDevices = [ {
device = "/swapfile";
size = 64*1024; # В мегабайтах
} ];
```
- Настроить гибренацию в `modules/nixos/hibernate.nix`
- Активировать скрипт в `shit` каталоге, чтоб скопировать нужные конфиги в нужные каталоги. Симлинки не работают
- Настроить приложения `Qt5 Settings`, `Qt6 Settings` и `Kvantum`. Там надо выбрать свою системную тему. Вроде всё интуитивно понятно будет. Можно попробовать обновить систему, в надежде, что системная тема `stylix` начнёт работать с приложениями `qt`. Для этого надо будет закомментить настройки `qt` в конфиге `stylix`.
- Руками настроить `thunar`, `discord`, `telegram`, `steam`, `strawberry` и бинды для `ksnip`
- Добавить gpg ключи
```sh
gpg --import /path/to/your-key.gpg
```
Если не работает, то смотришь список ключей. Копируешь ID нужного и используешь во второй команде.
```sh
gpg --list-keys
gpg --edit-key ID-ключа
```
В этом режиме надо написать trust и выбрать степень доверия. Например 5 для своих ключей можно задать, это прям самое максимально доверие. Потом Ctrl + D чтоб выйти.
## Изменения для виртуалок
Это надо, чтоб включить коннект по ssh к виртуалке и сделать с ней общий буфер обмена. Ну и ещё параметры экрана меняю на один 1080p монитор на 60 герц.
В файле `modules/nixos/virtualisation.nix` раскомментировать эти строки:
```diff
+ 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` изменить эти строки:
```diff
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 на хосте:
```diff
- videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
- deviceSection = ''Option "TearFree" "True"'';
+ # videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
+ # deviceSection = ''Option "TearFree" "True"'';
```