inkscape/silhouette: init at 1.28
Introduce the 'silhouette' extension for printing to Silhouette vinyl cutters in Inkscape. Tested with `nix-build -E "with import ./. { }; inkscape-with-extensions.override { inkscapeExtensions = [ inkscape-extensions.silhouette ]; }"`. This completes https://github.com/NixOS/nixpkgs/issues/224852
This commit is contained in:
parent
91050ea1e5
commit
3fffe22f0f
4 changed files with 129 additions and 0 deletions
|
@ -44,6 +44,7 @@
|
|||
mkdir -p $out/share/inkscape/extensions
|
||||
cp ${inkcut}/share/inkscape/extensions/* $out/share/inkscape/extensions
|
||||
'');
|
||||
silhouette = callPackage ./extensions/silhouette { };
|
||||
textext = callPackage ./extensions/textext {
|
||||
pdflatex = texlive.combined.scheme-basic;
|
||||
lualatex = texlive.combined.scheme-basic;
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
{ fetchFromGitHub
|
||||
, lib
|
||||
, gettext
|
||||
, pkgs
|
||||
, python3
|
||||
, umockdev
|
||||
, writeScript
|
||||
}:
|
||||
|
||||
let
|
||||
# We need these simple wrapper shell scripts because Inkscape extensions with
|
||||
# interpreter="shell" always get invoked with the `sh` command [0], regardless of
|
||||
# the shebang at the top of the script.
|
||||
# [0]: https://gitlab.com/inkscape/inkscape/-/blob/d61d917afb94721c92a650b2c4b116b0a4826f41/src/extension/implementation/script.cpp#L93
|
||||
launch-sendto_silhouette = writeScript "sendto_silhouette.sh" ''
|
||||
cd $(dirname $0)
|
||||
./sendto_silhouette.py "$@"
|
||||
'';
|
||||
launch-silhouette_multi = writeScript "silhouette_multi.sh" ''
|
||||
cd $(dirname $0)
|
||||
./silhouette_multi.py "$@"
|
||||
'';
|
||||
in
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "inkscape-silhouette";
|
||||
version = "1.28";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fablabnbg";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-uNVhdkZFadL7QNlCsXq51TbhzRKH9KYDPDNCFhw3cQs=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./interpreter.patch
|
||||
./use-prefix-for-udev.patch
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
python3.pkgs.pyusb
|
||||
python3.pkgs.lxml
|
||||
python3.pkgs.inkex
|
||||
python3.pkgs.matplotlib
|
||||
python3.pkgs.wxPython_4_2
|
||||
python3.pkgs.xmltodict
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
gettext # msgfmt
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
python3.pkgs.pytestCheckHook
|
||||
umockdev
|
||||
];
|
||||
|
||||
pytestFlagsArray = [
|
||||
"test"
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
make install PREFIX=$out
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# Unmark read_dump.py as executable so wrapPythonProgramsIn won't turn it
|
||||
# into a shell script (thereby making it impossible to import as a Python
|
||||
# module).
|
||||
chmod -x $out/share/inkscape/extensions/silhouette/read_dump.py
|
||||
cp ${launch-sendto_silhouette} $out/share/inkscape/extensions/sendto_silhouette.sh
|
||||
cp ${launch-silhouette_multi} $out/share/inkscape/extensions/silhouette_multi.sh
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapPythonProgramsIn "$out/share/inkscape/extensions/" "$out $pythonPath"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "An extension to drive Silhouette vinyl cutters (e.g. Cameo, Portrait, Curio series) from within Inkscape.";
|
||||
homepage = "https://github.com/fablabnbg/inkscape-silhouette";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [ jfly ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
diff --git a/sendto_silhouette.inx b/sendto_silhouette.inx
|
||||
index 55a3278..d780730 100644
|
||||
--- a/sendto_silhouette.inx
|
||||
+++ b/sendto_silhouette.inx
|
||||
@@ -188,6 +188,6 @@ Always use the least amount of blade possible.
|
||||
</effect>
|
||||
|
||||
<script>
|
||||
- <command location="inx" interpreter="python">sendto_silhouette.py</command>
|
||||
+ <command location="inx" interpreter="shell">sendto_silhouette.sh</command>
|
||||
</script>
|
||||
</inkscape-extension>
|
||||
diff --git a/silhouette_multi.inx b/silhouette_multi.inx
|
||||
index f6fd2ed..2d9dba6 100644
|
||||
--- a/silhouette_multi.inx
|
||||
+++ b/silhouette_multi.inx
|
||||
@@ -31,6 +31,6 @@
|
||||
</effect>
|
||||
|
||||
<script>
|
||||
- <command location="inx" interpreter="python">silhouette_multi.py</command>
|
||||
+ <command location="inx" interpreter="shell">silhouette_multi.sh</command>
|
||||
</script>
|
||||
</inkscape-extension>
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index 5aff25d..43c3fb0 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -22,7 +22,7 @@ VERS=$$(python3 ./sendto_silhouette.py --version)
|
||||
|
||||
DEST=$(DESTDIR)$(PREFIX)/share/inkscape/extensions
|
||||
LOCALE=$(DESTDIR)$(PREFIX)/share/locale
|
||||
-UDEV=$(DESTDIR)/lib/udev
|
||||
+UDEV=$(DESTDIR)$(PREFIX)/lib/udev
|
||||
INKSCAPE_TEMPLATES=$(DESTDIR)$(PREFIX)/share/inkscape/templates
|
||||
|
||||
# User-specifc inkscape extensions folder for local install
|
Loading…
Reference in a new issue