20 KiB
Тут будут всякие заметки и доп информация по работе с NixOS
Если не хочешь обновлять систему, но надо скачать пакеты последней версии, то используй upd nixpkgs2 и перед именем пакета добавь pkgs2.. Команда в терминале обновить второй unstable репозиторий. А префикс pkgs2.пакет говорит "скачай пакет из репозитория pkgs2".
Если ты обновил всю систему, но некоторые программы сломались, то можно не откатывать всю систему, а попробовать добавить к ним префикс spkgs.. Это скачает их из стабильной ветки репозитория
В стоке используется браузер LibreWolf, который имеет неприятные настройки безопасности. Мне проще выключить некоторые настройки безопасности в нём, чем выключить лишний шлак в Firefox. Chromium стоит как запаска для некоторых сайтов, как основа он мне не нравится. Написать какие настройки безопасности я выключил в LibreWolf мне лень. Как минимум офнул удаление истории при каждом ребуте. Но могу сказать какие настройки я использую в Firefox и LibreWolf, связанные просто с удобством. Они в таблице ниже.
| Настройка about:config | Значение | Описание |
|---|---|---|
| browser.bookmarks.openInTabClosesMenu | false | Не закрывать меню закладок при открытии ссылки |
| browser.tabs.loadBookmarksInBackground | true | Не перекидывать на закладку, открытую в новой вкладке |
| layout.css.has-selector.enabled | true | Для кастом стилей |
| accessibility.typeaheadfind.enablesound | false | Чтоб не булькало на ухо |
| full-screen-api.warning.timeout | 0 | Чтоб фулскрин popup не вылазил |
| browser.tabs.insertAfterCurrent | true | Чтоб новые вкладки были справа от нынешней |
Если хочешь сменить стоковый браузер, то мб надо поменять переменную в ./nixos/home.nix. Если не помогает, то допом команда в терминале (замени librewolf на нужный браузер):
xdg-settings set default-web-browser librewolf.desktop
Смена тем сейчас работает криво для qt приложений. Можно автоматизировать gtk темы, но qt придётся руками добавлять/менять. Возможно фикс уже вышел, но мне лень проверять. У меня везде gruvbox и менять не планирую.
Чтоб задать аватарку юзера в SDDM (это меню ввода пароля при запуске пк), надо отправить png файл такой командой:
sudo cp image.png /var/lib/AccountsService/icons/username
То есть именно username, без .png в конце
Настройки смены языка, тачпада и мыши можно найти в файле ./modules/nixos/xserver.nix. У меня там стоит необычный скрол мышкой. Я не использую колесо мыши. Я зажимаю дальнюю боковую кнопку мыши и двигаю мышку по столу. В какую сторону двигаешь мышку, в ту сторону и будет скрол. Так можно удобно регулировать скорость скрола и быстро оказываться где надо. Язык я меняю на капслок. Для активации капса надо жать шифт капслок. В этом же файле есть настройка для amd видеокарт, которую надо выключить, если у тебя nvidia. Не знаю надо ли что-то настраивать для nvidia после этого.
В стоке выключены следующие конфиги (их можно включить в bundle.nix в разных каталогах):
filesystem.nix- Конектить внешние диски автоматически. В стоке выкл, потому что у каждого свои айдишники дисков.hibernate.nix- Настройки гибернации. В стоке выкл, потому что у каждого свои айдишники файла подкачки.vr.nix- Пакеты для работы виара на linux. Нужно очень мало кому, потому выклvscode.nix- Настройки vscode. Большинство предпочтёт настраивать его по старинке руками, а не через геморный конфигsymlinks.nix- Настройки симлинков. Не всем надо, плюс у каждого свои симлинки. Потому выкл в стоке- Файл подкачки - У меня он в
/etc/nixos/hardware-configuration.nix, который у каждого свой. Потом вынесу это в дотсы.
Хоть тут и установлен i3wm, но он не настроен. Можешь удалить его из конфига, чтоб место не занимал. Я потом займусь его настройкой.
Если обновил систему и спустя время с ней всё окей, всё стабильно, то советую запускать сборщик мусора. При обновлении nixos не удаляет старые пакеты, чтоб ты мог откатиться назад, в случае поломок, даже если нет интернета. Чтоб удалить пакеты, которые больше не используются, можно использовать команду grb (это мой алиас в zsh).
Баш скрипты требуют другой шебанг в начале. Обязательно используй #!/usr/bin/env bash вместо #!/bin/bash. Первый вариант будет работать на любой OS с bash, а вот второй вариант ломается.
Не юзай ИИ для поиска информации по NixOS, он всегда выдумывает параметры. Сколько бы я не тестил разные ИИ для настройки NixOS, они даже базовые вещи не могут дать, тут слишком часто всё меняется и в интернете слишком мало информации по данной OS, чтоб ИИ давал хоть что-то рабочее
TODO
Надо сделать декларативную QT тему. Сейчас у меня есть файлы в каталоге shit. Их я могу скопировать в ~/.config, нужная переменная окружения в home.nix стоит и всё заработает. Но это не то, что я хочу. Другой человек не сможет это юзать мб. Потому что там в коде написан путь /home/buliway. Не всем же быть буливеями. Хотя это изи исправляется, потом сделаю. Но пока что я не хочу тратить время на настройку QT, который нормально настроить невозможно.
Надо добавить в polybar отображение:
- Заряд аккума. Сейчас проверить негде. Мб взять готовый вариант тут
- Яркость экрана. Тоже ноуты. Хз надо ли
- Температура и нагрузка на гп
- Температура цп
- Блютуз. Не знаю отображается ли он сейчас. Не могу проверить, негде
Установить и настроить:
- i3wm с его экосистемой софта. Чтоб тот же polybar был лишь на bspwm, а на i3 работал i3bar
- Sway. Для тестов wayland на nixos
- Hyprland. Для тестов wayland на nixos
Описание
Железо, на котором работают мои дотсы:
- CPU: i5 10400f
- GPU: AMD RX6600
- RAM: 32gb (2x16) ddr4 3200
- Motherboard: MSI Z590-A PRO
- Два монитора 1920x1080 на 165 и 100 герц
Основной набор софта
Изначально я написал конфиги для bspwm + polybar. Но потом хочу затестить другию WM. В теории между ними можно переключаться при запуске пк, так что проблем быть не должно. Если какой-то WM надо выключить, чтоб не засирать систему, то это можно делать в modules/home-manager/bundle.nix
| Software | Name |
|---|---|
| WM | bspwm |
| Hotkeys | sxhkd |
| Terminal | Alacritty, Kitty |
| Multiplexer | Zellij |
| Shell | oh-my-zsh with many plugins |
| Shell Prompt | Starship |
| Apps/Menus | Rofi |
| Bar | Polybar |
| ScreenLock | betterlockscreen |
| Notification | Dunst |
| Files | Thunar, Ranger |
| Images | qView, imv, feh |
| Video | mpv with plugins |
| Music | Strawberry, mpv |
| Browsers | Librewolf, Firefox, Chromium |
| Social | Discord, Telegram, Steam |
| Audio | PipeWire, pavucontrol |
| Color Theme | Gruvbox Dark Medium |
| Icons | Papirus Dark |
| DM | SDDM |
| Compositor | Нет. Мне не нужны анимации и прозрачность |
| Screenshare | OBS, Screenkey, ksnip |
| Code Editor | Neovim, VSCode |
| Video Editor | Blender |
| Fetch | fastfetch |
| Torrent | qBittorrent |
| Email client | Thunderbird |
| Color picker | xcolor, gcolor3 |
| Docs/eBook | Evince, LibreOffice, Calibre |
| Design | Gimp, Krita |
| Productivity | Obsidian, Planify |
Чтоб узнать sha256 для гитхаб репы, пишем в терминал эту команду:
nix-prefetch-git link
Если хочется поменять цвета или шрифты в конфиге какой-то программы, но при ребилде получается конфликт, то дело в Stylix, который управляет системной темой и сам везде ставит шрифты и цвета. Если хочется заменить, не трогая stylix, то надо добавить lib.mkForce перед значением. Например так:
font = lib.mkForce "JetBrainsMono Nerd Font 11";
Узнать localhost виртуалки, чтоб конектиться по ssh:
ip a
В бутменю биоса надо ставить не ссд диск, а nixos boot. У меня иначе не работало
Нюансы с JetBrains Toolbox
В стоке тулбокс может всегда разлогинивать. Я не проверял, сразу сделал как просили на вики, чтоб это исправить.
Надо скачать тулбокс (уже стоит), запустить его один раз, а потом:
- Изменить
~/.local/share/JetBrains/Toolbox/.storage.jsonи добавить строку"preferredKeychain": "linux-fallback"(у меня было в стоке) - Залогиниться как обычно, но остановиться после того, как JetBrains вебсайт откроется
- Перезапустить JetBrains Toolbox, открыть настройки и нажать
"Troubleshoot..." - Следуй инструкциям по ручному входу в систему, как указано в руководстве
После выполнения этих действий JetBrains Toolbox сохранит учетные данные пользователя в зашифрованном файле (со статическим ключом) по адресу ~/.local/share/JetBrains/Toolbox/.securestorage. Если этого не сделать, JetBrains Toolbox не сможет получить учетные данные через libsecret (из-за bwrap sandboxing?) и постоянно уведомляет пользователя о необходимости повторной авторизации.
Если что-то не работает, то мб помогут эти ссылки:
Настройки для игр
Я установил MangoHud, gamemode и gamescope. Ещё есть proton-ge в steam. Всё это можно по разному комбинировать между собой.
MangoHud
Мониторинг ресурсов для vulkan и opengl приложений. Показывает fps и нагрузку на пк, включая температуры цп и гп. Можно использовать как полноценные бенчмарки, логируя всю его инфу и визуализируя данные другой утилитой. Чтоб использовать, надо написать mangehud приложение, если запускать через терминал, или mangohud %command%, если использовать через steam. Если используется вместе с gamescope, то надо писать gamescope --mangoapp.
gamemode
Оптимизатор линукса для игр. В параметры запуска игры в стиме пишешь gamemoderun %command% и всё работает.
gamescope
SteamOS session compositing window manager. Можно назвать мини wm внутри wm (хотя можно и в tty запустить, без стороннего wm). Не совсем понимаю когда его надо использовать. Иногда, если у игры есть проблемы с обычным linux, то она может нормально запускаться через gamescope
Параметры запуска Steam
Если в параметры запуска захочется добавить что-то помимо того, что я напишу, то надо учитывать порядок написания. Как я понял, если надо используется переменная, то её надо писать в начале. Например, если в игре не работает печать на русском языке, то надо в начало добавить LC_ALL="ru_RU.UTF-8". Если же речь про стандартные параметры запуска стима, по типу -dev или -novid, то их надо писать после %command%. Слово %command% скорее всего является игрой, то есть команда для запуска игры. То есть синтаксис как в обычном терминале. Сначала переменные окружения, потом команда, потом параметры запуска через -параметр.
Параметры запуска для игр, чтоб использовать все доступные бафы, что я сделал:
Параметр запуска без использования gamescope - mangohud gamemoderun %command%.
Параметр запуска с использованием gamescope gamescope --mangoapp gamemoderun %command%.
Вот пример параметров запуска для Apex Legends: mangohud gamemoderun %command% +exec autoexec.cfg -dev
FSR в proton-ge включается только в фулскрине через WINE_FULLSCREEN_FSR=1. Регулировать резкость можно через переменную окружения WINE_FULLSCREEN_FSR_STRENGTH=N, где N - это уровень резкости изображения от 0 до 5. Чем выше значение, тем меньше резкость. По умолчанию установлено значение "2", рекомендуют использовать значение "3".
Настройка мониторов
На иксах второй монитор может не работать или все мониторы могут сидеть на 60 герц. Изменить это один раз недостаточно, после ребута сбросится. Не знаю нормального способа, кроме как добавить настройки в автозапуск. Ниже пример того, как произвести начальную настройкy:
# Увидеть список мониторов
xrandr
# Изменить настройки для основного монитора. Мб вместе с --primary для основного монитора
xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
# Изменить настройки для второго (правого) монитора
xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2
Есть ещё такая штука - https://github.com/phillipberndt/autorandr . Но мне лень с ней разбираться
Системная тема на всех вебсайтах
Если используется популярная системная тема, то, скорее всего, её можно выбрать в браузерном расширении DarkReader, чтоб все сайты в интернете выглядели как системная тема. Может быть я потом займусь синхронизацией темы stylix с настройками DarkReader
Запуск Waydroid на X11
Один раз написать в терминале waydroid init
- Запустить
weston - В его терминале написать
waydroid session start & - Потом
waydroid show-full-ui
На weston всё работает сразу как надо. Но стоит изменить размеры окна, как waydroid ui пропадает. Приходится стопать и по новой запускать отображение