10 Commits

12 changed files with 411 additions and 36 deletions

View File

@@ -35,6 +35,12 @@ function M.setup(ctx)
end end
local function setup_audio_media_bindings() local function setup_audio_media_bindings()
bind("F5", exec("voxtype record start"), desc("Start hold-to-talk dictation"))
bind("F5", exec("voxtype record stop"), desc("Stop and transcribe hold-to-talk dictation", { release = true }))
bind(hyper .. " + B", exec("voxtype record start"), desc("Start hold-to-talk dictation"))
bind(hyper .. " + B", exec("voxtype record stop"), desc("Stop and transcribe hold-to-talk dictation", { release = true }))
bind(hyper .. " + Escape", exec("voxtype record cancel"), desc("Cancel voice dictation"))
bind(main_mod .. " + I", exec("set_volume --unmute --change-volume +5"), desc("Raise volume", { repeating = true })) bind(main_mod .. " + I", exec("set_volume --unmute --change-volume +5"), desc("Raise volume", { repeating = true }))
bind(main_mod .. " + K", exec("set_volume --unmute --change-volume -5"), desc("Lower volume", { repeating = true })) bind(main_mod .. " + K", exec("set_volume --unmute --change-volume -5"), desc("Lower volume", { repeating = true }))
bind(main_mod .. " + U", exec("set_volume --toggle-mute"), desc("Toggle mute")) bind(main_mod .. " + U", exec("set_volume --toggle-mute"), desc("Toggle mute"))

38
nix-darwin/flake.lock generated
View File

@@ -67,16 +67,16 @@
"brew-src_2": { "brew-src_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1781226006, "lastModified": 1783446865,
"narHash": "sha256-w4ZTuOnhYiDxjaynrMTASzp802QblBWmo3wpB8wVN4Y=", "narHash": "sha256-nCrPEbQjgnSAOVWTxRXD9Yi6P3oECdtZISYcQCFI9Fs=",
"owner": "Homebrew", "owner": "Homebrew",
"repo": "brew", "repo": "brew",
"rev": "109191be4988470b51a60a5ef1998520aa24c01b", "rev": "655769712a9a9499563d9685a8488f349354492d",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "Homebrew", "owner": "Homebrew",
"ref": "6.0.1", "ref": "6.0.9",
"repo": "brew", "repo": "brew",
"type": "github" "type": "github"
} }
@@ -415,11 +415,11 @@
"homebrew-cask": { "homebrew-cask": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1783875185, "lastModified": 1783896173,
"narHash": "sha256-AZWrzOFhXHxqeQn0NwWGiMEiAnf9Yf3ykiGskwYiZ+o=", "narHash": "sha256-TjRxjBQ6fswprsgV3oBPLXMgVahpQYlyACG8Lc1QaUU=",
"owner": "homebrew", "owner": "homebrew",
"repo": "homebrew-cask", "repo": "homebrew-cask",
"rev": "dc8cf60557d7721bde7e0b280be137a0cf507bb4", "rev": "a076528fab5845342f1bef86c99efe90226fb392",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -431,11 +431,11 @@
"homebrew-core": { "homebrew-core": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1783873924, "lastModified": 1783893485,
"narHash": "sha256-jbAErXmffXQILyd63M/JVp/I+vtPdhUXRvvA3+95xxI=", "narHash": "sha256-dmkgtIS9Av/7uuSRCTRnFe+lOyqu8aHA1PePLucgMDo=",
"owner": "homebrew", "owner": "homebrew",
"repo": "homebrew-core", "repo": "homebrew-core",
"rev": "29642fae38457ae283af1b73017c7a85fe1b1ea5", "rev": "77a20c716612be4bd16640b3614842653594cc4f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -455,11 +455,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1783816713, "lastModified": 1783886947,
"narHash": "sha256-nGSDzvcf6j00HYGWr59u2arE2eBzV5dm099yL24jr10=", "narHash": "sha256-qItwicCUOoUJy/mrGvIgsMe31H3qlkL0n8I1F3s8qR4=",
"owner": "colonelpanic8", "owner": "colonelpanic8",
"repo": "keepbook", "repo": "keepbook",
"rev": "365358638c0e9e39cb4556c1220cc83ab6d99a63", "rev": "093a3bd76a524b8f3096c5fcdcd6c7ee41c53acb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -479,11 +479,11 @@
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {
"lastModified": 1783872813, "lastModified": 1783890323,
"narHash": "sha256-iZj8e+a5p/ML9cbATZTaj/H9SEc6vjCcvNpGVeLTSEQ=", "narHash": "sha256-ygsdNac43J0IdZ84iaFs3bkeznbEySFa7TtBf53emoo=",
"owner": "colonelpanic8", "owner": "colonelpanic8",
"repo": "lastfm-edit", "repo": "lastfm-edit",
"rev": "cb00aadb357efdf17c5b0bf81db7d0647835d359", "rev": "2c8dfb0314540e8f0cd760dd4388ef31ea0db013",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -517,11 +517,11 @@
"brew-src": "brew-src_2" "brew-src": "brew-src_2"
}, },
"locked": { "locked": {
"lastModified": 1781389246, "lastModified": 1783875858,
"narHash": "sha256-ORqLAo/hoJdsZC7UPAuEHev6S0+XIqKEC7vjo5prz1k=", "narHash": "sha256-+yYNOkj/bkVQmwKH0hewqwBwAEoh4Gq2BmQPIP1jNrg=",
"owner": "zhaofengli-wip", "owner": "zhaofengli-wip",
"repo": "nix-homebrew", "repo": "nix-homebrew",
"rev": "de7953a08ed4bb9245be043e468561c17b89130d", "rev": "60641da8324e6a1af716a0340d901ccb131c91ef",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -127,6 +127,7 @@ in
inputs.gmcli.packages.${pkgs.stdenv.hostPlatform.system}.default inputs.gmcli.packages.${pkgs.stdenv.hostPlatform.system}.default
inputs.lastfm-edit.packages.${pkgs.stdenv.hostPlatform.system}.scrobble-scrubber-app inputs.lastfm-edit.packages.${pkgs.stdenv.hostPlatform.system}.scrobble-scrubber-app
opencode opencode
t3code
# MCP # MCP
github-mcp-server github-mcp-server

92
nixos/flake.lock generated
View File

@@ -178,11 +178,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1783884256, "lastModified": 1783891118,
"narHash": "sha256-h1PvrMre89NQBrxocyAQiJAzvlH2mjOVnP7czM6/kdA=", "narHash": "sha256-ZZPy9T4X9kuVsQX3np+03FhQ1kWdHcdNUqyvAsUR9Yk=",
"owner": "ilysenko", "owner": "ilysenko",
"repo": "codex-desktop-linux", "repo": "codex-desktop-linux",
"rev": "c9c5ee35368ddd6f4bc90d6669b0542c6dce6337", "rev": "413e484f47d300243397280338f19beb187025b2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -580,6 +580,24 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_6": {
"inputs": {
"systems": "systems_7"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"git-blame-rank": { "git-blame-rank": {
"inputs": { "inputs": {
"fenix": "fenix", "fenix": "fenix",
@@ -720,11 +738,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1783904927, "lastModified": 1783914427,
"narHash": "sha256-5yaK8nY5PJ2pdIvmG8yM3KH4jse0PzS3wUUsfARXxTM=", "narHash": "sha256-qrzwgZN4rjLbC5G2FkdhzJAlup0US8eTO9FUH1NjJjo=",
"owner": "colonelpanic8", "owner": "colonelpanic8",
"repo": "gmcli", "repo": "gmcli",
"rev": "5863722646043d0fc7fcbce37e795a977d569ce9", "rev": "7d198b8362de0e1126b9647fffa252c3ffe2ac7b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -2087,6 +2105,8 @@
"railbird-secrets": "railbird-secrets", "railbird-secrets": "railbird-secrets",
"rlru": "rlru", "rlru": "rlru",
"systems": "systems_6", "systems": "systems_6",
"t3code-nix": "t3code-nix",
"voxtype": "voxtype",
"vscode-server": "vscode-server", "vscode-server": "vscode-server",
"xmonad": "xmonad_2", "xmonad": "xmonad_2",
"xmonad-contrib": "xmonad-contrib_2", "xmonad-contrib": "xmonad-contrib_2",
@@ -2254,6 +2274,41 @@
"type": "github" "type": "github"
} }
}, },
"systems_7": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"t3code-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1783865433,
"narHash": "sha256-R/2UilYyaOqwCZ+C15VPSzrl73yXBmguT/ac/nXGIUw=",
"owner": "omarcresp",
"repo": "t3code-flake",
"rev": "99b3a112b35345593b0bff31617e13f1c7389338",
"type": "github"
},
"original": {
"owner": "omarcresp",
"repo": "t3code-flake",
"type": "github"
}
},
"taffybar": { "taffybar": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_3", "flake-utils": "flake-utils_3",
@@ -2269,11 +2324,11 @@
"rev": "edb35b03f9c3f6370a2749d1a2203dcaccf00a2b", "rev": "edb35b03f9c3f6370a2749d1a2203dcaccf00a2b",
"revCount": 2371, "revCount": 2371,
"type": "git", "type": "git",
"url": "file:///srv/dotfiles/dotfiles/config/taffybar/taffybar" "url": "file:./dotfiles/config/taffybar/taffybar"
}, },
"original": { "original": {
"type": "git", "type": "git",
"url": "file:///srv/dotfiles/dotfiles/config/taffybar/taffybar" "url": "file:./dotfiles/config/taffybar/taffybar"
} }
}, },
"utils": { "utils": {
@@ -2294,6 +2349,27 @@
"type": "github" "type": "github"
} }
}, },
"voxtype": {
"inputs": {
"flake-utils": "flake-utils_6",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1783956569,
"narHash": "sha256-36bYa6+d+SjLXTDeUOoCiuTlAL9mgp9h5WK4WMCEuZQ=",
"owner": "peteonrails",
"repo": "voxtype",
"rev": "86666ab9ee681eb3d1e80ef1826affd8e11107e5",
"type": "github"
},
"original": {
"owner": "peteonrails",
"repo": "voxtype",
"type": "github"
}
},
"vscode-server": { "vscode-server": {
"inputs": { "inputs": {
"flake-utils": [ "flake-utils": [

View File

@@ -101,6 +101,11 @@
}; };
}; };
voxtype = {
url = "github:peteonrails/voxtype";
inputs.nixpkgs.follows = "nixpkgs";
};
kanshi-sni = { kanshi-sni = {
url = "github:taffybar/kanshi-sni"; url = "github:taffybar/kanshi-sni";
inputs = { inputs = {
@@ -290,6 +295,11 @@
}; };
}; };
t3code-nix = {
url = "github:omarcresp/t3code-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
claude-desktop = { claude-desktop = {
url = "github:aaddrick/claude-desktop-debian"; url = "github:aaddrick/claude-desktop-debian";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";

View File

@@ -12,11 +12,28 @@
aiHistoryHosts = ["ryzen-shine" "railbird-sf" "jay-lenovo" "strixi-minaj"]; aiHistoryHosts = ["ryzen-shine" "railbird-sf" "jay-lenovo" "strixi-minaj"];
syncAiHistory = builtins.elem config.networking.hostName aiHistoryHosts; syncAiHistory = builtins.elem config.networking.hostName aiHistoryHosts;
gmcliPackage = inputs.gmcli.packages.${pkgs.stdenv.hostPlatform.system}.default; gmcliPackage = inputs.gmcli.packages.${pkgs.stdenv.hostPlatform.system}.default;
gmcliCookiePython = pkgs.python3.withPackages (ps: [ps.browser-cookie3]);
gmcliArchiveRoot = "/home/imalison/Backups/gmcli/git-sync"; gmcliArchiveRoot = "/home/imalison/Backups/gmcli/git-sync";
gmcliArchiveOutput = "${gmcliArchiveRoot}/archive"; gmcliArchiveOutput = "${gmcliArchiveRoot}/archive";
gmcliTelephonyOutput = "${gmcliArchiveRoot}/telephony"; gmcliTelephonyOutput = "${gmcliArchiveRoot}/telephony";
gmcliTelephonyFullOutput = "/home/imalison/Backups/gmcli/android-telephony-full"; gmcliTelephonyFullOutput = "/home/imalison/Backups/gmcli/android-telephony-full";
gmcliBackupLock = "/home/imalison/.local/state/gmcli/backup.lock"; gmcliBackupLock = "/home/imalison/.local/state/gmcli/backup.lock";
gmcliChromeCookieDB = "/home/imalison/.config/google-chrome/Default/Cookies";
refreshGmcliCookies = pkgs.writeShellScript "refresh-gmcli-cookies" ''
set -euo pipefail
umask 077
${gmcliCookiePython}/bin/python -c '
import browser_cookie3
import json
import sys
cookies = browser_cookie3.chrome(
cookie_file=${builtins.toJSON gmcliChromeCookieDB},
domain_name=".google.com",
)
json.dump({cookie.name: cookie.value for cookie in cookies}, sys.stdout)
' | ${gmcliPackage}/bin/gmcli auth refresh-cookies --cookies-file -
'';
exportGmcliArchive = pkgs.writeShellScript "export-gmcli-archive" '' exportGmcliArchive = pkgs.writeShellScript "export-gmcli-archive" ''
set -euo pipefail set -euo pipefail
${gmcliPackage}/bin/gmcli export jsonl --out ${lib.escapeShellArg gmcliArchiveOutput} --force ${gmcliPackage}/bin/gmcli export jsonl --out ${lib.escapeShellArg gmcliArchiveOutput} --force
@@ -41,6 +58,7 @@
refreshGmcliArchiveUnlocked = pkgs.writeShellScript "refresh-gmcli-archive-unlocked" '' refreshGmcliArchiveUnlocked = pkgs.writeShellScript "refresh-gmcli-archive-unlocked" ''
set -uo pipefail set -uo pipefail
status=0 status=0
${refreshGmcliCookies} || status=1
${gmcliPackage}/bin/gmcli sync --include-spam=false --include-archive=false || status=1 ${gmcliPackage}/bin/gmcli sync --include-spam=false --include-archive=false || status=1
${exportGmcliArchive} || status=1 ${exportGmcliArchive} || status=1
exit "$status" exit "$status"
@@ -48,6 +66,7 @@
backfillGmcliArchiveUnlocked = pkgs.writeShellScript "backfill-gmcli-archive-unlocked" '' backfillGmcliArchiveUnlocked = pkgs.writeShellScript "backfill-gmcli-archive-unlocked" ''
set -uo pipefail set -uo pipefail
status=0 status=0
${refreshGmcliCookies} || status=1
${gmcliPackage}/bin/gmcli sync || status=1 ${gmcliPackage}/bin/gmcli sync || status=1
exhausted=0 exhausted=0
pass=1 pass=1

View File

@@ -166,6 +166,7 @@
then "1" then "1"
else "0"; else "0";
hyprlandCursorSizeString = toString config.myModules.hyprland.cursorSize; hyprlandCursorSizeString = toString config.myModules.hyprland.cursorSize;
voxtypePackage = inputs.voxtype.packages.${system}.vulkan;
enableHyprglass = false; enableHyprglass = false;
hyprglass = pkgs.callPackage ./packages/hyprglass { hyprglass = pkgs.callPackage ./packages/hyprglass {
src = inputs.hyprglass; src = inputs.hyprglass;
@@ -432,6 +433,47 @@
HYPRCURSOR_SIZE = hyprlandCursorSizeString; HYPRCURSOR_SIZE = hyprlandCursorSizeString;
}; };
home-manager.users.imalison = lib.mkIf config.myModules.voxtype.enable {
imports = [inputs.voxtype.homeManagerModules.default];
home.packages = [inputs.voxtype.packages.${system}.osd-gtk4];
programs.voxtype = {
enable = true;
package = voxtypePackage;
engine = "whisper";
model.name = "large-v3-turbo";
service.enable = true;
settings = {
hotkey.enabled = false;
audio = {
device = "default";
max_duration_secs = 120;
};
whisper = {
language = "en";
translate = false;
on_demand_loading = false;
initial_prompt = "Ivan Malison, Railbird, NixOS, Hyprland, Taffybar, Emacs, Codex.";
};
output = {
mode = "type";
fallback_to_clipboard = true;
pre_type_delay_ms = 100;
notification = {
on_recording_start = true;
on_recording_stop = true;
on_transcription = false;
};
};
};
};
};
home-manager.sharedModules = [ home-manager.sharedModules = [
inputs.hyprscratch.homeModules.default inputs.hyprscratch.homeModules.default
( (

View File

@@ -9,6 +9,10 @@ bump-claude-codex *args:
PATH=/run/current-system/sw/bin:/nix/var/nix/profiles/system/sw/bin:/etc/profiles/per-user/root/bin:/usr/bin:/bin nix flake update codex-cli-nix codex-desktop-linux claude-code-nix claude-desktop PATH=/run/current-system/sw/bin:/nix/var/nix/profiles/system/sw/bin:/etc/profiles/per-user/root/bin:/usr/bin:/bin nix flake update codex-cli-nix codex-desktop-linux claude-code-nix claude-desktop
just switch {{args}} just switch {{args}}
bump-t3code *args:
PATH=/run/current-system/sw/bin:/nix/var/nix/profiles/system/sw/bin:/etc/profiles/per-user/root/bin:/usr/bin:/bin nix flake update t3code-nix
just switch {{args}}
populate-cachix cache="colonelpanic8-dotfiles" host=`hostname` *args: populate-cachix cache="colonelpanic8-dotfiles" host=`hostname` *args:
store_path="$(nix build --no-link --print-out-paths ".#nixosConfigurations.{{host}}.config.system.build.toplevel" --impure --option warn-dirty false {{args}})" && cachix push {{cache}} "$store_path" store_path="$(nix build --no-link --print-out-paths ".#nixosConfigurations.{{host}}.config.system.build.toplevel" --impure --option warn-dirty false {{args}})" && cachix push {{cache}} "$store_path"

View File

@@ -25,6 +25,7 @@
myModules.gitea-runner.enable = false; myModules.gitea-runner.enable = false;
myModules.postgres.enable = true; myModules.postgres.enable = true;
myModules.tts.enable = true; myModules.tts.enable = true;
myModules.voxtype.enable = true;
myModules.cua = { myModules.cua = {
enable = true; enable = true;
android = { android = {

View File

@@ -110,10 +110,11 @@
# (import ./nvidia-container-toolkit-overlay.nix) # (import ./nvidia-container-toolkit-overlay.nix)
(import ./emacs-overlay.nix) (import ./emacs-overlay.nix)
(import ../nix-shared/overlays) (import ../nix-shared/overlays)
# Use codex and claude-code from dedicated flakes with cachix # Use fast-moving agent tools from dedicated flakes.
(final: prev: { (final: prev: {
codex = inputs.codex-cli-nix.packages.${prev.stdenv.hostPlatform.system}.default; codex = inputs.codex-cli-nix.packages.${prev.stdenv.hostPlatform.system}.default;
claude-code = inputs.claude-code-nix.packages.${prev.stdenv.hostPlatform.system}.default; claude-code = inputs.claude-code-nix.packages.${prev.stdenv.hostPlatform.system}.default;
t3code = inputs.t3code-nix.packages.${prev.stdenv.hostPlatform.system}.default;
git-sync-rs = inputs.git-sync-rs.packages.${prev.stdenv.hostPlatform.system}.default; git-sync-rs = inputs.git-sync-rs.packages.${prev.stdenv.hostPlatform.system}.default;
elegant-grub2-theme = final.callPackage ./packages/elegant-grub2-theme {}; elegant-grub2-theme = final.callPackage ./packages/elegant-grub2-theme {};
kef = final.callPackage ./packages/kef {}; kef = final.callPackage ./packages/kef {};

View File

@@ -75,13 +75,24 @@
} '' } ''
jq ' jq '
(.nodes[] | select(.type == "CheckpointLoaderSimple") | .widgets_values[0]) = "Qwen-Rapid-AIO-NSFW-v23.safetensors" (.nodes[] | select(.type == "CheckpointLoaderSimple") | .widgets_values[0]) = "Qwen-Rapid-AIO-NSFW-v23.safetensors"
| (.nodes[] | select(.id == 6)) |= (
.type = "SaveImage"
| .title = "Save Output Image (always)"
| .size = [320, 346]
| .outputs = [
{"name": "images", "type": "IMAGE", "links": null}
]
| .widgets_values = ["qwen-rapid-aio-nsfw/qwen_edit"]
| .properties = {"Node name for S&R": "SaveImage"}
)
| (.nodes[] | select(.id == 7) | .title) = "Input Image 1" | (.nodes[] | select(.id == 7) | .title) = "Input Image 1"
| (.nodes[] | select(.id == 8) | .title) = "Optional Input Image 2" | (.nodes[] | select(.id == 8) | .title) = "Optional Input Image 2"
| (.nodes[] | select(.id == 7) | .outputs[0].links) |= ((. // []) + [19]) | (.nodes[] | select(.id == 7) | .outputs[0].links) |= ((. // []) + [19])
| (.nodes[] | select(.id == 9) | .inputs) = [ | (.nodes[] | select(.id == 9) | .inputs) = [
{"name": "width", "type": "INT", "link": 20}, {"name": "width", "type": "INT", "link": 23},
{"name": "height", "type": "INT", "link": 21} {"name": "height", "type": "INT", "link": 27}
] ]
| (.nodes[] | select(.id == 9) | .pos) = [110, 1040]
| (.nodes[] | select(.id == 9) | .widgets_values) = [768, 768, 1] | (.nodes[] | select(.id == 9) | .widgets_values) = [768, 768, 1]
| .nodes += [ | .nodes += [
{ {
@@ -96,21 +107,222 @@
{"name": "image", "type": "IMAGE", "link": 19} {"name": "image", "type": "IMAGE", "link": 19}
], ],
"outputs": [ "outputs": [
{"name": "width", "type": "INT", "links": [20]}, {"name": "width", "type": "INT", "links": [21]},
{"name": "height", "type": "INT", "links": [21]}, {"name": "height", "type": "INT", "links": [25]},
{"name": "batch_size", "type": "INT", "links": null} {"name": "batch_size", "type": "INT", "links": null}
], ],
"properties": { "properties": {
"Node name for S&R": "GetImageSize" "Node name for S&R": "GetImageSize"
}, },
"widgets_values": [] "widgets_values": []
},
{
"id": 11,
"type": "PrimitiveBoolean",
"pos": [-565, 850],
"size": [270, 110],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"localized_name": "value",
"name": "value",
"type": "BOOLEAN",
"widget": {"name": "value"},
"link": null
}
],
"outputs": [
{
"localized_name": "BOOLEAN",
"name": "BOOLEAN",
"type": "BOOLEAN",
"links": [22]
}
],
"title": "Use Original Image Width?",
"properties": {
"Node name for S&R": "PrimitiveBoolean",
"cnr_id": "comfy-core",
"ver": "0.26.1"
},
"widgets_values": [true]
},
{
"id": 12,
"type": "PrimitiveInt",
"pos": [-565, 990],
"size": [270, 110],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"localized_name": "value",
"name": "value",
"type": "INT",
"widget": {"name": "value"},
"link": null
}
],
"outputs": [
{
"localized_name": "INT",
"name": "INT",
"type": "INT",
"links": [20]
}
],
"title": "Custom Width (multiple of 16)",
"properties": {
"Node name for S&R": "PrimitiveInt",
"cnr_id": "comfy-core",
"ver": "0.26.1"
},
"widgets_values": [768, "fixed"]
},
{
"id": 13,
"type": "PrimitiveInt",
"pos": [-565, 1270],
"size": [270, 110],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"localized_name": "value",
"name": "value",
"type": "INT",
"widget": {"name": "value"},
"link": null
}
],
"outputs": [
{
"localized_name": "INT",
"name": "INT",
"type": "INT",
"links": [24]
}
],
"title": "Custom Height (multiple of 16)",
"properties": {
"Node name for S&R": "PrimitiveInt",
"cnr_id": "comfy-core",
"ver": "0.26.1"
},
"widgets_values": [768, "fixed"]
},
{
"id": 14,
"type": "ComfySwitchNode",
"pos": [-240, 930],
"size": [270, 130],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{"localized_name": "on_false", "name": "on_false", "type": "*", "link": 20},
{"localized_name": "on_true", "name": "on_true", "type": "*", "link": 21},
{
"localized_name": "switch",
"name": "switch",
"type": "BOOLEAN",
"widget": {"name": "switch"},
"link": 22
}
],
"outputs": [
{"localized_name": "output", "name": "output", "type": "*", "links": [23]}
],
"title": "Width: Custom / Original",
"properties": {
"Node name for S&R": "ComfySwitchNode",
"cnr_id": "comfy-core",
"ver": "0.26.1"
},
"widgets_values": [false]
},
{
"id": 15,
"type": "ComfySwitchNode",
"pos": [-240, 1210],
"size": [270, 130],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{"localized_name": "on_false", "name": "on_false", "type": "*", "link": 24},
{"localized_name": "on_true", "name": "on_true", "type": "*", "link": 25},
{
"localized_name": "switch",
"name": "switch",
"type": "BOOLEAN",
"widget": {"name": "switch"},
"link": 26
}
],
"outputs": [
{"localized_name": "output", "name": "output", "type": "*", "links": [27]}
],
"title": "Height: Custom / Original",
"properties": {
"Node name for S&R": "ComfySwitchNode",
"cnr_id": "comfy-core",
"ver": "0.26.1"
},
"widgets_values": [false]
},
{
"id": 16,
"type": "PrimitiveBoolean",
"pos": [-565, 1130],
"size": [270, 110],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"localized_name": "value",
"name": "value",
"type": "BOOLEAN",
"widget": {"name": "value"},
"link": null
}
],
"outputs": [
{
"localized_name": "BOOLEAN",
"name": "BOOLEAN",
"type": "BOOLEAN",
"links": [26]
}
],
"title": "Use Original Image Height?",
"properties": {
"Node name for S&R": "PrimitiveBoolean",
"cnr_id": "comfy-core",
"ver": "0.26.1"
},
"widgets_values": [true]
} }
] ]
| .links += [ | .links += [
[19, 7, 0, 10, 0, "IMAGE"], [19, 7, 0, 10, 0, "IMAGE"],
[20, 10, 0, 9, 0, "INT"], [20, 12, 0, 14, 0, "INT"],
[21, 10, 1, 9, 1, "INT"] [21, 10, 0, 14, 1, "INT"],
[22, 11, 0, 14, 2, "BOOLEAN"],
[23, 14, 0, 9, 0, "INT"],
[24, 13, 0, 15, 0, "INT"],
[25, 10, 1, 15, 1, "INT"],
[26, 16, 0, 15, 2, "BOOLEAN"],
[27, 15, 0, 9, 1, "INT"]
] ]
| .last_node_id = 16
| .last_link_id = 27
| .extra.ds = {"scale": 0.82, "offset": [780, 50]}
' "$src" > "$out" ' "$src" > "$out"
''; '';
@@ -173,8 +385,9 @@ in
"+${pkgs.writeShellScript "install-qwen-rapid-aio-workflow" '' "+${pkgs.writeShellScript "install-qwen-rapid-aio-workflow" ''
rm -f /var/lib/comfyui/workflows/Qwen-Rapid-AIO-v23-SFW.json rm -f /var/lib/comfyui/workflows/Qwen-Rapid-AIO-v23-SFW.json
rm -f /var/lib/comfyui/.local/share/comfyui/user/default/workflows/Qwen-Rapid-AIO-v23-SFW.json rm -f /var/lib/comfyui/.local/share/comfyui/user/default/workflows/Qwen-Rapid-AIO-v23-SFW.json
install -D -m 0644 ${qwenRapidAioWorkflow} /var/lib/comfyui/workflows/Qwen-Rapid-AIO-v23-NSFW.json install -D -o comfyui -g comfyui -m 0644 ${qwenRapidAioWorkflow} /var/lib/comfyui/workflows/Qwen-Rapid-AIO-v23-NSFW.json
install -D -m 0644 ${qwenRapidAioWorkflow} /var/lib/comfyui/.local/share/comfyui/user/default/workflows/Qwen-Rapid-AIO-v23-NSFW.json install -D -o comfyui -g comfyui -m 0644 ${qwenRapidAioWorkflow} /var/lib/comfyui/.local/share/comfyui/user/default/workflows/Qwen-Rapid-AIO-v23-NSFW.json
chown -R comfyui:comfyui /var/lib/comfyui/.local/share/comfyui/user/default/workflows
''}" ''}"
]; ];
} }

View File

@@ -44,6 +44,8 @@ in {
type = lib.types.ints.positive; type = lib.types.ints.positive;
description = "Cursor size exported to Hyprland and cursor-aware toolkits."; description = "Cursor size exported to Hyprland and cursor-aware toolkits.";
}; };
myModules.voxtype.enable = lib.mkEnableOption "local push-to-talk voice dictation";
}; };
config = { config = {