NixOS:buildFHSUserEnv環境で構成ファイルを変更する

NixOS:buildFHSUserEnv環境で構成ファイルを変更する

NixOSでは、FHS環境を使用してunixODBCsqlite-odbclibreoffice

{ pkgs ? import <nixpkgs> {} }:
( pkgs.buildFHSUserEnv {
  name = "odbc-sqlite-libreoffice";
  targetPkgs = pkgs: with pkgs; [libreoffice unixODBC unixODBCDrivers.sqlite];
}).env

/etc/odbcinst.iniしかし、これはoptionsで生成された設定ファイルと連携しますenvironment.unixODBCDriversが、それをchrootのファイルシステムに渡す方法がわかりません。

このオプションを試してみましたextraBuildCommands

extraBuildCommands = "ln -s /host/etc/odbcinst.ini /etc/odbcinst.ini";

しかし、これは正しいアプローチではないように見え、エラーが発生します。ln: failed to create symbolic link '/etc/odbcinst.ini': Permission denied


構成ファイルをどのように配置しますか?特定のシステム構成/ビルドに基づいて環境を作成する方法が必要です。

NixOSでODBCとSQLiteを構成する他の方法がある場合は、大歓迎です。

ベストアンサー1

だから調査してみることにしました。源泉、文書が非常に悪いからです。

明らかに派生した出力/ etcまたは/ varフォルダのファイルをbuildTargetsに追加すると、buildFHSUserEnvはそのファイルをFHS環境の適切な場所に自動的にコピーします。

私の場合は、設定ファイルを$ out / etc / odbcinst.iniに配置し、それをbuildTargetsに追加する簡単な派生コードを書きました。

odbcinst = pkgs.stdenv.mkDerivation {
  name = "odbcinst";
  buildCommand = ''
    mkdir -p $out/etc
    cp $odbcinst $out/etc/odbcinst.ini
  '';
  odbcinst = pkgs.writeTextFile {
    name = "odbcinst-ini";
    text = ''
      [SQLite]
      Description = ODBC driver for SQLite
      Driver = /lib/libsqlite3odbc.so
    '';
  };
}

望むより:

[...]$ nix-shell odbc.nix 
odbc-chrootenv:[...]$ ls /etc
asound.conf  hosts   mtab       pam.d      resolv.conf  sudoers
default      localtime   nsswitch.conf  passwd     shadow   sudoers.d
fonts        login.defs  odbcinst.ini   profile    ssl      zoneinfo
group        machine-id  os-release profile.d  static

Libreofficeはファイルを認識しましたが、sqliteライブラリを読み取れないというあいまいなエラーが発生しました。だからあきらめてUbuntu仮想マシンで実行しました。

おすすめ記事