feat: manage Handy preferences and startup declaratively

This commit is contained in:
kiri committed 2026-09-09 20:39:08 +02:00
1 parent 345ef7c56c
commit 0992f3b863
6 files changed
+74 -46

No files matched your search

+46
View File
@@ -0,0 +1,46 @@
{
flake.modules.homeManager.handy =
{ config, pkgs, ... }:
let
settings = (pkgs.formats.json { }).generate "handy-settings.json" {
settings = {
settings_schema_version = 1;
selected_model = "handy-computer/nemotron-3.5-asr-streaming-0.6b-gguf/nemotron-3.5-asr-streaming-0.6b-Q8_0.gguf";
selected_language = "auto";
translate_to_english = false;
selected_microphone = null;
always_on_microphone = false;
push_to_talk = true;
paste_method = "ctrl_shift_v";
typing_tool = "wtype";
clipboard_handling = "dont_modify";
auto_submit = false;
overlay_style = "live";
overlay_position = "bottom";
post_process_enabled = false;
start_hidden = true;
autostart_enabled = false;
update_checks_enabled = false;
show_whats_new_on_update = false;
onboarding_completed = true;
};
};
in
{
home.packages = [ pkgs.handy ];
systemd.user.services.handy = {
Unit = {
Description = "Handy dictation";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
};
Install.WantedBy = [ "graphical-session.target" ];
Service = {
# Handy writes migrations and runtime preferences: restore the Nix baseline on start.
ExecStartPre = "${pkgs.coreutils}/bin/install -Dm600 ${settings} ${config.xdg.dataHome}/com.pais.handy/settings_store.json";
ExecStart = "${pkgs.handy}/bin/handy --start-hidden";
};
};
};
}