Omniflake: 하나의 Nix flake로 12,000개 flake를 모두 사용하다

One Nix flake to rule them all

Omniflake: 하나의 Nix flake로 12,000개 flake를 모두 사용하다

Nix 사용자라면 flake 입력을 추가할 때마다 `url`과 `follows`를 반복해서 설정하는 번거로움을 알고 있을 것이다. fzakaria는 이 문제를 해결하기 위해 omniflake를 만들었다. omniflake는 단 하나의 flake 입력으로 약 12,000개의 flake에 접근할 수 있게 해주는 프로젝트다. Nix의 지연 평가 덕분에 필요한 flake만 가져오므로 성능 저하 없이 사용할 수 있다. 이 글에서는 omniflake의 작동 원리, Nix의 지연 평가와 flake lock 메커니즘, 그리고 대규모 flake를 만들 때 발생하는 문제와 해결 과정을 설명한다.

저는 연방의 개념을 좋아하지만, 중앙 집중식의 단순함도 원합니다. Nix 사용자로서 저는 케이크도 먹고 싶고, 그것도 먹고 싶습니다: omniflake가 바로 그 케이크입니다.
  1. jchw

    솔직히 좋은 생각인지 잘 모르겠지만, 어차피 제대로 lazy하게 만들 수 있다면야 뭐. 내 경우엔 대규모 시스템 설정에 보통 20~30개의 flake 입력을 사용하는데, 전혀 신경 쓰지 않았어. 유일한 진짜 걱정은 중복을 피하려고 Nixpkgs를 오버라이드할 때 가끔 깨질 수 있다는 건데, 의존성이 최신 Nixpkgs를 지원하지 않을 수 있거든. 하지만 지금까지는 nix-vim에서만 겪었어. 그건 어차피 어떤 형태로든 Nixpkgs에 있어야 마땅하다고 볼 수 있지. (오래 안 써봐서 현재 상태는 잘 모르겠지만.) 어쨌든 해야 하니까 찾아봤는데, 내 flake 중 하나가 거기 있더라. nix-binary-ninja, 독점 Binary Ninja 디스어셈블러/디컴파일러용 Nix flake야. 괜찮네. (참고로, 나는 그걸 사용하지만 실제로 추천하지는 않아. binja가 시스템 라이브러리를 사용해 통합을 개선하려고 이상한 짓을 하는데, 지금은 일부 확장 기능이 깨지거든. 어쩔 수 없지...)

  2. AyanamiKaine

    와, 정말 멋져 보이네요!

    꼭 사용해볼게요! 저를 항상 괴롭히는 게 있다면, 예를 들어 SDL3와 GPU API로 뭔가 개발할 때 그 하나의 공유 라이브러리를 쫓는 거예요.

  3. digdugdirk

    정말 대단하네요. NixOS를 사용하면서 느끼는 재미있는 '최고/최악' 경험을 잘 보여줍니다.

    그리고 이 저자는 요즘 정말 연타석 홈런을 치고 있네요! 흥미로운 글이 너무 많아서, 어떻게 기술 블로그를 쓰면서 CNN에서 정기 정치 프로그램을 진행하는 것과 균형을 맞추는지 모르겠어요.

이 날의 다른 글

2026-08-30