From e5f404f9f78f806cca99e88ccbe4ca77af44d764 Mon Sep 17 00:00:00 2001 From: fruchti Date: Fri, 2 May 2025 17:56:48 +0200 Subject: [PATCH 1/5] Disco: Install exiftool --- hosts/Disco.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hosts/Disco.nix b/hosts/Disco.nix index 790cc05..ff10ad5 100644 --- a/hosts/Disco.nix +++ b/hosts/Disco.nix @@ -45,8 +45,7 @@ htop ncmpcpp usbutils # lsusb etc. - file - binwalk + file exiftool binwalk shellcheck wine From b573aa40fc9aa44177e7631802e744a58b8d4768 Mon Sep 17 00:00:00 2001 From: fruchti Date: Fri, 2 May 2025 17:57:11 +0200 Subject: [PATCH 2/5] Disco: Install wineWow instead of wine --- hosts/Disco.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/Disco.nix b/hosts/Disco.nix index ff10ad5..5e08291 100644 --- a/hosts/Disco.nix +++ b/hosts/Disco.nix @@ -48,7 +48,7 @@ file exiftool binwalk shellcheck - wine + #wine wineWowPackages.stable winePackages.fonts pavucontrol From e2466b628a16dcca12e12b3319d52cda3360ba74 Mon Sep 17 00:00:00 2001 From: fruchti Date: Fri, 2 May 2025 17:57:37 +0200 Subject: [PATCH 3/5] Disco: Install cura via AppImage --- hosts/Disco.nix | 3 +- packages/cura-appimage.nix | 131 +++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 packages/cura-appimage.nix diff --git a/hosts/Disco.nix b/hosts/Disco.nix index 5e08291..1854d55 100644 --- a/hosts/Disco.nix +++ b/hosts/Disco.nix @@ -81,7 +81,8 @@ tdesktop horizon-eda kicad-small - cura + # cura + (pkgs.callPackage ../packages/cura-appimage.nix {}) pulseview nextcloud-client ]; diff --git a/packages/cura-appimage.nix b/packages/cura-appimage.nix new file mode 100644 index 0000000..9de879e --- /dev/null +++ b/packages/cura-appimage.nix @@ -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 + ]; + }; +} From 59c2d88171d4487a37c863860516d767d62e34a8 Mon Sep 17 00:00:00 2001 From: fruchti Date: Fri, 2 May 2025 18:00:54 +0200 Subject: [PATCH 4/5] Disco: Add ARM toolchain --- hosts/Disco.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/Disco.nix b/hosts/Disco.nix index 1854d55..bfbaa3b 100644 --- a/hosts/Disco.nix +++ b/hosts/Disco.nix @@ -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 ]; From 82b0e8f4eef684cd7c3d6ef11d9bc6d2c991792b Mon Sep 17 00:00:00 2001 From: fruchti Date: Fri, 2 May 2025 18:01:34 +0200 Subject: [PATCH 5/5] Disco: Enable font smoothing --- hosts/Disco.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/Disco.nix b/hosts/Disco.nix index bfbaa3b..f1fdcbf 100644 --- a/hosts/Disco.nix +++ b/hosts/Disco.nix @@ -192,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. It‘s perfectly fine and recommended to leave