Claude Info
DevOps

nix-config

malob/nix-config

Декларативные Nix-конфиги для macOS и Linux: flakes, nix-darwin, home-manager, единая цветовая схема, настройка Claude Code с MCP-серверами и live-редактированием конфигов.

Установка

terminal
bash
git clone https://github.com/malob/nix-config.git

README

Мои Nix-конфиги

Build Nix envs

Репозиторий содержит мои Nix-конфиги для macOS и Linux, а также конфигурации большинства инструментов и программ, которыми я пользуюсь — по крайней мере в терминале.

Я постоянно дорабатываю и улучшаю свой сетап, стараюсь сделать как можно больше конфигурации декларативной и люблю экспериментировать с новейшими обновлениями и фичами, поэтому репозиторий меняется часто. Я стараюсь следить за тем, чтобы master всегда собирался и не содержал серьёзных багов (по крайней мере в моём рабочем процессе), а код был достаточно хорошо задокументирован.

Не стесняйтесь открывать issue или начинать обсуждение, если нашли баг, считаете что-то сломанным, думаете что я делаю что-то неуклюже и хотите предложить более элегантное решение, пытаетесь позаимствовать что-то из моего конфига но не можете заставить это работать, или хотите сказать «а ты знаешь про X, тебе наверняка понравится». (Issues лучше подходят для реальных проблем, обсуждения — для идей и вопросов.)

Я не обещаю быстро отвечать или обязательно исправлять баги (особенно если сам их не воспроизвожу), но вы точно не будете навязчивы, и я, скорее всего, отвечу в течение нескольких дней.

Ниже я выделил то, чем особенно доволен или что, на мой взгляд, может быть полезно другим.

Основные возможности

В произвольном порядке:

  • Flakes!
    • Все внешние зависимости управляются через flakes для удобного обновления.
    • Outputs для системных конфигураций macOS через nix-darwinhome-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-darwin users-primaryUsers, но под home.user-info. Примеры использования — в home/git.nix.
      • Модуль colors для декларативного определения цветовых схем с использованием цветовой математики OkLCH. Схемы задают общие монотонные и акцентные цвета; модуль автоматически генерирует светлую/тёмную полярности с корректным маппингом ANSI, яркие варианты и темы для отдельных приложений (Ghostty, Fish, kitty, bat, yazi). Пример использования — в home/colors.nix.
      • malo-git-aliases
      • malo-gh-aliases
      • programs-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/ для редактирования без пересборки.
    • Глобальный контекст, настройки и разрешения управляются декларативно.

Похожие скиллы