2024-01-13 08:15:51 +00:00
|
|
|
{ lib
|
|
|
|
, cargo-tauri
|
|
|
|
, cmake
|
|
|
|
, dbus
|
2024-02-29 20:09:43 +00:00
|
|
|
, fetchgit
|
2024-01-13 08:15:51 +00:00
|
|
|
, fetchYarnDeps
|
|
|
|
, freetype
|
|
|
|
, gsettings-desktop-schemas
|
|
|
|
, gtk3
|
|
|
|
, libsoup
|
|
|
|
, mkYarnPackage
|
|
|
|
, openssl
|
|
|
|
, pkg-config
|
|
|
|
, rustPlatform
|
|
|
|
, webkitgtk
|
|
|
|
, wrapGAppsHook
|
|
|
|
, sqlite
|
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
|
|
|
pname = "treedome";
|
2024-04-21 15:54:59 +00:00
|
|
|
version = "0.4.5";
|
2024-01-13 08:15:51 +00:00
|
|
|
|
2024-02-29 20:09:43 +00:00
|
|
|
src = fetchgit {
|
|
|
|
url = "https://codeberg.org/solver-orgz/treedome";
|
2024-01-13 08:15:51 +00:00
|
|
|
rev = version;
|
2024-04-21 15:54:59 +00:00
|
|
|
hash = "sha256-YkyjG/ee5WeO5OD4FZnWaqcOJO3YC0uQkbwGkCNBxC8=";
|
2024-02-29 20:09:43 +00:00
|
|
|
fetchLFS = true;
|
2024-01-13 08:15:51 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
frontend-build = mkYarnPackage {
|
|
|
|
inherit version src;
|
|
|
|
pname = "treedome-ui";
|
|
|
|
|
|
|
|
offlineCache = fetchYarnDeps {
|
|
|
|
yarnLock = "${src}/yarn.lock";
|
2024-04-21 15:54:59 +00:00
|
|
|
hash = "sha256-CrD/n8z5fJKkBKEcvpRHJaqXBt1gbON7VsuLb2JGu1A=";
|
2024-01-13 08:15:51 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
packageJSON = ./package.json;
|
|
|
|
|
|
|
|
configurePhase = ''
|
2024-02-29 20:09:43 +00:00
|
|
|
runHook preConfigure
|
2024-01-13 08:15:51 +00:00
|
|
|
ln -s $node_modules node_modules
|
2024-02-29 20:09:43 +00:00
|
|
|
runHook postConfigure
|
2024-01-13 08:15:51 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
buildPhase = ''
|
|
|
|
runHook preBuild
|
|
|
|
|
|
|
|
export HOME=$(mktemp -d)
|
|
|
|
yarn --offline run build
|
|
|
|
|
|
|
|
runHook postBuild
|
|
|
|
'';
|
|
|
|
|
|
|
|
installPhase = ''
|
|
|
|
runHook preInstall
|
|
|
|
|
|
|
|
mkdir -p $out/dist
|
|
|
|
cp -r dist/** $out/dist
|
|
|
|
|
|
|
|
runHook postInstall
|
|
|
|
'';
|
|
|
|
|
|
|
|
doDist = false;
|
|
|
|
};
|
|
|
|
in
|
|
|
|
rustPlatform.buildRustPackage {
|
|
|
|
inherit version pname src;
|
|
|
|
sourceRoot = "${src.name}/src-tauri";
|
|
|
|
|
|
|
|
cargoLock = {
|
|
|
|
lockFile = ./Cargo.lock;
|
|
|
|
outputHashes = {
|
|
|
|
"fix-path-env-0.0.0" = "sha256-ewE3CwqLC8dvi94UrQsWbp0mjmrzEJIGPDYtdmQ/sGs=";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-04-21 15:54:59 +00:00
|
|
|
env = {
|
|
|
|
VERGEN_GIT_DESCRIBE = version;
|
|
|
|
};
|
|
|
|
|
2024-01-13 08:15:51 +00:00
|
|
|
preConfigure = ''
|
|
|
|
mkdir -p dist
|
|
|
|
cp -R ${frontend-build}/dist/** dist
|
|
|
|
'';
|
|
|
|
|
|
|
|
# copy the frontend static resources to final build directory
|
|
|
|
# Also modify tauri.conf.json so that it expects the resources at the new location
|
|
|
|
postPatch = ''
|
|
|
|
substituteInPlace ./tauri.conf.json \
|
|
|
|
--replace '"distDir": "../dist",' '"distDir": "dist",' \
|
|
|
|
--replace '"beforeBuildCommand": "yarn run build",' '"beforeBuildCommand": "",'
|
|
|
|
'';
|
|
|
|
|
|
|
|
nativeBuildInputs = [
|
|
|
|
cmake
|
|
|
|
pkg-config
|
|
|
|
cargo-tauri
|
|
|
|
wrapGAppsHook
|
|
|
|
];
|
|
|
|
|
|
|
|
buildInputs = [
|
|
|
|
dbus
|
|
|
|
openssl
|
|
|
|
freetype
|
|
|
|
libsoup
|
|
|
|
gtk3
|
|
|
|
webkitgtk
|
|
|
|
gsettings-desktop-schemas
|
|
|
|
sqlite
|
|
|
|
];
|
|
|
|
|
|
|
|
buildPhase = ''
|
|
|
|
runHook preBuild
|
|
|
|
|
|
|
|
cargo tauri build
|
|
|
|
|
|
|
|
runHook postBuild
|
|
|
|
'';
|
|
|
|
|
|
|
|
installPhase = ''
|
|
|
|
runHook preInstall
|
|
|
|
|
|
|
|
mkdir -p $out/bin/
|
|
|
|
mkdir -p $out/share/
|
|
|
|
|
|
|
|
cp target/release/bundle/deb/treedome_0.0.0_amd64/data/usr/bin/treedome $out/bin/treedome
|
|
|
|
cp -R target/release/bundle/deb/treedome_0.0.0_amd64/data/usr/share/** $out/share/
|
|
|
|
|
|
|
|
runHook postInstall
|
|
|
|
'';
|
|
|
|
|
|
|
|
# WEBKIT_DISABLE_COMPOSITING_MODE essential in NVIDIA + compositor https://github.com/NixOS/nixpkgs/issues/212064#issuecomment-1400202079
|
|
|
|
postFixup = ''
|
|
|
|
wrapProgram "$out/bin/treedome" \
|
|
|
|
--set WEBKIT_DISABLE_COMPOSITING_MODE 1
|
|
|
|
'';
|
|
|
|
|
|
|
|
meta = with lib; {
|
2024-04-21 15:54:59 +00:00
|
|
|
description = "A local-first, encrypted, note taking application organized in tree-like structures";
|
2024-01-13 08:15:51 +00:00
|
|
|
homepage = " https://codeberg.org/solver-orgz/treedome";
|
2024-04-21 15:54:59 +00:00
|
|
|
license = licenses.agpl3Only;
|
2024-01-13 08:15:51 +00:00
|
|
|
platforms = [ "x86_64-linux" ];
|
|
|
|
mainProgram = "treedome";
|
|
|
|
maintainers = with maintainers; [ tengkuizdihar ];
|
2024-02-29 20:09:43 +00:00
|
|
|
changelog = "https://codeberg.org/solver-orgz/treedome/releases/tag/${version}";
|
2024-01-13 08:15:51 +00:00
|
|
|
};
|
|
|
|
}
|