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

사용량의 90% 를 커버하는 5개 명령

~14 min · nix, commands, flakes

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

모던 Nix 는 명령 수십 개지만, 비전문가의 매일 작업 대부분을 5개가 가져가. 이거 배우면 나머지 곡선 오르면서도 productive 가능.

nix shell nixpkgs#<pkg> 가 패키지 사용 가능한 임시 subshell 진입. shell 종료하면 패키지 사라져 — 시스템 그대로. '도구 commit 없이 시도' 워크플로우의 완벽한 예.

nix run nixpkgs#<pkg> -- <args> 가 한 번에 패키지 다운로드 + 실행, 패키지 전 우주에 대한 npx 같음.

nix develop 가 프로젝트의 flake.nix 가 정의한 dev 환경 진입. 이게 Nix 의 production 사용 — repo 에 flake.nix 떨구면, 어떤 팀원이든 nix develop 으로 정확히 너 도구 버전 받음, OS 나 PATH 에 이미 뭐 있든 무관.

nix search nixpkgs <query> 가 이름 / 설명으로 패키지 찾음. (https://search.nixos.org/packages 도 가능, 더 빠름.)

nix-env 는 옛 명령형 인터페이스 — 사용자 프로필에 영구 install. flake 기반 명령 (shell/run/develop) 이 모던; nix-env 는 주로 legacy 가이드용. 존재 알아두고, flakes 선호.

Code

실제 필요한 5개 명령·bash
# 임시 shell — 종료 시 패키지 사라짐
nix shell nixpkgs#ripgrep nixpkgs#bat

# 한 번 실행, install 안 함
nix run nixpkgs#cowsay -- "hello, Nix!"

# 프로젝트의 정의된 dev env 진입 (./flake.nix 사용)
nix develop

# 검색
nix search nixpkgs ripgrep

# 옛 명령형 install (주로 legacy 용)
nix-env -iA nixpkgs.ripgrep
nix-env --rollback        # 마지막 install 되돌리기
프로젝트용 최소 flake.nix·nix
# repo 루트의 flake.nix
{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  outputs = { self, nixpkgs }: {
    devShells.aarch64-darwin.default =
      let pkgs = import nixpkgs { system = "aarch64-darwin"; };
      in pkgs.mkShell {
        packages = with pkgs; [ nodejs_22 python313 postgresql_16 ripgrep ];
      };
  };
}

# 그러면 어떤 팀원이든:
#   nix develop
# ...해서 정확히 같은 도구 set 받음, 매번.

External links

Exercise

임시 shell 트릭 진짜 도구로 시도: 'nix shell nixpkgs#httpie nixpkgs#jq', 그 다음 'http https://api.github.com | jq .current_user_url'. shell 종료 — 둘 다 사라져. 이 'commit 없이 시도' 루프가 사람들 낚는 Nix 워크플로우.

Progress

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

댓글 0

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

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