{ description = "Nix Flake to use LibreOffice Base with an SQLite database"; inputs = { nixpkgs.url = "flake:nixpkgs"; git-hooks.url = "github:cachix/git-hooks.nix"; git-hooks.inputs.nixpkgs.follows = "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 database = "LesQuatreRoux"; in pkgs.mkShell { JAVA_HOME = pkgs.libreoffice.unwrapped.jdk; ODBCSYSINI = let odbcsysini = pkgs.writeTextDir "odbcinst.ini" '' [ODBC Drivers] SQLite3=Installed [SQLite3] Description = SQLite ODBC Driver Driver = ${pkgs.lib.getLib pkgs.unixODBCDrivers.sqlite}/lib/libsqlite3odbc.so Setup = ${pkgs.lib.getLib pkgs.unixODBCDrivers.sqlite}/lib/libsqlite3odbc.so 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=SQLite3 ''; odbcini = pkgs.writeTextDir "odbc.ini" '' [${database}] Description=${database} database Driver=SQLite NoCreat=No LongNames=Yes Database=${database} TraceFile=/tmp/${database}.log # DescriptionNote: optional lock timeout in milliseconds; default 100000 #Timeout=2000 ''; in # ExplanationNote: somehow using ODBCINI= does not work, so keep everything in ODBCSYSINI= pkgs.symlinkJoin { name = "ODBCSYSINI"; paths = [ odbcsysini odbcini ]; }; buildInputs = [ #pkgs.bat pkgs.dbeaver-bin pkgs.fswatch pkgs.hsqldb pkgs.libreoffice #pkgs.sqlfluff #pkgs.sqlite #pkgs.sqlitebrowser #pkgs.unixODBC (pkgs.writeShellScriptBin "sql" '' exec ${pkgs.hsqldb}/bin/sqltool --inlineRc='url=jdbc:hsqldb:hsql://localhost:9001/LesQuatreRoux' --autoCommit "$@" '') ]; shellHook = '' #bat $ODBCSYSINI/odbcinst.ini #bat $ODBCSYSINI/odbc.ini export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath [pkgs.unixODBC]}:$LD_LIBRARY_PATH set -x #odbcinst -j #odbcinst -q -d -n SQLite3 #odbcinst -q -s -h #odbcinst -q -s -n ${database} nix build -o hsqldb ${pkgs.hsqldb} set +x echo "You may now launch runServer" '' # + checks.${system}.git-hooks-check.shellHook ; }; }); # nix flake check checks = forAllSystems (args: with args; { git-hooks-check = inputs.git-hooks.lib.${system}.run { src = ./.; hooks = { nixpkgs-fmt.enable = true; #sqlfluff.enable = true; reuse = { enable = true; entry = "${pkgs.reuse}/bin/reuse lint"; pass_filenames = false; }; }; }; }); }; }