]> Git — Sourcephile - tmp/julm/libreoffice-base-sqlite.git/blob - flake.nix
init
[tmp/julm/libreoffice-base-sqlite.git] / flake.nix
1 {
2 description = "Nix Flake to use LibreOffice Base with an SQLite database";
3 inputs = {
4 nixpkgs.url = "flake:nixpkgs";
5 };
6 outputs = inputs:
7 let
8 lib = inputs.nixpkgs.lib;
9 forAllSystems = f: lib.genAttrs lib.systems.flakeExposed (system: f rec {
10 inherit system;
11 pkgs = inputs.nixpkgs.legacyPackages.${system};
12 });
13 in
14 {
15 devShells = forAllSystems ({ pkgs, system, ... }: {
16 default =
17 let driverSqlite = "${pkgs.lib.getLib pkgs.unixODBCDrivers.sqlite}/lib/libsqlite3odbc.so"; in
18 pkgs.mkShell {
19 JAVA_HOME = pkgs.libreoffice.unwrapped.jdk;
20 ODBCSYSINI = pkgs.writeTextDir "odbcinst.ini" ''
21 [ODBC Drivers]
22 SQLite3Driver=Installed
23
24 [SQLite3Driver]
25 Description = SQLite ODBC Driver
26 Driver = ${driverSqlite}
27 Setup = ${driverSqlite}
28 Threading = 2
29 UsageCount=1
30 FileUsage= 1
31 CPTimeout=
32 CPReuse=
33 FKSupport=Yes
34 SyncPragma=
35
36 # Sadly does not work: https://github.com/sqitchers/docker-sqitch/pull/16/.
37 [Default]
38 Driver=SQLite3Driver
39 '';
40 ODBCINI = pkgs.writeText "odbc.ini" ''
41 [testDSN]
42 Description=Test DB
43 Driver=SQLite3Driver
44 Database=/home/julm/work/julminfo/sibert/test.sqlite
45 TraceFile=/home/julm/work/julminfo/sibert/test.log
46 NoCreat=No
47 LongNames=Yes
48 # DescriptionNote: optional lock timeout in milliseconds; default 100000
49 #Timeout=2000
50 '';
51 buildInputs = [
52 pkgs.sqlite
53 pkgs.sqlitebrowser
54 pkgs.libreoffice
55 pkgs.bat
56 pkgs.unixODBC
57 ];
58 shellHook = ''
59 bat $ODBCSYSINI/odbcinst.ini
60 bat $ODBCINI
61 export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath [pkgs.unixODBC]}:$LD_LIBRARY_PATH
62 set -x
63 odbcinst -j
64 odbcinst -q -d -n SQLite3Driver
65 odbcinst -q -s -h
66 odbcinst -q -s -n testDSN
67 set +x
68 '' # + checks.${system}.git-hooks-check.shellHook
69 ;
70 };
71 });
72 };
73 }