変数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では、「どこでもこの価値を利用可能にする」と言っても意味がありません。 –