nixos: add claude-desktop flake and fix gpg-agent ordering cycle

Add aaddrick/claude-desktop-debian as a flake input and install its
default (FHS) package system-wide alongside the other LLM tools.

Also fix a home-manager systemd user-session ordering cycle that broke
activation ("Transaction order is cyclic"). The generated
set-SSH_AUTH_SOCK.service was ordered Before=gpg-agent-ssh.socket, which
is pulled into sockets.target that basic.target requires, while the
service implicitly orders After=basic.target -- forming a cycle. Drop
the explicit Before= edge with mkForce; the service is still pulled in
via WantedBy=gpg-agent-ssh.socket (a non-ordering Wants dependency).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-08 15:30:37 -07:00
parent d0f500daa8
commit 897c97c269
4 changed files with 102 additions and 30 deletions

View File

@@ -92,6 +92,7 @@ makeEnable config "myModules.code" true {
# LLM Tools
# antigravity
claude-code
inputs.claude-desktop.packages.${pkgs.stdenv.hostPlatform.system}.default
codex
gemini-cli
opencode

115
nixos/flake.lock generated
View File

@@ -114,11 +114,11 @@
]
},
"locked": {
"lastModified": 1779510126,
"narHash": "sha256-AN19hN63A3nuuUsOo42dERR/fmMt/rSEqNc1F3xjpAs=",
"lastModified": 1780791760,
"narHash": "sha256-Cg2mx6ILPC/cAoomJrwx1TvMaFvvNi9DNbd3Hy+7L18=",
"owner": "sadjow",
"repo": "claude-code-nix",
"rev": "304b96c0998c76633bacbb44daa6a5de40f92273",
"rev": "2370568ed1eac96474fa3bb2e73081cc971f9c03",
"type": "github"
},
"original": {
@@ -127,6 +127,27 @@
"type": "github"
}
},
"claude-desktop": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1780889015,
"narHash": "sha256-/hopwNR5blDo2/GHrbEetKrh1Xm4uqnDb0mPtxllW9k=",
"owner": "aaddrick",
"repo": "claude-desktop-debian",
"rev": "3a013797926057145625c6d9ae9ec5f3b8d23c43",
"type": "github"
},
"original": {
"owner": "aaddrick",
"repo": "claude-desktop-debian",
"type": "github"
}
},
"codex-cli-nix": {
"inputs": {
"flake-utils": [
@@ -375,6 +396,24 @@
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1778716662,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nixified-ai",
@@ -395,7 +434,7 @@
"type": "github"
}
},
"flake-parts_2": {
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"nixified-ai",
@@ -416,9 +455,9 @@
"type": "indirect"
}
},
"flake-parts_3": {
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1701473968,
@@ -434,7 +473,7 @@
"type": "github"
}
},
"flake-parts_4": {
"flake-parts_5": {
"inputs": {
"nixpkgs-lib": [
"nixtheplanet",
@@ -681,7 +720,7 @@
},
"hercules-ci-effects": {
"inputs": {
"flake-parts": "flake-parts_2",
"flake-parts": "flake-parts_3",
"nixpkgs": [
"nixified-ai",
"nixpkgs"
@@ -703,7 +742,7 @@
},
"hercules-ci-effects_2": {
"inputs": {
"flake-parts": "flake-parts_4",
"flake-parts": "flake-parts_5",
"nixpkgs": "nixpkgs_5"
},
"locked": {
@@ -727,11 +766,11 @@
]
},
"locked": {
"lastModified": 1779726696,
"narHash": "sha256-/p37CB5n6Wpw250b0Lq0CYwNq2D8uGKzDoBulyLcQqA=",
"lastModified": 1780885330,
"narHash": "sha256-aMA5oAq2Iv467U9s8YOb50DYQT9w0WJbyWqwlzHuLMs=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "1a95e2efb477959b70b4a14c51035975c0481df6",
"rev": "4fe95527cbe952713318ada8a4d122e1a6ab120f",
"type": "github"
},
"original": {
@@ -1445,18 +1484,18 @@
},
"nixified-ai": {
"inputs": {
"flake-parts": "flake-parts",
"flake-parts": "flake-parts_2",
"hercules-ci-effects": "hercules-ci-effects",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1779813639,
"narHash": "sha256-MaXcIud4ELxIUojrZngqL63rLvJRH3JzjhE6GVeryqk=",
"lastModified": 1780854253,
"narHash": "sha256-HGNO7hPMcP8yNla4I7RScT1P8MRJK6HL5mSe5mcHjFc=",
"owner": "nixified-ai",
"repo": "flake",
"rev": "1490129a551b6209cccf80453d7d03a1b5d62d10",
"rev": "579afb13747c68970dbcbdcd6fc162b8bf7eff46",
"type": "github"
},
"original": {
@@ -1489,11 +1528,11 @@
]
},
"locked": {
"lastModified": 1777732699,
"narHash": "sha256-2uX/XtOWZ/oy2rerRynVhqVA//ZXZ3Fo60PikLHEPQc=",
"lastModified": 1780765279,
"narHash": "sha256-md6QHmlIx40bQkun43M2eT8aav5GURGkXEMFwof6uZs=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "5482f113fd31ebac131d1ebeb2ae90bf0d5e41f5",
"rev": "3e6d8af994e2a2d31af7a91863d7c0d6e278d951",
"type": "github"
},
"original": {
@@ -1519,6 +1558,21 @@
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1777168982,
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-lib_2": {
"locked": {
"dir": "lib",
"lastModified": 1701253981,
@@ -1586,11 +1640,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1779560665,
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
"lastModified": 1780749050,
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
"rev": "a799d3e3886da994fa307f817a6bc705ae538eeb",
"type": "github"
},
"original": {
@@ -1649,7 +1703,7 @@
},
"nixtheplanet": {
"inputs": {
"flake-parts": "flake-parts_3",
"flake-parts": "flake-parts_4",
"hercules-ci-effects": "hercules-ci-effects_2",
"nixpkgs": "nixpkgs_6",
"osx-kvm": "osx-kvm"
@@ -1848,11 +1902,11 @@
]
},
"locked": {
"lastModified": 1775003480,
"narHash": "sha256-iJmjq37Ue8UnN8maiUK6IKySWExr+xnXzMAH8h+mzyI=",
"lastModified": 1780684194,
"narHash": "sha256-pyMgFdsmWfgXVb5brZX3Wrz7ZyUp5oSXyV9KFI8mMng=",
"ref": "refs/heads/master",
"rev": "184225eeb922585d217b7df06a3b7386c3fb03b3",
"revCount": 155,
"rev": "00cb3ef3ff4447393b64572637f1d9b779b20b3f",
"revCount": 157,
"type": "git",
"url": "ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git"
},
@@ -1873,11 +1927,11 @@
]
},
"locked": {
"lastModified": 1780456748,
"narHash": "sha256-ZErjBY6+do9gfKLYduIMtfzP4lyBDz/kLrZL40hYCag=",
"lastModified": 1780573272,
"narHash": "sha256-0Rpx9+OsGTTiPJNr43ci5qsh9GE+Nhci3ZMfq+POAQE=",
"owner": "rlrml",
"repo": "rlru",
"rev": "5fce6993c50ddd4a7a2cfea97d40676148af5687",
"rev": "0cd34612dc584d944d4216ae1a9fc361e63dace1",
"type": "github"
},
"original": {
@@ -1895,6 +1949,7 @@
],
"chrome-favicon-dbus": "chrome-favicon-dbus",
"claude-code-nix": "claude-code-nix",
"claude-desktop": "claude-desktop",
"codex-cli-nix": "codex-cli-nix",
"codex-desktop-linux": "codex-desktop-linux",
"coqui-tts-streamer": "coqui-tts-streamer",

View File

@@ -277,6 +277,11 @@
};
};
claude-desktop = {
url = "github:aaddrick/claude-desktop-debian";
inputs.nixpkgs.follows = "nixpkgs";
};
grub2-themes = {
url = "github:vinceliuice/grub2-themes";
inputs.nixpkgs.follows = "nixpkgs";

View File

@@ -339,6 +339,17 @@ in {
'';
};
# Work around a home-manager systemd ordering cycle. The generated
# set-SSH_AUTH_SOCK.service is ordered Before=gpg-agent-ssh.socket, but that
# socket is pulled into sockets.target which basic.target requires, while the
# service implicitly orders After=basic.target. That forms an ordering cycle
# (sockets.target -> gpg-agent-ssh.socket -> set-SSH_AUTH_SOCK.service ->
# basic.target -> sockets.target) which systemd breaks by dropping units,
# failing the user session ("Transaction order is cyclic"). Dropping the
# explicit Before= edge breaks the cycle; the service is still pulled in via
# WantedBy=gpg-agent-ssh.socket (a non-ordering Wants dependency).
systemd.user.services.set-SSH_AUTH_SOCK.Unit.Before = lib.mkForce [ ];
gtk = {
enable = true;
iconTheme = {