Git에 추가하지 않고 Nix Flake 사용하기
요즘 제 저장소에서 작업할 때는 항상 저장소에 Nix flake를 추가합니다. 어떤 시스템에서든 단 한 번의 명령으로 동작하는 개발 환경을 띄울 수 있도록 하기 위해서입니다.
다른 사람의 저장소에서 작업하는데 상대방이 Nix flake 도입을 원하지 않으면 어떻게 해야 할까요?
보통이라면 그냥 제 로컬 복사본에 파일을 추가하고 로컬에서만 gitignore 처리했을 것입니다. 제 개인 설정 파일이 다른 변경 사항과 함께 커밋되지 않도록 하기 위해서죠.
Nix flake의 문제는 git add flake.nix로 저장소에 추가하지 않으면 동작하지 않는다는 점입니다. 그래서 Git에 커밋하지 않고도 저만의 flake.nix 파일을 유지할 방법을 찾아봤습니다.
옵션 1: 래퍼용 상위 디렉터리 만들기
댓글 작성자 @kesor님이 지금까지 본 것 중 가장 간단한 해결책을 제시했습니다. 상위 디렉터리를 하나 만드는 방법입니다.
examplerepo라는 저장소에서 작업한다고 가정하면, 디렉터리 구조는 다음과 같이 구성하면 됩니다.
.
├── examplerepo/ << The actual git repo
├── flake.lock
└── flake.nix이렇게 하면 flake.nix와 flake.lock이 git 저장소 밖에 위치하게 됩니다.
그런 다음 상위 디렉터리에서 nix develop을 실행하고 ./examplerepo 폴더에서 작업을 하면 됩니다.
상위 디렉터리는 git 저장소일 필요는 없지만, 원하면 git 저장소로 만들어도 됩니다.
옵션 2: git에서 변경 사항 숨기기
Silvan Mosberger님이 다음과 같은 해결책을 제시했습니다:
git add --intent-to-add flake.nix flake.lock && \
git update-index --assume-unchanged flake.nix flake.lock완벽하게 동작하지는 않습니다. git reset 같은 명령을 실행하면 설정이 풀리기 때문입니다. 하지만 flake 파일들을 변경 사항에서 효과적으로 숨겨 줍니다.
옵션 3: Nix가 git을 무시하도록 하기
Serhii Khoma님도 Nix가 git 저장소를 무시하도록 하는 우회 방법을 소개했습니다:
nix develop path:.이 방법은 표준 git 기반 방식보다 조금 느린 것 같습니다.
그리고 다음 명령으로 flake 파일들을 로컬에서 무시하도록 설정할 수 있습니다.
echo "flake.nix" >> .git/info/exclude && \
echo "flake.lock" >> .git/info/exclude이 해결책은 변경 사항 숨기기 방식보다 더 견고하지만, 평소에 쓰던 것과는 다른 nix develop 명령을 사용해야 한다는 점을 기억해 두어야 합니다.
글을 무작위로 읽기