php.packages.box: switch to buildComposerProject2, tag and add versionCheckHook ...
[NixPkgs.git] / pkgs / by-name / fl / flameshot / package.nix
blob7ab9796afa4eda74a3c5b5935f5376a09ba09e6b
2   stdenv,
3   lib,
4   overrideSDK,
5   darwin,
6   fetchFromGitHub,
7   fetchpatch,
8   cmake,
9   imagemagick,
10   libicns,
11   libsForQt5,
12   grim,
13   makeBinaryWrapper,
14   nix-update-script,
15   enableWlrSupport ? false,
16   enableMonochromeIcon ? false,
19 assert stdenv.hostPlatform.isDarwin -> (!enableWlrSupport);
21 let
22   stdenv' = if stdenv.hostPlatform.isDarwin then overrideSDK stdenv "11.0" else stdenv;
25 stdenv'.mkDerivation {
26   pname = "flameshot";
27   # wlr screenshotting is currently only available on unstable version (>12.1.0)
28   version = "12.1.0-unstable-2025-01-19";
30   src = fetchFromGitHub {
31     owner = "flameshot-org";
32     repo = "flameshot";
33     rev = "10d12e0b54d59de2ac2567c540a93113672cd884";
34     hash = "sha256-3ujqwiQrv/H1HzkpD/Q+hoqyrUdO65gA0kKqtRV0vmw=";
35   };
37   patches = [
38     # https://github.com/flameshot-org/flameshot/pull/3166
39     # fixes fractional scaling calculations on wayland
40     (fetchpatch {
41       name = "10-fix-wayland.patch";
42       url = "https://github.com/flameshot-org/flameshot/commit/5fea9144501f7024344d6f29c480b000b2dcd5a6.patch";
43       hash = "sha256-SnjVbFMDKD070vR4vGYrwLw6scZAFaQA4b+MbI+0W9E=";
44     })
45   ];
47   cmakeFlags =
48     [
49       (lib.cmakeBool "DISABLE_UPDATE_CHECKER" true)
50       (lib.cmakeBool "USE_MONOCHROME_ICON" enableMonochromeIcon)
51     ]
52     ++ lib.optionals stdenv.hostPlatform.isLinux [
53       (lib.cmakeBool "USE_WAYLAND_CLIPBOARD" true)
54       (lib.cmakeBool "USE_WAYLAND_GRIM" enableWlrSupport)
55     ]
56     ++ lib.optionals stdenv.hostPlatform.isDarwin [
57       (lib.cmakeFeature "Qt5_DIR" "${libsForQt5.qtbase.dev}/lib/cmake/Qt5")
58     ];
60   nativeBuildInputs =
61     [
62       cmake
63       libsForQt5.qttools
64       libsForQt5.qtsvg
65       libsForQt5.wrapQtAppsHook
66       makeBinaryWrapper
67     ]
68     ++ lib.optionals stdenv.hostPlatform.isDarwin [
69       imagemagick
70       libicns
71     ];
73   buildInputs = [
74     libsForQt5.qtbase
75     libsForQt5.kguiaddons
76   ];
78   postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
79     # Fix icns generation running concurrently with png generation
80     sed -E -i '/"iconutil -o/i\
81         )\
82         execute_process(\
83     ' src/CMakeLists.txt
85     # Replace unavailable commands
86     sed -E -i \
87         -e 's/"sips -z ([0-9]+) ([0-9]+) +(.+) --out /"magick \3 -resize \1x\2\! /' \
88         -e 's/"iconutil -o (.+) -c icns (.+)"/"png2icns \1 \2\/*{16,32,128,256,512}.png"/' \
89         src/CMakeLists.txt
90   '';
92   postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
93     mkdir $out/Applications
94     mv $out/bin/flameshot.app $out/Applications
96     ln -s $out/Applications/flameshot.app/Contents/MacOS/flameshot $out/bin/flameshot
98     rm -r $out/share/applications
99     rm -r $out/share/dbus*
100     rm -r $out/share/icons
101     rm -r $out/share/metainfo
102   '';
104   dontWrapQtApps = true;
106   postFixup =
107     let
108       binary =
109         if stdenv.hostPlatform.isDarwin then
110           "Applications/flameshot.app/Contents/MacOS/flameshot"
111         else
112           "bin/flameshot";
113     in
114     ''
115       wrapProgram $out/${binary} \
116         ${lib.optionalString enableWlrSupport "--prefix PATH : ${lib.makeBinPath [ grim ]}"} \
117         ''${qtWrapperArgs[@]}
118     '';
120   passthru = {
121     updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
122   };
124   meta = with lib; {
125     description = "Powerful yet simple to use screenshot software";
126     homepage = "https://github.com/flameshot-org/flameshot";
127     changelog = "https://github.com/flameshot-org/flameshot/releases";
128     mainProgram = "flameshot";
129     maintainers = with maintainers; [
130       scode
131       oxalica
132     ];
133     license = licenses.gpl3Plus;
134     platforms = platforms.linux ++ platforms.darwin;
135   };