nix-darwin: home for darwin

This commit is contained in:
js0ny 2025-11-21 08:03:59 +00:00
parent f68ac5a89a
commit 3e0fa1770e
11 changed files with 353 additions and 291 deletions

View file

@ -0,0 +1,57 @@
# Only use this method in NixOS or non-FHS environment
{pkgs, ...}: let
imageTag = "ghcr.io/pdfmathtranslate/pdfmathtranslate-next";
# version = "2.6.4";
pdf2zhRunner = pkgs.writeShellScriptBin "pdf2zh" ''
#!/usr/bin/env bash
set -euo pipefail
IMAGE_TAG="${imageTag}"
OPENROUTER_API_KEY="$OPENROUTER_API_KEY"
OPENROUTER_API_BASE="https://openrouter.ai/api/v1"
OPENROUTER_DEFAULT_MODEL="google/gemini-2.5-flash"
if ! podman image exists "$IMAGE_TAG"; then
echo "[pdf2zh] Pulling image $IMAGE_TAG ..."
podman pull "$IMAGE_TAG"
fi
podman run --rm -it \
-p 7860:7860 \
-v "$(pwd):/data" \
-w /data \
"$IMAGE_TAG" "pdf2zh" --openai-compatible-model $OPENROUTER_DEFAULT_MODEL --openai-compatible-base-url $OPENROUTER_API_BASE --openai-compatible-api-key $OPENROUTER_API_KEY "$@"
'';
descEn = "PDF scientific paper translation with preserved formats";
descZh = " AI PDF ";
in {
services.podman.enable = true;
# Declare an image, do not instantiate as a container
services.podman.images.pdf2zh = {
image = imageTag;
description = " ${descEn} - ${descZh} Google/DeepL/Ollama/OpenAI CLI/GUI/Docker";
};
home.packages = [pdf2zhRunner];
home.file.".local/share/kio/servicemenus/pdf2zh.desktop" = {
enable = true; # TODO: Write a wrapper for status tracking
executable = true;
text = ''
[Desktop Entry]
Type=Service
MimeType=application/pdf;
Actions=translateToZh
Icon=translate
X-KDE-Priority=TopLevel
X-KDE-StartupNotify=false
[Desktop Action translateToZh]
Name=
Icon=translate
Exec=pdf2zh --openaicompatible "%f"
'';
};
}