{ description = "Nix Flake to use LibreOffice Base with an SQLite database"; inputs = { nixpkgs.url = "flake:nixpkgs"; }; outputs = inputs: let lib = inputs.nixpkgs.lib; forAllSystems = f: lib.genAttrs lib.systems.flakeExposed (system: f rec { inherit system; pkgs = inputs.nixpkgs.legacyPackages.${system}; }); in { devShells = forAllSystems ({ pkgs, system, ... }: { default = let driverSqlite = "${pkgs.lib.getLib pkgs.unixODBCDrivers.sqlite}/lib/libsqlite3odbc.so"; in pkgs.mkShell { JAVA_HOME = pkgs.libreoffice.unwrapped.jdk; ODBCSYSINI = pkgs.writeTextDir "odbcinst.ini" '' [ODBC Drivers] SQLite3Driver=Installed [SQLite3Driver] Description = SQLite ODBC Driver Driver = ${driverSqlite} Setup = ${driverSqlite} Threading = 2 UsageCount=1 FileUsage= 1 CPTimeout= CPReuse= FKSupport=Yes SyncPragma= # Sadly does not work: https://github.com/sqitchers/docker-sqitch/pull/16/. [Default] Driver=SQLite3Driver ''; ODBCINI = pkgs.writeText "odbc.ini" '' [testDSN] Description=Test DB Driver=SQLite3Driver Database=/home/julm/work/julminfo/sibert/test.sqlite TraceFile=/home/julm/work/julminfo/sibert/test.log NoCreat=No LongNames=Yes # DescriptionNote: optional lock timeout in milliseconds; default 100000 #Timeout=2000 ''; buildInputs = [ pkgs.sqlite pkgs.sqlitebrowser pkgs.libreoffice pkgs.bat pkgs.unixODBC ]; shellHook = '' bat $ODBCSYSINI/odbcinst.ini bat $ODBCINI export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath [pkgs.unixODBC]}:$LD_LIBRARY_PATH set -x odbcinst -j odbcinst -q -d -n SQLite3Driver odbcinst -q -s -h odbcinst -q -s -n testDSN set +x '' # + checks.${system}.git-hooks-check.shellHook ; }; }); }; }