teamspeak5_client: 5.0.0-beta77 -> 6.0.0-beta2; teamspeak refactors (#377748)
[NixPkgs.git] / pkgs / servers / homepage-dashboard / default.nix
blob9efcf8e247da1df8d67e7924f334e327dfb7412f
2   buildNpmPackage,
3   fetchFromGitHub,
4   nodePackages,
5   python3,
6   stdenv,
7   cctools,
8   IOKit,
9   lib,
10   nixosTests,
11   enableLocalIcons ? false,
12   nix-update-script,
14 let
15   dashboardIcons = fetchFromGitHub {
16     owner = "homarr-labs";
17     repo = "dashboard-icons";
18     rev = "51a2ae7b101c520bcfb5b44e5ddc99e658bc1e21"; # Until 2025-01-06
19     hash = "sha256-rKXeMAhHV0Ax7mVFyn6hIZXm5RFkbGakjugU0DG0jLM=";
20   };
22   installLocalIcons = ''
23     mkdir -p $out/share/homepage/public/icons
24     cp ${dashboardIcons}/png/* $out/share/homepage/public/icons
25     cp ${dashboardIcons}/svg/* $out/share/homepage/public/icons
26     cp ${dashboardIcons}/LICENSE $out/share/homepage/public/icons/
27   '';
29 buildNpmPackage rec {
30   pname = "homepage-dashboard";
31   version = "0.10.9";
33   src = fetchFromGitHub {
34     owner = "gethomepage";
35     repo = "homepage";
36     rev = "v${version}";
37     hash = "sha256-q8+uoikHMQVuTrVSH8tPsoI5655ZStMc/7tmoAfoZIY=";
38   };
40   npmDepsHash = "sha256-N39gwct2U4UxlIL5ceDzzU7HpA6xh2WksrZNxGz04PU=";
42   preBuild = ''
43     mkdir -p config
44   '';
46   postBuild = ''
47     # Add a shebang to the server js file, then patch the shebang.
48     sed -i '1s|^|#!/usr/bin/env node\n|' .next/standalone/server.js
49     patchShebangs .next/standalone/server.js
50   '';
52   nativeBuildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ cctools ];
54   buildInputs = [
55     nodePackages.node-gyp-build
56   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ IOKit ];
58   env.PYTHON = "${python3}/bin/python";
60   installPhase = ''
61     runHook preInstall
63     mkdir -p $out/{share,bin}
65     cp -r .next/standalone $out/share/homepage/
66     cp -r public $out/share/homepage/public
68     mkdir -p $out/share/homepage/.next
69     cp -r .next/static $out/share/homepage/.next/static
71     chmod +x $out/share/homepage/server.js
73     # This patch must be applied here, as it's patching the `dist` directory
74     # of NextJS. Without this, homepage-dashboard errors when trying to
75     # write its prerender cache.
76     #
77     # This patch ensures that the cache implementation respects the env
78     # variable `NIXPKGS_HOMEPAGE_CACHE_DIR`, which is set by default in the
79     # wrapper below.
80     (cd "$out" && patch -p1 <${./prerender_cache_path.patch})
82     makeWrapper $out/share/homepage/server.js $out/bin/homepage \
83       --set-default PORT 3000 \
84       --set-default HOMEPAGE_CONFIG_DIR /var/lib/homepage-dashboard \
85       --set-default NIXPKGS_HOMEPAGE_CACHE_DIR /var/cache/homepage-dashboard
87     ${if enableLocalIcons then installLocalIcons else ""}
89     runHook postInstall
90   '';
92   doDist = false;
94   passthru = {
95     tests = {
96       inherit (nixosTests) homepage-dashboard;
97     };
98     updateScript = nix-update-script { };
99   };
101   meta = {
102     description = "Highly customisable dashboard with Docker and service API integrations";
103     changelog = "https://github.com/gethomepage/homepage/releases/tag/v${version}";
104     mainProgram = "homepage";
105     homepage = "https://gethomepage.dev";
106     license = lib.licenses.gpl3;
107     maintainers = with lib.maintainers; [ jnsgruk ];
108     platforms = lib.platforms.all;
109     broken = stdenv.hostPlatform.isDarwin;
110   };