commit 87b4284ef0149e12ea7995dc6ef8c44786d4b158
parent 6bfab4ed2675f5de6ac05ef48bb838079ff82afb
Author: Nikolay Korotkiy <sikmir@disroot.org>
Date: Mon, 18 Aug 2025 01:31:47 +0400
Add cassini
Diffstat:
3 files changed, 121 insertions(+), 0 deletions(-)
diff --git a/pkgs/default.nix b/pkgs/default.nix
@@ -192,6 +192,7 @@ lib.makeScope newScope (
arcgis2geojson = callPackage ./geospatial/arcgis2geojson { };
bbox = callPackage ./geospatial/bbox { };
+ cassini = callPackage ./geospatial/cassini { };
c2cwsgiutils = callPackage ./geospatial/c2cwsgiutils { };
cmocean = callPackage ./geospatial/cmocean { };
cogdumper = callPackage ./geospatial/cogdumper { };
diff --git a/pkgs/geospatial/cassini/default.nix b/pkgs/geospatial/cassini/default.nix
@@ -0,0 +1,83 @@
+{
+ lib,
+ stdenv,
+ cctools,
+ fetchFromGitHub,
+ fetchgit,
+ gn,
+ linkFarm,
+ ninja,
+ python3,
+ removeReferencesTo,
+ runCommand,
+ rustPlatform,
+}:
+
+rustPlatform.buildRustPackage (finalAttrs: {
+ pname = "cassini";
+ version = "0.13.0";
+
+ src = fetchFromGitHub {
+ owner = "NicoRio42";
+ repo = "cassini";
+ tag = finalAttrs.version;
+ hash = "sha256-up4JCejl+/0t/8F4tG1DaX3aNz6anD2kDb2aO5DdnIE=";
+ };
+
+ cargoHash = "sha256-JLHHkad0kXY5yFITGnB+g2RIGLnIJmx3cwPnt7idVM8=";
+
+ nativeBuildInputs = [
+ python3 # skia
+ removeReferencesTo
+ ]
+ ++ lib.optionals stdenv.hostPlatform.isDarwin [
+ cctools.libtool
+ ];
+
+ buildInputs = [
+ rustPlatform.bindgenHook
+ ];
+
+ postFixup = ''
+ # library skia embeds the path to its sources
+ remove-references-to -t "$SKIA_SOURCE_DIR" \
+ $out/bin/cassini
+ '';
+
+ env = {
+ SKIA_SOURCE_DIR =
+ let
+ repo = fetchFromGitHub {
+ owner = "rust-skia";
+ repo = "skia";
+ # see rust-skia:skia-bindings/Cargo.toml#package.metadata skia
+ rev = "refs/tags/m126-0.74.2";
+ hash = "sha256-4l6ekAJy+pG27hBGT6A6LLRwbsyKinJf6PP6mMHwaAs=";
+ };
+ # The externals for skia are taken from skia/DEPS
+ # Reduced to only what's necessary
+ externals = linkFarm "skia-externals" (
+ lib.mapAttrsToList (name: value: {
+ inherit name;
+ path = fetchgit value;
+ }) (lib.importJSON ./skia-externals.json)
+ );
+ in
+ runCommand "source" { } ''
+ cp -R ${repo} $out
+ chmod -R +w $out
+ ln -s ${externals} $out/third_party/externals
+ '';
+ SKIA_GN_COMMAND = lib.getExe gn;
+ SKIA_NINJA_COMMAND = lib.getExe ninja;
+ };
+
+ disallowedReferences = [ finalAttrs.env.SKIA_SOURCE_DIR ];
+
+ meta = {
+ description = "A software that generates highly accurate topographic maps from LiDAR and Shapefile data";
+ homepage = "https://cassini-map.com";
+ license = lib.licenses.gpl3;
+ maintainers = [ lib.maintainers.sikmir ];
+ };
+})
diff --git a/pkgs/geospatial/cassini/skia-externals.json b/pkgs/geospatial/cassini/skia-externals.json
@@ -0,0 +1,37 @@
+{
+ "expat": {
+ "url": "https://chromium.googlesource.com/external/github.com/libexpat/libexpat.git",
+ "rev": "441f98d02deafd9b090aea568282b28f66a50e36",
+ "sha256": "sha256-FXTDGAK03jc2wvazhRKqtsFRKZUYS/9HLpZNp4JfZJI="
+ },
+ "libjpeg-turbo": {
+ "url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git",
+ "rev": "ed683925e4897a84b3bffc5c1414c85b97a129a3",
+ "sha256": "sha256-DYJP3phe4OzCtRN2pMc07ITTWR8MuIlOWWg9PBsQAVw="
+ },
+ "icu": {
+ "url": "https://chromium.googlesource.com/chromium/deps/icu.git",
+ "rev": "364118a1d9da24bb5b770ac3d762ac144d6da5a4",
+ "sha256": "sha256-frsmwYMiFixEULsE91x5+p98DvkyC0s0fNupqjoRnvg="
+ },
+ "zlib": {
+ "url": "https://chromium.googlesource.com/chromium/src/third_party/zlib",
+ "rev": "646b7f569718921d7d4b5b8e22572ff6c76f2596",
+ "sha256": "sha256-jNj6SuTZ5/a7crtYhxW3Q/TlfRMNMfYIVxDlr7bYdzQ="
+ },
+ "harfbuzz": {
+ "url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git",
+ "rev": "b74a7ecc93e283d059df51ee4f46961a782bcdb8",
+ "sha256": "sha256-/ZYsusWvLzBk5fym3ndVVEplyAdWFf7d4twBvwQVioY="
+ },
+ "wuffs": {
+ "url": "https://skia.googlesource.com/external/github.com/google/wuffs-mirror-release-c.git",
+ "rev": "e3f919ccfe3ef542cfc983a82146070258fb57f8",
+ "sha256": "sha256-373d2F/STcgCHEq+PO+SCHrKVOo6uO1rqqwRN5eeBCw="
+ },
+ "libpng": {
+ "url": "https://skia.googlesource.com/third_party/libpng.git",
+ "rev": "ed217e3e601d8e462f7fd1e04bed43ac42212429",
+ "sha256": "sha256-Mo1M8TuVaoSIb7Hy2u6zgjZ1DKgpmgNmGRP6dGg/aTs="
+ }
+}