Files
nixpkgs/pkgs/by-name/pi/pixinsight/package.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

179 lines
4.3 KiB
Nix

{
stdenv,
lib,
requireFile,
autoPatchelfHook,
unixtools,
fakeroot,
mailcap,
libGL,
libpulseaudio,
alsa-lib,
nss,
gd,
gst_all_1,
nspr,
expat,
fontconfig,
dbus,
glib,
zlib,
openssl,
libdrm,
cups,
avahi-compat,
xorg,
wayland,
libudev0-shim,
bubblewrap,
libjpeg8,
gdk-pixbuf,
gtk3,
pango,
qt6Packages,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pixinsight";
version = "1.8.9-3-20240625";
src = requireFile rec {
name = "PI-linux-x64-${finalAttrs.version}-c.tar.xz";
url = "https://pixinsight.com/";
hash = "sha256-jqp5pt+fC7QvENCwRjr7ENQiCZpwNhC5q76YdzRBJis=";
message = ''
PixInsight is available from ${url} and requires a commercial (or trial) license.
After a license has been obtained, PixInsight can be downloaded from the software distribution
(choose Linux 64bit).
The PixInsight tarball must be added to the nix-store, i.e. via
nix-prefetch-url --type sha256 file:///path/to/${name}
'';
};
sourceRoot = ".";
nativeBuildInputs = [
unixtools.script
fakeroot
qt6Packages.wrapQtAppsHook
autoPatchelfHook
mailcap
libudev0-shim
bubblewrap
];
buildInputs = [
(lib.getLib stdenv.cc.cc)
stdenv.cc
libGL
libpulseaudio
alsa-lib
nss
gd
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
nspr
expat
fontconfig
dbus
glib
zlib
openssl
libdrm
wayland
cups
avahi-compat
libjpeg8
gdk-pixbuf
gtk3
pango
# Qt stuff
qt6Packages.qt3d
qt6Packages.mlt
qt6Packages.qtbase
#qtgamepad
qt6Packages.qtserialport
qt6Packages.qtserialbus
qt6Packages.qtvirtualkeyboard
qt6Packages.qtmultimedia
qt6Packages.qtlocation
qt6Packages.qtwebengine
qt6Packages.qtquick3d
qt6Packages.qtwayland
qt6Packages.qtwebview
qt6Packages.qtscxml
]
++ (with xorg; [
libX11
libXdamage
xrandr
libXtst
libXcomposite
libXext
libXfixes
libXrandr
libxkbfile
]);
postPatch = ''
patchelf ./installer \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath ${lib.getLib stdenv.cc.cc}/lib
'';
dontConfigure = true;
dontBuild = true;
installPhase = ''
mkdir -p $out/bin $out/opt/PixInsight $out/share/{applications,mime/packages,icons/hicolor}
bwrap --bind /build /build --bind $out/opt /opt --bind /nix /nix --dev /dev fakeroot script -ec "./installer \
--yes \
--install-desktop-dir=$out/share/applications \
--install-mime-dir=$out/share/mime \
--install-icons-dir=$out/share/icons/hicolor \
--no-bin-launcher \
--no-remove"
rm -rf $out/opt/PixInsight-old-0
ln -s $out/opt/PixInsight/bin/PixInsight $out/bin/.
ln -s $out/opt/PixInsight/bin/lib $out/lib
# Remove signatures of plugins, as they are only working if actually installed
# under /opt. In the Nix setup, they are causing trouble.
find $out/opt/PixInsight/ -name "*.xsgn" -exec rm {} \;
'';
# Some very exotic Qt libraries are not available in nixpkgs
autoPatchelfIgnoreMissingDeps = true;
# This mimics what is happening in PixInsight.sh and adds on top the libudev0-shim, which
# without PixInsight crashes at startup.
qtWrapperArgs = [
"--prefix LD_LIBRARY_PATH : ${libudev0-shim}/lib"
"--set LC_ALL en_US.utf8"
"--set AVAHI_COMPAT_NOWARN 1"
"--set QT_PLUGIN_PATH $out/opt/PixInsight/bin/lib/qt-plugins"
"--set QT_QPA_PLATFORM_PLUGIN_PATH $out/opt/PixInsight/bin/lib/qt-plugins/platforms"
"--set QT_AUTO_SCREEN_SCALE_FACTOR 0"
"--set QT_ENABLE_HIGHDPI_SCALING 0"
"--set QT_SCALE_FACTOR 1"
"--set QT_LOGGING_RULES '*=false'"
"--set QTWEBENGINEPROCESS_PATH $out/opt/PixInsight/bin/libexec/QtWebEngineProcess"
];
dontWrapQtApps = true;
postFixup = ''
wrapProgram $out/opt/PixInsight/bin/PixInsight ${toString finalAttrs.qtWrapperArgs}
'';
meta = with lib; {
description = "Scientific image processing program for astrophotography";
homepage = "https://pixinsight.com/";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.sheepforce ];
hydraPlatforms = [ ];
mainProgram = "PixInsight";
};
})