Compare commits
24
Commits
b01084482f
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
601eae6362 | ||
|
|
2de49b5204 | ||
|
|
7064bbebe3 | ||
|
|
9c94b70c93 | ||
|
|
afc5bc3aa6 | ||
|
|
ff5fef0596 | ||
|
|
207b794431 | ||
|
|
fb3e39f0ce | ||
|
|
9b1be8eca4 | ||
|
|
890dc4cb2c | ||
|
|
31d47b00e5 | ||
|
|
6a311045a4 | ||
|
|
808b6628c8 | ||
|
|
b58b7e84d1 | ||
|
|
fbba78e358 | ||
|
|
38fa16eda6 | ||
|
|
33d0c85ef4 | ||
|
|
f2cc6b59ef | ||
|
|
f0e98a2ac7 | ||
|
|
6a67324c6d | ||
|
|
c90f5a5857 | ||
|
|
69082a07f2 | ||
|
|
d2b39a3f2d | ||
|
|
de16245929 |
@@ -161,6 +161,7 @@ Every module in m3ta-home has an `enable` option. Base modules default to `true`
|
|||||||
### Available Flags
|
### Available Flags
|
||||||
|
|
||||||
```
|
```
|
||||||
|
base.cliTools.ansible.enable # Ansible (config rollout to servers)
|
||||||
base.shell.fish.enable # Fish shell
|
base.shell.fish.enable # Fish shell
|
||||||
base.shell.nushell.enable # Nushell
|
base.shell.nushell.enable # Nushell
|
||||||
base.shell.starship.enable # Starship prompt
|
base.shell.starship.enable # Starship prompt
|
||||||
|
|||||||
Generated
+169
-146
@@ -34,11 +34,11 @@
|
|||||||
"rev": "75a2ed2533b4d6d8e4a34acd37e83d98d81a5fb0",
|
"rev": "75a2ed2533b4d6d8e4a34acd37e83d98d81a5fb0",
|
||||||
"revCount": 30,
|
"revCount": 30,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib"
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib-legacy"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib"
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib-legacy"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"agents": {
|
"agents": {
|
||||||
@@ -99,20 +99,59 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785348116,
|
"lastModified": 1785979955,
|
||||||
"narHash": "sha256-AVycTcomtfvQJ/AHvMg5xu7lVoOzDXxjN+pV7mqUIQ4=",
|
"narHash": "sha256-OP96Ak4OBydR98keoNYKdGY8j+wrIys0LafSZgwS20g=",
|
||||||
"owner": "basecamp",
|
"owner": "basecamp",
|
||||||
"repo": "basecamp-cli",
|
"repo": "basecamp-cli",
|
||||||
"rev": "e1059fb123a03295ce6176272e4bbaf43d7971c6",
|
"rev": "61a5591de1da9bc99c56b8072a4d6bad2c9b9e47",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "basecamp",
|
"owner": "basecamp",
|
||||||
"ref": "v0.8.0-rc.1",
|
"ref": "v0.9.0",
|
||||||
"repo": "basecamp-cli",
|
"repo": "basecamp-cli",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"buzz": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"m3ta-nixpkgs",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1788856318,
|
||||||
|
"narHash": "sha256-bOLED82KPrzIXTWELw30y3PVI6MBmlY4Y2F2lwrdOnM=",
|
||||||
|
"owner": "mulatta",
|
||||||
|
"repo": "buzz.nix",
|
||||||
|
"rev": "fdd0152c12c6be339fe01d91887122bb10823aaf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "mulatta",
|
||||||
|
"repo": "buzz.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dank-qml-common": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1788376015,
|
||||||
|
"narHash": "sha256-/tT8rTznLADndTwLBzdgzzgfJH1ZhYQibYo5v/F8U+U=",
|
||||||
|
"owner": "AvengeMedia",
|
||||||
|
"repo": "dank-qml-common",
|
||||||
|
"rev": "26396ce432d6c71c3f5367438f96f4a8d667e160",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "AvengeMedia",
|
||||||
|
"repo": "dank-qml-common",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"darwin": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -137,17 +176,18 @@
|
|||||||
},
|
},
|
||||||
"dms": {
|
"dms": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"dank-qml-common": "dank-qml-common",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785111455,
|
"lastModified": 1788959433,
|
||||||
"narHash": "sha256-aTNuC9NDBnYAeEtFsleeUwmGX3AZlKOutbl+LQRPkmQ=",
|
"narHash": "sha256-MAbxGEomcpGomFfw+WYurNkSKBIh7PKEc1U5OV0X6oU=",
|
||||||
"owner": "AvengeMedia",
|
"owner": "AvengeMedia",
|
||||||
"repo": "DankMaterialShell",
|
"repo": "DankMaterialShell",
|
||||||
"rev": "069ddab041c738236a8910e4c39b65d9628d3018",
|
"rev": "fe293b7379a51f62a4db7043fc09df71f78e72ef",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -164,11 +204,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785375021,
|
"lastModified": 1789138529,
|
||||||
"narHash": "sha256-SV24PP3ctDSAuQjg0LdYAvzN7GEustIrtZfciiSrgRI=",
|
"narHash": "sha256-46RwWSOzklur59Plvo8N0YBZYun4M4cwK04+8owhJeo=",
|
||||||
"owner": "AvengeMedia",
|
"owner": "AvengeMedia",
|
||||||
"repo": "dms-plugin-registry",
|
"repo": "dms-plugin-registry",
|
||||||
"rev": "672e213a1e20b980708d81bd82df9bf85c15a590",
|
"rev": "5e5d72f980f5f16503b8fd0b8b66c4a3441eecdc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -201,11 +241,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772408722,
|
"lastModified": 1782949081,
|
||||||
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
"narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
"rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -238,25 +278,26 @@
|
|||||||
"hermes-agent": {
|
"hermes-agent": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"npm-lockfile-fix": "npm-lockfile-fix",
|
"npm-lockfile-fix": "npm-lockfile-fix",
|
||||||
"pyproject-build-systems": "pyproject-build-systems",
|
"pyproject-build-systems": "pyproject-build-systems",
|
||||||
"pyproject-nix": "pyproject-nix_2",
|
"pyproject-nix": "pyproject-nix",
|
||||||
"uv2nix": "uv2nix_2"
|
"uv2nix": "uv2nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782936460,
|
"lastModified": 1788204567,
|
||||||
"narHash": "sha256-Wt72AQtA6Eizi7Ubj23JBhwZ7GKYcjY4mcV6upqHOaU=",
|
"narHash": "sha256-Ii9xP2fKUpvCcwWZuxJ0g3CZ+IL2UZH14pUNvBfdclc=",
|
||||||
"owner": "NousResearch",
|
"owner": "NousResearch",
|
||||||
"repo": "hermes-agent",
|
"repo": "hermes-agent",
|
||||||
"rev": "7c1a029553d87c43ecff8a3821336bc95872213b",
|
"rev": "29112bef099274229cadff79cdff7bf7b99c4b77",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NousResearch",
|
"owner": "NousResearch",
|
||||||
"ref": "v2026.7.1",
|
"ref": "v2026.8.31",
|
||||||
"repo": "hermes-agent",
|
"repo": "hermes-agent",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -285,15 +326,36 @@
|
|||||||
"home-manager_2": {
|
"home-manager_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"hermes-agent",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785306346,
|
"lastModified": 1786487128,
|
||||||
"narHash": "sha256-DScBkW0fOgpGPK2trNoX3ryLTlaC14+gglFo/BhGJ4g=",
|
"narHash": "sha256-ad60hrRVhH/bo3Jl1YLzO+QcS3mUNZr9LNJdzhMO2P4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "e705714e918c3b11affcdd15db2cbe3a070420a0",
|
"rev": "f404edbfa4117810c96b97048299242fc50e5362",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1789136855,
|
||||||
|
"narHash": "sha256-82D7ADWE8erhfALj3dqxAOeQaoa+Bwlsdcp9v2m/ExM=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "d0fd95e15e0c3baf565a9fd4bc352321e2564ea3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -306,19 +368,19 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"agents": "agents_2",
|
"agents": "agents_2",
|
||||||
"basecamp": "basecamp",
|
"basecamp": "basecamp",
|
||||||
|
"buzz": "buzz",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nixpkgs-master": "nixpkgs-master",
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
"opencode": "opencode",
|
"opencode": "opencode"
|
||||||
"openspec": "openspec"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785670526,
|
"lastModified": 1789141095,
|
||||||
"narHash": "sha256-tC1CW+Kxh9ZZxJC0y472i0KoieMqNwNi+AiCmS4n7To=",
|
"narHash": "sha256-f5NLbwOwSQL+tDDelxps1VFh84obOMyw+ox9gcvE7TU=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "69fce234a8607cd3e71233831564b8ceeba70626",
|
"rev": "1e0db37c579935b9916c1fcb3d3ed733b4cb3114",
|
||||||
"revCount": 374,
|
"revCount": 389,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs"
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs"
|
||||||
},
|
},
|
||||||
@@ -379,11 +441,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785386845,
|
"lastModified": 1789139724,
|
||||||
"narHash": "sha256-CvXXTgWxbwTn6Diev4nLTP5+8tsFtth/SQAtaR9iVY0=",
|
"narHash": "sha256-QEoQ8xoSO3H2tmwHNBYFL/5Y8Gt10U+bg5ETMsWXiIM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3c5a718ce27c9283364d4c664fac4e4a23acdfb4",
|
"rev": "e27e37949736566430ed2f6157bebcdade8860c5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -427,11 +489,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785318670,
|
"lastModified": 1789006805,
|
||||||
"narHash": "sha256-dN6Ou5x/+23FZLEpYP3IffO+NyJFzUlGumt1uu3MMaY=",
|
"narHash": "sha256-xB8mKMOx1IA9vTDNLmJZ6n4wCMq/cuWBBOzGCRnqxrU=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0954f7ee2f6bb3dc7d4e3d0d8bcb8fd4bde4cfc5",
|
"rev": "8ce4ef6cb6f871616146b9fe26d2a5ae594e94fe",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -443,11 +505,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785318670,
|
"lastModified": 1789006805,
|
||||||
"narHash": "sha256-dN6Ou5x/+23FZLEpYP3IffO+NyJFzUlGumt1uu3MMaY=",
|
"narHash": "sha256-xB8mKMOx1IA9vTDNLmJZ6n4wCMq/cuWBBOzGCRnqxrU=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0954f7ee2f6bb3dc7d4e3d0d8bcb8fd4bde4cfc5",
|
"rev": "8ce4ef6cb6f871616146b9fe26d2a5ae594e94fe",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -484,11 +546,11 @@
|
|||||||
"nixpkgs": "nixpkgs_5"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785395064,
|
"lastModified": 1789141061,
|
||||||
"narHash": "sha256-ZZoXKpTETeIU93xQOxleE27JWT1FcpF9pe1nSPrFbuw=",
|
"narHash": "sha256-T2+uq8rR7zvUFh7/R8DQgsf2AGrUO3EPpr1iv7Jby8Y=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "cce2408845d0298ae0dcc42582c1d8b390de105c",
|
"rev": "4250406d791dcb1db2b1ce7bd223ac3ee120cfe3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -502,11 +564,11 @@
|
|||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785386452,
|
"lastModified": 1789132601,
|
||||||
"narHash": "sha256-iYfkMmn1ZKbi0cv8XIAXVgPH4idzsVSK4cWyi/KGMJQ=",
|
"narHash": "sha256-2+j5RuHoqrsnjssZ4VfIfSKzGdrPNFT4nazJ2QxNdu0=",
|
||||||
"owner": "anomalyco",
|
"owner": "anomalyco",
|
||||||
"repo": "opencode",
|
"repo": "opencode",
|
||||||
"rev": "f7204902192624481e526b1852cdedaadb914e24",
|
"rev": "95daf90670b7c039c436c85537da5fbfe2205b41",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -516,42 +578,27 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"openspec": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"m3ta-nixpkgs",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1785371113,
|
|
||||||
"narHash": "sha256-r3fwnb5gMTV9UXBj7bqkKpTZIWwF4AgghULOIv2Fr4c=",
|
|
||||||
"owner": "Fission-AI",
|
|
||||||
"repo": "OpenSpec",
|
|
||||||
"rev": "2b3d368539132be6311e55db58899abbf5306b81",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Fission-AI",
|
|
||||||
"repo": "OpenSpec",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pyproject-build-systems": {
|
"pyproject-build-systems": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"hermes-agent",
|
"hermes-agent",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"pyproject-nix": "pyproject-nix",
|
"pyproject-nix": [
|
||||||
"uv2nix": "uv2nix"
|
"hermes-agent",
|
||||||
|
"pyproject-nix"
|
||||||
|
],
|
||||||
|
"uv2nix": [
|
||||||
|
"hermes-agent",
|
||||||
|
"uv2nix"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772555609,
|
"lastModified": 1785115949,
|
||||||
"narHash": "sha256-3BA3HnUvJSbHJAlJj6XSy0Jmu7RyP2gyB/0fL7XuEDo=",
|
"narHash": "sha256-8AM37BfyGaL2v/SZyg4PupRxJ01Y4htvM+WrTjWrPpo=",
|
||||||
"owner": "pyproject-nix",
|
"owner": "pyproject-nix",
|
||||||
"repo": "build-system-pkgs",
|
"repo": "build-system-pkgs",
|
||||||
"rev": "c37f66a953535c394244888598947679af231863",
|
"rev": "62c0d86027edb1c4f39a5facc09876348144f7c9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -564,59 +611,15 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"hermes-agent",
|
"hermes-agent",
|
||||||
"pyproject-build-systems",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769936401,
|
"lastModified": 1784591072,
|
||||||
"narHash": "sha256-kwCOegKLZJM9v/e/7cqwg1p/YjjTAukKPqmxKnAZRgA=",
|
"narHash": "sha256-zP/WaDxrRu8GANZM61+V2LT/7ycEEdoyLWn7M6WzU7M=",
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "pyproject.nix",
|
|
||||||
"rev": "b0d513eeeebed6d45b4f2e874f9afba2021f7812",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "pyproject.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pyproject-nix_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"hermes-agent",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1772865871,
|
|
||||||
"narHash": "sha256-/ZTSg97aouL0SlPHaokA4r3iuH9QzHVuWPACD2CUCFY=",
|
|
||||||
"owner": "pyproject-nix",
|
"owner": "pyproject-nix",
|
||||||
"repo": "pyproject.nix",
|
"repo": "pyproject.nix",
|
||||||
"rev": "e537db02e72d553cea470976b9733581bcf5b3ed",
|
"rev": "e3b599ca2e7fcf93d4edf65d7f19bbf6491724f3",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "pyproject-nix",
|
|
||||||
"repo": "pyproject.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pyproject-nix_3": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"hermes-agent",
|
|
||||||
"uv2nix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1771518446,
|
|
||||||
"narHash": "sha256-nFJSfD89vWTu92KyuJWDoTQJuoDuddkJV3TlOl1cOic=",
|
|
||||||
"owner": "pyproject-nix",
|
|
||||||
"repo": "pyproject.nix",
|
|
||||||
"rev": "eb204c6b3335698dec6c7fc1da0ebc3c6df05937",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -633,13 +636,35 @@
|
|||||||
"dms": "dms",
|
"dms": "dms",
|
||||||
"dms-plugin-registry": "dms-plugin-registry",
|
"dms-plugin-registry": "dms-plugin-registry",
|
||||||
"hermes-agent": "hermes-agent",
|
"hermes-agent": "hermes-agent",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_3",
|
||||||
"m3ta-nixpkgs": "m3ta-nixpkgs",
|
"m3ta-nixpkgs": "m3ta-nixpkgs",
|
||||||
"nix-colors": "nix-colors",
|
"nix-colors": "nix-colors",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nur": "nur"
|
"nur": "nur"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"m3ta-nixpkgs",
|
||||||
|
"buzz",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1788591095,
|
||||||
|
"narHash": "sha256-Vh+BeLWfbTT9AecazIsQ/Tkg/RzJeX3lEduANf256WA=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "c361047d3a538f547f1617bb6b410411929ac9cc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
@@ -655,47 +680,45 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"m3ta-nixpkgs",
|
||||||
|
"buzz",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1786901030,
|
||||||
|
"narHash": "sha256-WSFCsDSE5ffgD2MqzkM2CYjeFiKhRF/dJUN8uedb6YE=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "27b3b12a8e6375f28ebe122f07d230ca5459bbfa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"uv2nix": {
|
"uv2nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"hermes-agent",
|
"hermes-agent",
|
||||||
"pyproject-build-systems",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"pyproject-nix": [
|
"pyproject-nix": [
|
||||||
"hermes-agent",
|
"hermes-agent",
|
||||||
"pyproject-build-systems",
|
|
||||||
"pyproject-nix"
|
"pyproject-nix"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770770348,
|
"lastModified": 1785277507,
|
||||||
"narHash": "sha256-A2GzkmzdYvdgmMEu5yxW+xhossP+txrYb7RuzRaqhlg=",
|
"narHash": "sha256-9Tq3UDX2hD/aveW/HvkBlAmEwJTOlY5HQXJM+L5BGmE=",
|
||||||
"owner": "pyproject-nix",
|
"owner": "pyproject-nix",
|
||||||
"repo": "uv2nix",
|
"repo": "uv2nix",
|
||||||
"rev": "5d1b2cb4fe3158043fbafbbe2e46238abbc954b0",
|
"rev": "5a836d395cbf5fc22670eb98dd4aa4fc4d406977",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "pyproject-nix",
|
|
||||||
"repo": "uv2nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"uv2nix_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"hermes-agent",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"pyproject-nix": "pyproject-nix_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1773039484,
|
|
||||||
"narHash": "sha256-+boo33KYkJDw9KItpeEXXv8+65f7hHv/earxpcyzQ0I=",
|
|
||||||
"owner": "pyproject-nix",
|
|
||||||
"repo": "uv2nix",
|
|
||||||
"rev": "b68be7cfeacbed9a3fa38a2b5adc0cfb81d9bb1f",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
m3ta-nixpkgs = {
|
m3ta-nixpkgs = {
|
||||||
url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs";
|
url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs";
|
||||||
|
# url = "path:/home/m3tam3re/p/NIX/nixpkgs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -22,13 +23,13 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
agent-lib = {
|
agent-lib = {
|
||||||
# url = "path:/home/m3tam3re/p/NIX/agent-lib";
|
# url = "path:/home/m3tam3re/p/agent-lib-legacy";
|
||||||
url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib-legacy";
|
url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib-legacy";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
hermes-agent = {
|
hermes-agent = {
|
||||||
url = "github:NousResearch/hermes-agent/v2026.7.1";
|
url = "github:NousResearch/hermes-agent/v2026.8.31";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Ansible — configuration management for rolling out configurations to servers.
|
||||||
|
# Lives in base so it is available in every identity (private/work) and context.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.base.cliTools.ansible;
|
||||||
|
in {
|
||||||
|
# Enabled by default — base modules are always-on.
|
||||||
|
options.base.cliTools.ansible.enable = (mkEnableOption "enable Ansible configuration management") // {default = true;};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ansible
|
||||||
|
ansible-lint
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
# CLI tools aggregator — imports all base command-line utilities.
|
# CLI tools aggregator — imports all base command-line utilities.
|
||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
|
./ansible.nix
|
||||||
./bat.nix
|
./bat.nix
|
||||||
./carapace.nix
|
./carapace.nix
|
||||||
./direnv.nix
|
./direnv.nix
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ in {
|
|||||||
options.desktop.apps.office.enable = mkEnableOption "install office and paperwork apps";
|
options.desktop.apps.office.enable = mkEnableOption "install office and paperwork apps";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.packages = [pkgs.libreoffice-fresh];
|
# libreoffice-fresh warns: upstream changed versioning; -stable is the
|
||||||
|
# supported attr now.
|
||||||
|
home.packages = [pkgs.libreoffice-stable];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,20 @@
|
|||||||
m3taHomeInputs,
|
m3taHomeInputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
# WORKAROUND (2026-09-12): hermes-agent v2026.8.31 pins a stale hash for
|
||||||
|
# the Electron 43.6.0 headers artifact (the CDN swapped the file). Build
|
||||||
|
# the desktop app from a local copy of upstream's nix/desktop.nix with
|
||||||
|
# the verified hash. Remove when upstream fixes it and the input is bumped.
|
||||||
|
hermesDesktopFixed = let
|
||||||
|
hermesAgent = m3taHomeInputs.hermes-agent.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||||
|
in
|
||||||
|
pkgs.callPackage ./hermes-desktop.nix {
|
||||||
|
inherit hermesAgent;
|
||||||
|
hermesNpmLib = hermesAgent.hermesNpmLib;
|
||||||
|
hermesSrc = m3taHomeInputs.hermes-agent.outPath;
|
||||||
|
};
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./wm
|
./wm
|
||||||
./apps
|
./apps
|
||||||
@@ -72,7 +85,7 @@
|
|||||||
(element-desktop.override {
|
(element-desktop.override {
|
||||||
commandLineArgs = "--password-store=gnome-libsecret";
|
commandLineArgs = "--password-store=gnome-libsecret";
|
||||||
})
|
})
|
||||||
m3taHomeInputs.hermes-agent.packages.${pkgs.stdenv.hostPlatform.system}.desktop
|
hermesDesktopFixed
|
||||||
launch-webapp
|
launch-webapp
|
||||||
file-roller
|
file-roller
|
||||||
gsettings-desktop-schemas
|
gsettings-desktop-schemas
|
||||||
|
|||||||
@@ -0,0 +1,244 @@
|
|||||||
|
# hermes-desktop.nix — local copy of hermes-agent's nix/desktop.nix
|
||||||
|
#
|
||||||
|
# WORKAROUND for an upstream build failure (hermes-agent v2026.8.31):
|
||||||
|
#
|
||||||
|
# Upstream pins sha256-f8bSbLRmtbP93CJAvEBs+sHWDZ1xP2bcpLhC1EnOmZU=
|
||||||
|
# for https://artifacts.electronjs.org/headers/dist/v43.6.0/node-v43.6.0-headers.tar.gz
|
||||||
|
# The Electron CDN swapped that artifact, so the pinned hash no longer
|
||||||
|
# matches what the server serves today (verified 2026-09-12 via
|
||||||
|
# `nix store prefetch-file`). Upstream has fixed this class of breakage
|
||||||
|
# repeatedly ("fix electron headers sha" commits); main is not fixed yet.
|
||||||
|
#
|
||||||
|
# Differences from upstream nix/desktop.nix:
|
||||||
|
# 1. electron headers sha256 per electron version, with a clear throw
|
||||||
|
# for unknown versions (upstream hardcodes one hash).
|
||||||
|
# 2. icon.png / linux_desktop_entry.py resolve against `hermesSrc`
|
||||||
|
# (the flake input checkout) instead of relative repo paths.
|
||||||
|
#
|
||||||
|
# REMOVE THIS FILE and the hermesDesktopFixed let-binding in default.nix
|
||||||
|
# once upstream ships the corrected hash and the hermes-agent input is
|
||||||
|
# bumped past that release.
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
makeWrapper,
|
||||||
|
hermesNpmLib,
|
||||||
|
electron,
|
||||||
|
hermesAgent,
|
||||||
|
python3,
|
||||||
|
# Checkout of the hermes-agent flake input (outPath), used for files
|
||||||
|
# that upstream references with relative paths inside its own repo.
|
||||||
|
hermesSrc,
|
||||||
|
# Environment to bake into the launcher. A GUI launcher reads none of the
|
||||||
|
# shell profile, so a variable that an interactive shell exports does not
|
||||||
|
# reach an app that the desktop menu starts. The Home Manager module passes
|
||||||
|
# HERMES_HOME and HERMES_MANAGED here, which gives the app the same state
|
||||||
|
# directory as the services.
|
||||||
|
extraEnv ? {},
|
||||||
|
# Shell lines to run before the app starts. A secret belongs here and never
|
||||||
|
# in extraEnv: makeWrapper writes a --set value into the Nix store, which
|
||||||
|
# all users can read. A --run line reads the value from a runtime path at
|
||||||
|
# each start instead.
|
||||||
|
extraRun ? [],
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# Each flag goes on its own continued line, and the leading backslash is
|
||||||
|
# inside the generated string. An empty attribute set then adds no text
|
||||||
|
# at all, and cannot leave a backslash above a blank line. That fault ends the
|
||||||
|
# makeWrapper command early, and the next flag runs as a shell command.
|
||||||
|
extraEnvFlags = lib.concatMapStrings (
|
||||||
|
name: " \\\n --set ${name} ${lib.escapeShellArg (toString extraEnv.${name})}"
|
||||||
|
) (lib.attrNames extraEnv);
|
||||||
|
|
||||||
|
extraRunFlags = lib.concatMapStrings (line: " \\\n --run ${lib.escapeShellArg line}") extraRun;
|
||||||
|
|
||||||
|
# Electron's CDN has re-uploaded header artifacts for the same version
|
||||||
|
# before, which silently changes their hash. Keep one verified hash per
|
||||||
|
# electron version and fail loudly (instead of with a cryptic FOD
|
||||||
|
# mismatch) whenever a bump needs a new one.
|
||||||
|
electronHeaderHashes = {
|
||||||
|
"43.6.0" = "sha256-xDgc5PpkcLpWHnlqVcjBD3SxJKtkUoSGLnJaSSrxJtI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
electronHeaders = pkgs.fetchurl {
|
||||||
|
url = "https://artifacts.electronjs.org/headers/dist/v${electron.version}/node-v${electron.version}-headers.tar.gz";
|
||||||
|
sha256 =
|
||||||
|
electronHeaderHashes.${
|
||||||
|
electron.version
|
||||||
|
}
|
||||||
|
or (throw ''
|
||||||
|
hermes-desktop workaround: no verified Electron headers hash for version ${electron.version}.
|
||||||
|
Run: nix store prefetch-file https://artifacts.electronjs.org/headers/dist/v${electron.version}/node-v${electron.version}-headers.tar.gz
|
||||||
|
and add it to electronHeaderHashes in profiles/contexts/desktop/hermes-desktop.nix (m3ta-home).
|
||||||
|
'');
|
||||||
|
};
|
||||||
|
|
||||||
|
# node-pty ships no Electron-tagged prebuild we can trust to match this
|
||||||
|
# exact nixpkgs electron version, so it's always compiled from source
|
||||||
|
# against Electron's own headers (not whatever Node ran `npm`).
|
||||||
|
targetPlatform =
|
||||||
|
if stdenv.hostPlatform.isDarwin
|
||||||
|
then "darwin"
|
||||||
|
else if stdenv.hostPlatform.isLinux
|
||||||
|
then "linux"
|
||||||
|
else throw "hermes-desktop: unsupported host platform for node-pty staging";
|
||||||
|
|
||||||
|
targetArch =
|
||||||
|
if stdenv.hostPlatform.isAarch64
|
||||||
|
then "arm64"
|
||||||
|
else if stdenv.hostPlatform.isx86_64
|
||||||
|
then "x64"
|
||||||
|
else throw "hermes-desktop: unsupported host arch for node-pty staging";
|
||||||
|
|
||||||
|
# Build the renderer (dist/ + electron/ + package.json).
|
||||||
|
renderer = hermesNpmLib.buildNpmPackage {
|
||||||
|
dirs = [
|
||||||
|
"apps/desktop"
|
||||||
|
"apps/shared"
|
||||||
|
];
|
||||||
|
pname = "hermes-desktop-renderer";
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
mkdir -p apps/desktop/build
|
||||||
|
|
||||||
|
patchShebangs .
|
||||||
|
|
||||||
|
pushd apps/desktop
|
||||||
|
# typecheck :3
|
||||||
|
npm exec -- tsc -b
|
||||||
|
|
||||||
|
# build the renderer bundle
|
||||||
|
# vite's emptyOutDir wipes dist/ on every run
|
||||||
|
# so it has to be first
|
||||||
|
npm exec -- vite build
|
||||||
|
|
||||||
|
# build the electron bundle
|
||||||
|
node scripts/bundle-electron-main.mjs
|
||||||
|
|
||||||
|
# Compile node-pty against Electron's actual ABI (the nixpkgs
|
||||||
|
# `electron` we ship). Headers come from a pinned fetchurl input
|
||||||
|
# since the sandbox has no network here, so node-gyp's
|
||||||
|
# normal --disturl download path can't run.
|
||||||
|
mkdir -p "$TMPDIR/electron-headers"
|
||||||
|
tar -xzf ${electronHeaders} -C "$TMPDIR/electron-headers" --strip-components=1
|
||||||
|
|
||||||
|
${lib.getExe hermesNpmLib.node-gyp} rebuild \
|
||||||
|
--directory=../../node_modules/node-pty \
|
||||||
|
--build-from-source \
|
||||||
|
--runtime=electron \
|
||||||
|
--target=${electron.version} \
|
||||||
|
--nodedir="$TMPDIR/electron-headers" \
|
||||||
|
--disturl="" \
|
||||||
|
--offline
|
||||||
|
|
||||||
|
# Target platform/arch come from stdenv.hostPlatform, not the
|
||||||
|
# build host's own process.platform/arch.
|
||||||
|
node scripts/stage-native-deps.mjs ${targetPlatform} ${targetArch}
|
||||||
|
popd
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
runHook preCheck
|
||||||
|
|
||||||
|
pushd apps/desktop
|
||||||
|
|
||||||
|
npm run postbuild
|
||||||
|
|
||||||
|
# validate staged node-pty native binary is present.
|
||||||
|
STAGED_PTY_NODE="./dist/node_modules/node-pty/build/Release/pty.node"
|
||||||
|
|
||||||
|
if [ ! -f "$STAGED_PTY_NODE" ]; then
|
||||||
|
echo "FATAL: Missing staged node-pty native binary at $STAGED_PTY_NODE"
|
||||||
|
echo "node-pty must be compiled natively"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
popd
|
||||||
|
|
||||||
|
runHook postCheck
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out
|
||||||
|
# vite writes to apps/desktop/dist/ (we cd'd there in buildPhase).
|
||||||
|
# stage-native-deps.mjs stages node-pty into dist/node_modules/node-pty,
|
||||||
|
# so copying dist/ wholesale carries the native dep along with the
|
||||||
|
# esbuild bundle that require()s it. apps/desktop/build was created
|
||||||
|
# before the cd.
|
||||||
|
cp -rn apps/desktop/dist $out/
|
||||||
|
|
||||||
|
echo '{"schemaVersion":1,"commit":"nix-dummy-commit","branch":"nix","dirty":false,"source":"nix"}' > $out/install-stamp.json
|
||||||
|
|
||||||
|
cp -n apps/desktop/package.json $out/
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
# Electron wrapper: nixpkgs' electron binary pointed at the renderer dir.
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "hermes-desktop";
|
||||||
|
inherit (renderer) version;
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeWrapper
|
||||||
|
python3
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/share/hermes-desktop $out/bin
|
||||||
|
cp -r ${renderer}/* $out/share/hermes-desktop/
|
||||||
|
|
||||||
|
# Standard nixpkgs pattern for electron-builder apps: patch process.resourcesPath
|
||||||
|
# to point to the app's directory. In Nix, unpackaged electron defaults this
|
||||||
|
# to the electron distribution's resources path, breaking extraResources lookups.
|
||||||
|
substituteInPlace $out/share/hermes-desktop/dist/electron-main.mjs \
|
||||||
|
--replace-fail "process.resourcesPath" "'$out/share/hermes-desktop'"
|
||||||
|
|
||||||
|
# Wrap the nixpkgs electron binary to launch our app. Set
|
||||||
|
# HERMES_DESKTOP_HERMES to the absolute path of the nix-built `hermes`
|
||||||
|
# binary so the desktop's resolver step 4 ("existing Hermes CLI on
|
||||||
|
# PATH") uses our fully wrapped binary — venv with all deps,
|
||||||
|
# bundled skills/plugins, runtime PATH (ripgrep/git/ffmpeg/etc).
|
||||||
|
# No reimplementation of the agent resolver in the wrapper.
|
||||||
|
makeWrapper ${lib.getExe electron} $out/bin/hermes-desktop \
|
||||||
|
--add-flags "$out/share/hermes-desktop" \
|
||||||
|
--set HERMES_DESKTOP_HERMES "${lib.getExe hermesAgent}" \
|
||||||
|
--set ELECTRON_IS_DEV 0${extraEnvFlags}${extraRunFlags}
|
||||||
|
|
||||||
|
# XDG launcher entry
|
||||||
|
mkdir -p $out/share/applications $out/share/icons/hicolor/1024x1024/apps
|
||||||
|
install -m 0644 ${hermesSrc}/apps/desktop/assets/icon.png \
|
||||||
|
$out/share/icons/hicolor/1024x1024/apps/hermes.png
|
||||||
|
export PYTHONPATH=$(mktemp -d)
|
||||||
|
cp ${hermesSrc}/hermes_cli/linux_desktop_entry.py "$PYTHONPATH/linux_desktop_entry.py"
|
||||||
|
export DESKTOP_EXEC="$out/bin/hermes-desktop"
|
||||||
|
export DESKTOP_ICON="$out/share/icons/hicolor/1024x1024/apps/hermes.png"
|
||||||
|
python3 -c 'import os; from linux_desktop_entry import render_desktop_entry; print(render_desktop_entry(os.environ["DESKTOP_EXEC"], os.environ["DESKTOP_ICON"]))' > $out/share/applications/hermes.desktop
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit (renderer.passthru) packageJsonPath;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Native Electron desktop shell for Hermes Agent";
|
||||||
|
homepage = "https://github.com/NousResearch/hermes-agent";
|
||||||
|
license = licenses.mit;
|
||||||
|
platforms = platforms.unix;
|
||||||
|
mainProgram = "hermes-desktop";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -73,6 +73,7 @@ in {
|
|||||||
require_if_present("dms.colors")
|
require_if_present("dms.colors")
|
||||||
require_if_present("dms.layout")
|
require_if_present("dms.layout")
|
||||||
require_if_present("dms.outputs")
|
require_if_present("dms.outputs")
|
||||||
|
require_if_present("dms.binds-user")
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
@@ -88,7 +89,7 @@ in {
|
|||||||
force_zero_scaling = true;
|
force_zero_scaling = true;
|
||||||
};
|
};
|
||||||
input = {
|
input = {
|
||||||
kb_layout = "us";
|
kb_layout = "us,de";
|
||||||
kb_variant = "";
|
kb_variant = "";
|
||||||
kb_model = "";
|
kb_model = "";
|
||||||
kb_rules = "";
|
kb_rules = "";
|
||||||
@@ -150,7 +151,6 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
device = [
|
device = [
|
||||||
# Alle normalen Keyboards explizit auf de setzen:
|
|
||||||
{
|
{
|
||||||
name = "video-bus";
|
name = "video-bus";
|
||||||
kb_layout = "de,us";
|
kb_layout = "de,us";
|
||||||
@@ -173,23 +173,33 @@ in {
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "keychron-keychron-k7";
|
name = "keychron-keychron-k7";
|
||||||
kb_layout = "us";
|
kb_layout = "us,de";
|
||||||
kb_options = "ctrl:nocaps";
|
kb_options = "ctrl:nocaps";
|
||||||
}
|
}
|
||||||
# Moonlander Sub-Devices bleiben us (erben global)
|
# Moonlander Sub-Devices bleiben us zuerst (de als zweites Layout):
|
||||||
{
|
{
|
||||||
name = "zsa-technology-labs-moonlander-mark-i-consumer-control";
|
name = "zsa-technology-labs-moonlander-mark-i-consumer-control";
|
||||||
kb_layout = "us";
|
kb_layout = "us,de";
|
||||||
kb_options = "ctrl:nocaps";
|
kb_options = "ctrl:nocaps";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "zsa-technology-labs-moonlander-mark-i-keyboard";
|
name = "zsa-technology-labs-moonlander-mark-i-keyboard";
|
||||||
kb_layout = "us";
|
kb_layout = "us,de";
|
||||||
kb_options = "ctrl:nocaps";
|
kb_options = "ctrl:nocaps";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "zsa-technology-labs-moonlander-mark-i-system-control";
|
name = "zsa-technology-labs-moonlander-mark-i-system-control";
|
||||||
kb_layout = "us";
|
kb_layout = "us,de";
|
||||||
|
kb_options = "ctrl:nocaps";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "asustek-computer-inc.-gz302ea-keyboard";
|
||||||
|
kb_layout = "de,us";
|
||||||
|
kb_options = "ctrl:nocaps";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "asustek-computer-inc.-gz302ea-keyboard-2";
|
||||||
|
kb_layout = "de,us";
|
||||||
kb_options = "ctrl:nocaps";
|
kb_options = "ctrl:nocaps";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -486,6 +496,7 @@ in {
|
|||||||
(mkBinding (modKey "mouse_up") (focusWorkspace "e-1"))
|
(mkBinding (modKey "mouse_up") (focusWorkspace "e-1"))
|
||||||
(mkBindingWithOptions (modKey "mouse:272") "hl.dsp.window.drag()" {mouse = true;})
|
(mkBindingWithOptions (modKey "mouse:272") "hl.dsp.window.drag()" {mouse = true;})
|
||||||
(mkBindingWithOptions (modKey "mouse:273") "hl.dsp.window.resize()" {mouse = true;})
|
(mkBindingWithOptions (modKey "mouse:273") "hl.dsp.window.resize()" {mouse = true;})
|
||||||
|
(mkBinding (modKey "SPACE") (execCmd "hyprctl switchxkblayout current next"))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -40,8 +40,8 @@
|
|||||||
command = "bash";
|
command = "bash";
|
||||||
args = ["-c" "EXA_API_KEY=$(cat /run/agenix/exa-key) exec bunx exa-mcp-server@latest tools=web_search_exa"];
|
args = ["-c" "EXA_API_KEY=$(cat /run/agenix/exa-key) exec bunx exa-mcp-server@latest tools=web_search_exa"];
|
||||||
};
|
};
|
||||||
Fireflies = {
|
SallyAI = {
|
||||||
url = "https://api.fireflies.ai/mcp";
|
url = "https://app.sally.io/api/v1/McpExternal";
|
||||||
};
|
};
|
||||||
Outline = {
|
Outline = {
|
||||||
url = "https://wiki.az-gruppe.com/mcp";
|
url = "https://wiki.az-gruppe.com/mcp";
|
||||||
@@ -61,22 +61,28 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# NOTE: llm-agent packages are consumed via the `llm-agents` namespace
|
||||||
|
# (pkgs.llm-agents.*), provided by numtide/llm-agents.nix's
|
||||||
|
# `overlays.shared-nixpkgs`. The consumer's nixos-config MUST apply that
|
||||||
|
# overlay — namespaced refs fail loudly if it is missing, instead of
|
||||||
|
# silently falling back to (outdated) nixpkgs attributes.
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
agenix-cli
|
agenix-cli
|
||||||
agent-browser
|
llm-agents.agent-browser
|
||||||
m3taHomeInputs.agent-lib.packages.${pkgs.stdenv.hostPlatform.system}.agent-lib-cli
|
m3taHomeInputs.agent-lib.packages.${pkgs.stdenv.hostPlatform.system}.agent-lib-cli
|
||||||
beads
|
llm-agents.beads
|
||||||
|
buzz
|
||||||
crunch
|
crunch
|
||||||
docker-sbx
|
docker-sbx
|
||||||
herdr
|
llm-agents.herdr
|
||||||
pi-coding-agent
|
pi-coding-agent
|
||||||
(qmd.override {
|
(llm-agents.qmd.override {
|
||||||
vulkanSupport = videoDrivers == ["amdgpu"];
|
vulkanSupport = videoDrivers == ["amdgpu"];
|
||||||
cudaSupport = videoDrivers == ["nvidia"];
|
cudaSupport = videoDrivers == ["nvidia"];
|
||||||
})
|
})
|
||||||
opencode-desktop
|
opencode-desktop
|
||||||
openshell
|
openshell
|
||||||
openspec
|
llm-agents.openspec
|
||||||
openwork
|
openwork
|
||||||
talk
|
talk
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -4,25 +4,34 @@
|
|||||||
|
|
||||||
ohMyOpencodeSettings = {
|
ohMyOpencodeSettings = {
|
||||||
agents = {
|
agents = {
|
||||||
sisyphus.model = "zai-coding-plan/glm-5.2";
|
# Primary worker: GLM-5.3 (1M ctx, beats Opus 4.8 on token efficiency).
|
||||||
oracle.model = "litellm/claude-sonnet-5";
|
sisyphus.model = "zai-coding-plan/glm-5.3";
|
||||||
librarian.model = "litellm/claude-sonnet-5";
|
# Planning + deep analysis: strongest reasoning tier.
|
||||||
explore.model = "litellm/claude-haiku-4-5";
|
|
||||||
multimodal-looker.model = "litellm/gpt-5.3-codex";
|
|
||||||
prometheus.model = "litellm/claude-opus-4-8";
|
prometheus.model = "litellm/claude-opus-4-8";
|
||||||
metis.model = "litellm/claude-opus-4-8";
|
metis.model = "litellm/claude-opus-4-8";
|
||||||
momus.model = "zai-coding-plan/glm-5.2";
|
# Verification + docs research: best tool-use quality.
|
||||||
atlas.model = "zai-coding-plan/glm-5.2";
|
oracle.model = "litellm/claude-sonnet-5";
|
||||||
|
librarian.model = "litellm/claude-sonnet-5";
|
||||||
|
# High-volume parallel codebase scans: speed-tuned GLM on flat rate.
|
||||||
|
explore.model = "zai-coding-plan/glm-5-turbo";
|
||||||
|
# Vision: GLM-5.3 is text-only -> cheap capable Claude Haiku.
|
||||||
|
multimodal-looker.model = "litellm/claude-haiku-4-5";
|
||||||
|
# Critic + navigator: flagship GLM on flat rate.
|
||||||
|
momus.model = "zai-coding-plan/glm-5.3";
|
||||||
|
atlas.model = "zai-coding-plan/glm-5.3";
|
||||||
};
|
};
|
||||||
categories = {
|
categories = {
|
||||||
visual-engineering.model = "zai-coding-plan/glm-5.2";
|
# Volume categories -> flat-rate GLM-5.3 (1M ctx).
|
||||||
|
visual-engineering.model = "zai-coding-plan/glm-5.3";
|
||||||
|
artistry.model = "zai-coding-plan/glm-5.3";
|
||||||
|
writing.model = "zai-coding-plan/glm-5.3";
|
||||||
|
# Long deep-work sessions -> GLM-5.3 1M ctx beats Sonnet 200k.
|
||||||
|
deep.model = "zai-coding-plan/glm-5.3";
|
||||||
|
# Deliberately pay-per-token for top quality:
|
||||||
ultrabrain.model = "litellm/claude-opus-4-8";
|
ultrabrain.model = "litellm/claude-opus-4-8";
|
||||||
deep.model = "litellm/claude-sonnet-5";
|
|
||||||
artistry.model = "zai-coding-plan/glm-5.2";
|
|
||||||
quick.model = "litellm/claude-haiku-4-5";
|
|
||||||
unspecified-low.model = "litellm/claude-sonnet-5";
|
|
||||||
unspecified-high.model = "litellm/claude-opus-4-8";
|
unspecified-high.model = "litellm/claude-opus-4-8";
|
||||||
writing.model = "zai-coding-plan/glm-5.2";
|
unspecified-low.model = "litellm/claude-sonnet-5";
|
||||||
|
quick.model = "litellm/claude-haiku-4-5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -194,6 +203,13 @@
|
|||||||
output = 128000;
|
output = 128000;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
"gpt-5.6-sol" = {
|
||||||
|
name = "GPT-5.6 Sol";
|
||||||
|
limit = {
|
||||||
|
context = 400000;
|
||||||
|
output = 128000;
|
||||||
|
};
|
||||||
|
};
|
||||||
"gpt-5.3-codex" = {
|
"gpt-5.3-codex" = {
|
||||||
name = "GPT-5.3 Codex";
|
name = "GPT-5.3 Codex";
|
||||||
limit = {
|
limit = {
|
||||||
@@ -214,12 +230,11 @@
|
|||||||
output = 64000;
|
output = 64000;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"claude-sonnet-4-6" = {
|
"claude-sonnet-5" = {
|
||||||
name = "Claude Sonnet 4.6";
|
name = "Claude Sonnet 5";
|
||||||
options = {
|
options = {
|
||||||
thinking = {
|
thinking = {
|
||||||
type = "enabled";
|
type = "adaptive";
|
||||||
budget_tokens = 16000;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
limit = {
|
limit = {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# Gaming profile aggregator — Steam platform, Gamescope session, and AMD GPU tools.
|
# Gaming profile aggregator — Steam platform, Gamescope session, and AMD GPU tools.
|
||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
|
./emulators.nix
|
||||||
./steam.nix
|
./steam.nix
|
||||||
./gamescope.nix
|
./gamescope.nix
|
||||||
./gpu.nix
|
./gpu.nix
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.profiles.gaming.emulators;
|
||||||
|
in {
|
||||||
|
options.profiles.gaming.emulators.enable = mkEnableOption "Emulators";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
shadps4
|
||||||
|
shadps4-qtlauncher
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -89,17 +89,17 @@
|
|||||||
"m3-atlas" = {
|
"m3-atlas" = {
|
||||||
HostName = "152.53.85.162";
|
HostName = "152.53.85.162";
|
||||||
User = "m3tam3re";
|
User = "m3tam3re";
|
||||||
IdentityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3ta-adm";
|
||||||
};
|
};
|
||||||
"m3-hermes" = {
|
"m3-hermes" = {
|
||||||
HostName = "204.168.229.93";
|
HostName = "204.168.229.93";
|
||||||
User = "m3tam3re";
|
User = "m3tam3re";
|
||||||
IdentityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3ta-adm";
|
||||||
};
|
};
|
||||||
"hermes" = {
|
"hermes-agent" = {
|
||||||
HostName = "46.224.0.92";
|
HostName = "204.168.229.93";
|
||||||
User = "admin";
|
User = "hermes";
|
||||||
IdentityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/hermes";
|
||||||
};
|
};
|
||||||
"m3-zelda" = {
|
"m3-zelda" = {
|
||||||
HostName = "95.217.189.186";
|
HostName = "95.217.189.186";
|
||||||
|
|||||||
@@ -57,6 +57,12 @@
|
|||||||
Port = 2022;
|
Port = 2022;
|
||||||
IdentityFile = "~/.ssh/sascha.koenig";
|
IdentityFile = "~/.ssh/sascha.koenig";
|
||||||
};
|
};
|
||||||
|
"AZ-TC-01" = {
|
||||||
|
HostName = "192.168.153.172";
|
||||||
|
User = "sascha.koenig";
|
||||||
|
Port = 22;
|
||||||
|
IdentityFile = "~/.ssh/sascha.koenig";
|
||||||
|
};
|
||||||
"git.az-gruppe.com" = {
|
"git.az-gruppe.com" = {
|
||||||
HostName = "git.az-gruppe.com";
|
HostName = "git.az-gruppe.com";
|
||||||
Port = 2022;
|
Port = 2022;
|
||||||
@@ -68,6 +74,11 @@
|
|||||||
User = "m3tam3re";
|
User = "m3tam3re";
|
||||||
IdentityFile = "~/.ssh/sascha.koenig";
|
IdentityFile = "~/.ssh/sascha.koenig";
|
||||||
};
|
};
|
||||||
|
"hermes-agent" = {
|
||||||
|
HostName = "204.168.229.93";
|
||||||
|
User = "hermes";
|
||||||
|
IdentityFile = "~/.ssh/hermes";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user