Sefa Eyeoglu a8c9a2aa3e
treewide: adjust pnpm.fetchDeps parameter order
It is more common to specify hash as the last attribute of fetcher
function args. Let's move fetcherVersion right above hash for all
occurrences.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2025-07-15 15:09:16 +02:00

117 lines
2.9 KiB
Nix

{
fetchFromGitHub,
nodePackages,
makeBinaryWrapper,
nodejs,
pnpm_10,
python3,
stdenv,
cctools,
lib,
nixosTests,
enableLocalIcons ? false,
}:
let
dashboardIcons = fetchFromGitHub {
owner = "homarr-labs";
repo = "dashboard-icons";
rev = "51a2ae7b101c520bcfb5b44e5ddc99e658bc1e21"; # Until 2025-01-06
hash = "sha256-rKXeMAhHV0Ax7mVFyn6hIZXm5RFkbGakjugU0DG0jLM=";
};
installLocalIcons = ''
mkdir -p $out/share/homepage/public/icons
cp ${dashboardIcons}/png/* $out/share/homepage/public/icons
cp ${dashboardIcons}/svg/* $out/share/homepage/public/icons
cp ${dashboardIcons}/LICENSE $out/share/homepage/public/icons/
'';
in
stdenv.mkDerivation (finalAttrs: {
pname = "homepage-dashboard";
version = "1.3.2";
src = fetchFromGitHub {
owner = "gethomepage";
repo = "homepage";
tag = "v${finalAttrs.version}";
hash = "sha256-45Z2XS+ij6J6WSCb9/oDQa2eC9wKu+D7ncYwcB6K5gQ=";
};
# This patch ensures that the cache implementation respects the env
# variable `NIXPKGS_HOMEPAGE_CACHE_DIR`, which is set by default in the
# wrapper below.
# The patch is automatically generated by the `update.sh` script.
patches = [ ./prerender_cache_path.patch ];
pnpmDeps = pnpm_10.fetchDeps {
inherit (finalAttrs)
pname
version
src
patches
;
fetcherVersion = 1;
hash = "sha256-aPkXHKG3vDsfYqYx9q9+2wZhuFqmPcXdoBqOfAvW9oA=";
};
nativeBuildInputs = [
makeBinaryWrapper
nodejs
pnpm_10.configHook
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ cctools ];
buildInputs = [
nodePackages.node-gyp-build
];
env.PYTHON = "${python3}/bin/python";
buildPhase = ''
runHook preBuild
mkdir -p config
pnpm build
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,share}
cp -r .next/standalone $out/share/homepage/
cp -r public $out/share/homepage/public
chmod +x $out/share/homepage/server.js
mkdir -p $out/share/homepage/.next
cp -r .next/static $out/share/homepage/.next/static
makeWrapper "${lib.getExe nodejs}" $out/bin/homepage \
--set-default PORT 3000 \
--set-default HOMEPAGE_CONFIG_DIR /var/lib/homepage-dashboard \
--set-default NIXPKGS_HOMEPAGE_CACHE_DIR /var/cache/homepage-dashboard \
--add-flags "$out/share/homepage/server.js"
${if enableLocalIcons then installLocalIcons else ""}
runHook postInstall
'';
doDist = false;
passthru = {
tests = {
inherit (nixosTests) homepage-dashboard;
};
updateScript = ./update.sh;
};
meta = {
description = "Highly customisable dashboard with Docker and service API integrations";
changelog = "https://github.com/gethomepage/homepage/releases/tag/v${finalAttrs.version}";
mainProgram = "homepage";
homepage = "https://gethomepage.dev";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ jnsgruk ];
platforms = lib.platforms.all;
};
})