Compare commits

...

5 commits

2 changed files with 141 additions and 4 deletions

View file

@ -45,11 +45,10 @@
htop
ncmpcpp
usbutils # lsusb etc.
file
binwalk
file exiftool binwalk
shellcheck
wine
#wine
wineWowPackages.stable
winePackages.fonts
pavucontrol
@ -82,7 +81,8 @@
tdesktop
horizon-eda
kicad-small
cura
# cura
(pkgs.callPackage ../packages/cura-appimage.nix {})
pulseview
nextcloud-client
];
@ -93,6 +93,8 @@
system.extraDependencies = with pkgs; [
# For various development environments
gcc-arm-embedded
pkgsCross.arm-embedded.buildPackages.gcc
pkgsCross.riscv32-embedded.buildPackages.gcc
gnumake
];
@ -190,6 +192,10 @@
size = 16 * 1024;
}];
environment.variables = {
FREETYPE_PROPERTIES = "cff:no-stem-darkening=0 autofitter:no-stem-darkening=0 type1:no-stem-darkening=0 t1cid:no-stem-darkening=0";
};
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave

131
packages/cura-appimage.nix Normal file
View file

@ -0,0 +1,131 @@
{
lib,
stdenv,
stdenvNoCC,
fetchurl,
writeScriptBin,
appimageTools,
copyDesktopItems,
makeDesktopItem,
nix-update-script,
wrapGAppsHook3,
}:
stdenvNoCC.mkDerivation rec {
pname = "cura-appimage";
version = "5.9.0";
# Give some good names so the intermediate packages are easy
# to recognise by name in the Nix store.
appimageBinName = "cura-appimage-tools-output";
wrapperScriptName = "${pname}-wrapper-script";
src = fetchurl {
url = "https://github.com/Ultimaker/Cura/releases/download/${version}/Ultimaker-Cura-${version}-linux-X64.AppImage";
hash = "sha256-STtVeM4Zs+PVSRO3cI0LxnjRDhOxSlttZF+2RIXnAp4=";
};
appimageContents = appimageTools.extract {
inherit pname version src;
};
curaAppimageToolsWrapped = appimageTools.wrapType2 {
inherit src;
# For `appimageTools.wrapType2`, `pname` determines the binary's name in `bin/`.
pname = appimageBinName;
inherit version;
extraPkgs = _: [ ];
};
# The `QT_QPA_PLATFORM=xcb` fixes Wayland support, see https://github.com/NixOS/nixpkgs/issues/186570#issuecomment-2526277637
# The `GTK_USE_PORTAL=1` fixes file dialog issues under Gnome, see https://github.com/NixOS/nixpkgs/pull/372614#issuecomment-2585663161
script = writeScriptBin wrapperScriptName ''
#!${stdenv.shell}
# AppImage version of Cura loses current working directory and treats all paths relateive to $HOME.
# So we convert each of the files passed as argument to an absolute path.
# This fixes use cases like `cd /path/to/my/files; cura mymodel.stl anothermodel.stl`.
args=()
for a in "$@"; do
if [ -e "$a" ]; then
a="$(realpath "$a")"
fi
args+=("$a")
done
QT_QPA_PLATFORM=xcb GTK_USE_PORTAL=1 exec "${curaAppimageToolsWrapped}/bin/${appimageBinName}" "''${args[@]}"
'';
dontUnpack = true;
nativeBuildInputs = [
copyDesktopItems
wrapGAppsHook3
];
desktopItems = [
# Based on upstream.
# https://github.com/Ultimaker/Cura/blob/382b98e8b0c910fdf8b1509557ae8afab38f1817/packaging/AppImage/cura.desktop.jinja
(makeDesktopItem {
name = "cura";
desktopName = "UltiMaker Cura";
genericName = "3D Printing Software";
comment = meta.longDescription;
exec = "cura";
icon = "cura-icon";
terminal = false;
type = "Application";
mimeTypes = [
"model/stl"
"application/vnd.ms-3mfdocument"
"application/prs.wavefront-obj"
"image/bmp"
"image/gif"
"image/jpeg"
"image/png"
"text/x-gcode"
"application/x-amf"
"application/x-ply"
"application/x-ctm"
"model/vnd.collada+xml"
"model/gltf-binary"
"model/gltf+json"
"model/vnd.collada+xml+zip"
];
categories = [ "Graphics" ];
keywords = [
"3D"
"Printing"
];
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp ${script}/bin/${wrapperScriptName} $out/bin/cura
mkdir -p $out/share/applications $out/share/icons/hicolor/128x128/apps
install -Dm644 ${appimageContents}/usr/share/icons/hicolor/128x128/apps/cura-icon.png $out/share/icons/hicolor/128x128/apps/cura-icon.png
runHook postInstall
'';
passthru.updateScript = nix-update-script { extraArgs = [ "--version-regex=([56789].+)" ]; };
meta = {
description = "3D printing software";
homepage = "https://github.com/ultimaker/cura";
changelog = "https://github.com/Ultimaker/Cura/releases/tag/${version}";
longDescription = ''
Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.
'';
license = lib.licenses.lgpl3Plus;
platforms = [ "x86_64-linux" ];
mainProgram = "cura";
maintainers = with lib.maintainers; [
pbek
nh2
fliegendewurst
];
};
}