cheating-daddy: init at 0.4 (#440341)

This commit is contained in:
Sandro
2025-12-09 00:33:42 +00:00
committed by GitHub
@@ -0,0 +1,97 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
copyDesktopItems,
makeWrapper,
python3,
zip,
electron,
makeDesktopItem,
nix-update-script,
}:
buildNpmPackage (finalAttrs: {
pname = "cheating-daddy";
version = "0.4";
src = fetchFromGitHub {
owner = "sohzm";
repo = "cheating-daddy";
tag = "v${finalAttrs.version}";
hash = "sha256-yoUHBxiuwFdHF5uvQEFrjONnqBdks5gJgTvX1ME5Vv8=";
};
npmDepsHash = "sha256-HNI0I02tWXJ0Th9oownQ/akXITBs3RlVFpnnmt6kINw=";
nativeBuildInputs = [
copyDesktopItems
makeWrapper
(python3.withPackages (ps: with ps; [ setuptools ]))
zip
];
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
makeCacheWritable = true;
preBuild = ''
cp --recursive --no-preserve=mode ${electron.dist} electron-dist
pushd electron-dist
zip -0Xqr ../electron.zip .
popd
rm --recursive electron-dist
substituteInPlace node_modules/@electron/packager/dist/packager.js \
--replace-fail "await this.getElectronZipPath(downloadOpts)" "\"$(pwd)/electron.zip\""
'';
buildPhase = ''
runHook preBuild
npm run package
runHook postBuild
'';
desktopItems = [
(makeDesktopItem {
name = "cheating-daddy";
desktopName = "Cheating Daddy";
genericName = "AI Assistant";
comment = "AI assistant for interviews and learning";
exec = "cheating-daddy";
terminal = false;
icon = "cheating-daddy";
categories = [
"Development"
"Education"
];
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/cheating-daddy
cp --recursive out/*/{locales,resources{,.pak}} $out/share/cheating-daddy
makeWrapper ${lib.getExe electron} $out/bin/cheating-daddy \
--add-flags $out/share/cheating-daddy/resources/app.asar \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true --wayland-text-input-version=3}}" \
--inherit-argv0
install -D --mode=0644 src/assets/logo.png $out/share/icons/hicolor/512x512/apps/cheating-daddy.png
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/sohzm/cheating-daddy/releases/tag/${finalAttrs.src.tag}";
description = "Real-time AI assistant that provides contextual help during video calls, interviews, presentations, and meetings using screen capture and audio analysis";
homepage = "https://github.com/sohzm/cheating-daddy";
license = lib.licenses.gpl3Only;
mainProgram = "cheating-daddy";
maintainers = with lib.maintainers; [ kyehn ];
platforms = lib.platforms.linux;
};
})