(https://github.com/rycee/home-manager 포함) 다른 모든 파일이 그것을보고 사용할 수 있도록 변수 dotfiles_dir을 선언하고 싶습니다.
미안하지만 그건 불가능합니다. Nix에는 전역 변수 같은 것이 없습니다. 만약 있다면, Nix 표현식이 선언되지 않은 입력에 접근 할 수 있기 때문에 재현 가능한 빌드를 제공하는 능력이 망가질 것입니다.
/etc/nixos/configuration.nix
은 장소 정보를 저장하지 않으며, 기술적으로 NixOS 모듈입니다. 하지만 더 중요한 것은 함수라는 것입니다.
그러나 ... 한 곳에서 값을 정의하고 필요할 때마다 사용하는 방법이 있습니다. 이런 식으로 뭔가 :
/etc/nixos/dotfiles-dir.nix
"/home/bjorn/.config/dotfiles"
~ /의 .config/nixpkgs/home.nix
let
dotfiles_dir = import /etc/nixos/dotfiles-dir.nix;
dotfiles = import (builtins.toPath "${dotfiles_dir}/nixos/home/default.nix");
in
...
또한 얻을 수 더 멋진 ...
/etc/nixos/my-settings.nix
{ dotfiles_dir = "/home/bjorn/.config/dotfiles";
, some_other_value = "whatever";
}
~ /의 .config/nixpkgs/home.nix
let
dotfiles_dir = (import /etc/nixos/my-settings.nix).dirfiles_dir;
dotfiles = import (builtins.toPath "${dotfiles_dir}/nixos/home/default.nix");
in
...
이런 식으로 내 설정으로 모든 곳에서 경로를 수행해야합니다. 헤더 ('{pkgs, mysettings, ...} :'와 같이)에서 가져 오기가 가능할 수도 있습니다. – bjornmelgaard
이것은 함수의 구문이며 가져 오기는 아닙니다. 함수에 mysettings를 인수로 추가 할 수 있지만 함수 호출자는 값을 제공해야합니다. 이것은 패키지에서도 작동하는 방식입니다. 최상위 표현식에 의해 다소 마술 적입니다. Nix에서 "이 값을 모든 곳에서 사용할 수있게하십시오"라고 말할 방법이 없습니다. –