Migrate Karakeep to native NixOS on Vega #186
No reviewers
Labels
No labels
area:authentication
area:flake-utilities
area:performance
area:tbd
host:chaos
host:electra
host:fleet
host:lyra
host:nova
host:vega
investigation
phase:cutover
phase:deploy
phase:mcp
phase:module
phase:packaging
phase:prep
phase:validation
priority:high
priority:medium
project:attic-postgres-lyra-rollout
project:auto-update-reliability
project:auto-update-remediation
project:declarative-purity-cleanup
project:external-review
project:fleet-boundary-cleanup
project:host-facts-refactor
project:lyra-nixos-deploy
project:lyra-service-stack-migration
project:nebula-mesh-network
project:nixos-build-deployment-pipeline
project:security-hardening
project:service-stack-migration
project:vega-sillytavern-cutover
project:wiki-rebuild
repo:numtide/flake-utils
repo:numtide/nix-auth
repo:numtide/nixos-passthru-cache
repo:numtide/nix-relay
service:auto-update
service:mem0
service:nix
service:sillytavern
service:slskd
service:synthseek
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nimmo/nixos-config!186
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/karakeep-native-vega"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #185
Summary
Validation
nix flake checkjust test: Karakeep web/workers/browser/Meilisearch healthy; state importedlinks.nimmog.ukendpoint reaches Vega through existing OIDC/Pangolin routing/api/embedworks with embeddinggemmaAutomated code review
Reviewed commit:
890f879411fce91d2c44d10707647ece63922bcaVerdict: Ready to merge
No blocking or important findings were retained, and deterministic checks passed. Suggestions remain advisory.
Overall assessment
The PR migrates the Karakeep service from a Docker stack on media1 to a native NixOS service on Vega. It introduces a new
modules/services/karakeep.nixmodule, separates server runtime secrets from MCP client credentials using SOPS, and implements a guarded one-time state import from the legacy Docker data. Additional changes include configuring Lyra's Ollama instance for two concurrent models to support Karakeep's embedding workload and pinning Node 22 for Karakeep due to a knownbetter-sqlite3crash on Node 24.Blocking findings
None.
Important findings
None.
Suggestions
default = pkgs.nodejs_22;
Impact: The comment explains the pin is due to a
better-sqlite3crash on Node 24. This is a temporary workaround that should be explicitly tracked so it doesn't become stale when Karakeep updates.Suggested fix: Consider adding a TODO comment with a reference to the upstream issue or a specific version of Karakeep where this can be re-evaluated, or use a
lib.warnif the version is below a certain threshold.Tests and validation
Questions
curl-cffiworkaround that might affect other services on Vega if the scope is not strictly enforced?Review limitations
nix flake checkorjust testto validate the configuration.Diff coverage
.sops.yaml: reviewed — included in a context-limited batchREADME.md: reviewed — included in a context-limited batchhosts/lyra/default.nix: reviewed — included in a context-limited batchhosts/vega/default.nix: reviewed — included in a context-limited batchmodules/services/karakeep.nix: reviewed — included in a context-limited batchsecrets/README.md: reviewed — included in a context-limited batchsecrets/karakeep-server.yaml: reviewed — included in a context-limited batchReview metadata