자주 묻는 질문#
Nix#
Nix 언어 코드를 자동으로 포맷하려면 어떻게 합니까?#
nixfmt는 Nix 언어 코드의 공식 포매터입니다. 설치 방법은 해당 소스 저장소를 참고하십시오.
nixfmt는 Nixpkgs의 모든 코드를 포맷하는 데 사용됩니다.
Nix 언어에서 경로와 문자열을 서로 변환하려면 어떻게 합니까?#
문자열 보간과 경로 및 문자열 연산자에 관한 Nix 참조 매뉴얼을 참고하십시오.
패키지의 역의존성을 빌드하려면 어떻게 합니까?#
$ nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
Nix로 $HOME의 dotfile을 관리하려면 어떻게 합니까?#
nix-community/home-manager를 참고하십시오.
사용자 정의 패키지를 빌드할 때 권장하는 절차는 무엇입니까?#
Nix로 기존 소프트웨어 패키징하기 문서를 읽어 보십시오.
Nixpkgs 저장소의 클론으로 패키지를 업데이트하거나 새로 작성하려면 어떻게 합니까?#
Nix로 기존 소프트웨어 패키징하기 문서와 Nixpkgs 기여 가이드를 읽어 보십시오.
NixOS#
Nix가 아닌 실행 파일은 어떻게 실행합니까?#
NixOS에서는 일반적인 Linux 환경용으로 만든 동적 링크 실행 파일을 별도 조치 없이 바로 실행할 수 없습니다. NixOS는 설계상 전역 라이브러리 경로가 없고 파일시스템 계층 구조 표준(FHS)도 따르지 않기 때문입니다.
실행 환경에 대한 기대가 이렇게 어긋나는 문제는 몇 가지 방법으로 해결할 수 있습니다.
Nixpkgs에 패키지된 버전이 있다면 그것을 사용하십시오. 사용 가능한 패키지는 https://search.nixos.org/packages에서 검색할 수 있습니다.
프로그램의 Nix 표현식을 작성하여 자신의 설정 안에서 패키지하십시오.
여기에는 여러 방법이 있습니다.
소스에서 빌드하십시오.
많은 오픈 소스 프로그램은 파일이 설치될 위치를 컴파일할 때 매우 유연하게 정할 수 있습니다. 이에 대한 소개는 Nix로 기존 소프트웨어 패키징하기 문서를 참고하십시오.
autoPatchelfHook을 사용하여 프로그램의 ELF 헤더에 라이브러리 경로가 들어가도록 수정하십시오.소스에서 빌드할 수 없을 때 이 방법을 사용하십시오.
buildFHSEnv로 프로그램을 감싸 FHS와 비슷한 환경에서 실행하십시오.이 방법은 최후의 수단이지만 필요한 경우도 있습니다. 예를 들어 프로그램이 다른 실행 파일을 내려받아 실행하는 경우입니다.
nix-ld를 사용하여 패키지화되지 않은 프로그램에만 적용되는 라이브러리 경로를 만드십시오.configuration.nix에 다음을 추가하십시오:1 programs.nix-ld.enable = true; 2 programs.nix-ld.libraries = with pkgs; [ 3 # Add any missing dynamic libraries for unpackaged programs 4 # here, NOT in environment.systemPackages 5 ];
그런 다음
nixos-rebuild switch를 실행하고, 새 환경 변수가 적용되도록 로그아웃했다가 다시 로그인하십시오. (이 과정은nix-ld를 활성화할 때만 필요하며, 포함된 라이브러리의 변경 사항은 다시 빌드하면 즉시 적용됩니다.)참고
nix-ld는x86_64머신의 32비트 실행 파일에서는 작동하지 않습니다.steam-run을 사용하여 Steam 패키지용으로 만들어진 FHS와 유사한 환경에서 프로그램을 실행하십시오:$ nix-shell -p steam-run --run "steam-run <command>"
나만의 ISO를 빌드하려면 어떻게 해야 합니까?#
http://nixos.org/nixos/manual/index.html#sec-building-image를 참조하십시오.
NixOS 테스트의 머신에 접속하려면 어떻게 해야 합니까?#
다음 패치를 적용하십시오:
diff --git a/nixos/lib/test-driver/test-driver.pl b/nixos/lib/test-driver/test-driver.pl
index 8ad0d67..838fbdd 100644
--- a/nixos/lib/test-driver/test-driver.pl
+++ b/nixos/lib/test-driver/test-driver.pl
@@ -34,7 +34,7 @@ foreach my $vlan (split / /, $ENV{VLANS} || "") {
if ($pid == 0) {
dup2(fileno($pty->slave), 0);
dup2(fileno($stdoutW), 1);
- exec "vde_switch -s $socket" or _exit(1);
+ exec "vde_switch -tap tap0 -s $socket" or _exit(1);
}
close $stdoutW;
print $pty "version\n";
그러면 vde_switch 네트워크에 로컬에서 접근할 수 있습니다.
기존 Linux 설치 환경 안에서 NixOS를 부트스트랩하려면 어떻게 해야 합니까?#
사용할 수 있는 도구가 몇 가지 있습니다: