]> Git — Sourcephile - tmp/julm/libreoffice-base-sqlite.git/blob - flake.nix
fix odbc.ini by putting it inside ODBCSYSINI
[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 sqliteDB = "les4roux"; in
18 let sqliteDriverPath = "${pkgs.lib.getLib pkgs.unixODBCDrivers.sqlite}/lib/libsqlite3odbc.so"; in
19 pkgs.mkShell {
20 JAVA_HOME = pkgs.libreoffice.unwrapped.jdk;
21 ODBCSYSINI =
22 let
23 odbcsysini = pkgs.writeTextDir "odbcinst.ini" ''
24 [ODBC Drivers]
25 SQLite3=Installed
26
27 [SQLite3]
28 Description = SQLite ODBC Driver
29 Driver = ${sqliteDriverPath}
30 Setup = ${sqliteDriverPath}
31 Threading = 2
32 UsageCount=1
33 FileUsage= 1
34 CPTimeout=
35 CPReuse=
36 FKSupport=Yes
37 SyncPragma=
38
39 # Sadly does not work: https://github.com/sqitchers/docker-sqitch/pull/16/.
40 [Default]
41 Driver=SQLite3
42 '';
43 odbcini = pkgs.writeTextDir "odbc.ini" ''
44 [${sqliteDB}]
45 Description=${sqliteDB} database
46 Driver=SQLite3
47 NoCreat=No
48 LongNames=Yes
49 Database=${sqliteDB}.sqlite
50 TraceFile=/tmp/${sqliteDB}.log
51 # DescriptionNote: optional lock timeout in milliseconds; default 100000
52 #Timeout=2000
53 '';
54 in pkgs.symlinkJoin {
55 name = "ODBCSYSINI";
56 paths = [
57 odbcsysini
58 odbcini
59 ];
60 };
61 buildInputs = [
62 pkgs.bat
63 pkgs.libreoffice
64 pkgs.sqlite
65 pkgs.sqlitebrowser
66 pkgs.unixODBC
67 ];
68 shellHook = ''
69 bat $ODBCSYSINI/odbcinst.ini
70 bat $ODBCSYSINI/odbc.ini
71 export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath [pkgs.unixODBC]}:$LD_LIBRARY_PATH
72 set -x
73 odbcinst -j
74 odbcinst -q -d -n SQLite3
75 odbcinst -q -s -h
76 odbcinst -q -s -n ${sqliteDB}
77 set +x
78 '' # + checks.${system}.git-hooks-check.shellHook
79 ;
80 };
81 });
82 };
83 }