AquaticOS/modules/programs/aquatic/aquatic-gui/stoat.nix
2026-09-06 22:59:06 -04:00

76 lines
2.3 KiB
Nix

{ ... }:
{
flake.modules.nixos.aquatic-gui =
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
stoat-desktop
];
nixpkgs.overlays = [
(final: prev: {
stoat-desktop = prev.stoat-desktop.overrideAttrs (oldAttrs:
let
version = "1.5.3";
electron = final.electron_43;
pnpm = final.pnpm_11;
src = oldAttrs.src.override {
tag = "v${version}";
hash = "sha256-UKMuMtBTfiA31K2i1buCFOtL9lf9xbv6BXVD5m4TARo=";
};
patches = [ ];
in
{
inherit version src patches electron;
nativeBuildInputs = (builtins.filter
(p: p != final.pnpm_10)
oldAttrs.nativeBuildInputs) ++ [ pnpm ];
pnpmDeps = final.fetchPnpmDeps {
inherit (oldAttrs) pname;
inherit version src patches;
fetcherVersion = 4;
inherit pnpm;
hash = "sha256-uiKTkXU0THzW46FiAfftqMWfrnFPCfgS/30ZuWmpHMI="; # fill in after first build attempt
};
env = (oldAttrs.env or { }) // {
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
};
buildPhase = ''
runHook preBuild
export npm_config_nodedir=${electron.headers}
substituteInPlace node_modules/@electron-forge/core-utils/dist/electron-version.js \
--replace-fail "return version" "return '${electron.version}'"
cp -r ${electron.dist} electron-dist
chmod -R u+w electron-dist
pushd electron-dist
zip -0Xqr ../electron.zip .
popd
rm -r electron-dist
substituteInPlace node_modules/@electron/packager/dist/packager.js \
--replace-fail "await this.getElectronZipPath(downloadOpts)" "'$(pwd)/electron.zip'"
pnpm make \
--arch "${final.stdenvNoCC.hostPlatform.node.arch}" \
--platform "${final.stdenvNoCC.hostPlatform.node.platform}" \
--targets "@electron-forge/maker-zip"
runHook postBuild
'';
});
})
];
};
}