<div align="center">
<h1>ai-nixCfg</h1>
<strong
>Nix home-manager 모듈과 개인 구성을 활용하여 AI 코딩 어시스턴트, LLM 도구, MCP 통합(integrations), 음성 입력, 에이전트 오케스트레이션에 필요한 설정을 제공합니다.</strong>
</div>
<div align="center">
<a href="https://github.com/DivitMittal/ai-nixCfg/actions/workflows/flake-check.yml">
<img src="https://github.com/DivitMittal/ai-nixCfg/actions/workflows/flake-check.yml/badge.svg" alt="nix-flake-check"/>
</a>
<a href="https://github.com/DivitMittal/ai-nixCfg/actions/workflows/flake-lock-update.yml">
<img src="https://github.com/DivitMittal/ai-nixCfg/actions/workflows/flake-lock-update.yml/badge.svg" alt="flake-lock-update"/>
</a>
</div>
목차 (Table of Contents)
개요 (Overview)
이 저장소는 완전한 AI 개발 툴킷을 위한 재사용 가능한 Nix home-manager 모듈과 개인 설정을 제공합니다. 이 툴킷은 선언적(declarative)이며, 재생산 가능하고(reproducible), 플랫폼 인식적입니다 (Linux + macOS). 여기에는 에이전트형 코딩 어시스턴트(agentic coding assistants), LLM CLI, MCP 통합, Talon을 통한 음성 입력, 에이전트를 위한 터미널 멀티플렉서, 토큰 압축 프록시 및 엄선된 사용자 지정 패키지 세트가 포함되어 있습니다.
| 카테고리 | 도구 |
|---|
| 에이전트형 코딩 어시스턴트 | Claude Code, Codex, GitHub Copilot CLI, OpenCode, Crush, Antigravity CLI, Pi, Hermes Agent, OpenClaw (aarch64-darwin) |
| ... | |
아키텍처 (Architecture)
graph TD
subgraph "flake.nix"
F[Flake Entry]
...
flake는 네 개의 최상위 트리(top-level trees)를 가지며, 각각 import-tree를 통해 자동 가져오기됩니다:
| 트리 | 목적 | 자동 가져오기 메커니즘 |
|---|
flake/ | flake-parts 모듈 — 앱(apps), 검사(checks), devshells, 포맷터(formatters), CI | inputs.import-tree ./flake |
| ... | | |
config/home/coding/_common/은 **순수 데이터 라이브러리(pure-data library)**입니다. 이 라이브러리는 각 도구의 common.nix 생성기가 해당 도구의 네이티브 형식으로 렌더링하는 공유 명령어/기술/에이전트/규칙을 담고 있습니다. 콘텐츠 편집은 한 번만 발생하며, 메타데이터는 모든 도구로 전파됩니다. | | |
빠른 시작 (Quick Start)
사전 구축된 AI 쉘(AI shell)에 진입하기
nix run github:DivitMittal/ai-nixCfg#ai --impure
$SHELL을 실행하며, PATH의 맨 앞에 전체 AI 툴체인이 추가됩니다. 여기에는 모든 에이전트형 어시스턴트, LLM CLI, 워크플로우 도구, MCP 바이너리 및 headroom/rtk 래퍼가 포함됩니다. 임시적(Ephemeral)입니다: 아무것도 활성화되거나 홈 디렉터리에 쓰이지 않습니다.
--impure는 앱이 환경 변수에서 $USER/$HOME을 읽어와 설정이 실행하는 사람에게 맞게 조정되도록 합니다.
현재 쉘의 PATH 증강하기 (Augment)
nix shell github:DivitMittal/ai-nixCfg --impure
동일한 바이너리이지만, 기존 쉘에 머무릅니다.
dev 쉘(dev shell) 진입하기
nixd(LSP), alejandra(formatter), nvfetcher(패키지 소스 업데이트기), 그리고 apm-cli를 제공합니다. 또한, pkgs/_sources/를 재생성하는 pkgs-update 명령도 포함합니다.
{
inputs = {
ai-nixCfg = {
...
사용 가능한 대체자 (Available Substituters)
flake.nix에 미리 구성되어 있습니다 (nixConfig.extra-substituters):
| 대체자 (Substituter) | 용도 (Purpose) |
|---|
cache.numtide.com | llm-agents.nix 패키지 |
| ... | |
지원되는 시스템 (Supported Systems)
nix-systems/default에서 가져옵니다 — Linux (x86_64, aarch64) + macOS (x86_64, aarch64). 참고: OpenClaw와 Hermes Agent 번들은 aarch64-darwin 전용이며, 다른 도구들은 크로스 플랫폼으로 작동합니다.
재사용 가능한 모듈 사용하기 (Using Reusable Modules)
개별 home-manager 모듈을 구성에 가져오려면 다음을 사용하세요:
{ inputs, ... }: {
imports = [
inputs.ai-nixCfg.homeManagerModules.ccs
...
모듈 참조 (Module Reference)
| 모듈 | 구성하는 내용 |
|---|
default | 모든 modules/home/*.nix를 가져옵니다 — 전체 개인 Cfg를 사용할 때 유용합니다 |
| ... | |
예시: ccs 모듈 (Example: ccs Module)
{
programs.ccs = {
enable = true;
...
개인 구성 사용하기 (Cfg) (Using Personal Configurations (Cfg))
전체 개인 설정을 가져오려면 Cfg 모듈을 사용하세요:
{ inputs, ... }: {
imports = [inputs.ai-nixCfg.homeManagerModules.Cfg];
}
이것은 config/setup.nix를 구성하며, 이 파일은 import-tree ./home, homeManagerModules.default, 그리고 상위 모듈들을 가져옵니다:
graph LR
Cfg[Cfg module] --> Setup[config/setup.nix]
Setup --> IT[import-tree ./home]
...
또는 경로별 특정 하위 집합을 가져오려면 다음을 사용하세요:
{ inputs, ... }: {
imports = [
(inputs.ai-nixCfg + "/config/home/coding") # 에이전트 어시스턴트 전용 (Agentic assistants only)
...
Cfg가 포함하는 내용 (What Cfg Includes)
| Layer | Contents |
|---|
| 코딩 어시스턴트 | Claude Code, Codex, Copilot CLI, OpenCode, Crush, Antigravity CLI, Pi, _common의 명령어/기술/에이전트/규칙 추가 |
| ... | |
최상위 옵션
{
aiNixCfg = {
guiApps.enable = false; # GUI 앱 캐스크 비활성화 (Antigravity, Perplexity 등)
...
독립적인 nix run ...#ai 앱은 둘 다 false로 설정하여 간결하게 유지되며 brew-nix 오버레이가 필요 없습니다.
config/home/coding/<tool>/ 아래의 각 도구는 동일한 형태를 따릅니다:
| 파일 | 목적 |
|---|
setup.nix | 패키지 설치 + programs.<tool>.enable |
| ... | |
| 도구 | 설정 | MCP | 권한 | 훅(Hooks) | 플러그인(Plugins) | TUI | 공통 생성기 (Common Generator) |
|---|
| Claude Code | ✓ | ✓ | ✓ | ✓ (PreToolUse 보안, PostToolUse nix fmt) | ✓ (caveman) | ✓ (ccstatusline) | 명령어 + 기술 + 에이전트 + 규칙 |
| ... | | | | | | | |
Claude Code 훅 (Hooks)
| 단계 (Phase) | 매처 (Matcher) | 동작 (Action) |
|---|
PreToolUse | Bash | 위험한 경로에 대한 rm -rf 차단; .env 접근 차단 |
| ... | | |
Codex 프로필 (Profiles)
| 프로필 | 모델 | 승인 | 샌드박스 | 참고 사항 |
|---|
default | gpt-5.2-codex | on-request | workspace-write | 표준 일일 사용 |
| ... | | | | |
Pi 코딩 에이전트 확장 (Pi Coding-Agent Extensions)
| 확장 (Extension) | 목적 |
|---|
fetch | URL → markdown 추출 (Mozilla Readability, jsdom, turndown, unpdf) |
| ... | |
Upstream의 kissgyorgy/coding-agents rev 4d8c448033ca332b55e79de4cbd0737da5c5cfda에 고정되어 있습니다. 해시를 새로고침하려면 rev를 증가시키고 nix build을 다시 실행하여 업데이트해야 합니다. | |
OpenCode 제공자 (OpenCode Providers)
| Provider | Models |
|---|
codex-everywhere | GPT-5.5 |
| ... | |
| The Antigravity provider는 Anthropic의 Claude와 Gemini 모델을 Antigravity 백엔드를 통해 노출하며 (별도의 Google Cloud 프로젝트가 필요하지 않습니다). | |
공유 콘텐츠 라이브러리 (_common)
config/home/coding/_common/ 디렉터리는 순수 데이터(pure data)로서 공유 명령어, 스킬, 에이전트 및 규칙을 담고 있습니다. 각 도구의 common.nix는 이 라이브러리를 소비하여 콘텐츠를 해당 도구의 네이티브 형식으로 렌더링합니다 (Claude/Crush/Copilot용 YAML frontmatter, Codex용 프롬프트, Pi용 스킬 파일 등).
graph LR
subgraph _common["_common/ (pure data)"]
CMD[commands/*.md]
...
공통 마크다운 파일을 수정하면 다음 home-manager switch 시 모든 도구에 자동으로 전파됩니다.
명령어 (Commands)
재사용 가능한 슬래시 명령어입니다. 본문은 도구와 무관하며, _common/commands/default.nix의 메타데이터는 도구별 필드(allowed-tools: Claude/Crush용, tools: Copilot용, argument-hint: Codex용)를 추가합니다.
| 명령어 | 설명 | 인자 힌트 |
|---|
build | 프로젝트 빌드 | – |
| ... | | |
스킬 (Skills)
도구와 무관한 심층 지식 문서입니다. 에이전트에 의해 온디맨드로 로드됩니다.
| 스킬 | 설명 | 도메인 |
|---|
nix-flakes | Nix flakes에 대한 깊은 지식 — flake.nix, inputs, outputs, follows, flake-parts | nix/flakes |
| ... | | |
에이전트 (Agents)
도구별 적절한 메타데이터와 함께 미리 정의된 서브 에이전트 페르소나입니다.
| 에이전트 | 모델 | 도구 | 사용 시점 |
|---|
code-reviewer | Sonnet | Read, Grep, Glob | 코드 리뷰 및 PR 분석을 위해 사전적으로 (Proactively) |
| ... | | | |
규칙 (Rules)
항상 활성화된 지침으로, context = memoryInstruction + "\n\n" + combinedRules를 통해 모든 에이전트의 시스템 프롬프트에 로드됩니다.
| 규칙 (Rule) | 적용 범위 (Covers) |
|---|
git-workflow | Conventional Commits 형식, 원자적 커밋(atomic commits), 커밋 전 nix fmt, Nix 프로젝트를 위한 nix flake check |
| ... | |
MCP 서버 (MCP Servers)
config/home/mcp.nix에 정의되어 있으며, programs.mcp.servers를 통해 적용됩니다. 각 툴별로 coding/<tool>/mcp.nix에서 토글할 수 있습니다.
| 서버 (Server) | 유형 (Type) | 출처 (Source) | 목적 (Purpose) |
|---|
deepwiki | HTTP | https://mcp.deepwiki.com/mcp | AI 기반 리포지토리 문서화 |
| ... | | | |
선택적 서버 (mcp.nix에 주석 처리됨): headroom, cognee (지식 그래프 메모리), sequential-thinking, filesystem, memory, markitdown. 활성화하려면 주석을 해제하세요.
| 툴 (Tool) | MCP 파일 | 참고 사항 (Notes) |
|---|
| Claude Code | claude/mcp.nix | enableMcpIntegration = true, enableAllProjectMcpServers = true |
| ... | | |
음성 및 브라우저 (Voice & Browser)
음성 (Voice) (config/home/voice.nix)
Talon을 통한 음성 입력 — 선언적이며, 크로스 플랫폼(Linux + Darwin)을 지원하며, 선택적으로 macOS 앱 설치가 가능합니다.
graph LR
V[aiNixCfg.voice] --> E{enable?}
E -->|true| Talon[programs.talon]
...
| 옵션 (Option) | 기본값 (Default) | 목적 (Purpose) |
|---|
aiNixCfg.voice.enable | true | 마스터 스위치 |
| ... | | |
| `programs.talon.files. | | |
graph LR
subgraph "Optimization Stack"
User[사용자] -->|hr-claude, hr-codex, …| Wrap[headroom wrap]
...
| 파일 | 컴포넌트 | 역할 |
|---|
optimization/headroom.nix | headroom 프록시 + 셸 별칭 (shell aliases) | token 모드 및 rtk 컨텍스트 도구를 갖춘 에이전트별 프록시 |
| ... | | |
Headroom 셸 별칭 (Headroom Shell Aliases)
hr-claude
hr-codex
hr-opencode
...
Headroom 환경 기본값 (Headroom Environment Defaults)
| 변수 | 기본값 | 설명 |
|---|
HEADROOM_PORT | 8787 | 프록시 리스닝 포트 |
| ... | | |
멀티플렉서 (config/home/multiplexers.nix)
| 도구 | 출처 | 목적 |
|---|
herdr | programs.herdr (터미널 멀티플렉서) | 에이전트용 창(Pane)/탭/작업 공간 오케스트레이션; ctrl+a 접두사 |
kolu | services.kolu (Juspay kolu) | 에이전트 샌드박싱 / 조정 |
Herdr 키 바인딩:
| 동작 | 바인딩 |
|---|
| 이전/다음 탭 | alt+left / alt+right |
| ... | |
오케스트레이션 (config/home/orchestration.nix)