---
title: "@힣: nixos-config: 재현 가능한 컴퓨팅 환경 구축"
url: "https://notes.junghanacs.com/notes/20251030T011102"
author: "Junghan Kim"
date: "2025-10-30T01:11:00+09:00"
lastmod: "2026-01-27T00:00:00+09:00"
tags: ["autholog","nixos","reproducibility"]
description: "nixos-config 저장소를 대장장이의 대장간 같은 운영체제 설정 인프라로 소개하며 재현 가능성과 도구 주권을 OS 수준에서 구현하려는 노트이다."
---

> [!abstract] 이 노트에 대하여
> 
> nixos-config 저장소를 대장장이의 대장간 같은 운영체제 설정 인프라로 소개한다. 재현 가능성과 도구 주권, 에이전트 협업을 OS 수준에서 구현하는 노트다.

## 관련노트

-   [† #리눅스 #유닉스 #운영체제](https://notes.junghanacs.com/meta/20250408T151014)

## 히스토리

-   [2026-01-27 Tue 10:56] 문서 업데이트
-   [2025-10-30 Thu 01:11] 생성. 연휴 동안 기본 베이스 구축

#### junghan0611/nixos-config

(“Junghan0611/Nixos-Config” 2025)

힣's nixos-config

## nixos-config: 재현 가능한 컴퓨팅 환경 구축

[2025-10-30 Thu 01:11]

### 프로젝트 목표

**선언적, 재현 가능한 컴퓨팅 환경** 구축. 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 모듈화

```nil
users/junghan/modules/
├── shell.nix, i3.nix, dunst.nix, picom.nix
├── emacs.nix, email.nix, fonts.nix
└── development/  # Per-language
```

**리팩토링 성과**: 341줄 → 118줄 (-65%)

### 철학적 기반: 재현성과 대장장이의 도구 철학

#### 재현성의 진정한 의미

전통적 OS의 문제:

```text
"What's installed?" → Unknown
"What version?" → Unclear
Agent: Guesses, trial-and-error
```

NixOS의 답:

```nix
# configuration.nix = Single source of truth
environment.systemPackages = [
  pkgs.emacs pkgs.git pkgs.python311
];
```

#### 대장장이 비유: Master, Tools, Apprentice

**구조**:

```text
대장장이 (Master/Human)
    ↓ 선택, 통제
도구 (Tools: Computer/NixOS)
    ↓ 확장된 신체
직원 (Apprentice: AI Agent)
    ↓ 보조, 도구 선택은 주인의 영역
```

**핵심 통찰**:

1.  **Reproducibility = Trust**: configuration.nix → Agent의 정확한 행동
2.  **Master's Control**: 도구 선택은 인간의 영역
3.  **Scale**: Desktop → Server → Cluster (동일한 문법)
4.  **Transparency for Agents**: AI가 필요한 모든 정보 제공 (systemPackages, 버전, 도구)

### 문서 체계: 생각의 발전사 (14개 docs/)

#### 1단계: 설치와 기초 (2025-10-07)

##### [20251007T084033--nixos-base-installation](https://github.com/junghan0611/nixos-config/blob/main/docs/20251007T084033--nixos-base-installation__guide_tutorial.org)

-   Oracle Cloud VM: GRUB → UEFI 진입
-   공개키 설정, 네트워크 자동 인식
-   핵심만 남긴 실용적 가이드

##### [20251007T160508--regolith-i3-keybindings](https://github.com/junghan0611/nixos-config/blob/main/docs/20251007T160508--regolith-i3-keybindings__reference.md)

-   i3wm 기본 키바인딩
-   Regolith 스타일 커스터마이제이션

#### 2단계: 선배들로부터 배우기 (2025-10-08)

##### [20251008T131800--hlissner-dotfiles-analysis](https://github.com/junghan0611/nixos-config/blob/main/docs/20251008T131800--hlissner-dotfiles-analysis__analysis_reference.md)

**핵심 학습**:

-   Nix 선언적 설정 + Janet 스크립트 통합 CLI (\`hey\`)
-   모듈화 구조: desktop/, dev/, editors/, themes/
-   커스텀 패키지 + overlay 활용

##### [20251008T133112--ellenajit-nixos-config-analysis](https://github.com/junghan0611/nixos-config/blob/main/docs/20251008T133112--ellenajit-nixos-config-analysis__analysis_reference.md)

**핵심 학습**:

-   home-manager 중심 구성 (i3, emacs, 개발환경 모두)
-   niv 기반 의존성 관리 (flake 없이)
-   단순하고 명확한 모듈 구조
-   언어별 개발환경 분리 (python.nix, rust.nix, etc.)

##### [20251008T164727--home-manager-integration-plan](https://github.com/junghan0611/nixos-config/blob/main/docs/20251008T164727--home-manager-integration-plan__plan_completed.md)

**리팩토링 계획**:

```text
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](https://github.com/junghan0611/nixos-config/blob/main/docs/20251008T224707--picom-compositor-strategy__strategy_guide.md)

-   VM에서는 오버헤드 방지 (기본 비활성화)
-   Desktop에서는 기본 활성화
-   \`Mod+c\` 토글 키바인딩

#### 3단계: 재현성의 심화 이해 (2025-10-10~11)

##### [20251010T094310--i3에서-sway로-전환-가이드](https://github.com/junghan0611/nixos-config/blob/main/docs/20251010T094310--i3%EC%97%90%EC%84%9C-sway%EB%A1%9C-%EC%A0%84%ED%99%98-%EA%B0%80%EC%9D%B4%EB%93%9C__nixos_sway_wayland_guide.md)

-   i3 (X11) vs sway (Wayland) 비교
-   전환 시 고려사항

##### [20251010T095656--oracle-cloud-xrdp-설정-가이드](https://github.com/junghan0611/nixos-config/blob/main/docs/20251010T095656--oracle-cloud-xrdp-%EC%84%A4%EC%A0%95-%EA%B0%80%EC%9D%B4%EB%93%9C__nixos_xrdp_oracle_remote.md)

-   xrdp를 통한 원격 접속
-   NixOS 설정 방법

##### [20251011T192649--nixos-laptop-환경-개선-작업](https://github.com/junghan0611/nixos-config/blob/main/docs/20251011T192649--nixos-laptop-%ED%99%98%EA%B2%BD-%EA%B0%9C%EC%84%A0-%EC%9E%91%EC%97%85__laptop_shell_claude.org)

-   Shell 환경 개선
-   Claude AI와의 협업 작업

##### [20251011T203742--nixos-home-manager-애플리케이션-재현성-전략](https://github.com/junghan0611/nixos-config/blob/main/docs/20251011T203742--nixos-home-manager-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EC%9E%AC%ED%98%84%EC%84%B1-%EC%A0%84%EB%9E%B5__llmlog_nixos_reproducibility_homemanager.org)

**핵심 인사이트**:

일반적 재현성 (부족함):

-   시스템 패키지 목록
-   서비스 설정

**완전한 재현성** (Home-Manager):

-   애플리케이션 자체 (선언적 패키지)
-   애플리케이션 설정 (Nix store 심볼릭 링크)
-   사용자 환경 전체 (dotfiles, configs, preferences)

> "애플리케이션 그 자체부터 설정까지 다 재현할 수 있어야 한다."

**Stow vs Home-Manager**:

```text
Stow:        설정 파일을 복사/링크
Home-Manager: 설정을 선언하고 생성 (Nix store 관리)
```

#### 4단계: 철학 정립 (2025-10-18)

##### [20251018T184200--nixos-재현성과-대장장이의-도구철학](https://github.com/junghan0611/nixos-config/blob/main/docs/20251018T184200--nixos-%EC%9E%AC%ED%98%84%EC%84%B1%EA%B3%BC-%EB%8C%80%EC%9E%A5%EC%9E%A5%EC%9D%B4%EC%9D%98-%EB%8F%84%EA%B5%AC%EC%B2%A0%ED%95%99__nixos_philosophy_reproducibility_master.md) ⭐

**핵심 통찰**:

**재현성이 낯선 이유**:

```text
일반적 컴퓨터 사용:
  1. 프로그램 클릭-클릭 설치
  2. 설정 UI 체크박스
  3. "컴퓨터가 이상해요"
  4. 포맷 후... "아, 뭘 설치했더라?"

→ 컴퓨터 = 블랙박스, 재현 = 기억 의존
```

**NixOS 패러다임**:

```nix
# configuration.nix = 시스템 전체가 하나의 텍스트
{
  environment.systemPackages = [ pkgs.emacs pkgs.git ];
  services.xserver.windowManager.i3.enable = true;
}

→ 투명성 + 재현성 + 제어권
```

**대장장이 비유**:

```text
대장장이 (Human):
  - 도구 선택 (nixos-config)
  - 환경 통제
  - 최종 판단

도구 (Computer):
  - 키보드, 에디터, 언어
  - 확장된 신체

직원 (AI Agent):
  - 보조, 도구는 선택 안 함
  - 도구 선택 = 주인의 영역
```

**Scale: Desktop → Data Center**:

```text
동일한 문법, 무한한 확장:
  - Desktop: configuration.nix
  - Server: configuration.nix (같은 패턴)
  - Cluster: flake.nix (같은 철학)

→ 한 번 배우면 어디서나 적용
```

#### 5단계: 트러블슈팅과 하드웨어 대응 (2025-10-25~28)

##### [20251025T162126--oracle-cloud-boot-volume-resize-파티션-레이블-문제](https://github.com/junghan0611/nixos-config/blob/main/docs/20251025T162126--oracle-cloud-boot-volume-resize-%ED%8C%8C%ED%8B%B0%EC%85%98-%EB%A0%88%EC%9D%B4%EB%B8%94-%EB%AC%B8%EC%A0%9C__oracle_volume_troubleshooting_disko.org)

**문제**: Volume resize 후 파티션 레이블 손실 **해결**: UUID 기반 마운트 사용 (hardware-configuration.nix) **교훈**: disk-config.nix는 초기 설치용, 운영 설정과 분리

##### [20251028T120153--samsung-nt930sbe-nixos-hardware-support-guide](https://github.com/junghan0611/nixos-config/blob/main/docs/20251028T120153--samsung-nt930sbe-nixos-hardware-support-guide__samsung_laptop_nixos_hardware.md)

-   Samsung Galaxy Book 계열 NixOS 하드웨어 설정
-   터치패드, 백라이트, 전원 관리 등

##### [20251008T125047--oracle-vm-스토리지-확장-백업-전략](https://github.com/junghan0611/nixos-config/blob/main/docs/20251008T125047--oracle-vm-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%ED%99%95%EC%9E%A5-%EB%B0%B1%EC%97%85-%EC%A0%84%EB%9E%B5__oracle_storage_backup.md)

-   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](https://github.com/junghan0611/dotdoom-starter): Doom Emacs 설정

### 참고 자료

-   [hlissner/dotfiles](https://github.com/hlissner/dotfiles): Doom Emacs maintainer
-   [ElleNajt/nixos-config](https://github.com/ElleNajt/nixos-config): home-manager 패턴
-   [mtlynch.io Oracle Cloud NixOS](https://mtlynch.io/notes/nix-oracle-cloud/): 초기 설치 가이드

### 메타정보

이 문서는 nixos-config 리포지토리의 사고 발전사를 담은 메타 가이드이다.

**포트폴리오 가치**:

1.  **기술적 깊이**: 재현성의 본질 이해
2.  **철학적 사고**: 인간-AI 협업 패러다임
3.  **실용적 적용**: 341줄 → 118줄 리팩토링
4.  **체계적 문서화**: 14개 문서로 사고 발전사 기록

> "컴퓨터는 블랙박스가 아니라 대장장이의 대장간이다. 주인이 도구를 통제하고, 직원(에이전트)은 보조하되, 도구 선택은 주인의 영역이다."

라이선스: MIT 작성자: Jung Han (junghan0611)
