feat: Add Opencode IDE with AI agents, Beads issue tracking, and STT/PTT

support
- Integrate Opencode terminal IDE with MCP integrations (Ref, Exa,
  Outline)
- Add Beads AI-native issue tracking system (.beads/ + AGENTS.md)
- Implement STT/PTT (speech-to-text push-to-talk) with
  whisper-cpp-vulkan
- Add coding feature module with dev tools (beads, alejandra, bun,
  devpod, nixd)
- Create AZPILOGISTIKTEST host configuration
- Refactor Hyprland windowrules to new match: syntax
- Upgrade nixpkgs/home-manager from 25.05 to 25.11
- Update Ollama to use Vulkan acceleration
- Add lmstudio, rofi-project-opener, and various app updates
- Add outline-key secret and mem0 service configuration

chore: Add Opencode IDE, Beads issue tracking, STT/PTT, and nixpkgs
25.11 upgrade
This commit is contained in:
2026-01-14 12:49:23 +01:00
parent 01df1f695b
commit 6be5e38021
40 changed files with 753 additions and 176 deletions

View File

@@ -11,33 +11,6 @@ in {
mkEnableOption "Hyprland related stuff";
config = mkIf cfg.enable {
home.file.".config/hypr/colors.conf".text = ''
$background = rgb(282A36)
$backgroundRaw = 282A36
$foreground = rgb(F8F8F2)
$foregroundRaw = F8F8F2
$selection = rgb(44475A)
$selectionRaw = 44475A
$comment = rgb(6272A4)
$commentRaw = 6272A4
$red = rgb(FF5555)
$redRaw = FF5555
$orange = rgb(FFB86C)
$orangeRaw = FFB86C
$yellow = rgb(F1FA8C)
$yellowRaw = F1FA8C
$green = rgb(50FA7B)
$greenRaw = 50FA7B
$purple = rgb(BD93F9)
$purpleRaw = BD93F9
$cyan = rgb(8BE9FD)
$cyanRaw = 8BE9FD
$pink = rgb(FF79C6)
$pinkRaw = FF79C6
$accent = $purple
$accentRaw = $purpleRaw
'';
wayland.windowManager.hyprland = {
settings = {
xwayland = {
@@ -46,8 +19,7 @@ in {
exec-once = [
"hyprpanel"
"hyprpaper-random"
"hypridle"
"while ! hyprpaper-random; do sleep 0.5; done"
"wl-paste --type text --watch cliphist store" # Stores only text data
"wl-paste --type image --watch cliphist store" # Stores only image data "wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\""
];
@@ -86,7 +58,6 @@ in {
"col.inactive_border" = "rgba(44475aaa)";
"col.nogroup_border" = "rgba(282a36dd)";
"col.nogroup_border_active" = "rgb(bd93f9) rgb(44475a) 90deg";
no_border_on_floating = false;
layout = "dwindle";
};
@@ -95,7 +66,7 @@ in {
enabled = true;
range = 60;
render_power = 3;
color = "rgba(1E202966)";
color = "rgba(${config.colorScheme.palette.base00}66)";
offset = "1 2";
scale = 0.97;
};
@@ -146,49 +117,38 @@ in {
}
];
windowrule = [
"float, class:file_progress"
"float, class:confirm"
"float, class:dialog"
"float, class:download"
"float, class:notification"
"float, class:error"
"float, class:splash"
"float, class:confirmreset"
"float, title:Open File"
"float, title:branchdialog"
"float, class:pavucontrol-qt"
"float, class:pavucontrol"
"fullscreen, class:wlogout"
"float, title:wlogout"
"fullscreen, title:wlogout"
"float, class:mpv"
"idleinhibit focus, class:mpv"
"opacity 1.0 override, class:mpv"
"float, title:^(Media viewer)$"
"float, title:^(Volume Control)$"
"float, title:^(Picture-in-Picture)$"
"float,title:^(floating-pomodoro)$"
"size 250 50, title:^(floating-pomodoro)$"
"move 12 100%-150,title:^(floating-pomodoro)$"
"pin,title:^(floating-pomodoro)$"
"float, initialTitle:.*streamlabs.com.*"
"pin, initialTitle:.*streamlabs.com.*"
"size 800 400, initialTitle:.*streamlabs.com.*"
"move 100%-820 102, initialTitle:.*alert-box.*"
"move 100%-820 512, initialTitle:.*chat-box.*"
"opacity 0.5 override, initialTitle:.*streamlabs.com.*"
"idleinhibit focus, initialTitle:.*streamlabs.com.*"
"noanim, initialTitle:.*streamlabs.com.*"
"noborder, initialTitle:.*streamlabs.com.*"
"noshadow, initialTitle:.*streamlabs.com.*"
"noblur, initialTitle:.*streamlabs.com.*"
"bordercolor rgb(ffffff),xwayland:1"
"opacity 0.0 override, class:^(xwaylandvideobridge)$"
"noanim, class:^(xwaylandvideobridge)$"
"noinitialfocus, class:^(xwaylandvideobridge)$"
"maxsize 1 1, class:^(xwaylandvideobridge)$"
"noblur, class:^(xwaylandvideobridge)$"
"nofocus, class:^(xwaylandvideobridge)$"
# Floating dialogs
"match:class file_progress, float on"
"match:class confirm, float on"
"match:class dialog, float on"
"match:class download, float on"
"match:class notification, float on"
"match:class error, float on"
"match:class splash, float on"
"match:class confirmreset, float on"
"match:title Open File, float on"
"match:title branchdialog, float on"
"match:class pavucontrol-qt, float on"
"match:class pavucontrol, float on"
# wlogout
"match:class wlogout, fullscreen on"
"match:title wlogout, float on"
"match:title wlogout, fullscreen on"
# mpv
"match:class mpv, float on"
"match:class mpv, idle_inhibit focus"
"match:class mpv, opacity 1.0 override"
# Media/Volume/PiP
"match:title ^(Media viewer)$, float on"
"match:title ^(Volume Control)$, float on"
"match:title ^(Picture-in-Picture)$, float on"
# Pomodoro timer
"match:title ^(floating-pomodoro)$, float on"
"match:title ^(floating-pomodoro)$, size 250 50"
"match:title ^(floating-pomodoro)$, move 12 (monitor_h-150)"
"match:title ^(floating-pomodoro)$, pin on"
"match:initial_title .*streamlabs.com.*, no_blur on"
"border_color rgb(ffffff), match:xwayland 1"
];
"$mainMod" = "SUPER";
@@ -200,8 +160,9 @@ in {
"$mainMod, t, exec, $terminal -e nu -c 'nitch; exec nu'"
"$mainMod SHIFT, t, exec, launch-timer"
"$mainMod SHIFT, e, exec, $terminal -e zellij_nvim"
"$mainMod, o, exec, hyprctl setprop activewindow opaque toggle"
"$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512"
"$mainMod, o, exec, hyprctl dispatch setprop activewindow opaque toggle"
#"$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512"
"$mainMod, R, exec, stt-ptt start"
"$mainMod, b, exec, thunar"
"$mainMod SHIFT, B, exec, vivaldi"
"$mainMod, Escape, exec, wlogout -p layer-shell"
@@ -246,7 +207,9 @@ in {
"$mainMod, mouse_down, workspace, e+1"
"$mainMod, mouse_up, workspace, e-1"
];
bindr = [
"$mainMod, R, exec, stt-ptt stop"
];
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
@@ -282,13 +245,13 @@ in {
programs.hyprlock = {
enable = true;
settings = {
source = "$HOME/.config/hypr/colors.conf";
"$font" = "JetBrainsMono Nerd Font";
"$base" = "$background";
"$text" = "$foreground";
"$textAlpha" = "$foregroundRaw";
"$accentAlpha" = "$accentRaw";
"$font" = "FiraCode Nerd Font";
"$base" = "rgb(${config.colorScheme.palette.base00})";
"$text" = "rgb(${config.colorScheme.palette.base05})";
"$textAlpha" = "${config.colorScheme.palette.base05}";
"$accentAlpha" = "${config.colorScheme.palette.base0D}";
"$red" = "rgb(${config.colorScheme.palette.base08})";
"$yellow" = "rgb(${config.colorScheme.palette.base0A})";
general = {
hide_cursor = true;
@@ -296,9 +259,9 @@ in {
background = {
monitor = "";
path = "~/.hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png";
path = "${config.home.homeDirectory}/.config/hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png";
blur_passes = 0;
color = "$base";
color = "rgb(${config.colorScheme.palette.base00})";
};
label = [
@@ -332,16 +295,16 @@ in {
dots_size = 0.2;
dots_spacing = 0.2;
dots_center = true;
outer_color = "$accent";
inner_color = "$background";
font_color = "$text";
outer_color = "rgb(${config.colorScheme.palette.base0D})";
inner_color = "rgb(${config.colorScheme.palette.base00})";
font_color = "rgb(${config.colorScheme.palette.base05})";
fade_on_empty = false;
placeholder_text = ''<span foreground="##$textAlpha">󰌾 Logged in as <span foreground="##$accentAlpha">$USER</span></span>'';
placeholder_text = ''<span foreground="##${config.colorScheme.palette.base05}">󰌾 Logged in as <span foreground="##${config.colorScheme.palette.base0D}">$USER</span></span>'';
hide_input = false;
check_color = "$accent";
fail_color = "$red";
check_color = "rgb(${config.colorScheme.palette.base0D})";
fail_color = "rgb(${config.colorScheme.palette.base08})";
fail_text = ''<i>$FAIL <b>($ATTEMPTS)</b></i>'';
capslock_color = "$yellow";
capslock_color = "rgb(${config.colorScheme.palette.base0A})";
position = "0, -35";
halign = "center";
valign = "center";