Я хочу объявить переменную 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
...
person
Emmanuel Rosa
schedule
04.11.2017