Compare commits

...

11 Commits

Author SHA1 Message Date
14d659bef0 feat(kodi): use qt-pinned nixpkgs for jellyfin-media-player
Decouple jellyfin-media-player from main nixpkgs update cycle by
sourcing it from pkgs.qt-pinned namespace. This allows the Qt-heavy
package to update on its own Renovate schedule, avoiding massive
qt5webengine rebuilds when updating other packages.

x-xiiep

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 15:16:49 -08:00
1b585847ab Merge branch 'polecat/chrome/x-ymkgu@mlebby8e': update renovate schedules to Saturday afternoon
All checks were successful
CI / check (push) Successful in 16m9s
2026-02-08 14:58:17 -08:00
e7906331dc feat(renovate): update schedules to Saturday afternoon
- lockFileMaintenance: Saturday 2-4pm (was Monday 5am)
- nix-stable-ecosystem: Saturday 2-4pm
- nix-unstable-ecosystem: Saturday 2-4pm
- Add nixpkgs-qt rule: Saturday 4-6pm (staggered)

This allows CI builds to run overnight Saturday→Sunday, with human
review Saturday evening and builds complete by Sunday morning.

Closes: x-ymkgu
2026-02-08 14:58:05 -08:00
dc722843a9 Merge branch 'polecat/rust/x-lnr8g@mlebamik': add nixpkgs-qt input for qt5webengine
Some checks failed
CI / check (push) Has been cancelled
2026-02-08 14:57:19 -08:00
03f169284d feat(flake): add nixpkgs-qt input for qt5webengine packages
Add separate nixpkgs input for qt5webengine-dependent packages like
jellyfin-media-player. This input updates on a separate Renovate
schedule from main nixpkgs to avoid massive qt5webengine rebuilds
when updating other packages.

- Add nixpkgs-qt input pinned to nixos-25.11
- Create pkgs.qt-pinned overlay namespace

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 14:35:35 -08:00
8908500073 feat(home-kodi): enable kdeconnect for kodi user on boxy
All checks were successful
CI / check (push) Successful in 3m26s
Allows KDE Connect discovery and pairing to work when logged in as
the kodi user on the media center.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 13:43:17 -08:00
87f6d5c759 feat(deps): update beads to 0.49.1 with dolt server mode, claude-code to 2.1.30
All checks were successful
CI / check (push) Successful in 5m17s
beads:
- Pin to commit 93965b4a (last before Go 1.25.6 requirement)
- Build locally with corrected vendorHash (upstream default.nix is stale)
- Enables dolt server mode support (gt-1mf.3)

claude-code: 2.1.19 → 2.1.30

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 14:56:24 -08:00
a851c2551c fix(deps): update gastown patch and pin beads to Go 1.24 compatible version
All checks were successful
CI / check (push) Successful in 5m25s
- Update gastown-fix-agent-bead-address-title.patch line numbers (326→315)
  for current upstream gastown source
- Remove obsolete gastown patches (rig-prefix, copydir-symlinks) that are
  now handled upstream
- Pin beads to 55e733c (v0.47.2) which uses Go 1.24.0 - newer versions
  require Go 1.25.6 which isn't in nixpkgs-unstable yet
- Remove beads-search-query-optimization.patch as it targets newer code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 13:18:46 -08:00
mayor
6cf63e86c1 Merge branch 'polecat/rust/x-0cf@ml2ye219': fix doom-intermediates.drv CI failure
All checks were successful
CI / check (push) Successful in 7m37s
Updated nix-doom-emacs-unstraightened flake input to fix stale IFD derivation.

Closes: x-0cf, x-qwd7, hq-cv-mnzq4
2026-01-31 15:50:43 -08:00
c3ed6c0a26 fix(deps): update nix-doom-emacs-unstraightened to fix live-usb flake check
Updates nix-doom-emacs-unstraightened from Jan 25 to Jan 31 release,
which fixes the stale doom-intermediates.drv reference that was causing
nixosConfigurations.live-usb to fail flake check.

Closes: x-0cf

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 15:48:34 -08:00
mayor
53fa89b2e9 Merge branch 'polecat/rust/hq-0h1p9m@ml2ugjq1': fix gastown statusline patch
All checks were successful
CI / check (push) Successful in 5m19s
Regenerated patch with correct hunk headers against locked rev 177094a2.
Root cause was malformed patch format, not a flake.lock issue.

Closes: hq-0h1p9m, x-bwld
2026-01-31 14:01:06 -08:00
8 changed files with 93 additions and 45 deletions

42
flake.lock generated
View File

@@ -8,16 +8,17 @@
]
},
"locked": {
"lastModified": 1769405733,
"narHash": "sha256-WpROnW0dRi5ub0SlpKrMBs3pYlSBY4xw22hnTNvBMgI=",
"lastModified": 1769840331,
"narHash": "sha256-Yp0K4JoXX8EcHp1juH4OZ7dcCmkopDu4VvAgZEOxgL8=",
"owner": "steveyegge",
"repo": "beads",
"rev": "6e82d1e2eea121ce5dc0964d554879f8b0c08563",
"rev": "93965b4abeed920a4701e03571d1b6bb75810722",
"type": "github"
},
"original": {
"owner": "steveyegge",
"repo": "beads",
"rev": "93965b4abeed920a4701e03571d1b6bb75810722",
"type": "github"
}
},
@@ -47,11 +48,11 @@
]
},
"locked": {
"lastModified": 1769329593,
"narHash": "sha256-u5PSA+8TUYF/13ziBcnoE67nkDwpjAdecKh3srcJJm0=",
"lastModified": 1769848312,
"narHash": "sha256-ggBocPd1L4l5MFNV0Fw9aSGZZO4aGzCfgh4e6hQ77RE=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "776dc33d735af583a14cc56b406ea658398964a7",
"rev": "be0b4f4f28f69be61e9174807250e3235ee11d50",
"type": "github"
},
"original": {
@@ -81,11 +82,11 @@
"gastown": {
"flake": false,
"locked": {
"lastModified": 1769538736,
"narHash": "sha256-A33gyS/ERUCFcaFG9PJdIHfIOafguqkRe+DuIZteH5s=",
"lastModified": 1770098007,
"narHash": "sha256-CFlN57BXlR5FobTChdE2GgdIGx4xJcFFCk1E5Q98cSQ=",
"owner": "steveyegge",
"repo": "gastown",
"rev": "177094a2335786d1d450fd9e14b935877291c004",
"rev": "13461161063bf7b2365fe5fd4df88e32c3ba2a28",
"type": "github"
},
"original": {
@@ -206,11 +207,11 @@
"systems": "systems_2"
},
"locked": {
"lastModified": 1769330679,
"narHash": "sha256-X7rw5ouiAYKmbbKLtkEc/Kqcg6DxKgOtgaftzuchy/M=",
"lastModified": 1769849328,
"narHash": "sha256-BjH1Ge6O8ObN6Z97un2U87pl4POO99Q8RSsgIuTZq8Q=",
"owner": "marienz",
"repo": "nix-doom-emacs-unstraightened",
"rev": "0c2d527055f448c8856129c6d063535e06aeff4d",
"rev": "fc1d7190c49558cdc6af20d7657075943a500a93",
"type": "github"
},
"original": {
@@ -257,6 +258,22 @@
"type": "github"
}
},
"nixpkgs-qt": {
"locked": {
"lastModified": 1770464364,
"narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1769170682,
@@ -346,6 +363,7 @@
"nix-darwin": "nix-darwin",
"nix-doom-emacs-unstraightened": "nix-doom-emacs-unstraightened",
"nixpkgs": "nixpkgs",
"nixpkgs-qt": "nixpkgs-qt",
"nixpkgs-unstable": "nixpkgs-unstable",
"perles": "perles",
"plasma-manager": "plasma-manager",

View File

@@ -4,6 +4,9 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# Separate nixpkgs for qt5webengine-dependent packages (jellyfin-media-player, etc.)
# Updates on separate Renovate schedule to avoid massive qt rebuilds
nixpkgs-qt.url = "github:nixos/nixpkgs/nixos-25.11";
nix-darwin = {
url = "github:nix-darwin/nix-darwin/nix-darwin-25.11";
@@ -43,7 +46,9 @@
};
beads = {
url = "github:steveyegge/beads";
# v0.49.1 has dolt server mode support (gt-1mf.3)
# Pinned to 259ddd92 - uses Go 1.24 compatible with nixpkgs
url = "github:steveyegge/beads/93965b4abeed920a4701e03571d1b6bb75810722";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
@@ -74,6 +79,11 @@
config.allowUnfree = true;
overlays = unstableOverlays;
};
# Separate nixpkgs for qt5webengine-heavy packages to avoid rebuild churn
qt-pinned = import inputs.nixpkgs-qt {
system = prev.stdenv.hostPlatform.system;
config.allowUnfree = true;
};
custom = prev.callPackage ./packages {};
# Compatibility: bitwarden renamed to bitwarden-desktop in unstable
bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden;

View File

@@ -12,6 +12,7 @@
home.roles = {
base.enable = true;
plasma-manager-kodi.enable = true;
kdeconnect.enable = true;
};
home.packages = with pkgs; [

View File

@@ -5,20 +5,25 @@ with lib;
let
cfg = config.home.roles.development;
# FIXME: Temporary override for upstream beads vendorHash mismatch
# Remove after upstream fix: https://github.com/steveyegge/beads/issues/XXX
beadsPackage = globalInputs.beads.packages.${system}.default.overrideAttrs (old: {
vendorHash = "sha256-YU+bRLVlWtHzJ1QPzcKJ70f+ynp8lMoIeFlm+29BNPE=";
# Performance fix: avoid WHERE IN (8000+ IDs) query pattern that hammers Dolt CPU
# See: hq-ihwsj - bd list uses inefficient WHERE IN (all_ids) query pattern
# The fix changes SearchIssues to SELECT all columns directly instead of:
# 1. SELECT id FROM issues WHERE ... -> collect IDs
# 2. SELECT * FROM issues WHERE id IN (all_ids) -> 8000+ placeholder IN clause
patches = (old.patches or []) ++ [
./beads-search-query-optimization.patch
];
});
# Build beads from flake input with corrected vendorHash
# The upstream default.nix has stale vendorHash for commits with server mode
beadsRev = builtins.substring 0 8 (globalInputs.beads.rev or "unknown");
beadsPackage = pkgs.buildGoModule {
pname = "beads";
version = "0.49.1-${beadsRev}";
src = globalInputs.beads;
subPackages = [ "cmd/bd" ];
doCheck = false;
# Regenerated vendorHash for commit 93965b4a (has dolt server mode, Go 1.24)
vendorHash = "sha256-gwxGv8y4+1+k0741CnOYcyJPTJ5vTrynqPoO8YS9fbQ=";
nativeBuildInputs = [ pkgs.git ];
meta = with lib; {
description = "beads (bd) - An issue tracker designed for AI-supervised coding workflows";
homepage = "https://github.com/steveyegge/beads";
license = licenses.mit;
mainProgram = "bd";
};
};
# Gastown - multi-agent workspace manager (no upstream flake.nix yet)
# Source is tracked via flake input for renovate updates
@@ -47,14 +52,10 @@ let
./gastown-fix-validate-recipient.patch
# Fix agentBeadToAddress to use title field for hq- prefixed beads
./gastown-fix-agent-bead-address-title.patch
# Fix agentBeadToAddress to handle rig-specific prefixes (j-, sc-, etc.)
./gastown-fix-agent-bead-rig-prefix.patch
# Fix crew/polecat home paths: remove incorrect /rig suffix
./gastown-fix-role-home-paths.patch
# Fix town root detection: don't map to Mayor (causes spurious mismatch warnings)
./gastown-fix-town-root-detection.patch
# Fix copyDir to handle symlinks (broken symlinks cause "no such file" errors)
./gastown-fix-copydir-symlinks.patch
# Statusline optimization: skip expensive beads queries for detached sessions
# Reduces Dolt CPU from ~70% to ~20% by caching and early-exit
./gastown-statusline-optimization.patch

View File

@@ -1,15 +1,15 @@
diff --git a/internal/mail/router.go b/internal/mail/router.go
--- a/internal/mail/router.go
+++ b/internal/mail/router.go
@@ -326,7 +326,10 @@ func agentBeadToAddress(bead *agentBead) string {
@@ -315,7 +315,10 @@ func agentBeadToAddress(bead *agentBead) string {
}
// Fall back to parsing description for role_type and rig
// For other hq- agents, fall back to description parsing
- return parseAgentAddressFromDescription(bead.Description)
+ if bead.Title != "" && strings.Contains(bead.Title, "/") {
+ return bead.Title
+ }
+ return parseAgentAddressFromDescription(bead.Description)
}
// Handle gt- prefixed IDs (legacy format)

View File

@@ -6,24 +6,24 @@
}:
let
version = "2.1.19";
version = "2.1.30";
srcs = {
aarch64-darwin = {
url = "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/${version}/darwin-arm64/claude";
sha256 = "d386ac8f6d1479f85d31f369421c824135c10249c32087017d05a5f428852c41";
sha256 = "3ccc14f322b1e8da0cd58afc254fd5100eee066fa14729f30745e67a3f7979f7";
};
x86_64-darwin = {
url = "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/${version}/darwin-x64/claude";
sha256 = "be266b3a952f483d8358ad141e2afe661170386506f479ead992319e4fdc38ac";
sha256 = "8a083696006483b8382ec0e47cd8f2e3223f3d2cab1a21c524fa08c082b5600e";
};
x86_64-linux = {
url = "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/${version}/linux-x64/claude";
sha256 = "4e2a1c73871ecf3b133376b57ded03333a7a6387f2d2a3a6279bb90a07f7a944";
sha256 = "ada8f1cf9272965d38b10f1adb6cea885e621c83f7e7bb233008c721f43fad54";
};
aarch64-linux = {
url = "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/${version}/linux-arm64/claude";
sha256 = "8c4b61b24ca760d6f7aa2f19727163d122e9fd0c3ce91f106a21b6918a7b1bbb";
sha256 = "45fbf35a1011b06f86170b20beb64c599db0658aac70e2de2410c45d15775596";
};
};

View File

@@ -13,7 +13,7 @@
"lockFileMaintenance": {
"enabled": true,
"schedule": [
"before 5am on monday"
"after 2pm and before 4pm on Saturday"
]
},
"dependencyDashboard": true,
@@ -37,6 +37,9 @@
"/^nixpkgs$/",
"/^home-manager$/",
"/^nix-darwin$/"
],
"schedule": [
"after 2pm and before 4pm on Saturday"
]
},
{
@@ -48,6 +51,21 @@
"matchPackageNames": [
"/nixpkgs-unstable/",
"/home-manager-unstable/"
],
"schedule": [
"after 2pm and before 4pm on Saturday"
]
},
{
"description": "nixpkgs-qt updates on Saturday (staggered from main ecosystem)",
"matchManagers": [
"nix"
],
"matchPackageNames": [
"/nixpkgs-qt/"
],
"schedule": [
"after 4pm and before 6pm on Saturday"
]
},
{

View File

@@ -47,23 +47,23 @@ in
if cfg.jellyfinScaleFactor != null
then pkgs.symlinkJoin {
name = "jellyfin-media-player-scaled";
paths = [ pkgs.jellyfin-media-player ];
paths = [ pkgs.qt-pinned.jellyfin-media-player ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
mkdir -p $out/bin
rm -f $out/bin/jellyfin-desktop
makeWrapper ${pkgs.jellyfin-media-player}/bin/jellyfin-desktop $out/bin/jellyfin-desktop \
makeWrapper ${pkgs.qt-pinned.jellyfin-media-player}/bin/jellyfin-desktop $out/bin/jellyfin-desktop \
--add-flags "--tv --scale-factor ${toString cfg.jellyfinScaleFactor}"
# Update .desktop file to include scale factor and TV mode arguments
mkdir -p $out/share/applications
rm -f $out/share/applications/org.jellyfin.JellyfinDesktop.desktop
substitute ${pkgs.jellyfin-media-player}/share/applications/org.jellyfin.JellyfinDesktop.desktop \
substitute ${pkgs.qt-pinned.jellyfin-media-player}/share/applications/org.jellyfin.JellyfinDesktop.desktop \
$out/share/applications/org.jellyfin.JellyfinDesktop.desktop \
--replace-fail "Exec=jellyfin-desktop" "Exec=jellyfin-desktop --tv --scale-factor ${toString cfg.jellyfinScaleFactor}"
'';
}
else pkgs.jellyfin-media-player;
else pkgs.qt-pinned.jellyfin-media-player;
in mkIf cfg.enable
{
users.extraUsers.kodi = {