managing-macos

macOS 관리 (nix-darwin)

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "managing-macos" with this command: npx skills add greenheadhq/nixos-config/greenheadhq-nixos-config-managing-macos

macOS 관리 (nix-darwin)

nix-darwin 및 macOS 시스템 설정 가이드입니다.

빠른 참조

Rebuild 명령어

설정 적용 (미리보기 + 적용)

nrs

오프라인 rebuild (캐시만 사용, 빠름)

nrs --offline

NO_CHANGES 스킵 우회 (activation scripts 강제 재실행)

nrs --force

미리보기만

nrp

nrs 안전 기능:

  • launchd 에이전트 정리 (setupLaunchAgents 멈춤 방지)

  • Hammerspoon 재시작 (HOME 오염 방지)

nrs/nrp 스크립트는 ~/.local/lib/rebuild-common.sh 를 source하여 공통 함수(로깅, 인수 파싱, worktree 감지, 빌드 미리보기, 아티팩트 정리)를 사용합니다. 소스: modules/shared/scripts/rebuild-common.sh , 플랫폼별: modules/darwin/scripts/{nrs,nrp}.sh

Git Worktree 지원:

git worktree에서 nrs /nrp 실행 시 자동 감지하여 worktree의 flake를 빌드합니다.

  • 감지: detect_worktree() (rebuild-common.sh source 시 자동 실행)

  • 메커니즘: FLAKE_PATH 만 worktree 경로로 전환 (--flake <worktree> 로 빌드)

  • 심링크 타깃(nixosConfigPath )은 항상 메인 레포 — worktree 빌드 후에도 심링크가 안정적

주요 설정 파일

파일 용도

modules/darwin/configuration.nix

macOS 시스템 설정

modules/darwin/home.nix

Home Manager (macOS)

modules/darwin/programs/

macOS 전용 프로그램

Nix CLI 패키지 (darwin-only)

libraries/packages.nix 의 darwinOnly 리스트에서 관리:

패키지 추가

darwinOnly = [ ... pkgs.패키지명 ];

자세한 내용: references/features.md

macOS 시스템 설정

설정 파일 설명

Dock configuration.nix

자동 숨김, 크기, 최근 앱

Finder configuration.nix

숨김 파일, 확장자, 네트워크 .DS_Store 방지

키보드 configuration.nix

키 반복 속도

트랙패드 configuration.nix

탭 클릭, 자연스러운 스크롤

Homebrew 관리

modules/darwin/programs/homebrew.nix 에서 선언적으로 관리됩니다 (personal 호스트만 적용).

cleanup = "none" — 선언되지 않은 앱을 삭제하지 않음 (수동 설치 cask 보호)

upgrade = true + greedyCasks = true — 자체 업데이터 앱의 버전 드리프트 방지

homebrew.casks = [ "codex" "ghostty" "raycast" "rectangle" "hammerspoon" "homerow" "docker-desktop" "fork" "monitorcontrol" ]; homebrew.brews = [ "laishulu/homebrew/macism" "sox" ]; # Neovim 한영 전환, 오디오 처리

shottr → Nix 패키지로 관리 (libraries/packages.nix darwinOnly)

figma → Homebrew에서 제거 (자체 업데이터가 버전을 변경하여 adopt 시 버전 충돌)

slack → Homebrew에서 제거 (수동 설치 선호, 자체 업데이터에 위임)

새 Mac 세팅 시: 직접 설치된 앱은 brew install --cask --adopt <앱> 으로 Homebrew 관리로 전환 필요.

자세한 내용: references/features.md

Shottr 선언 관리 (Nix + agenix)

Shottr 설정과 라이센스를 선언적으로 관리합니다.

파일 용도

modules/darwin/programs/shottr/default.nix

Shottr 앱 고유 설정 + 라이센스 pre-fill

modules/darwin/configuration.nix

symbolic hotkeys (스크린샷 단축키) + activateSettings + Shottr 재시작

libraries/constants.nix

Shottr 기본 저장경로 상대 경로 상수

secrets/shottr-license.age

agenix 암호화 라이센스 키 (KC_LICENSE

  • KC_VAULT )

modules/shared/programs/secrets/default.nix

~/.config/shottr/license 배포

아키텍처 노트: symbolic hotkeys와 Shottr 재시작은 configuration.nix 의 postActivation에서 처리합니다. HM activation의 activateSettings -u 가 launchctl asuser + sudo 컨텍스트에서 WindowServer와 통신하지 못하기 때문입니다.

운영 순서:

설정 적용 (라이센스 pre-fill 포함)

nrs

새 맥북: Shottr 실행 후 Activate 버튼 1회 클릭

Shottr 크레덴셜 관리 (상세)

샌드박스 앱 구조: Shottr는 macOS 샌드박스 앱이며 plist가 ~/Library/Containers/cc.ffitch.shottr/Data/Library/Preferences/cc.ffitch.shottr.plist 에 저장됩니다. ~/Library/Preferences/ 에는 존재하지 않습니다. 다만 defaults read/write cc.ffitch.shottr ... 는 cfprefsd 를 통해 Container plist에 투명하게 접근하므로, 추가 경로 지정 없이 정상 동작합니다.

라이센스 이중 저장 구조:

저장소 키 용도

macOS Keychain Shottr-license , Shottr-vault

Primary (서버 검증 후 기록)

defaults (plist) kc-license , kc-vault

Secondary (UI pre-fill용)

  • Keychain 삭제 → defaults에서 라이센스를 UI에 pre-fill하되, "Activate" 버튼 1회 클릭 필요

  • defaults 삭제 → Keychain에서 자동 복원 (라이센스 유지)

  • 양쪽 모두 삭제 → 미등록 상태

  • "Registered to:" 이메일은 Keychain (Shottr-vault )에서 읽힘 — defaults의 kc-vault 와 무관

  • kc-vault (defaults)의 정확한 역할은 불명 (Activate 시 서버 통신 데이터 캐시로 추정). 안전을 위해 둘 다 기록

Nix 관리 전략: defaults write kc-license + kc-vault 로 라이센스를 pre-fill합니다. 완전 자동 활성화는 불가능하지만(Keychain은 Nix로 관리 불가), 새 맥북에서 라이센스 키를 기억/입력할 필요 없이 Activate 버튼 1회 클릭만으로 활성화할 수 있습니다.

HM activation에서의 주의사항:

  • Home Manager activation 스크립트는 최소한의 PATH로 실행 → macOS 시스템 명령어는 절대 경로 필수 (/usr/bin/defaults , /usr/bin/killall )

  • defaults write 에서 {...} 패턴은 plist dictionary로 해석 시도 → JSON 형태 문자열은 반드시 -string 플래그 명시

  • 예: /usr/bin/defaults write cc.ffitch.shottr KeyboardShortcuts_area -string '{"carbonKeyCode":20,"carbonModifiers":768}'

defaults 테스트 시 SIGTERM vs SIGKILL:

  • killall Shottr (SIGTERM)로 종료하면 Shottr가 종료 시점에 메모리 캐시를 plist에 재기록

  • defaults 조작 테스트 시에는 반드시 kill -9 $(pgrep -x Shottr) (SIGKILL) 사용 후 defaults delete/write 실행

테스트 환경: Shottr 1.9.1 (build 128, versionCode 10901), macOS Darwin 24.6.0, 2026-02-18

Folder Actions (launchd WatchPaths)

modules/darwin/programs/folder-actions/default.nix 에서 launchd WatchPaths 기반 폴더 감시 자동화를 관리합니다.

액션 감시 폴더 용도

compress-rar ~/FolderActions/compress-rar

RAR 압축

compress-video ~/FolderActions/compress-video

FFmpeg 비디오 압축

rename-asset ~/FolderActions/rename-asset

파일 이름 변경

convert-video-to-gif ~/FolderActions/convert-video-to-gif

FFmpeg 비디오→GIF 변환

upload-immich Shottr 스크린샷 폴더 Immich 자동 업로드 (personal 전용)

로그: ~/Library/Logs/folder-actions/

iOS Shortcuts / Cherri DSL

iOS Shortcuts 빌드 파이프라인(Cherri DSL), prompt-render CLI, 모바일 프롬프트 워크플로우는 managing-shortcuts 스킬을 참조하세요.

관련 모듈: modules/darwin/programs/shortcuts/

자주 발생하는 문제

  • sudo 권한 필요: darwin-rebuild는 시스템 파일 수정에 sudo 필요

  • /etc/bashrc 충돌: 기존 설정 파일과 nix-darwin 충돌

  • 스크롤 방향 롤백: cfprefsd 재시작 시 설정 초기화

레퍼런스

  • 트러블슈팅: references/troubleshooting.md

  • 기능 목록: references/features.md

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

hosting-vaultwarden

No summary provided by upstream source.

Repository SourceNeeds Review
General

viewing-immich-photo

No summary provided by upstream source.

Repository SourceNeeds Review
General

automating-hammerspoon

No summary provided by upstream source.

Repository SourceNeeds Review
General

configuring-neovim

No summary provided by upstream source.

Repository SourceNeeds Review