Nixは、NixOS以外のシステムでSystemDモジュールをどのように管理しますか?

Nixは、NixOS以外のシステムでSystemDモジュールをどのように管理しますか?

nix-envUbuntuホストにSystemDを使用してパッケージをインストールするとします。 UbuntuのSystemDにNixパッケージのSystemDモジュールを認識させるにはどうすればよいですか?

.serviceNixがインストールしたファイルを見つけてシンボリックリンクにリンクしましょう/lib/systemd/system/アパッチカフカパック。

nix-env -i apache-kafka
sudo systemctl start apache-kafka # Failed to start apache-kafka.service: Unit apache-kafka.service not found.
sudo updatedb && locate apache-kafka.service # No dice
locate kafka | grep service # Just a bunch of `.nix` files

ここでは、Nixのサービス構成名に基づいてサービス名を推測します。パッケージ定義。この構成がSystemDサービスファイルになる方法と場所を説明する文書が見つかりません。

それでもうまくいかなかったので、Nixがどこかにこのサービスファイルを作成したことは間違いないと仮定して本格的に調査を始めました。しかし、今はそれが存在するかどうか疑問になり始めました。もしそうなら、NixパッケージマネージャがインストールしたSystemDモジュールはNixOSの外部で動作する必要がありますか?それでは、どのように機能させるのでしょうか?

ベストアンサー1

NixOSでは、environment.systemPackages = [ package ];パッケージのsystemdユニットを使用してシステムにインストールできます。証明する

の単位は、/nix/store/hash-package/lib/systemd/systemにコピーされた/run/current-system/sw/lib/systemd/system後、systemdで追加のサービスディレクトリとして使用されます。

したがって、ルートとしてパッケージをインストールするときにサービスユニットを使用するには、サービスユニットを追加/root/.nix-profile/lib/systemd/systemで提供する必要があります/etc/systemd/system

NixOSを使用しているので、完全にテストされていません。

おすすめ記事