{ 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"; }; }; }; }