1{ lib
2, stdenv
3, buildGoModule
4, fetchFromGitHub
5, pkg-config
6, makeWrapper
7, go
8, nodejs
9, zlib
10 # Linux specific dependencies
11, gtk3
12, webkitgtk
13}:
14
15buildGoModule rec {
16 pname = "wails";
17 version = "2.9.1";
18
19 src = fetchFromGitHub {
20 owner = "wailsapp";
21 repo = pname;
22 rev = "v${version}";
23 hash = "sha256-dtfFeNK7ZfqriK4S0/+Wor1hUJv5kgnRWURVqt+RrNU=";
24 } + "/v2";
25
26 vendorHash = "sha256-15Vo4AKmd9qOF0ea1klTlrXJOUs+IHvsNT2rw4R7ZiU=";
27
28 proxyVendor = true;
29
30 subPackages = [ "cmd/wails" ];
31
32 # These packages are needed to build wails
33 # and will also need to be used when building a wails app.
34 nativeBuildInputs = [
35 pkg-config
36 makeWrapper
37 ];
38
39 # Wails apps are built with Go, so we need to be able to
40 # add it in propagatedBuildInputs.
41 allowGoReference = true;
42
43 # Following packages are required when wails used as a builder.
44 propagatedBuildInputs = [
45 pkg-config
46 go
47 stdenv.cc
48 nodejs
49 ] ++ lib.optionals stdenv.isLinux [
50 gtk3
51 webkitgtk
52 ];
53
54 ldflags = [
55 "-s"
56 "-w"
57 ];
58
59 # As Wails calls a compiler, certain apps and libraries need to be made available.
60 postFixup = ''
61 wrapProgram $out/bin/wails \
62 --prefix PATH : ${lib.makeBinPath [ pkg-config go stdenv.cc nodejs ]} \
63 --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath (lib.optionals stdenv.isLinux [ gtk3 webkitgtk ])}" \
64 --set PKG_CONFIG_PATH "$PKG_CONFIG_PATH" \
65 --set CGO_LDFLAGS "-L${lib.makeLibraryPath [ zlib ]}"
66 '';
67
68 meta = {
69 description = "Build applications using Go + HTML + CSS + JS";
70 homepage = "https://wails.io";
71 license = lib.licenses.mit;
72 maintainers = with lib.maintainers; [ ianmjones ];
73 mainProgram = "wails";
74 platforms = lib.platforms.unix;
75 };
76}