1{ lib
2, rustPlatform
3, fetchFromGitHub
4, pkg-config
5, sqlite
6, zstd
7, stdenv
8, darwin
9, fetchurl
10}:
11
12let
13 apexcharts = fetchurl {
14 url = "https://cdn.jsdelivr.net/npm/apexcharts@3.43.2-0/dist/apexcharts.min.js";
15 sha256 = "sha256-7al9VaQHu7u5jfx1HZf+T8k27kbIhgHvRwaeIeYEjVI=";
16 };
17 tablerCss = fetchurl {
18 url = "https://cdn.jsdelivr.net/npm/@tabler/core@1.0.0-beta20/dist/css/tabler.min.css";
19 sha256 = "sha256-lS3nKxMMZiKIRJG7UgUonOHYuvHgW5eckEjvHMYxb9Q=";
20 };
21 tablerVendorsCss = fetchurl {
22 url = "https://cdn.jsdelivr.net/npm/@tabler/core@1.0.0-beta20/dist/css/tabler-vendors.min.css";
23 sha256 = "sha256-Aa7AUOaz6hJLiUzQStZTy2VPOZyg0ViSo2MCzpDU1tY=";
24 };
25 tablerJs = fetchurl {
26 url = "https://cdn.jsdelivr.net/npm/@tabler/core@1.0.0-beta20/dist/js/tabler.min.js";
27 sha256 = "sha256-ygO5OTRUtYxDDkERRwBCfq+fmakhM6ybwfl6gCCPlAQ=";
28 };
29 listJsFixed = fetchurl {
30 url = "https://cdn.jsdelivr.net/npm/list.js-fixed@2.3.4/dist/list.min.js";
31 sha256 = "sha256-sYy7qNJW7RTuaNA0jq6Yrtfs57ypYrItZ3f8T7kqfPM=";
32 };
33 tablerIcons = fetchurl {
34 url = "https://cdn.jsdelivr.net/npm/@tabler/icons@2.39.0/tabler-sprite.svg";
35 sha256 = "sha256-8C9PPhDyVnym0q/RkQlTyfjKbAMRsYBlRtsMbNAepvY=";
36 };
37in
38
39rustPlatform.buildRustPackage rec {
40 pname = "sqlpage";
41 version = "0.15.1";
42
43 src = fetchFromGitHub {
44 owner = "lovasoa";
45 repo = "SQLpage";
46 rev = "v${version}";
47 hash = "sha256-0CPWMVdX0HGPMfIiDfC6TJ2t07O6eZcS7yEDVAvjLUc=";
48 };
49
50 postPatch = ''
51 substituteInPlace sqlpage/apexcharts.js \
52 --replace '/* !include https://cdn.jsdelivr.net/npm/apexcharts@3.43.2-0/dist/apexcharts.min.js */' \
53 "$(cat ${apexcharts})"
54 substituteInPlace sqlpage/sqlpage.css \
55 --replace '/* !include https://cdn.jsdelivr.net/npm/@tabler/core@1.0.0-beta20/dist/css/tabler.min.css */' \
56 "$(cat ${tablerCss})"
57 substituteInPlace sqlpage/sqlpage.css \
58 --replace '/* !include https://cdn.jsdelivr.net/npm/@tabler/core@1.0.0-beta20/dist/css/tabler-vendors.min.css */' \
59 "$(cat ${tablerVendorsCss})"
60 substituteInPlace sqlpage/sqlpage.js \
61 --replace '/* !include https://cdn.jsdelivr.net/npm/@tabler/core@1.0.0-beta20/dist/js/tabler.min.js */' \
62 "$(cat ${tablerJs})"
63 substituteInPlace sqlpage/sqlpage.js \
64 --replace '/* !include https://cdn.jsdelivr.net/npm/list.js-fixed@2.3.4/dist/list.min.js */' \
65 "$(cat ${listJsFixed})"
66 substituteInPlace sqlpage/tabler-icons.svg \
67 --replace '/* !include https://cdn.jsdelivr.net/npm/@tabler/icons@2.39.0/tabler-sprite.svg */' \
68 "$(cat ${tablerIcons})"
69 '';
70
71 cargoHash = "sha256-ooK4eIaPbUsxgDuVJkWHlArMa81TtlRfR6YYEAh7cLY=";
72
73 nativeBuildInputs = [
74 pkg-config
75 ];
76
77 buildInputs =
78 [
79 sqlite
80 zstd
81 ]
82 ++ lib.optionals stdenv.isDarwin [
83 darwin.apple_sdk.frameworks.CoreFoundation
84 darwin.apple_sdk.frameworks.Security
85 darwin.apple_sdk.frameworks.SystemConfiguration
86 ];
87
88 env = {
89 ZSTD_SYS_USE_PKG_CONFIG = true;
90 };
91
92 meta = {
93 description = "SQL-only webapp builder, empowering data analysts to build websites and applications quickly";
94 homepage = "https://github.com/lovasoa/SQLpage";
95 changelog = "https://github.com/lovasoa/SQLpage/blob/${src.rev}/CHANGELOG.md";
96 license = lib.licenses.mit;
97 maintainers = with lib.maintainers; [ dit7ya ];
98 mainProgram = "sqlpage";
99 };
100}