와 모듈 수입의 내가 내 NixOS 있다고 가정 해 봅시다 configuration.nix
다음과 같이 설정 :NixOS - 인수
{config, pkgs, ...}:
{
services.openssh.enable = true;
}
내가 지금 인수를 기반으로 내 호스트 이름을 설정 networking.nix
라는 두 번째 파일을 갖고 싶어.
{config, pkgs, hostname, ...}:
{
networking.hostName = hostname
}
이게 가능합니까? 어떻게 파일을 포함시킬 수 있습니까? 이미 imports = [ ./networking.nix { hostname = "helloworld"; } ];
을 사용하여 작업을 시도했지만 작동하지 않았습니다.
감사합니다.
내가 NixOS로 이상한 일을하고 있는지 알 수 없습니다. 내 목표는 일련의 VM이 공통 구성을 공유하도록하는 것이 었습니다. 이러한 VM의 일부 매개 변수 만 변경해야합니다 (예 : 호스트 이름 또는 IP 주소). 매개 변수가있는 이러한 공통 서비스의 구성을 가져 오는 것이 자연스러운 선택이라고 생각했습니다. 더 나은 접근 방법이 있습니까? 아니면 내가 완전히 틀린 철학인가? 죄송합니다. 저는 NixOS에 관해서는 완전히 초보자입니다. : – lschuermann
NixOS 모듈 옵션을 통해 2. Nix 함수로 매개 변수화 된 모듈을 통해 2. 구성 요소에 값을 주입하는 세 가지 방법을 사용할 수 있습니다. ; 3. 특수한'_module.args' 옵션을 통해 모듈 옵션은 NixOS의 모든 곳에서 사용되기 때문에 먼저 시도해야한다. 아마도 충분할 것이고 타입 검사와 커스텀 NixOS 매뉴얼을 무료로 얻을 수있을 것이다. VM 이미지에 의존하는 패키지를 작성했을 때 매개 변수화 된 모듈'module.args'는 아마도 잘못된 도구 일 것입니다. 당신의 코드를 판단하기 위해 여기에 온 것이 아닙니다;) –
'hostname : {...} :'해결책은 모듈 시스템에서 작동하기 때문에 가능하면 피하십시오. 모듈 시스템을 사용하면 오류 메시지에 적절한 위치가 없거나 타사 모듈에서 모듈을 제거 할 수없는 등의 문제가 발생할 수 있습니다. 참고로,이 형식은 기존의 이유와 그것이 NixOS 테스트 스위트에 사용된다는 사실 때문에 여전히 존재합니다. – nbp