C.W.K.
Stream
Lesson 05 of 05 · published

Nix Wisdom — 곡선을 productive 하게 오르기

~11 min · nix, wisdom, learning

Level 0초심자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

Nix 는 포기하게 만들 가능성 가장 높은 패키지 매니저. 이 thumb rule 들이 나머지 언어와 ecosystem 가라앉는 동안 productive 하게 유지해.

nix shell 로 시작. Nix 깔자마자 전체 dev 워크플로우 바꾸려 하지 마. 'try-this-tool' 실험엔 nix shell 사용. 그게 자연스럽게 느껴지면 진짜 프로젝트용 flake 작성. 그게 자연스러우면 nix-darwin 봐.

채널 건너뛰고 flakes 로 직진. 옛 'channels' 워크플로우 (nix-channel --add) 가 대부분 legacy 튜토리얼이 쓰는 거고, 재현성 footgun 가득. 모던 flake 기반 워크플로우가 새 코드가 쓰는 것; 그것부터 배워.

search.nixos.org/packages 사용. CLI nix search 동작하지만 web UI 가 더 빠르고 flake 에 쓸 정확한 attribute 이름 보여줘.

첫 flake 작성할 때 작동하는 starter 복사. MikaelFangel/nixos-config, srid/haskell-flake, 또는 numtide/devshell starter 가 day 1 부터 작동하는 flake 줘. 빈 파일 아니라 작동하는 starter 에서 iterate.

학습 budget 받아들여. Nix 는 '조용한 오후에 배우자' 아니야. '하루 20분, 2주' 야. 이 quest 의 다른 패키지 매니저는 커피 한 잔 시간에 배워; Nix 는 한 계절에 걸쳐 배워.

Code

부트스트래핑 습관 — 시도, 그 다음 commit·bash
# Day 1: 그냥 시도
nix shell nixpkgs#ripgrep   # 한 시간 쓰고 종료

# Day 5: 한 도구 짜리 flake 작성
# (새 repo 의 root 에)
echo '{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  outputs = { self, nixpkgs }: {
    devShells.aarch64-darwin.default =
      (import nixpkgs { system = "aarch64-darwin"; }).mkShell {
        packages = with (import nixpkgs { system = "aarch64-darwin"; }); [ ripgrep ];
      };
  };
}' > flake.nix
nix develop

# Day 30: nix-darwin 이 Mac 전체 관리

External links

Exercise

다음 2주 동안 Nix 를 한 가지 구체적 습관에 박아. 하나만 골라: (a) 실험적 도구 글로벌 install 대신 'nix shell' 사용, (b) 프로젝트 하나용 flake.nix 작성, 또는 (c) Zero to Nix 작업. 셋 다 시도하지 마. 하나 골라 매일 해, 그러면 Nix 가 피하는 도구 아니라 신뢰하는 도구가 돼.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.