1{ lib
2, stdenv
3, symlinkJoin
4, fetchurl
5, fetchzip
6, scons
7, zlib
8, libiconv
9}:
10
11stdenv.mkDerivation rec {
12 pname = "nsis";
13 version = "3.06.1";
14
15 src =
16 fetchurl {
17 url = "mirror://sourceforge/project/nsis/NSIS%203/${version}/nsis-${version}-src.tar.bz2";
18 sha256 = "1w1z2m982l6j8lw8hy91c3979wbnqglcf4148f9v79vl32znhpcv";
19 };
20 srcWinDistributable =
21 fetchzip {
22 url = "mirror://sourceforge/project/nsis/NSIS%203/${version}/nsis-${version}.zip";
23 sha256 = "04qm9jqbcybpwcrjlksggffdyafzwxxcaz9xhjw8w5rb95x7lw5q";
24 };
25
26 postUnpack = ''
27 mkdir -p $out/share/nsis
28 cp -avr ${srcWinDistributable}/{Contrib,Include,Plugins,Stubs} \
29 $out/share/nsis
30 chmod -R u+w $out/share/nsis
31 '';
32
33 nativeBuildInputs = [ scons ];
34 buildInputs = [ zlib ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
35
36 CPPPATH = symlinkJoin {
37 name = "nsis-includes";
38 paths = [ zlib.dev ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
39 };
40
41 LIBPATH = symlinkJoin {
42 name = "nsis-libs";
43 paths = [ zlib ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
44 };
45
46 sconsFlags = [
47 "SKIPSTUBS=all"
48 "SKIPPLUGINS=all"
49 "SKIPUTILS=all"
50 "SKIPMISC=all"
51 "NSIS_CONFIG_CONST_DATA=no"
52 ] ++ lib.optional stdenv.isDarwin "APPEND_LINKFLAGS=-liconv";
53
54 preBuild = ''
55 sconsFlagsArray+=(
56 "PATH=$PATH"
57 "CC=$CC"
58 "CXX=$CXX"
59 "APPEND_CPPPATH=$CPPPATH/include"
60 "APPEND_LIBPATH=$LIBPATH/lib"
61 )
62 '';
63
64 prefixKey = "PREFIX=";
65 installTargets = [ "install-compiler" ];
66
67 meta = with lib; {
68 description = "A free scriptable win32 installer/uninstaller system that doesn't suck and isn't huge";
69 homepage = "https://nsis.sourceforge.io/";
70 license = licenses.zlib;
71 platforms = platforms.unix;
72 maintainers = with maintainers; [ pombeirp ];
73 mainProgram = "makensis";
74 broken = stdenv.isDarwin;
75 };
76}