이 노트에 대하여

이 문서는 간결하고 실용적인 Emacs 스타터키트를 넘어 인간과 AI 에이전트가 같은 지식 베이스를 공유하는 협업 전면을 설명한다. 닷파일을 생태계의 프론트엔드로 보는 시야가 매우 강하게 드러난다.

#히스토리

  • [2026-04-13 Mon 09:44] @junghan — 다시 작성할거야. 이거 대문에 소개하는 문서인데 허접하다.
  • [2025-12-28 Sun 18:35] 이 문서가 핵심이지요
  • [2025-10-21 Tue 09:33] 아 공개했어요.
  • [2024-09-12 Thu 05:39] 공개로 진행 한다. 이 말은 넣을 때 고민을 해서 최대한 넣지 않아야 한다는 말이다. 그렇게 해서 최종 설정 파일은 가벼워 진다. 기능은 풀버전과 다를게 없다.

관련메타

BIBLIOGRAPHY

관련노트

2026 인간-에이전트 협업의 프론트엔드로서의 Doom Emacs

[2026-04-13 Mon 09:47]

이것은 단순한 이맥스 닷파일이 아니다.

인간(힣 /GLG)과 AI 에이전트가 동일한 ~/org/ 지식 베이스(3,300+ 노트)를 공유하며 하나의 org-agenda 타임라인 위에서 협업하는 생태계의 프론트엔드다.

이게 뭘데?

16,000줄 규모의 Doom Emacs 설정. config.el은 로더 역할만 하고 39개 lisp/ 모듈이 각각 하나의 관심사를 담당한다.

에이전트 서버(소켓 server)와 사용자 이맥스(소켓 user)가 동일한 org 파일을 읽고 쓴다. 에이전트는 어젠다에 타임스탬프를 찍고, 디지털 가든에 댓글을 남기고, 노트를 생성한다. 인간은 정제하고 연결하고 창조한다.

메타-에디터, 메타-문서 형식

여기서 해결책은 fancy하지 않다. 풀 내보내기는 33분. 쉘 스크립트가 이맥스 데몬을 호출한다. 데이터베이스 대신 Org 파일.

그런데 층위를 올려서 보면: 이맥스는 메타-에디터이고, Org-mode는 메타-문서 형식이다. 단일 작업의 속도가 아니라 전체가 조합(compose)된다는 점이 핵심이다. Org 파일이 Hugo 페이지가 되고, 시맨틱 메모리가 되고, 에이전트 컨텍스트가 되고, 다시 Org 파일이 된다. 33분 내보내기는 무인으로 실행하고, 일상적인 증분 내보내기는 초 단위.

생태계 안에서의 위치

에이전트 하네스는 agent-config이다. 스킬, 위임(delegation), 시맨틱 메모리, 멀티 에이전트 오케스트레이션이 거기 있다. 에이전트는 이맥스가 필요 없다. agent-config의 도구를 쓴다. 하지만 힣과 협업할 때는 이 이맥스 인터페이스를 공유한다 — 같은 org 파일, 같은 어젠다, 같은 elisp API.

터미널에서의 이맥스

이 Doom Emacs는 TTY에서 클립보드, 한글 입력, SSH 원격 접속까지 — GUI와 동일하게 동작한다. 에이전트는 어디서든 emacsclient 로 이맥스를 불러 elisp를 평가하고, org 파일을 읽고, 어젠다에 도장을 찍는다. 터미널은 제약이 아니라 보편 인터페이스다.

Emacs 31 IGC(MPS GC)도 실험적으로 공존 운용 중. flake.nix 로 빌드하고 별도 서버 소켓 doom-igc 로 분리.

한글 사용자로서

한영전환은 사소해 보이지만 모든 키 입력에서 마찰이 된다. korean-input-config.el 에서 Evil 상태 자동 전환, abbrev 확장, NFD→NFC 정규화를 통합했다. 터미널에서도 동일하게 동작한다. tty-config.el 로 term-keys, kitty-graphics, OSC 52 클립보드를 통합했다.

구조

doomemacs-config/
├── init.el              # Doom 모듈 + 싱글 인스턴스 가드
├── config.el            # 로더 — lisp/*.el을 require
├── lisp/ (39개)         # 하나의 관심사 = 하나의 파일
│   ├── ai-*.el              # AI/에이전트 통합 (6)
│   ├── denote-*.el          # Denote 생태계 (4)
│   ├── workflow-shared.el   # 인간 ↔ 에이전트 공유 계약
│   └── ...
├── bin/                 # 독립 실행 스크립트
│   ├── agent-server.el      # 에이전트 RPC 서버
│   ├── denote-export*.{el,py,sh}  # 멀티 데몬 병렬 내보내기
│   └── emacs-igc.sh         # Emacs 31 IGC 런처
├── run.sh               # 통합 CLI/TUI 관리
└── flake.nix            # Emacs 31 IGC Nix 빌드

히스토리

시기변화
2024-09dotdoom-starter로 시작 — 터미널 최적화 경량 설정 (~2,000줄)
2025-10공개 + 멀티 에이전트 아키텍처 (14→38 모듈) — tmux, 음성, GPTel
2026-01통합 어젠다 (workflow-shared.el) — 인간과 에이전트 단일 타임라인
2026-03봇로그 내보내기, dblock citar-style 날짜, denote-org 버그 수정
2026-04터미널 독립 실행, IGC TTY, 문서 재작성 (~16,000줄)

2025 공개버전 doomemacs-config

[2025-10-21 Tue 09:35] junghan0611/doomemacs-config - github.com

이렇게 시작한 것 입니다.

# dotdoom-starter
 
간결하고 실용적인 터미널 최적화 Doom Emacs 설정
 
[English Documentation](./README.md)
 
## 개요
 
`dotdoom-starter`는 터미널(`-nw`) 사용에 최적화된 경량 Doom Emacs 설정입니다. Ubuntu 24.04, NixOS 25.05, Termux(Android) 환경에서 동일하게 작동합니다.
 
### 주요 특징
 
- *터미널 우선 설계*: `-nw` 모드에 최적화
- *크로스 플랫폼*: 노트북, 서버, 안드로이드에서 동일한 설정
- *경량 구성*: 약 2000줄의 집중된 설정
- *간단한 설치*: Doom profiles 대신 DOOMDIR 환경변수 활용
 
### 테스트 환경
 
- *플랫폼*: Ubuntu 24.04, NixOS 25.05, Termux
- *Emacs 버전*: 30.2
- *터미널*: Ghostty 권장 (다른 터미널에서도 작동)
 
## 설치
 
### 1. Emacs 설치
 
*Ubuntu 24.04*
```bash
snap install emacs --classic
```
 
*NixOS 25.05*
```nix
environment.systemPackages = [ pkgs.emacs ];
```
 
*Termux*
```bash
pkg install emacs-nox
bash install-termux-pkgs-for-emacs.sh  # 추가 패키지
```
 
### 2. Doom Emacs 및 dotdoom-starter 설치
 
```bash
# Doom Emacs 클론
git clone https://github.com/doomemacs/doomemacs.git ~/doomemacs-starter
 
# dotdoom-starter 클론
mkdir -p ~/repos/gh/
git clone https://github.com/junghan0611/dotdoom-starter.git ~/repos/gh/dotdoom-starter
 
# 초기 동기화
DOOMDIR="$HOME/repos/gh/dotdoom-starter" ~/doomemacs-starter/bin/doom sync
```
 
### 3. Shell 설정 (bashrc/zshrc)
 
```bash
# 별칭 설정
alias esync='DOOMDIR="$HOME/repos/gh/dotdoom-starter" $HOME/doomemacs-starter/bin/doom sync'
alias esyncenv='DOOMDIR="$HOME/repos/gh/dotdoom-starter" $HOME/doomemacs-starter/bin/doom env'
alias esyncf='DOOMDIR="$HOME/repos/gh/dotdoom-starter" $HOME/doomemacs-starter/bin/doom sync -u -j 4'
alias e='env GTK_IM_MODULE=emacs XMODIFIERS=@im=emacs EMACS=emacs DOOMDIR=$HOME/repos/gh/dotdoom-starter $HOME/doomemacs-starter/bin/doom run -nw'
```
 
### 4. .desktop 파일 (선택사항, GUI용)
 
```bash
# 파일 복사 후 경로 수정
cp dotdoom-starter.desktop ~/.local/share/applications/
# 파일을 열어 경로를 자신의 환경에 맞게 수정
```
 
## 사용법
 
### 터미널 실행
 
```bash
# 기본 실행
e
 
# 파일 열기
e ~/document.org
 
# GUI 모드 (드물게 사용)
DOOMDIR="$HOME/repos/gh/dotdoom-starter" ~/doomemacs-starter/bin/doom run
```
 
### 설정 동기화
 
```bash
# 일반 동기화 (init.el, packages.el 변경 시)
esync
 
# 환경 동기화
esyncenv
 
# 강제 동기화 (패키지 업데이트 포함)
esyncf
```
 
## 구조
 
```
dotdoom-starter/
├── init.el              # Doom 모듈 선언
├── config.el            # 주요 설정 파일
├── packages.el          # 패키지 선언
├── +user-info.el        # 사용자 정보
├── +gptel.el            # AI/LLM 통합 설정
├── +functions.el        # 커스텀 함수
├── per-machine.el       # 머신별 설정 (git 제외)
├── user-keys.el         # 커스텀 키바인딩 (git 제외)
├── custom.el            # Emacs 커스터마이즈 (git 제외)
├── snippets/            # 커스텀 스니펫
├── var/                 # 실행시 생성 데이터
└── docs/                # 프로젝트 문서
```
 
### 주요 파일
 
- *init.el*: Doom 모듈 활성화 (약 160줄)
- *config.el*: 핵심 설정 및 패키지 구성 (약 1850줄)
- *packages.el*: 패키지 추가/비활성화 (약 140줄)
- *per-machine.el*: 머신별 커스터마이징 (자동 로드, git 제외)
 
## 핵심 기능
 
### 에디터
 
- *Evil 모드*: Vim 키바인딩 (`+everywhere`)
- *완성*: Corfu + Orderless + Vertico
- *스니펫*: YASnippet + Tempel
- *파일 템플릿*: 빈 파일 자동 템플릿
 
### 도구
 
- *Git*: Magit
- *Tree-sitter*: 향상된 구문 강조
- *Direnv*: 프로젝트별 환경 관리
- *Docker*: 컨테이너 관리
- *LLM*: GPTel + Claude Code 통합
 
### 언어 지원
 
Python, Nix, JavaScript/TypeScript, Web (HTML/CSS), YAML, Zig, Janet, Emacs Lisp
 
### Org-mode
 
- *Denote*: 노트 관리 시스템 (silo, sequence 포함)
- *Org-journal*: 일기 기능
- *Org-contacts*: 연락처 관리
- *내보내기*: Hugo, Pandoc
 
### 비활성화된 패키지
 
다음 패키지들은 의도적으로 비활성화되었습니다:
 
- LSP-mode (필요시 eglot 선호)
- Flycheck (flymake 사용)
- ...
 
전체 목록은 `packages.el` 참조.
 
## 커스터마이징
 
### 머신별 설정
 
`per-machine.el` 파일을 생성하여 머신별 설정 추가:
 
```elisp
;;; per-machine.el -*- lexical-binding: t; -*-
 
;; 폰트 설정
(setq doom-font (font-spec :family "JetBrains Mono" :size 14))
 
;; 테마
(setq doom-theme 'doom-one)
```
 
### 커스텀 키바인딩
 
`user-keys.el` 파일을 생성하여 개인 키바인딩 추가.
 
### 패키지 추가
 
1. `packages.el`에 패키지 선언 추가
2. `config.el`에 설정 추가
3. `esync` 실행
 
## 문제 해결
 
### 동기화 이슈
 
```bash
# 완전 재빌드
DOOMDIR="$HOME/repos/gh/dotdoom-starter" ~/doomemacs-starter/bin/doom sync -u -j 4
 
# 바이트 컴파일 정리
DOOMDIR="$HOME/repos/gh/dotdoom-starter" ~/doomemacs-starter/bin/doom clean
```
 
### 진단
 
```bash
DOOMDIR="$HOME/repos/gh/dotdoom-starter" ~/doomemacs-starter/bin/doom doctor
```
 
### 서버 재시작
 
터미널 모드에서는 `starter` 이름의 Emacs 서버가 자동 시작됩니다:
 
```bash
# 서버 종료
emacsclient -s starter -e '(kill-emacs)'
 
# 재시작
e
```
 
## 프로젝트 배경
 
이 프로젝트는 개인 Emacs 설정이 너무 복잡해져서 스타터 키트로 적합하지 않다는 인식에서 시작되었습니다. Doom Emacs의 profiles 기능을 검토했으나 문제가 많아서, DOOMDIR 환경변수를 활용한 간단한 접근법을 선택했습니다.
 
목표는 터미널 환경에서 Claude Code와 같은 CLI 도구의 대안으로 활용할 수 있는, 다양한 기능을 커버하는 실용적인 Emacs 환경을 만드는 것입니다. 패키지와 설정이 계속 추가되고 있지만, 지속적으로 정리하면서 핵심 기능만 유지할 계획입니다.
 
## 라이선스
 
MIT License
 
## 기여
 
이슈 및 PR 환영합니다.
 
## 관련 링크
 
- [Doom Emacs](https://github.com/doomemacs/doomemacs)
- [Ghostty Terminal](https://ghostty.org)
- [힣' 디지털가든: 닷파일 이맥스 스타터키트](https://notes.junghanacs.com/notes/20240915T235008)
 

2024 #최소설정 #최대효과 의 의미?!

[2024-09-22 Sun 20:03]

이맥스 설정 설정의 늪에 빠지지 않고, 공통의 설정으로 최대의 공통 분모를 찾아가야 한다. 그래야 누구나 사용 할 수 있다. 그럼에도 커뮤니티의 도움으로 최신 설정을 따라 갈 수 있어야 한다. 그러려면 가장 좋은 선택은 둠이맥스이다.

14:07 #둠이맥스 #프로파일 멀티 설치

ARCHIVE

리포

#듀얼설치