btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / by-name / wi / wireguard-ui / package.nix
blobb046bdc5a3028553abea3b285b3d49db5321fca4
2   buildGoModule,
3   lib,
4   fetchFromGitHub,
5   fetchYarnDeps,
6   yarn,
7   fixup-yarn-lock,
8   nodejs,
9   fetchpatch2,
12 buildGoModule rec {
13   pname = "wireguard-ui";
14   version = "0.6.2";
16   src = fetchFromGitHub {
17     owner = "ngoduykhanh";
18     repo = "wireguard-ui";
19     rev = "refs/tags/v${version}";
20     hash = "sha256-fK7l9I2s0zSxG1g1oQ1KjJZUcypwS9DxnNN7lhVI+1s=";
21   };
23   patches = [
24     (fetchpatch2 {
25       url = "https://github.com/ngoduykhanh/wireguard-ui/commit/2fdafd34ca6c8f7f1415a3a1d89498bb575a7171.patch?full_index=1";
26       hash = "sha256-nq/TX+TKDB29NcPQ3pLWD0jcXubULuwqisn9IcEW8B8=";
27     })
28   ];
30   offlineCache = fetchYarnDeps {
31     yarnLock = "${src}/yarn.lock";
32     hash = "sha256-ps/GtdtDKA3y5o1GZpRG+z08lSzk8d9zgxb95kjr/gc=";
33   };
35   vendorHash = "sha256-FTjZ6wf0ym6kFJ58Z3E3shmbq9SaMwlXWeueHQXwkX4=";
37   nativeBuildInputs = [
38     yarn
39     fixup-yarn-lock
40     nodejs
41   ];
43   ldflags = [
44     "-X main.appVersion=v${version}"
45   ];
47   preConfigure = ''
48     # This is what prepare_assets.sh do.
49     export HOME=$(mktemp -d)
50     yarn config --offline set yarn-offline-mirror "$offlineCache"
51     fixup-yarn-lock yarn.lock
52     yarn --offline install
54     mkdir -p "./assets/dist/js" "./assets/dist/css" && \
55     cp -r "./node_modules/admin-lte/dist/js/adminlte.min.js" "./assets/dist/js/adminlte.min.js" && \
56     cp -r "./node_modules/admin-lte/dist/css/adminlte.min.css" "./assets/dist/css/adminlte.min.css"
58     cp -r "./custom" "./assets"
60     mkdir -p "./assets/plugins" && \
61     cp -r "./node_modules/admin-lte/plugins/jquery" \
62     "./node_modules/admin-lte/plugins/fontawesome-free" \
63     "./node_modules/admin-lte/plugins/bootstrap" \
64     "./node_modules/admin-lte/plugins/icheck-bootstrap" \
65     "./node_modules/admin-lte/plugins/toastr" \
66     "./node_modules/admin-lte/plugins/jquery-validation" \
67     "./node_modules/admin-lte/plugins/select2" \
68     "./node_modules/jquery-tags-input" \
69     "./assets/plugins/"
70   '';
72   meta = {
73     description = "Web user interface to manage your WireGuard setup";
74     changelog = "https://github.com/ngoduykhanh/wireguard-ui/releases/tag/v${version}";
75     homepage = "https://github.com/ngoduykhanh/wireguard-ui";
76     license = lib.licenses.mit;
77     platforms = lib.platforms.unix;
78     maintainers = with lib.maintainers; [ bot-wxt1221 ];
79     mainProgram = "wireguard-ui";
80   };