nixpkgs/pkgs/applications/misc/bambu-studio/default.nix
2024-07-02 17:56:12 +02:00

190 lines
3.9 KiB
Nix

{
stdenv,
lib,
openexr,
jemalloc,
c-blosc,
binutils,
fetchFromGitHub,
cmake,
pkg-config,
wrapGAppsHook3,
boost179,
cereal,
cgal_5,
curl,
dbus,
eigen,
expat,
gcc-unwrapped,
glew,
glfw,
glib,
glib-networking,
gmp,
gstreamer,
gst-plugins-base,
gst-plugins-bad,
gst-plugins-good,
gtest,
gtk3,
hicolor-icon-theme,
ilmbase,
libpng,
mesa,
mpfr,
nlopt,
opencascade-occt_7_6,
openvdb,
pcre,
systemd,
tbb_2021_11,
webkitgtk,
wxGTK31,
xorg,
withSystemd ? stdenv.isLinux,
}:
let
opencascade-occt = opencascade-occt_7_6;
wxGTK31' = wxGTK31.overrideAttrs (old: {
configureFlags = old.configureFlags ++ [
# Disable noisy debug dialogs
"--enable-debug=no"
];
});
openvdb_tbb_2021_8 = openvdb.overrideAttrs (old: {
buildInputs = [
openexr
boost179
tbb_2021_11
jemalloc
c-blosc
ilmbase
];
});
in
stdenv.mkDerivation rec {
pname = "bambu-studio";
version = "01.09.00.70";
src = fetchFromGitHub {
owner = "bambulab";
repo = "BambuStudio";
rev = "v${version}";
hash = "sha256-RBctBhKo7mjxsP7OJhGfoU1eIiGVuMiAqwwSU+gsMds=";
};
nativeBuildInputs = [
cmake
pkg-config
wrapGAppsHook3
];
buildInputs = [
binutils
boost179
cereal
cgal_5
curl
dbus
eigen
expat
gcc-unwrapped
glew
glfw
glib
glib-networking
gmp
gstreamer
gst-plugins-base
gst-plugins-bad
gst-plugins-good
gtk3
hicolor-icon-theme
ilmbase
libpng
mesa.osmesa
mpfr
nlopt
opencascade-occt
openvdb_tbb_2021_8
pcre
tbb_2021_11
webkitgtk
wxGTK31'
xorg.libX11
] ++ lib.optionals withSystemd [ systemd ] ++ checkInputs;
patches = [
# Fix for webkitgtk linking
./0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
# Fix build with cgal-5.6.1+
./meshboolean-const.patch
];
doCheck = true;
checkInputs = [ gtest ];
separateDebugInfo = true;
# The build system uses custom logic - defined in
# cmake/modules/FindNLopt.cmake in the package source - for finding the nlopt
# library, which doesn't pick up the package in the nix store. We
# additionally need to set the path via the NLOPT environment variable.
NLOPT = nlopt;
# Disable compiler warnings that clutter the build log.
# It seems to be a known issue for Eigen:
# http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
NIX_CFLAGS_COMPILE = "-Wno-ignored-attributes";
# prusa-slicer uses dlopen on `libudev.so` at runtime
NIX_LDFLAGS = lib.optionalString withSystemd "-ludev";
# TODO: macOS
prePatch = ''
# Since version 2.5.0 of nlopt we need to link to libnlopt, as libnlopt_cxx
# now seems to be integrated into the main lib.
sed -i 's|nlopt_cxx|nlopt|g' cmake/modules/FindNLopt.cmake
'';
cmakeFlags = [
"-DSLIC3R_STATIC=0"
"-DSLIC3R_FHS=1"
"-DSLIC3R_GTK=3"
# BambuStudio-specific
"-DBBL_RELEASE_TO_PUBLIC=1"
"-DBBL_INTERNAL_TESTING=0"
"-DDEP_WX_GTK3=ON"
"-DSLIC3R_BUILD_TESTS=0"
"-DCMAKE_CXX_FLAGS=-DBOOST_LOG_DYN_LINK"
];
preFixup = ''
gappsWrapperArgs+=(
--prefix LD_LIBRARY_PATH : "$out/lib"
# Fixes intermittent crash
# The upstream setup links in glew statically
--prefix LD_PRELOAD : "${glew.out}/lib/libGLEW.so"
)
'';
# needed to prevent collisions between the LICENSE.txt files of
# bambu-studio and orca-slicer.
postInstall = ''
mv $out/LICENSE.txt $out/share/BambuStudio/LICENSE.txt
mv $out/README.md $out/share/BambuStudio/README.md
'';
meta = with lib; {
description = "PC Software for BambuLab's 3D printers";
homepage = "https://github.com/bambulab/BambuStudio";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ zhaofengli ];
mainProgram = "bambu-studio";
platforms = platforms.linux;
};
}