| modules | ||
| nixos | ||
| nvim | ||
| shit | ||
| BINDINGS.md | ||
| flake.lock | ||
| flake.nix | ||
| NOTES.md | ||
| PROBLEMS.md | ||
| README.md | ||
| THEMES.md | ||
Навигация
- Другие README файлы в этих дотсах
- TODO
- Мини гайд по NixOS
- Процесс установки
- После установки надо
- Изменения для виртуалок
Другие README файлы в этих дотсах
- Бинды системы
- Список базового софта в системе и доп информация
- Цвета и иконки тем, храню для себя
- Список известных проблем при настройке системы
- Копия man page для bspwm с доп инфой
- Описание плагинов для mpv
- NeoVim config
Мини гайд по NixOS
- Одинаковые вещи могут делаться разными способами. Это норма, ведь nix считается языком програмимрования. По началу меня это бесило, когда читал чужие дотсы
- Нюансы работы NixOS в этом видео. Мне понравилось
- Плейлист с английскими видео. Мне больше всего понравились видео под номерами 16, 18, 21, 27 и 28.
- Пакеты искать тут. Параметры для сток NixOS тут. Параметры для home-manager тут. Для моих конфигов надо обязательно искать в unstable ветке, ибо параметры могут отличаться.
- Для системной темы тут используется stylix. Все его параметры можно найти тут.
Процесс установки
Сначала качаем NixOS GUI вариант и устанавливаем систему через визуальный установщик. При установке выбираем минимальный вариант, без DE.
Кто-то говорит, что потом достаточно просто забилдить одной командой чужой конфиг, но это не так. Будет ошибка, что нет гита. Если использовать nix-shell для гита, то скажет, что нет экспериментальной функции. Либо писать огромную команду, либо, как советую сделать я, изменить стоковый конфиг никса. Для этого пишем следующее:
sudo nano /etc/nixos/configuration.nix
Я добавил туда nix.settings.experimental-features = [ "nix-command" "flakes" ]; сразу после настроек boot. Ниже, почти в самом конце, в environment.systemPackages = with pkgs; я добавил пакеты 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
fastfetch
];
}
После этого сохраняем и пишем в терминале это:
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, не знаю как с него использовать такой синтаксис):
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каталоге, чтоб скопировать нужные конфиги в нужные каталоги. Симлинки не работают - Настроить приложения
Qt5 Settings,Qt6 SettingsиKvantum. Там надо выбрать свою системную тему. Вроде всё интуитивно понятно будет. Можно попробовать обновить систему, в надежде, что системная темаstylixначнёт работать с приложениямиqt. Для этого надо будет закомментить настройкиqtв конфигеstylix. - Руками настроить
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 чтоб выйти.
Изменения для виртуалок
Виртуалка требует минимум 100гб памяти. Если хочешь меньше, то удали огромную кучу софта из конфигов, который тебе не нужен на виртуалке.
Это надо, чтоб включить коннект по 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"'';