--- /dev/null
+{
+ "env": {
+ "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
+ "ANTHROPIC_MODEL": "deepseek-v4-pro[1m]",
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro[1m]",
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro[1m]",
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
+ "CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-v4-flash",
+ "CLAUDE_CODE_EFFORT_LEVEL": "max"
+ },
+ "apiKeyHelper": "${HOME}/.local/bin/get-api-key"
+}
--- /dev/null
+#!/bin/sh
+# Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+# License: GPL-3.0 or later.
+#
+# Cache the API key in a per-session tmpfs so pass(1) only prompts for the GPG
+# password once per login session.
+
+set -o errexit
+
+GUIX_BIN="/run/current-system/profile/bin"
+CACHE="${XDG_RUNTIME_DIR:-/tmp}/claude-apikey"
+
+if [ -f "${CACHE}" ]; then
+ "${GUIX_BIN}/cat" "${CACHE}"
+else
+ (umask 077; pass show platforms/deepseek \
+ | "${GUIX_BIN}/sed" --quiet 's/^api-key: //p' \
+ > "${CACHE}")
+ "${GUIX_BIN}/cat" "${CACHE}"
+fi
--- /dev/null
+;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;; License: GPL-3.0 or later.
+;;
+;; claude.scm - Claude Code home service with dotfiles.
+
+(define-module (conf home claude)
+ #:use-module (conf home claude-code)
+ #:use-module (conf home program)
+ #:use-module (gnu services)
+ #:export (claude-service))
+
+(define claude-dotfiles
+ (list "claude/.config/claude/settings.json"
+ "claude/.local/bin/get-api-key"))
+
+(define claude-service
+ (service home-program-service-type
+ (home-program-configuration (packages (list claude-code))
+ (dotfiles claude-dotfiles))))
(use-modules (gnu home)
(conf home bash)
- (conf home claude-code)
+ (conf home claude)
(conf home emoji)
(conf home desktop)
(conf home emacs)
(home-environment
(packages (case profile
((nonfree)
- (list claude-code firefox select-emoji st-libxft-bgra))
+ (list firefox select-emoji st-libxft-bgra))
((libre)
(list icecat-minimal select-emoji st-libxft-bgra))))
(services
(case profile
((nonfree)
- (append (list autorandr-service channels-service notify-service
- screenshot-service) bash-services desktop-services
- emacs-services))
+ (append (list autorandr-service channels-service claude-service
+ notify-service screenshot-service) bash-services
+ desktop-services emacs-services))
((libre)
(append (list autorandr-service notify-service screenshot-service)
bash-services desktop-services emacs-services))))))