이 사이트는 의 를 yeokja로 기계 번역한 비공식 한국어판입니다. 정확한 내용은 원문을 확인하세요.

6. 프로젝트를 플레이크로 전환하기

빠른 시작/프로젝트를 플레이크로 전환하기
가이드 6 / 8
이 가이드에서

→기존 프로젝트를 플레이크로 전환하기

→플레이크의 개발 환경 사용하기

Zero to Nix의 이전 단계 중 일부에서 Nix 플레이크와 Nix 개발 환경에 대해 배웠습니다. 직접 만든 프로젝트를 플레이크로 전환하는 일은 다소 까다로울 수 있으므로, 저희 Determinate Systems는 여러 상황에서 도움이 되는 도구를 만들었습니다. 바로 FlakeHub 플랫폼용 CLI인 fh입니다. fh에는 fh init이라는 유틸리티가 있으며, 이 유틸리티는 다음 두 가지를 바탕으로 flake.nix 파일을 생성합니다:

  1. 프로젝트의 내용
  2. 대화형 질문에 대한 여러분의 응답

Nix를 사용하여 fh init을 실행할 수 있습니다:

Initialize your flake
nix run "https://flakehub.com/f/DeterminateSystems/fh/*" -- init

이 명령은 일련의 질문을 하는 대화형 빌더를 시작한 다음, 프로젝트 루트에 flake.nix 파일을 작성합니다(일부 질문에 예라고 답하면 다른 파일도 함께 작성합니다). 새 플레이크를 생성했다면, 해당 플레이크에 어떤 출력이 있는지 확인할 수 있습니다:

Display the flake's outputs
nix flake show

다음과 비슷한 결과가 표시될 것입니다:

Flake outputs
git+file:///path/to/fh-init-example-project
├───devShells
│ ├───aarch64-darwin
│ │ └───default: development environment 'nix-shell'
│ ├───aarch64-linux
│ │ └───default omitted (use '--all-systems' to show)
│ └───x86_64-linux
│ └───default omitted (use '--all-systems' to show)
└───schemas: unknown

fh init은 다양한 언어와 도구를 지원합니다. 예를 들어 프로젝트 루트에 Cargo.toml 파일이 있으면, fh init은 해당 프로젝트를 Rust 프로젝트로 추론하고 Nix 개발 환경에 Rust 의존성을 추가할지 묻습니다. 예라고 답하면, 생성된 flake.nix에는 cargo 빌드 도구와 그 밖의 Rust 전용 도구가 포함됩니다. fh init은 현재 devShells 출력만 지원한다는 점에 유의하십시오. 즉, 패키지 출력 같은 것은 생성하지 않고 개발 환경만 생성합니다.

fh init의 한계

fh init은 프로젝트에서 사용하는 언어와 도구를 추론할 때 “최선의 추측”에 기반하여 동작한다는 점을 알아 두십시오. 일부를 놓치거나 잘못 추측할 가능성도 있습니다. 하지만 이 도구가 생성하는 flake.nix가 최소한 여러분이 더 다듬어 나갈 수 있는 탄탄한 초기 템플릿 역할을 해 주기를 바랍니다.

예제 프로젝트

fh init을 시험해 볼 수 있는 예제 프로젝트를 준비했습니다:

Test out fh init using the example project
git clone https://github.com/DeterminateSystems/fh-init-example-project
cd fh-init-example-project
nix run "https://flakehub.com/f/DeterminateSystems/fh/*" -- init
# respond to the prompts
nix flake show