Введение
Home Manager (далее: HM) - это система для управления пользовательской конфигурацией с помощью менеджера пакетов Nix. Простыми словами, HM позволяет:
- устанавливать программы и настраивать что-либо без прав администратора (также, все что вы установите или настроите не будет доступно для учетной записи администратора)
- управлять вашей конфигурацией в каталогах пользователя, а не администратора (например, для настройки вашего терминала, браузера, установки GTK и Qt тем, иконок и т.п.)
Пример конфигурации
На первый взгляд может показаться, что HM - сборник сложных параметров, но на самом деле большинство из этих опций отвечает лишь за установку опции в конфигурации чего либо. Для примера возьмем опцию
Этот код устанавливает Git и записывает в конфиг параметр, заставляющий сохранить введенный пароль при отправке изменений в удаленный репозиторий (git push origin master
), например. При обычной, императивной настройке мы бы написали это в .gitconfig
:
Пример конфигурации абстрактного пакета
Пример конфигурации программы, для которой нет опций в HM
А что делать, если в HM нет опций для настройки чего-либо? Тогда на помощь на приходят home.file
и xdg.configFile
:
/nix/store
. Для этого можно использовать, например, sops-nixСтартовая точка
Разберем стандартную, почти минимальную конфигурацию HM:
Использование HM
Вы спросите: я написал себе конфиг, но как теперь его обновить? Ведь он не применится после сохранения файлов. На самом деле все очень просто: если у вас standalone HM, то пересоберите его командой home-manager switch
. Если HM установлен как модуль NixOS, пересоберите систему.
Пример конфигурации Alacritty
Попробуем написать небольшую конфигурацию для эмулятора терминала Alacritty
Все, что мы написали выше приведет к следующим изменениям после выполнения команды home-manager switch
:
- в систему будет установлен Alacritty (обратите внимание: только для пользователя, для которого была написана конфигурация)
- будет установлен стандартный пакет alacritty из Nixpkgs, если вы не укажете какой-либо другой пакет
- в файл ~/.config/alacritty/alacritty.toml будет записано следующее:
Поиск опций HM
Где искать все параметры для Home Manager? Для этого есть несколько сайтов:
- Nix-community Home Manager Configuration Options - просто список абсолютно всех опций, поиска нет (официальный)
- Home Manager option search by Extranix - самый удобный сайт, позволяет искать опции и выбирать релиз HM
- Searchix by Alanpearce - ещё один сайт с поиском опций, не позволяет выбрать релиз, а также имеет довольно странную сортировку результатов (иногда трудно найти нужную опцию)