nixos-config: 재현 가능한 컴퓨팅 환경 구축
프로젝트 목표
선언적, 재현 가능한 컴퓨팅 환경 구축. NixOS와 home-manager를 활용하여 인간과 AI 에이전트가 협업할 수 있는 투명한 시스템 환경을 만든다.
“A computer is not a black box—it’s the blacksmith’s forge. The master controls the tools, the apprentice (agent) assists, but tool selection remains under the master’s command.”
핵심 특징
기술 스택
- OS: NixOS 25.05+ (Flakes)
- WM: i3wm (Regolith 3 style) + GNOME (specialisation)
- Compositor: picom (호스트별 제어)
- Status Bar: py3status + Emacs org-clock 통합
- Editor: Doom Emacs (dotdoom-starter 통합)
- Email: mu4e + mbsync
- Development: 언어별 모듈화 (Python, Nix, C/C++, LaTeX, Shell, Elisp)
Home-Manager 모듈화
users/junghan/modules/
├── shell.nix, i3.nix, dunst.nix, picom.nix
├── emacs.nix, email.nix, fonts.nix
└── development/ # Per-language리팩토링 성과: 341줄 → 118줄 (-65%)
철학적 기반: 재현성과 대장장이의 도구 철학
재현성의 진정한 의미
전통적 OS의 문제:
"What's installed?" → Unknown
"What version?" → Unclear
Agent: Guesses, trial-and-errorNixOS의 답:
# configuration.nix = Single source of truth
environment.systemPackages = [
pkgs.emacs pkgs.git pkgs.python311
];대장장이 비유: Master, Tools, Apprentice
구조:
대장장이 (Master/Human)
↓ 선택, 통제
도구 (Tools: Computer/NixOS)
↓ 확장된 신체
직원 (Apprentice: AI Agent)
↓ 보조, 도구 선택은 주인의 영역핵심 통찰:
- Reproducibility = Trust: configuration.nix → Agent의 정확한 행동
- Master’s Control: 도구 선택은 인간의 영역
- Scale: Desktop → Server → Cluster (동일한 문법)
- Transparency for Agents: AI가 필요한 모든 정보 제공 (systemPackages, 버전, 도구)
문서 체계: 생각의 발전사 (14개 docs/)
1단계: 설치와 기초 (2025-10-07)
20251007T084033—nixos-base-installation
- Oracle Cloud VM: GRUB → UEFI 진입
- 공개키 설정, 네트워크 자동 인식
- 핵심만 남긴 실용적 가이드
20251007T160508—regolith-i3-keybindings
- i3wm 기본 키바인딩
- Regolith 스타일 커스터마이제이션
2단계: 선배들로부터 배우기 (2025-10-08)
20251008T131800—hlissner-dotfiles-analysis
핵심 학습:
- Nix 선언적 설정 + Janet 스크립트 통합 CLI (`hey`)
- 모듈화 구조: desktop/, dev/, editors/, themes/
- 커스텀 패키지 + overlay 활용
20251008T133112—ellenajit-nixos-config-analysis
핵심 학습:
- home-manager 중심 구성 (i3, emacs, 개발환경 모두)
- niv 기반 의존성 관리 (flake 없이)
- 단순하고 명확한 모듈 구조
- 언어별 개발환경 분리 (python.nix, rust.nix, etc.)
20251008T164727—home-manager-integration-plan
리팩토링 계획:
Before:
home-manager.nix: 341줄 (단일 파일)
i3 설정: builtins.readFile ./i3 (파일 참조)
After:
home-manager.nix: 118줄 (imports만)
modules/: i3.nix, dunst.nix, shell.nix, development/
i3 설정: xsession.windowManager.i3.config (선언적)결과: -65% 코드 감소, 명확한 모듈 분리
20251008T224707—picom-compositor-strategy
- VM에서는 오버헤드 방지 (기본 비활성화)
- Desktop에서는 기본 활성화
- `Mod+c` 토글 키바인딩
3단계: 재현성의 심화 이해 (2025-10-10~11)
20251010T094310—i3에서-sway로-전환-가이드
- i3 (X11) vs sway (Wayland) 비교
- 전환 시 고려사항
20251010T095656—oracle-cloud-xrdp-설정-가이드
- xrdp를 통한 원격 접속
- NixOS 설정 방법
20251011T192649—nixos-laptop-환경-개선-작업
- Shell 환경 개선
- Claude AI와의 협업 작업
20251011T203742—nixos-home-manager-애플리케이션-재현성-전략
핵심 인사이트:
일반적 재현성 (부족함):
- 시스템 패키지 목록
- 서비스 설정
완전한 재현성 (Home-Manager):
- 애플리케이션 자체 (선언적 패키지)
- 애플리케이션 설정 (Nix store 심볼릭 링크)
- 사용자 환경 전체 (dotfiles, configs, preferences)
“애플리케이션 그 자체부터 설정까지 다 재현할 수 있어야 한다.”
Stow vs Home-Manager:
Stow: 설정 파일을 복사/링크
Home-Manager: 설정을 선언하고 생성 (Nix store 관리)4단계: 철학 정립 (2025-10-18)
20251018T184200—nixos-재현성과-대장장이의-도구철학 ⭐
핵심 통찰:
재현성이 낯선 이유:
일반적 컴퓨터 사용:
1. 프로그램 클릭-클릭 설치
2. 설정 UI 체크박스
3. "컴퓨터가 이상해요"
4. 포맷 후... "아, 뭘 설치했더라?"
→ 컴퓨터 = 블랙박스, 재현 = 기억 의존NixOS 패러다임:
# configuration.nix = 시스템 전체가 하나의 텍스트
{
environment.systemPackages = [ pkgs.emacs pkgs.git ];
services.xserver.windowManager.i3.enable = true;
}
→ 투명성 + 재현성 + 제어권대장장이 비유:
대장장이 (Human):
- 도구 선택 (nixos-config)
- 환경 통제
- 최종 판단
도구 (Computer):
- 키보드, 에디터, 언어
- 확장된 신체
직원 (AI Agent):
- 보조, 도구는 선택 안 함
- 도구 선택 = 주인의 영역Scale: Desktop → Data Center:
동일한 문법, 무한한 확장:
- Desktop: configuration.nix
- Server: configuration.nix (같은 패턴)
- Cluster: flake.nix (같은 철학)
→ 한 번 배우면 어디서나 적용5단계: 트러블슈팅과 하드웨어 대응 (2025-10-25~28)
20251025T162126—oracle-cloud-boot-volume-resize-파티션-레이블-문제
문제: Volume resize 후 파티션 레이블 손실 해결: UUID 기반 마운트 사용 (hardware-configuration.nix) 교훈: disk-config.nix는 초기 설치용, 운영 설정과 분리
20251028T120153—samsung-nt930sbe-nixos-hardware-support-guide
- Samsung Galaxy Book 계열 NixOS 하드웨어 설정
- 터치패드, 백라이트, 전원 관리 등
20251008T125047—oracle-vm-스토리지-확장-백업-전략
- Boot Volume 확장 전략
- 백업 및 복구 계획
사고의 발전사: 4단계 진화
Phase 1: 기술 학습 (10월 초)
- NixOS 설치, 키바인딩, 기본 설정
- 선배들 분석 (hlissner, ElleNajt)
Phase 2: 구조 개선 (10월 중순)
- Home-Manager 통합 계획
- 341줄 → 118줄 리팩토링 (-65%)
- 모듈화: i3.nix, development/
Phase 3: 본질 이해 (10월 중순~말)
- 완전한 재현성: 애플리케이션 + 설정 모두
- Stow vs Home-Manager 차이 이해
- Nix store 심볼릭 링크의 의미
Phase 4: 철학 정립 (10월 말)
- 재현성의 본질: 왜 낯선가? 어떻게 극복하나?
- 대장장이 비유: Master-Tools-Apprentice
- 인간-AI 협업: 투명성 = 신뢰, 제어권 = 주인
디바이스별 배포
- Oracle Cloud: 192.168.165.141 (storage-01)
- Laptop: ThinkPad P16s (Ubuntu 24.04 → NixOS)
- GPU Cluster: GPU-01~03 (RTX 5080 × 3, ProxyJump)
관련 프로젝트
- dotdoom-starter: Doom Emacs 설정
참고 자료
- hlissner/dotfiles: Doom Emacs maintainer
- ElleNajt/nixos-config: home-manager 패턴
- mtlynch.io Oracle Cloud NixOS: 초기 설치 가이드
메타정보
이 문서는 nixos-config 리포지토리의 사고 발전사를 담은 메타 가이드이다.
포트폴리오 가치:
- 기술적 깊이: 재현성의 본질 이해
- 철학적 사고: 인간-AI 협업 패러다임
- 실용적 적용: 341줄 → 118줄 리팩토링
- 체계적 문서화: 14개 문서로 사고 발전사 기록
“컴퓨터는 블랙박스가 아니라 대장장이의 대장간이다. 주인이 도구를 통제하고, 직원(에이전트)은 보조하되, 도구 선택은 주인의 영역이다.”
라이선스: MIT 작성자: Jung Han (junghan0611)