nix-config
malob/nix-configДекларативные Nix-конфиги для macOS и Linux: flakes, nix-darwin, home-manager, единая цветовая схема, настройка Claude Code с MCP-серверами и live-редактированием конфигов.
Установка
git clone https://github.com/malob/nix-config.gitREADME
Мои Nix-конфиги
Репозиторий содержит мои Nix-конфиги для macOS и Linux, а также конфигурации большинства инструментов и программ, которыми я пользуюсь — по крайней мере в терминале.
Я постоянно дорабатываю и улучшаю свой сетап, стараюсь сделать как можно больше конфигурации декларативной и люблю экспериментировать с новейшими обновлениями и фичами, поэтому репозиторий меняется часто. Я стараюсь следить за тем, чтобы master всегда собирался и не содержал серьёзных багов (по крайней мере в моём рабочем процессе), а код был достаточно хорошо задокументирован.
Не стесняйтесь открывать issue или начинать обсуждение, если нашли баг, считаете что-то сломанным, думаете что я делаю что-то неуклюже и хотите предложить более элегантное решение, пытаетесь позаимствовать что-то из моего конфига но не можете заставить это работать, или хотите сказать «а ты знаешь про X, тебе наверняка понравится». (Issues лучше подходят для реальных проблем, обсуждения — для идей и вопросов.)
Я не обещаю быстро отвечать или обязательно исправлять баги (особенно если сам их не воспроизвожу), но вы точно не будете навязчивы, и я, скорее всего, отвечу в течение нескольких дней.
Ниже я выделил то, чем особенно доволен или что, на мой взгляд, может быть полезно другим.
Основные возможности
В произвольном порядке:
- Flakes!
- Все внешние зависимости управляются через flakes для удобного обновления.
- Outputs для системных конфигураций macOS через
nix-darwin(сhome-managerв качестве модуляnix-darwin) и пользовательской конфигурации Linux черезhome-manager. - Функция для упрощения создания системных конфигураций
nix-darwin(с интеграциейhome-manager):lib.mkDarwinSystem. - Output
darwinModulesдля модулейnix-darwinс дополнительной функциональностью и преднастроенной конфигурацией, включая:users-primaryUser— предоставляет опцииusers.primaryUsers.{username,fullName,email,nixConfigDirectory}, позволяющие задать эту информацию один раз и затем ссылаться на неё при настройке других опций.
- Output
homeManagerModulesдля модулейhome-managerс дополнительной функциональностью и преднастроенной конфигурацией, включая:home-user-info— предоставляет те же опции, что и мой модульnix-darwinusers-primaryUsers, но подhome.user-info. Примеры использования — вhome/git.nix.- Модуль
colorsдля декларативного определения цветовых схем с использованием цветовой математики OkLCH. Схемы задают общие монотонные и акцентные цвета; модуль автоматически генерирует светлую/тёмную полярности с корректным маппингом ANSI, яркие варианты и темы для отдельных приложений (Ghostty, Fish, kitty, bat, yazi). Пример использования — вhome/colors.nix. malo-git-aliasesmalo-gh-aliasesprograms-starship-extras— предоставляет опцииprograms.starship.extras.presets.<name>для удобного включения пресетов Starship.
- Поддержка версий Nix без поддержки flakes и устаревших рабочих процессов через
flake-compat:default.nix— позволяет традиционным командам Nix, таким какnix-build, работать с inputs/outputs flake.
- Поддержка Mac с Apple Silicon, включая возможность легко подменять пакеты x86-версиями, когда они не собираются на ARM. Ищите
pkgs-x86вflake.nixи смотритеnix.settings.extra-platformsвdarwin/bootstrap.nix. - GitHub workflow, который собирает системную конфигурацию
nix-darwinдля macOS и пользовательскую конфигурацию Linux черезhome-manager, а также обновляет кэш Cachix. Раз в неделю он также обновляет все flake inputs перед сборкой и, если сборка успешна, коммитит обновлённый файлflake.lock. - Конфигурация Git с набором удобных алиасов и улучшенными диффами через
delta. - Единая цветовая схема (основана на OK Solar — перцептуально равномерном переосмыслении Solarized) с автоматическим переключением светлой/тёмной темы в Ghostty, Fish, bat, yazi и других инструментах. Fish использует нативный формат
.themeс переключением темы через OSC — ручное переключение не требуется. - Красивая конфигурация приглашения командной строки для Fish с использованием Starship.
- Конфигурация Claude Code с возможностью редактирования без пересборки.
- Использует 1MCP для агрегации MCP-серверов через LaunchAgent.
- Симлинки конфигурационных файлов в
configs/claude/для редактирования без пересборки. - Глобальный контекст, настройки и разрешения управляются декларативно.