Compare commits
39 Commits
a87d9510bd
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 57c467ef11 | |||
| fbcf8f65e6 | |||
| ef78590a6a | |||
| 39cc27fd72 | |||
| fe88684d9d | |||
| 4b4221da30 | |||
| 9be26d79cc | |||
| 2821f4b6f4 | |||
| d1494476b8 | |||
| eea29e9877 | |||
| 2ab870db8c | |||
| 66127c05ea | |||
| 4a9d24fe08 | |||
| 1265dea16a | |||
| 222c1becf4 | |||
| 365b6016f1 | |||
| 9566724015 | |||
| cd80ded6c0 | |||
| 4fe9f3e306 | |||
| d26a40f4ee | |||
| 74566375f9 | |||
| add002e05c | |||
| 5c92a9f1c6 | |||
| b67922ca60 | |||
| 19dea8277e | |||
| 8bbfc64b84 | |||
| f5e2b50082 | |||
| 6286921cd1 | |||
| a053c9a50e | |||
| 7f80fd8a75 | |||
| 4e1b39f443 | |||
| b2ca12f86c | |||
| 6c6164043b | |||
| e02a0a29ea | |||
| 831698b766 | |||
| 336a174a17 | |||
| 70562ceef2 | |||
| ef5b67c3e9 | |||
| 4af565c76c |
@@ -177,6 +177,7 @@ base.secrets.enable # pass-wayland, pinentry
|
|||||||
desktop.wm.hyprland.enable # Hyprland window manager
|
desktop.wm.hyprland.enable # Hyprland window manager
|
||||||
desktop.wm.rofi.enable # Rofi launcher
|
desktop.wm.rofi.enable # Rofi launcher
|
||||||
desktop.wm.wayland.enable # Wayland tools (grim, slurp, etc.)
|
desktop.wm.wayland.enable # Wayland tools (grim, slurp, etc.)
|
||||||
|
desktop.wm.dms.enable # DankMaterialShell desktop shell
|
||||||
desktop.apps.obsidian.enable # Obsidian
|
desktop.apps.obsidian.enable # Obsidian
|
||||||
desktop.apps.office.enable # LibreOffice
|
desktop.apps.office.enable # LibreOffice
|
||||||
desktop.apps.crypto.enable # Bisq2, Monero, Trezor
|
desktop.apps.crypto.enable # Bisq2, Monero, Trezor
|
||||||
@@ -244,9 +245,11 @@ source = "${config."m3ta-home".paths.srcRoot}/assets/wallpapers";
|
|||||||
| `nixpkgs` | Package set (follows nixos-config's nixpkgs) |
|
| `nixpkgs` | Package set (follows nixos-config's nixpkgs) |
|
||||||
| `home-manager` | Home-Manager modules |
|
| `home-manager` | Home-Manager modules |
|
||||||
| `nix-colors` | Dracula theme palette (used everywhere) |
|
| `nix-colors` | Dracula theme palette (used everywhere) |
|
||||||
| `m3ta-nixpkgs` | Custom packages (zellij-ps, rofi-project-opener) and HM modules |
|
| `m3ta-nixpkgs` | Custom packages (zellij-ps, rofi-project-opener) and HM modules |
|
||||||
| `agenix` | Secret management |
|
| `dms` | DankMaterialShell Home-Manager module and package |
|
||||||
| `NUR` | Additional packages |
|
| `dms-plugin-registry` | DankMaterialShell plugin sources |
|
||||||
|
| `agenix` | Secret management |
|
||||||
|
| `NUR` | Additional packages |
|
||||||
|
|
||||||
## Important Notes
|
## Important Notes
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 3.3 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.7 MiB |
Generated
+359
-32
@@ -21,14 +21,52 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"agent-lib": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1781348569,
|
||||||
|
"narHash": "sha256-1BJtmKSqtD0CD753ZE37RgxvCJK6Iw3iKLDDaS8trY4=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "75a2ed2533b4d6d8e4a34acd37e83d98d81a5fb0",
|
||||||
|
"revCount": 30,
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib"
|
||||||
|
}
|
||||||
|
},
|
||||||
"agents": {
|
"agents": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1780133320,
|
||||||
|
"narHash": "sha256-8AiN9tV9PBb5xblJiPlhumBbKj61qLjzqXXFtkj3vvY=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "920c00313ae242bd93275c30131b9ab1e52ee2fb",
|
||||||
|
"revCount": 88,
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"agents_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777399938,
|
"lastModified": 1780133320,
|
||||||
"narHash": "sha256-xXPqUQezDdDtF8MbpZnwD1HkybOYwF92evx8rJ6OXCU=",
|
"narHash": "sha256-8AiN9tV9PBb5xblJiPlhumBbKj61qLjzqXXFtkj3vvY=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "9a91f1ee0cf011a7eaf1f16a9e17610b0457e055",
|
"rev": "920c00313ae242bd93275c30131b9ab1e52ee2fb",
|
||||||
"revCount": 85,
|
"revCount": 88,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://code.m3ta.dev/m3tam3re/AGENTS"
|
"url": "https://code.m3ta.dev/m3tam3re/AGENTS"
|
||||||
},
|
},
|
||||||
@@ -97,7 +135,70 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dms": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"quickshell": "quickshell"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1777431599,
|
||||||
|
"narHash": "sha256-g6r/Gx8PTDzO3jCNzzySA+Ff1lmLF9nDlMCNyyoQjoE=",
|
||||||
|
"owner": "AvengeMedia",
|
||||||
|
"repo": "DankMaterialShell",
|
||||||
|
"rev": "eb5afcdc40ea5446c27e18552ff4a19f9daf9484",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "AvengeMedia",
|
||||||
|
"ref": "stable",
|
||||||
|
"repo": "DankMaterialShell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dms-plugin-registry": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1781317940,
|
||||||
|
"narHash": "sha256-uMVOhV6pVPgm2hn1WGEbIcJRWjnsyWKy8PHCUn0++iI=",
|
||||||
|
"owner": "AvengeMedia",
|
||||||
|
"repo": "dms-plugin-registry",
|
||||||
|
"rev": "4ab59f3da3df33bf106045b856db8de875cc42c6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "AvengeMedia",
|
||||||
|
"repo": "dms-plugin-registry",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"hermes-agent",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772408722,
|
||||||
|
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nur",
|
"nur",
|
||||||
@@ -118,6 +219,31 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hermes-agent": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"npm-lockfile-fix": "npm-lockfile-fix",
|
||||||
|
"pyproject-build-systems": "pyproject-build-systems",
|
||||||
|
"pyproject-nix": "pyproject-nix_2",
|
||||||
|
"uv2nix": "uv2nix_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1781346807,
|
||||||
|
"narHash": "sha256-ytT4ojx0qFW4b/oYeW+MkmaA3b/BZ9pqkPmpAg8j1gg=",
|
||||||
|
"owner": "NousResearch",
|
||||||
|
"repo": "hermes-agent",
|
||||||
|
"rev": "2a5dc0ef3df433a36abed9ee544ea067d807c438",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NousResearch",
|
||||||
|
"repo": "hermes-agent",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -146,11 +272,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778503501,
|
"lastModified": 1781305496,
|
||||||
"narHash": "sha256-08L/X4/do7nET4rzidJ76eV/1r+mB7DchVpdPypsghc=",
|
"narHash": "sha256-g8Vv4Qfc7n+lgov97REu3X6BeJtvYY0hlSUZR1GrGQQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "85ba629c79449badf4338117c27f0ee92b4b9f1a",
|
"rev": "c87a39aa979acc4848016d2220c6238390d84779",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -161,7 +287,7 @@
|
|||||||
},
|
},
|
||||||
"m3ta-nixpkgs": {
|
"m3ta-nixpkgs": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agents": "agents",
|
"agents": "agents_2",
|
||||||
"basecamp": "basecamp",
|
"basecamp": "basecamp",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
@@ -170,11 +296,11 @@
|
|||||||
"openspec": "openspec"
|
"openspec": "openspec"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778508052,
|
"lastModified": 1781500279,
|
||||||
"narHash": "sha256-kxzZvJv757TGfHReR21aX6N/jkGMWzGSy9GQEclYD4Y=",
|
"narHash": "sha256-810qVHwu6jVhu01FWj9dXuruK84Gw2smAlbu6FPBfeY=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "8113723a48c4afa016881ccd5bc4be3fad2c7d5f",
|
"rev": "050c273c65b36dc03c34a7547d80e88afff5ac48",
|
||||||
"revCount": 294,
|
"revCount": 327,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs"
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs"
|
||||||
},
|
},
|
||||||
@@ -235,11 +361,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778507606,
|
"lastModified": 1781153468,
|
||||||
"narHash": "sha256-6Yc2dIhijc8G+dbMNocyclxF19dUrjaT+EeXGrXmXlg=",
|
"narHash": "sha256-ZBRmjFtJn/XmHBV230OSabKQqxOoOJunJmBtSt1sLs0=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "39a7b8d815fcc8b689d56fc4a3fa8de4ef93d169",
|
"rev": "cd265fd6b43f2ec1257c2e400f648895d2ad7ccd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -251,27 +377,43 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777954456,
|
"lastModified": 1772479524,
|
||||||
"narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
|
"narHash": "sha256-u7nCaNiMjqvKpE+uZz9hE7pgXXTmm5yvdtFaqzSzUQI=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
|
"rev": "4215e62dc2cd3bc705b0a423b9719ff6be378a43",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777954456,
|
"lastModified": 1781074563,
|
||||||
"narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
|
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1781074563,
|
||||||
|
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
|
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -281,17 +423,38 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"npm-lockfile-fix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"nixpkgs": [
|
||||||
"nixpkgs": "nixpkgs_3"
|
"hermes-agent",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778506944,
|
"lastModified": 1775903712,
|
||||||
"narHash": "sha256-lU0Bleh0reE+WU7j8Uiqsu6ekPav50L8sXsgOvEQS+0=",
|
"narHash": "sha256-2GV79U6iVH4gKAPWYrxUReB0S41ty/Y3dBLquU8AlaA=",
|
||||||
|
"owner": "jeslie0",
|
||||||
|
"repo": "npm-lockfile-fix",
|
||||||
|
"rev": "c6093acb0c0548e0f9b8b3d82918823721930fe8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "jeslie0",
|
||||||
|
"repo": "npm-lockfile-fix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
|
"nixpkgs": "nixpkgs_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1781346642,
|
||||||
|
"narHash": "sha256-o92OOSMAB08HQgG7pW2BZVIO53Pkv4oAjLk4Iol3Iko=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "0166493cfe4e0e9927435c1cfbf5505cfb0d10d1",
|
"rev": "6e4e8d731fbb3831296607d5f88de727cf7bf6de",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -308,11 +471,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778120451,
|
"lastModified": 1780479100,
|
||||||
"narHash": "sha256-MUSPD16+hoFBfQWYahtNLN2BIFEAlFFo2KNofrc947g=",
|
"narHash": "sha256-VZZ/ukjciXqiebwei2JizyOnxx0T3IeoowFWElKec4o=",
|
||||||
"owner": "Fission-AI",
|
"owner": "Fission-AI",
|
||||||
"repo": "OpenSpec",
|
"repo": "OpenSpec",
|
||||||
"rev": "053d8a59d587f3c027a06ad80503a6b43d4f2a92",
|
"rev": "1b06fddd59d8e592d5b5794a1970b22867e85b1f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -321,13 +484,128 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pyproject-build-systems": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hermes-agent",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"pyproject-nix": "pyproject-nix",
|
||||||
|
"uv2nix": "uv2nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772555609,
|
||||||
|
"narHash": "sha256-3BA3HnUvJSbHJAlJj6XSy0Jmu7RyP2gyB/0fL7XuEDo=",
|
||||||
|
"owner": "pyproject-nix",
|
||||||
|
"repo": "build-system-pkgs",
|
||||||
|
"rev": "c37f66a953535c394244888598947679af231863",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "pyproject-nix",
|
||||||
|
"repo": "build-system-pkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pyproject-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hermes-agent",
|
||||||
|
"pyproject-build-systems",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1769936401,
|
||||||
|
"narHash": "sha256-kwCOegKLZJM9v/e/7cqwg1p/YjjTAukKPqmxKnAZRgA=",
|
||||||
|
"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",
|
||||||
|
"repo": "pyproject.nix",
|
||||||
|
"rev": "e537db02e72d553cea470976b9733581bcf5b3ed",
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "pyproject-nix",
|
||||||
|
"repo": "pyproject.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quickshell": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"dms",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1776854048,
|
||||||
|
"narHash": "sha256-lLbV66V3RMNp1l8/UelmR4YzoJ5ONtgvEtiUMJATH/o=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "783c953987dc56ff0601abe6845ed96f1d00495a",
|
||||||
|
"revCount": 806,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.outfoxxed.me/quickshell/quickshell"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"rev": "783c953987dc56ff0601abe6845ed96f1d00495a",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.outfoxxed.me/quickshell/quickshell"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
|
"agent-lib": "agent-lib",
|
||||||
|
"agents": "agents",
|
||||||
|
"dms": "dms",
|
||||||
|
"dms-plugin-registry": "dms-plugin-registry",
|
||||||
|
"hermes-agent": "hermes-agent",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"m3ta-nixpkgs": "m3ta-nixpkgs",
|
"m3ta-nixpkgs": "m3ta-nixpkgs",
|
||||||
"nix-colors": "nix-colors",
|
"nix-colors": "nix-colors",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"nur": "nur"
|
"nur": "nur"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -345,6 +623,55 @@
|
|||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"uv2nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hermes-agent",
|
||||||
|
"pyproject-build-systems",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"pyproject-nix": [
|
||||||
|
"hermes-agent",
|
||||||
|
"pyproject-build-systems",
|
||||||
|
"pyproject-nix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770770348,
|
||||||
|
"narHash": "sha256-A2GzkmzdYvdgmMEu5yxW+xhossP+txrYb7RuzRaqhlg=",
|
||||||
|
"owner": "pyproject-nix",
|
||||||
|
"repo": "uv2nix",
|
||||||
|
"rev": "5d1b2cb4fe3158043fbafbbe2e46238abbc954b0",
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "pyproject-nix",
|
||||||
|
"repo": "uv2nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
@@ -16,26 +16,52 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
agents = {
|
||||||
|
# url = "path:/home/m3tam3re/p/AI/AGENTS";
|
||||||
|
url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS";
|
||||||
|
};
|
||||||
|
|
||||||
|
agent-lib = {
|
||||||
|
# url = "path:/home/m3tam3re/p/NIX/agent-lib";
|
||||||
|
url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
hermes-agent = {
|
||||||
|
url = "github:NousResearch/hermes-agent";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
dms = {
|
||||||
|
url = "github:AvengeMedia/DankMaterialShell/stable";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
dms-plugin-registry = {
|
||||||
|
url = "github:AvengeMedia/dms-plugin-registry";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
|
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {self, ...} @ inputs: {
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
...
|
|
||||||
} @ inputs: let
|
|
||||||
lib = nixpkgs.lib;
|
|
||||||
in {
|
|
||||||
# Home-Manager modules — import in nixos-config via:
|
# Home-Manager modules — import in nixos-config via:
|
||||||
# imports = [ inputs.m3ta-home.homeManagerModules.default ];
|
# imports = [ inputs.m3ta-home.homeManagerModules.default ];
|
||||||
homeManagerModules = import ./modules { inherit inputs; selfPath = self.outPath; };
|
homeManagerModules = import ./modules {
|
||||||
|
inherit inputs;
|
||||||
|
selfPath = self.outPath;
|
||||||
|
};
|
||||||
|
|
||||||
# Library functions — use in nixos-config via:
|
# Library functions — use in nixos-config via:
|
||||||
# m3ta-lib = inputs.m3ta-home.lib;
|
# m3ta-lib = inputs.m3ta-home.lib;
|
||||||
# imports = [ (m3ta-lib.mkHome { ... }) ];
|
# imports = [ (m3ta-lib.mkHome { ... }) ];
|
||||||
lib = import ./lib {inherit inputs; selfPath = self.outPath;};
|
lib = import ./lib {
|
||||||
|
inherit inputs;
|
||||||
|
selfPath = self.outPath;
|
||||||
|
};
|
||||||
|
|
||||||
# Overlays (re-exports from m3ta-nixpkgs)
|
# Overlays (re-exports from m3ta-nixpkgs)
|
||||||
overlays = inputs.m3ta-nixpkgs.overlays;
|
overlays = inputs.m3ta-nixpkgs.overlays;
|
||||||
|
|||||||
+13
-2
@@ -1,5 +1,16 @@
|
|||||||
# lib/default.nix — Entry point for m3ta-home library functions.
|
# lib/default.nix — Entry point for m3ta-home library functions.
|
||||||
#
|
#
|
||||||
# Called by flake.nix: import ./lib { inherit inputs; selfPath = self.outPath; }
|
# Called by flake.nix: import ./lib { inherit inputs; selfPath = self.outPath; }
|
||||||
# Re-exports mkHome and future library functions.
|
# Re-exports mkHome and focused helpers for consumers that should not depend on
|
||||||
{inputs, selfPath}: import ./mkHome.nix {inherit inputs selfPath;}
|
# m3ta-home's implementation inputs directly.
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
selfPath,
|
||||||
|
}: let
|
||||||
|
mkHomeLib = import ./mkHome.nix {inherit inputs selfPath;};
|
||||||
|
in
|
||||||
|
mkHomeLib
|
||||||
|
// {
|
||||||
|
mkHermesSkillsDir = {system, ...} @ args:
|
||||||
|
inputs.agent-lib.lib.${system}.mkHermesSkillsDir (builtins.removeAttrs args ["system"]);
|
||||||
|
}
|
||||||
|
|||||||
+13
-1
@@ -19,7 +19,10 @@
|
|||||||
# m3ta.home.sets.coding.languages.python.extra = true;
|
# m3ta.home.sets.coding.languages.python.extra = true;
|
||||||
# wayland.windowManager.hyprland.settings.monitor = [ ... ];
|
# wayland.windowManager.hyprland.settings.monitor = [ ... ];
|
||||||
#
|
#
|
||||||
{inputs, selfPath}: let
|
{
|
||||||
|
inputs,
|
||||||
|
selfPath,
|
||||||
|
}: let
|
||||||
lib = inputs.nixpkgs.lib;
|
lib = inputs.nixpkgs.lib;
|
||||||
in {
|
in {
|
||||||
mkHome = {
|
mkHome = {
|
||||||
@@ -80,6 +83,13 @@ in {
|
|||||||
in {
|
in {
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
|
# External Home Manager modules required by selectable profiles
|
||||||
|
inputs.agent-lib.homeManagerModules.default
|
||||||
|
inputs.dms.homeModules.default
|
||||||
|
inputs.dms-plugin-registry.homeModules.default
|
||||||
|
inputs.nix-colors.homeManagerModules.default
|
||||||
|
inputs.m3ta-nixpkgs.homeManagerModules.default
|
||||||
|
|
||||||
# Paths module — must be first, provides m3taHome.paths.srcRoot
|
# Paths module — must be first, provides m3taHome.paths.srcRoot
|
||||||
../modules/paths.nix
|
../modules/paths.nix
|
||||||
baseModule
|
baseModule
|
||||||
@@ -89,6 +99,8 @@ in {
|
|||||||
++ contextImport
|
++ contextImport
|
||||||
++ setImports;
|
++ setImports;
|
||||||
|
|
||||||
|
_module.args.m3taHomeInputs = inputs;
|
||||||
|
|
||||||
# Set the flake source root for asset path resolution
|
# Set the flake source root for asset path resolution
|
||||||
"m3ta-home".paths.srcRoot = selfPath;
|
"m3ta-home".paths.srcRoot = selfPath;
|
||||||
|
|
||||||
|
|||||||
+9
-3
@@ -8,11 +8,15 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
selfPath,
|
selfPath,
|
||||||
}: let
|
}: {
|
||||||
lib = inputs.nixpkgs.lib;
|
|
||||||
in {
|
|
||||||
default = {
|
default = {
|
||||||
imports = [
|
imports = [
|
||||||
|
# External modules
|
||||||
|
inputs.agent-lib.homeManagerModules.default
|
||||||
|
inputs.dms.homeModules.default
|
||||||
|
inputs.dms-plugin-registry.homeModules.default
|
||||||
|
inputs.nix-colors.homeManagerModules.default
|
||||||
|
inputs.m3ta-nixpkgs.homeManagerModules.default
|
||||||
# Paths — must be first, provides "m3ta-home".paths.srcRoot
|
# Paths — must be first, provides "m3ta-home".paths.srcRoot
|
||||||
./paths.nix
|
./paths.nix
|
||||||
|
|
||||||
@@ -30,6 +34,8 @@ in {
|
|||||||
./../users/m3tam3re/identities/work.nix
|
./../users/m3tam3re/identities/work.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
_module.args.m3taHomeInputs = inputs;
|
||||||
|
|
||||||
# Set the source root for asset path resolution
|
# Set the source root for asset path resolution
|
||||||
"m3ta-home".paths.srcRoot = selfPath;
|
"m3ta-home".paths.srcRoot = selfPath;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# profiles/base/default.nix — Always loaded on every host.
|
# profiles/base/default.nix — Always loaded on every host.
|
||||||
#
|
#
|
||||||
# Provides:
|
# Provides:
|
||||||
# - nix-colors and m3ta-nixpkgs HM module imports
|
|
||||||
# - Shell (nushell, fish, starship) with enable options
|
# - Shell (nushell, fish, starship) with enable options
|
||||||
# - CLI tools (bat, carapace, direnv, eza, fzf, lf, nitch, television, zellij, zoxide)
|
# - CLI tools (bat, carapace, direnv, eza, fzf, lf, nitch, television, zellij, zoxide)
|
||||||
# - Secrets management (pass-wayland)
|
# - Secrets management (pass-wayland)
|
||||||
@@ -9,21 +8,19 @@
|
|||||||
# - Base packages
|
# - Base packages
|
||||||
#
|
#
|
||||||
# NOTE: Overlays are NOT set here. The consuming flake (nixos-config) handles
|
# NOTE: Overlays are NOT set here. The consuming flake (nixos-config) handles
|
||||||
# overlays at the NixOS level via nixpkgs.overlays. This module only imports
|
# overlays at the NixOS level via nixpkgs.overlays. External HM modules are
|
||||||
# HM modules and sets user-level preferences.
|
# imported by mkHome/modules/default.nix. This module only imports base profile
|
||||||
|
# submodules and sets user-level preferences.
|
||||||
#
|
#
|
||||||
# When used standalone (not through NixOS), overlays should be set by the
|
# When used standalone (not through NixOS), overlays should be set by the
|
||||||
# standalone HM configuration or by the consuming flake.
|
# standalone HM configuration or by the consuming flake.
|
||||||
{
|
{
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
|
m3taHomeInputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nix-colors.homeManagerModules.default
|
|
||||||
inputs.m3ta-nixpkgs.homeManagerModules.default
|
|
||||||
|
|
||||||
./shell
|
./shell
|
||||||
./cli-tools
|
./cli-tools
|
||||||
./secrets
|
./secrets
|
||||||
@@ -44,7 +41,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# ── Color scheme ──
|
# ── Color scheme ──
|
||||||
colorScheme = inputs.nix-colors.colorSchemes.dracula;
|
colorScheme = m3taHomeInputs.nix-colors.colorSchemes.dracula;
|
||||||
|
|
||||||
# ── Base packages ──
|
# ── Base packages ──
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
|||||||
@@ -41,6 +41,16 @@ in {
|
|||||||
| transpose -r -d
|
| transpose -r -d
|
||||||
| load-env
|
| load-env
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Load m3tam3re secrets from agenix. The secret file is Nushell code
|
||||||
|
# containing a `load-env { ... }` block, not KEY=VALUE lines.
|
||||||
|
# `source` resolves literal paths at parse time, so use `null` when absent.
|
||||||
|
const m3tam3re_secrets_file = if ("/run/agenix/m3tam3re-secrets" | path exists) {
|
||||||
|
"/run/agenix/m3tam3re-secrets"
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
source $m3tam3re_secrets_file
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configFile.text = ''
|
configFile.text = ''
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Desktop environment aggregator — only loaded when context=desktop.
|
# Desktop environment aggregator — only loaded when context=desktop.
|
||||||
# Includes window manager, applications, theming, and desktop session config.
|
# Includes window manager, applications, theming, and desktop session config.
|
||||||
{
|
{
|
||||||
config,
|
m3taHomeInputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
@@ -38,22 +38,56 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.sessionVariables = {
|
home = {
|
||||||
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
|
sessionVariables = {
|
||||||
NIXOS_OZONE_WL = "1";
|
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
|
||||||
TERMINAL = "ghostty";
|
NIXOS_OZONE_WL = "1";
|
||||||
QT_QPA_PLATFORM = "wayland";
|
TERMINAL = "ghostty";
|
||||||
XDG_CURRENT_DESKTOP = "Hyprland";
|
QT_QPA_PLATFORM = "wayland";
|
||||||
XDG_SESSION_TYPE = "wayland";
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
XDG_SESSION_DESKTOP = "Hyprland";
|
XDG_SESSION_TYPE = "wayland";
|
||||||
};
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
|
};
|
||||||
|
|
||||||
home.sessionPath = [
|
sessionPath = [
|
||||||
"\${XDG_BIN_HOME}"
|
"\${XDG_BIN_HOME}"
|
||||||
"\${HOME}/.cargo/bin"
|
"\${HOME}/.cargo/bin"
|
||||||
"$HOME/.npm-global/bin"
|
"$HOME/.npm-global/bin"
|
||||||
"$HOME/.cache/.bun/bin"
|
"$HOME/.cache/.bun/bin"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
pointerCursor = {
|
||||||
|
gtk.enable = true;
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Ice";
|
||||||
|
size = 20;
|
||||||
|
};
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
appimage-run
|
||||||
|
bemoji
|
||||||
|
google-chrome
|
||||||
|
dconf
|
||||||
|
(element-desktop.override {
|
||||||
|
commandLineArgs = "--password-store=gnome-libsecret";
|
||||||
|
})
|
||||||
|
m3taHomeInputs.hermes-agent.packages.${pkgs.stdenv.hostPlatform.system}.desktop
|
||||||
|
launch-webapp
|
||||||
|
file-roller
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
seahorse
|
||||||
|
sushi
|
||||||
|
ksnip
|
||||||
|
nwg-look
|
||||||
|
qt6Packages.qt6ct
|
||||||
|
rose-pine-hyprcursor
|
||||||
|
remmina
|
||||||
|
slack
|
||||||
|
vivaldi
|
||||||
|
vivaldi-ffmpeg-codecs
|
||||||
|
vibetyper
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
@@ -64,59 +98,30 @@
|
|||||||
settings = {
|
settings = {
|
||||||
font-family = "Fira Code";
|
font-family = "Fira Code";
|
||||||
copy-on-select = "clipboard";
|
copy-on-select = "clipboard";
|
||||||
foreground = "#${config.colorScheme.palette.base05}";
|
theme = "dankcolors";
|
||||||
background = "#${config.colorScheme.palette.base00}";
|
# foreground = "#${config.colorScheme.palette.base05}";
|
||||||
selection-foreground = "#${config.colorScheme.palette.base07}";
|
# background = "#${config.colorScheme.palette.base00}";
|
||||||
selection-background = "#${config.colorScheme.palette.base02}";
|
# selection-foreground = "#${config.colorScheme.palette.base07}";
|
||||||
cursor-color = "#${config.colorScheme.palette.base05}";
|
# selection-background = "#${config.colorScheme.palette.base02}";
|
||||||
palette = [
|
# cursor-color = "#${config.colorScheme.palette.base05}";
|
||||||
"0=#${config.colorScheme.palette.base01}"
|
# palette = [
|
||||||
"1=#${config.colorScheme.palette.base08}"
|
# "0=#${config.colorScheme.palette.base01}"
|
||||||
"2=#${config.colorScheme.palette.base0B}"
|
# "1=#${config.colorScheme.palette.base08}"
|
||||||
"3=#${config.colorScheme.palette.base0A}"
|
# "2=#${config.colorScheme.palette.base0B}"
|
||||||
"4=#${config.colorScheme.palette.base0D}"
|
# "3=#${config.colorScheme.palette.base0A}"
|
||||||
"5=#${config.colorScheme.palette.base0E}"
|
# "4=#${config.colorScheme.palette.base0D}"
|
||||||
"6=#${config.colorScheme.palette.base0C}"
|
# "5=#${config.colorScheme.palette.base0E}"
|
||||||
"7=#${config.colorScheme.palette.base05}"
|
# "6=#${config.colorScheme.palette.base0C}"
|
||||||
"8=#${config.colorScheme.palette.base03}"
|
# "7=#${config.colorScheme.palette.base05}"
|
||||||
"9=#${config.colorScheme.palette.base08}"
|
# "8=#${config.colorScheme.palette.base03}"
|
||||||
"10=#${config.colorScheme.palette.base0B}"
|
# "9=#${config.colorScheme.palette.base08}"
|
||||||
"11=#${config.colorScheme.palette.base0A}"
|
# "10=#${config.colorScheme.palette.base0B}"
|
||||||
"12=#${config.colorScheme.palette.base0D}"
|
# "11=#${config.colorScheme.palette.base0A}"
|
||||||
"13=#${config.colorScheme.palette.base0E}"
|
# "12=#${config.colorScheme.palette.base0D}"
|
||||||
"14=#${config.colorScheme.palette.base0C}"
|
# "13=#${config.colorScheme.palette.base0E}"
|
||||||
"15=#${config.colorScheme.palette.base07}"
|
# "14=#${config.colorScheme.palette.base0C}"
|
||||||
];
|
# "15=#${config.colorScheme.palette.base07}"
|
||||||
|
# ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.pointerCursor = {
|
|
||||||
gtk.enable = true;
|
|
||||||
package = pkgs.bibata-cursors;
|
|
||||||
name = "Bibata-Modern-Ice";
|
|
||||||
size = 20;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
appimage-run
|
|
||||||
bemoji
|
|
||||||
eigent
|
|
||||||
(element-desktop.override {
|
|
||||||
commandLineArgs = "--password-store=gnome-libsecret";
|
|
||||||
})
|
|
||||||
launch-webapp
|
|
||||||
file-roller
|
|
||||||
hyprpanel
|
|
||||||
hyprpaper-random
|
|
||||||
seahorse
|
|
||||||
sushi
|
|
||||||
ksnip
|
|
||||||
nwg-look
|
|
||||||
rose-pine-hyprcursor
|
|
||||||
remmina
|
|
||||||
slack
|
|
||||||
vivaldi
|
|
||||||
vivaldi-ffmpeg-codecs
|
|
||||||
vibetyper
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# GTK and Qt theming — Dracula theme with matching icons and cursor.
|
# GTK and Qt theming — system-wide dark Adwaita/libadwaita-compatible theme.
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
@@ -11,13 +11,14 @@
|
|||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
colorScheme = "dark";
|
||||||
theme = {
|
theme = {
|
||||||
name = "Dracula";
|
name = "adw-gtk3-dark";
|
||||||
package = pkgs.dracula-theme;
|
package = pkgs.adw-gtk3;
|
||||||
};
|
};
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
name = "Dracula";
|
name = "Papirus-Dark";
|
||||||
package = pkgs.dracula-icon-theme;
|
package = pkgs.papirus-icon-theme;
|
||||||
};
|
};
|
||||||
gtk4.theme = config.gtk.theme;
|
gtk4.theme = config.gtk.theme;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,5 +4,6 @@
|
|||||||
./hyprland.nix
|
./hyprland.nix
|
||||||
./wayland.nix
|
./wayland.nix
|
||||||
./rofi.nix
|
./rofi.nix
|
||||||
|
./dms.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# DankMaterialShell user-session configuration.
|
||||||
|
# External DMS Home-Manager modules are imported by mkHome/modules/default.nix
|
||||||
|
# so this file only owns the m3ta-home feature flag and desired defaults.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.desktop.wm.dms;
|
||||||
|
in {
|
||||||
|
options.desktop.wm.dms.enable = mkEnableOption "DankMaterialShell desktop shell";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.dank-material-shell = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
enableDynamicTheming = true;
|
||||||
|
enableClipboardPaste = true;
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
dankBatteryAlerts.enable = true;
|
||||||
|
emojiLauncher.enable = true;
|
||||||
|
dankPomodoroTimer.enable = true;
|
||||||
|
dankVault.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -11,16 +11,17 @@ in {
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
|
configType = "hyprlang";
|
||||||
settings = {
|
settings = {
|
||||||
xwayland = {
|
xwayland = {
|
||||||
force_zero_scaling = true;
|
force_zero_scaling = true;
|
||||||
};
|
};
|
||||||
|
source = [
|
||||||
|
"~/.config/hypr/dms/colors.conf"
|
||||||
|
"~/.config/hypr/dms/layout.conf"
|
||||||
|
"~/.config/hypr/dms/outputs.conf"
|
||||||
|
];
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"hyprpanel"
|
|
||||||
"while ! hyprpaper-random; do sleep 0.5; done"
|
|
||||||
"wl-paste --type text --watch cliphist store"
|
|
||||||
"wl-paste --type image --watch cliphist store"
|
|
||||||
"vibetyper"
|
"vibetyper"
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -28,12 +29,14 @@ in {
|
|||||||
"XCURSOR_SIZE,32"
|
"XCURSOR_SIZE,32"
|
||||||
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
|
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
|
||||||
"WLR_NO_HARDWARE_CURSORS,1"
|
"WLR_NO_HARDWARE_CURSORS,1"
|
||||||
"GTK_THEME,Dracula"
|
|
||||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||||
"XDG_SESSION_TYPE,wayland"
|
"XDG_SESSION_TYPE,wayland"
|
||||||
"XDG_SESSION_DESKTOP,Hyprland"
|
"XDG_SESSION_DESKTOP,Hyprland"
|
||||||
"XKB_DEFAULT_LAYOUT,de"
|
"XKB_DEFAULT_LAYOUT,de"
|
||||||
"NIXOS_OZONE_WL,1"
|
"NIXOS_OZONE_WL,1"
|
||||||
|
"QT_QPA_PLATFORM,wayland;xcb"
|
||||||
|
"QT_QPA_PLATFORMTHEME,gtk3"
|
||||||
|
"QT_QPA_PLATFORMTHEME_QT6,gtk3"
|
||||||
];
|
];
|
||||||
|
|
||||||
input = {
|
input = {
|
||||||
@@ -49,8 +52,6 @@ in {
|
|||||||
gaps_in = 5;
|
gaps_in = 5;
|
||||||
gaps_out = 5;
|
gaps_out = 5;
|
||||||
border_size = 1;
|
border_size = 1;
|
||||||
"col.active_border" = "rgba(9742b5ee) rgba(9742b5ee) 45deg";
|
|
||||||
"col.inactive_border" = "rgba(${config.colorScheme.palette.base03}aa)";
|
|
||||||
layout = "dwindle";
|
layout = "dwindle";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -59,7 +60,7 @@ in {
|
|||||||
enabled = true;
|
enabled = true;
|
||||||
range = 60;
|
range = 60;
|
||||||
render_power = 3;
|
render_power = 3;
|
||||||
color = "rgba(${config.colorScheme.palette.base00}66)";
|
# color = "rgba(${config.colorScheme.palette.base00}66)";
|
||||||
offset = "1 2";
|
offset = "1 2";
|
||||||
scale = 0.97;
|
scale = 0.97;
|
||||||
};
|
};
|
||||||
@@ -87,7 +88,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
pseudotile = true;
|
# pseudotile = true; # TODO
|
||||||
preserve_split = true;
|
preserve_split = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -96,14 +97,14 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
device = [
|
device = [
|
||||||
{
|
|
||||||
name = "epic-mouse-v1";
|
|
||||||
sensitivity = -0.5;
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
name = "zsa-technology-labs-moonlander-mark-i";
|
name = "zsa-technology-labs-moonlander-mark-i";
|
||||||
kb_layout = "us";
|
kb_layout = "us";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "vibe-typer-virtual-keyboard";
|
||||||
|
kb_layout = "de";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "keychron-keychron-k7";
|
name = "keychron-keychron-k7";
|
||||||
kb_layout = "us";
|
kb_layout = "us";
|
||||||
@@ -165,21 +166,21 @@ in {
|
|||||||
"$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, 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, b, exec, uwsm app -- thunar"
|
"$mainMod, b, exec, uwsm app -- thunar"
|
||||||
"$mainMod SHIFT, B, exec, uwsm app -- vivaldi"
|
"$mainMod SHIFT, B, exec, uwsm app -- vivaldi"
|
||||||
"$mainMod, Escape, exec, uwsm app -- wlogout -p layer-shell"
|
"$mainMod, Escape, exec, uwsm app -- dms ipc call powermenu toggle"
|
||||||
"$mainMod, Space, togglefloating"
|
# "$mainMod, Space, togglefloating"
|
||||||
"$mainMod, q, killactive"
|
"$mainMod, q, killactive"
|
||||||
"$mainMod, M, exit"
|
"$mainMod, M, exit"
|
||||||
"$mainMod, F, fullscreen"
|
"$mainMod, F, fullscreen"
|
||||||
"$mainMod SHIFT, V, togglefloating"
|
"$mainMod SHIFT, V, togglefloating"
|
||||||
"$mainMod, D, exec, uwsm app -- rofi -show drun -run-command \"uwsm app -- {cmd}\""
|
"$mainMod, D, exec, uwsm app -- dms ipc call spotlight toggle"
|
||||||
"$mainMod, V, exec, uwsm app -- cliphist list | rofi -dmenu | cliphist decode | wl-copy"
|
"$mainMod, V, exec, uwsm app -- dms ipc call clipboard toggle"
|
||||||
"$mainMod, C, exec, bash -c 'FILE=/tmp/screenshot_$(date +%s).png; grim -g \"$(slurp)\" \"$FILE\" && ksnip \"$FILE\"'"
|
"$mainMod, C, exec, bash -c 'FILE=/tmp/screenshot_$(date +%s).png; grim -g \"$(slurp)\" \"$FILE\" && ksnip \"$FILE\"'"
|
||||||
"$mainMod SHIFT, S, exec, uwsm app -- rofi -show emoji"
|
"$mainMod SHIFT, S, exec, uwsm app -- rofi -show emoji"
|
||||||
"$mainMod, P, exec, uwsm app -- rofi-pass"
|
"$mainMod, P, exec, uwsm app -- rofi-pass"
|
||||||
"$mainMod SHIFT, P, pseudo"
|
"$mainMod SHIFT, P, pseudo"
|
||||||
"$mainMod, R, exec, stt-ptt start"
|
"$mainMod, R, exec, stt-ptt start"
|
||||||
"$mainMod, S, exec, stt-ptt start"
|
"$mainMod, S, exec, stt-ptt start"
|
||||||
"$mainMod, J, togglesplit"
|
# "$mainMod, J, togglesplit" # TODO
|
||||||
"$mainMod, h, movefocus, l"
|
"$mainMod, h, movefocus, l"
|
||||||
"$mainMod, l, movefocus, r"
|
"$mainMod, l, movefocus, r"
|
||||||
"$mainMod, k, movefocus, u"
|
"$mainMod, k, movefocus, u"
|
||||||
@@ -209,8 +210,6 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
bindr = [
|
bindr = [
|
||||||
"$mainMod, R, exec, stt-ptt stop"
|
|
||||||
"$mainMod, S, exec, stt-ptt format-stop"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
bindm = [
|
bindm = [
|
||||||
@@ -220,99 +219,99 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.hypridle = {
|
# services.hypridle = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
settings = {
|
# settings = {
|
||||||
general = {
|
# general = {
|
||||||
before_sleep_cmd = "hyprlock";
|
# before_sleep_cmd = "hyprlock";
|
||||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
# after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||||
inhibit_sleep = 3;
|
# inhibit_sleep = 3;
|
||||||
};
|
# };
|
||||||
listener = [
|
# listener = [
|
||||||
{
|
# {
|
||||||
timeout = 300;
|
# timeout = 300;
|
||||||
on-timeout = "hyprlock";
|
# on-timeout = "hyprlock";
|
||||||
}
|
# }
|
||||||
{
|
# {
|
||||||
timeout = 420;
|
# timeout = 420;
|
||||||
on-timeout = "hyprctl dispatch dpms off";
|
# on-timeout = "hyprctl dispatch dpms off";
|
||||||
on-resume = "hyprctl dispatch dpms on";
|
# on-resume = "hyprctl dispatch dpms on";
|
||||||
}
|
# }
|
||||||
];
|
# ];
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
|
|
||||||
services.hyprpaper.enable = true;
|
# services.hyprpaper.enable = true;
|
||||||
|
|
||||||
programs.hyprlock = {
|
# programs.hyprlock = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
settings = {
|
# settings = {
|
||||||
"$font" = "JetBrainsMono Nerd Font";
|
# "$font" = "JetBrainsMono Nerd Font";
|
||||||
"$base" = "rgb(${config.colorScheme.palette.base00})";
|
# "$base" = "rgb(${config.colorScheme.palette.base00})";
|
||||||
"$text" = "rgb(${config.colorScheme.palette.base05})";
|
# "$text" = "rgb(${config.colorScheme.palette.base05})";
|
||||||
"$textAlpha" = "${config.colorScheme.palette.base05}";
|
# "$textAlpha" = "${config.colorScheme.palette.base05}";
|
||||||
"$accentAlpha" = "${config.colorScheme.palette.base0D}";
|
# "$accentAlpha" = "${config.colorScheme.palette.base0D}";
|
||||||
"$red" = "rgb(${config.colorScheme.palette.base08})";
|
# "$red" = "rgb(${config.colorScheme.palette.base08})";
|
||||||
"$yellow" = "rgb(${config.colorScheme.palette.base0A})";
|
# "$yellow" = "rgb(${config.colorScheme.palette.base0A})";
|
||||||
|
|
||||||
general = {
|
# general = {
|
||||||
hide_cursor = true;
|
# hide_cursor = true;
|
||||||
};
|
# };
|
||||||
|
|
||||||
background = {
|
# background = {
|
||||||
monitor = "";
|
# monitor = "";
|
||||||
path = "${config.home.homeDirectory}/.config/hypr/wallpapers/wallhaven-lmmo8r.jpg";
|
# path = "${config.home.homeDirectory}/.config/hypr/wallpapers/wallhaven-lmmo8r.jpg";
|
||||||
blur_passes = 0;
|
# blur_passes = 0;
|
||||||
color = "rgb(${config.colorScheme.palette.base00})";
|
# color = "rgb(${config.colorScheme.palette.base00})";
|
||||||
};
|
# };
|
||||||
|
|
||||||
label = [
|
# label = [
|
||||||
{
|
# {
|
||||||
monitor = "";
|
# monitor = "";
|
||||||
text = "$TIME";
|
# text = "$TIME";
|
||||||
color = "$text";
|
# color = "$text";
|
||||||
font_size = 90;
|
# font_size = 90;
|
||||||
font_family = "$font";
|
# font_family = "$font";
|
||||||
position = "30, 0";
|
# position = "30, 0";
|
||||||
halign = "left";
|
# halign = "left";
|
||||||
valign = "top";
|
# valign = "top";
|
||||||
}
|
# }
|
||||||
{
|
# {
|
||||||
monitor = "";
|
# monitor = "";
|
||||||
text = ''cmd[update:43200000] echo "$(date +"%A, %d %B %Y")"'';
|
# text = ''cmd[update:43200000] echo "$(date +"%A, %d %B %Y")"'';
|
||||||
color = "$text";
|
# color = "$text";
|
||||||
font_size = 25;
|
# font_size = 25;
|
||||||
font_family = "$font";
|
# font_family = "$font";
|
||||||
position = "30, -150";
|
# position = "30, -150";
|
||||||
halign = "left";
|
# halign = "left";
|
||||||
valign = "top";
|
# valign = "top";
|
||||||
}
|
# }
|
||||||
];
|
# ];
|
||||||
|
|
||||||
input-field = [
|
# input-field = [
|
||||||
{
|
# {
|
||||||
monitor = "";
|
# monitor = "";
|
||||||
size = "300, 60";
|
# size = "300, 60";
|
||||||
outline_thickness = 4;
|
# outline_thickness = 4;
|
||||||
dots_size = 0.2;
|
# dots_size = 0.2;
|
||||||
dots_spacing = 0.2;
|
# dots_spacing = 0.2;
|
||||||
dots_center = true;
|
# dots_center = true;
|
||||||
outer_color = "rgb(${config.colorScheme.palette.base0D})";
|
# outer_color = "rgb(${config.colorScheme.palette.base0D})";
|
||||||
inner_color = "rgb(${config.colorScheme.palette.base00})";
|
# inner_color = "rgb(${config.colorScheme.palette.base00})";
|
||||||
font_color = "rgb(${config.colorScheme.palette.base05})";
|
# font_color = "rgb(${config.colorScheme.palette.base05})";
|
||||||
fade_on_empty = false;
|
# fade_on_empty = false;
|
||||||
placeholder_text = ''<span foreground="##${config.colorScheme.palette.base05}"> Logged in as <span foreground="##${config.colorScheme.palette.base0D}">$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;
|
# hide_input = false;
|
||||||
check_color = "rgb(${config.colorScheme.palette.base0D})";
|
# check_color = "rgb(${config.colorScheme.palette.base0D})";
|
||||||
fail_color = "rgb(${config.colorScheme.palette.base08})";
|
# fail_color = "rgb(${config.colorScheme.palette.base08})";
|
||||||
fail_text = ''<i>$FAIL <b>($ATTEMPTS)</b></i>'';
|
# fail_text = ''<i>$FAIL <b>($ATTEMPTS)</b></i>'';
|
||||||
capslock_color = "rgb(${config.colorScheme.palette.base0A})";
|
# capslock_color = "rgb(${config.colorScheme.palette.base0A})";
|
||||||
position = "0, -35";
|
# position = "0, -35";
|
||||||
halign = "center";
|
# halign = "center";
|
||||||
valign = "center";
|
# valign = "center";
|
||||||
}
|
# }
|
||||||
];
|
# ];
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{config, ...}: {
|
||||||
|
programs.agent-lib = {
|
||||||
|
enable = true;
|
||||||
|
lockFile = config."m3ta-home".paths.srcRoot + "/agent-sources.lock.json";
|
||||||
|
|
||||||
|
targets.pi.enable = true;
|
||||||
|
targets.opencode.enable = true;
|
||||||
|
|
||||||
|
profiles.default = {
|
||||||
|
sources = {
|
||||||
|
m3ta-agents = {
|
||||||
|
agents = {
|
||||||
|
all = true;
|
||||||
|
};
|
||||||
|
skills = {
|
||||||
|
all = true;
|
||||||
|
exclude = ["brainstorming" "pdf" "systematic-debugging" "xlsx"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
anthropic.skills = {
|
||||||
|
all = true;
|
||||||
|
exclude = ["skill-creator"];
|
||||||
|
};
|
||||||
|
basecamp.skills.all = true;
|
||||||
|
kestra.skills.all = true;
|
||||||
|
mattpocock.skills = {
|
||||||
|
all = true;
|
||||||
|
};
|
||||||
|
superpowers.skills = {
|
||||||
|
all = true;
|
||||||
|
};
|
||||||
|
vercel.skills.all = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
# AI agent system — OpenCode, Pi, and MCP server configuration.
|
# AI agent system — OpenCode, Pi, and MCP server configuration.
|
||||||
# Relies on coding.agents options provided by home/common/default.nix
|
# Relies on coding.agents options provided by home/common/default.nix
|
||||||
# (inputs.m3ta-nixpkgs.homeManagerModules.default).
|
# (m3taHomeInputs.m3ta-nixpkgs.homeManagerModules.default).
|
||||||
{
|
{
|
||||||
config,
|
m3taHomeInputs,
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
videoDrivers ? [],
|
videoDrivers ? [],
|
||||||
...
|
...
|
||||||
@@ -19,24 +17,14 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
# OpenCode and Pi agent configurations
|
# OpenCode, Pi, and Babysitter agent configurations
|
||||||
|
./agents-lib.nix
|
||||||
|
./babysitter.nix
|
||||||
./opencode.nix
|
./opencode.nix
|
||||||
./pi.nix
|
./pi.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
coding.agents.skills = {
|
coding.agents.babysitter.enable = true;
|
||||||
agentsInput = inputs.agents;
|
|
||||||
externalSkills = [
|
|
||||||
{
|
|
||||||
src = inputs.skills-anthropic;
|
|
||||||
selectSkills = ["pdf" "docx" "frontend-design"];
|
|
||||||
}
|
|
||||||
{src = inputs.skills-superpowers;}
|
|
||||||
{src = inputs.skills-vercel;}
|
|
||||||
{src = inputs.skills-basecamp;}
|
|
||||||
{src = inputs.skills-kestra;}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.mcp = {
|
programs.mcp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -66,12 +54,17 @@
|
|||||||
''exec bunx mcp-remote@latest https://mcp.honcho.dev --header "Authorization:Bearer $(cat /run/agenix/honcho-key)" --header "X-Honcho-User-Name:m3tam3re"''
|
''exec bunx mcp-remote@latest https://mcp.honcho.dev --header "Authorization:Bearer $(cat /run/agenix/honcho-key)" --header "X-Honcho-User-Name:m3tam3re"''
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
Playwright = {
|
||||||
|
command = "bash";
|
||||||
|
args = ["-c" "exec bunx @playwright/mcp@latest"];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
agenix-cli
|
agenix-cli
|
||||||
agent-browser
|
agent-browser
|
||||||
|
m3taHomeInputs.agent-lib.packages.${pkgs.stdenv.hostPlatform.system}.agent-lib-cli
|
||||||
beads
|
beads
|
||||||
pi-coding-agent
|
pi-coding-agent
|
||||||
(qmd.override {
|
(qmd.override {
|
||||||
@@ -81,5 +74,6 @@
|
|||||||
# opencode-desktop
|
# opencode-desktop
|
||||||
openshell
|
openshell
|
||||||
openspec
|
openspec
|
||||||
|
openwork
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,142 @@
|
|||||||
|
# Babysitter user profile for Pi/agent workflows.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.coding.agents.babysitter;
|
||||||
|
defaultTimestamp = "2026-05-29T00:00:00.000Z";
|
||||||
|
|
||||||
|
defaultUserProfile = {
|
||||||
|
name = config.home.username;
|
||||||
|
specialties = [
|
||||||
|
{
|
||||||
|
domain = "declarative-system-configuration";
|
||||||
|
subdomains = ["nix" "home-manager" "agents"];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
expertiseLevels = {};
|
||||||
|
goals = [
|
||||||
|
{
|
||||||
|
id = "goal-agents-declarative-profile";
|
||||||
|
description = "Keep Babysitter user preferences declarative and reproducible across systems.";
|
||||||
|
category = "agents";
|
||||||
|
priority = "medium";
|
||||||
|
status = "active";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
preferences = {
|
||||||
|
verbosity = "concise";
|
||||||
|
autonomyLevel = "semi-autonomous";
|
||||||
|
riskTolerance = "conservative";
|
||||||
|
};
|
||||||
|
toolPreferences = {
|
||||||
|
packageManagers = ["nix"];
|
||||||
|
languages = ["nix"];
|
||||||
|
operatingSystem = "nixos";
|
||||||
|
};
|
||||||
|
breakpointTolerance = {
|
||||||
|
global = "moderate";
|
||||||
|
skipBreakpointsForKnownPatterns = false;
|
||||||
|
alwaysBreakOn = ["destructive-operations" "secrets" "external-publication"];
|
||||||
|
};
|
||||||
|
communicationStyle = {
|
||||||
|
tone = "technical";
|
||||||
|
language = "en";
|
||||||
|
useEmojis = false;
|
||||||
|
explanationDepth = "brief";
|
||||||
|
preferredResponseFormat = "markdown";
|
||||||
|
};
|
||||||
|
experience = {};
|
||||||
|
installedPlugins = ["babysitter-pi"];
|
||||||
|
installedSkills = ["babysit" "call" "plan" "resume" "doctor" "yolo"];
|
||||||
|
installedAgents = [];
|
||||||
|
createdAt = defaultTimestamp;
|
||||||
|
updatedAt = defaultTimestamp;
|
||||||
|
version = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
effectiveProfile = lib.recursiveUpdate cfg.profile cfg.profileOverrides;
|
||||||
|
profileJsonTarget = "${cfg.profileDirectory}/user-profile.json";
|
||||||
|
profileMarkdownTarget = "${cfg.profileDirectory}/user-profile.md";
|
||||||
|
profilePreferences = effectiveProfile.preferences or {};
|
||||||
|
profileBreakpointTolerance = effectiveProfile.breakpointTolerance or {};
|
||||||
|
|
||||||
|
listMarkdown = values:
|
||||||
|
lib.concatMapStringsSep "\n" (value: "- ${toString value}") values;
|
||||||
|
|
||||||
|
specialtyDomains = map (specialty: specialty.domain or "unspecified") (effectiveProfile.specialties or []);
|
||||||
|
|
||||||
|
profileMarkdown = ''
|
||||||
|
# Babysitter User Profile
|
||||||
|
|
||||||
|
This file is generated by Home Manager from `coding.agents.babysitter`.
|
||||||
|
|
||||||
|
- Name: ${effectiveProfile.name or "unspecified"}
|
||||||
|
- Breakpoint tolerance: ${profileBreakpointTolerance.global or "unspecified"}
|
||||||
|
- Autonomy level: ${profilePreferences.autonomyLevel or "unspecified"}
|
||||||
|
- Risk tolerance: ${profilePreferences.riskTolerance or "unspecified"}
|
||||||
|
|
||||||
|
## Specialties
|
||||||
|
|
||||||
|
${listMarkdown specialtyDomains}
|
||||||
|
|
||||||
|
## Installed Babysitter Pi Skills
|
||||||
|
|
||||||
|
${listMarkdown (effectiveProfile.installedSkills or [])}
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
options.coding.agents.babysitter = {
|
||||||
|
enable = lib.mkEnableOption "Babysitter user profile for Pi/agent workflows";
|
||||||
|
|
||||||
|
profileDirectory = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = ".a5c";
|
||||||
|
description = ''
|
||||||
|
Home-relative directory where Babysitter reads the user profile.
|
||||||
|
Babysitter Pi documents the user profile at ~/.a5c/user-profile.json.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
profile = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.anything;
|
||||||
|
default = defaultUserProfile;
|
||||||
|
description = "Complete non-secret Babysitter user profile JSON.";
|
||||||
|
};
|
||||||
|
|
||||||
|
profileOverrides = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.anything;
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Recursive overrides merged into the default Babysitter user profile.
|
||||||
|
Keep this non-secret; the result is written into the Nix store.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.profileDirectory != "" && !lib.hasPrefix "/" cfg.profileDirectory;
|
||||||
|
message = "coding.agents.babysitter.profileDirectory must be a non-empty home-relative path.";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
assertion = effectiveProfile ? name && builtins.isString effectiveProfile.name;
|
||||||
|
message = "coding.agents.babysitter profile must include a string name.";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
assertion = effectiveProfile ? specialties && builtins.isList effectiveProfile.specialties;
|
||||||
|
message = "coding.agents.babysitter profile must include a specialties list.";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
assertion = effectiveProfile ? breakpointTolerance && effectiveProfile.breakpointTolerance ? global;
|
||||||
|
message = "coding.agents.babysitter profile must include breakpointTolerance.global.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
"${profileJsonTarget}".text = builtins.toJSON effectiveProfile + "\n";
|
||||||
|
"${profileMarkdownTarget}".text = profileMarkdown;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,13 +1,4 @@
|
|||||||
{
|
{lib, ...}: {
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
coding.agents.opencode = {
|
|
||||||
enable = true;
|
|
||||||
agentsInput = inputs.agents;
|
|
||||||
};
|
|
||||||
|
|
||||||
coding.opencode = {
|
coding.opencode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -236,12 +227,11 @@
|
|||||||
output = 64000;
|
output = 64000;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"claude-opus-4-6" = {
|
"claude-opus-4-8" = {
|
||||||
name = "Claude Opus 4.6";
|
name = "Claude Opus 4.8";
|
||||||
options = {
|
options = {
|
||||||
thinking = {
|
thinking = {
|
||||||
type = "enabled";
|
type = "adaptive";
|
||||||
budget_tokens = 16000;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
limit = {
|
limit = {
|
||||||
|
|||||||
@@ -1,39 +1,11 @@
|
|||||||
{inputs, ...}: {
|
{...}: {
|
||||||
coding.agents.pi = {
|
coding.agents.pi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
agentsInput = inputs.agents;
|
|
||||||
|
|
||||||
modelOverrides = {
|
|
||||||
chiron = "minimax/MiniMax-M2.7";
|
|
||||||
chiron-forge = "minimax/MiniMax-M2.7";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Coding rules for Pi agent
|
|
||||||
# Rules sourced from AGENTS repo
|
|
||||||
codingRules = {
|
|
||||||
# Language-specific rules
|
|
||||||
languages = [
|
|
||||||
"nix" # Nix language conventions
|
|
||||||
];
|
|
||||||
|
|
||||||
# Standard concerns from AGENTS repo
|
|
||||||
concerns = [
|
|
||||||
"coding-style" # General coding principles
|
|
||||||
"naming" # Naming conventions (camelCase, snake_case, etc.)
|
|
||||||
"documentation" # Documentation standards
|
|
||||||
"testing" # Testing guidelines (Arrange-Act-Assert)
|
|
||||||
"git-workflow" # Conventional commits, branch naming
|
|
||||||
"git-identity" # Git identity configuration for agents
|
|
||||||
"project-structure" # Project layout conventions
|
|
||||||
];
|
|
||||||
|
|
||||||
# No framework-specific rules for NixOS config
|
|
||||||
frameworks = [];
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
packages = [
|
packages = [
|
||||||
"npm:@dreadedzombie/pi-init"
|
"npm:@dreadedzombie/pi-init"
|
||||||
|
"git:github.com/a5c-ai/babysitter-pi"
|
||||||
"npm:@plannotator/pi-extension"
|
"npm:@plannotator/pi-extension"
|
||||||
"npm:@thesethrose/pi-zai-provider"
|
"npm:@thesethrose/pi-zai-provider"
|
||||||
"npm:pi-agent-browser-native"
|
"npm:pi-agent-browser-native"
|
||||||
@@ -49,8 +21,8 @@
|
|||||||
"git:github.com/hk-vk/pi-connect"
|
"git:github.com/hk-vk/pi-connect"
|
||||||
];
|
];
|
||||||
|
|
||||||
defaultProvider = "minimax";
|
defaultProvider = "openai-codex";
|
||||||
defaultModel = "MiniMax-M2.7";
|
defaultModel = "gpt-5.5";
|
||||||
defaultThinkingLevel = "high";
|
defaultThinkingLevel = "high";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -59,7 +31,7 @@
|
|||||||
# NOTE: Local project .pi/extensions/guardrails.json can override same rule IDs.
|
# NOTE: Local project .pi/extensions/guardrails.json can override same rule IDs.
|
||||||
# For immutable global policies, consider a wrapper or upstream patch.
|
# For immutable global policies, consider a wrapper or upstream patch.
|
||||||
guardrails = {
|
guardrails = {
|
||||||
enable = true;
|
enable = false;
|
||||||
config = {
|
config = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
applyBuiltinDefaults = true;
|
applyBuiltinDefaults = true;
|
||||||
|
|||||||
@@ -9,5 +9,6 @@
|
|||||||
jq
|
jq
|
||||||
ripgrep
|
ripgrep
|
||||||
tree
|
tree
|
||||||
|
worktrunk
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,122 +44,107 @@
|
|||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableDefaultConfig = false;
|
enableDefaultConfig = false;
|
||||||
matchBlocks = {
|
settings = {
|
||||||
"github.com" = {
|
"github.com" = {
|
||||||
hostname = "github.com";
|
HostName = "github.com";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
port = 22;
|
Port = 22;
|
||||||
identityFile = "~/.ssh/github";
|
IdentityFile = "~/.ssh/github";
|
||||||
};
|
};
|
||||||
"code.m3ta.dev" = {
|
"code.m3ta.dev" = {
|
||||||
hostname = "code.m3ta.dev";
|
HostName = "code.m3ta.dev";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/gitea";
|
IdentityFile = "~/.ssh/gitea";
|
||||||
};
|
|
||||||
"nikhil" = {
|
|
||||||
hostname = "91.99.176.80";
|
|
||||||
user = "nikhilmaddirala";
|
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
|
||||||
};
|
};
|
||||||
"lkk-nix-1" = {
|
"lkk-nix-1" = {
|
||||||
hostname = "89.58.10.189";
|
HostName = "89.58.10.189";
|
||||||
user = "lkk-admin";
|
User = "lkk-admin";
|
||||||
identityFile = "~/.ssh/lkk-admin";
|
IdentityFile = "~/.ssh/lkk-admin";
|
||||||
};
|
};
|
||||||
"m3-r1" = {
|
"m3-r1" = {
|
||||||
hostname = "202.61.226.110";
|
HostName = "202.61.226.110";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
|
||||||
"lkk-prod-test" = {
|
|
||||||
hostname = "192.168.122.215";
|
|
||||||
user = "root";
|
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
|
||||||
};
|
|
||||||
"lkk-prod-1" = {
|
|
||||||
hostname = "192.168.0.24";
|
|
||||||
user = "root";
|
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
|
||||||
};
|
|
||||||
"lkk-prod-2" = {
|
|
||||||
hostname = "192.168.0.20";
|
|
||||||
user = "root";
|
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
|
||||||
};
|
};
|
||||||
"m3-deck" = {
|
"m3-deck" = {
|
||||||
hostname = "192.168.178.193";
|
HostName = "192.168.178.193";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"m3-kratos-vm" = {
|
"m3-kratos-vm" = {
|
||||||
hostname = "192.168.122.43";
|
HostName = "192.168.122.43";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"m3-helios" = {
|
"m3-helios" = {
|
||||||
hostname = "192.168.178.210";
|
HostName = "192.168.178.210";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"m3-ares" = {
|
"m3-ares" = {
|
||||||
hostname = "192.168.1.30";
|
HostName = "192.168.1.30";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"m3-atlas" = {
|
"m3-atlas" = {
|
||||||
hostname = "152.53.85.162";
|
HostName = "152.53.85.162";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"m3-hermes" = {
|
"m3-hermes" = {
|
||||||
hostname = "204.168.229.93";
|
HostName = "204.168.229.93";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
|
};
|
||||||
|
"hermes" = {
|
||||||
|
HostName = "46.224.0.92";
|
||||||
|
User = "admin";
|
||||||
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"m3-zelda" = {
|
"m3-zelda" = {
|
||||||
hostname = "95.217.189.186";
|
HostName = "95.217.189.186";
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"m3-skynet" = {
|
"m3-skynet" = {
|
||||||
hostname = "m3-skynet";
|
HostName = "m3-skynet";
|
||||||
user = "admin";
|
User = "admin";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"m3-prox-1" = {
|
"m3-prox-1" = {
|
||||||
hostname = "192.168.1.110";
|
HostName = "192.168.1.110";
|
||||||
user = "root";
|
User = "root";
|
||||||
identityFile = "~/.ssh/m3tam3re";
|
IdentityFile = "~/.ssh/m3tam3re";
|
||||||
};
|
};
|
||||||
"shp-old" = {
|
"shp-old" = {
|
||||||
hostname = "95.217.3.250";
|
HostName = "95.217.3.250";
|
||||||
port = 2222;
|
Port = 2222;
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/self-host-playbook";
|
IdentityFile = "~/.ssh/self-host-playbook";
|
||||||
};
|
};
|
||||||
"shp-1" = {
|
"shp-1" = {
|
||||||
hostname = "95.217.189.186";
|
HostName = "95.217.189.186";
|
||||||
port = 2222;
|
Port = 2222;
|
||||||
user = "m3tam3re";
|
User = "m3tam3re";
|
||||||
identityFile = "~/.ssh/self-host-playbook";
|
IdentityFile = "~/.ssh/self-host-playbook";
|
||||||
};
|
};
|
||||||
"AZ-CLD-1" = {
|
"AZ-CLD-1" = {
|
||||||
hostname = "152.53.186.119";
|
HostName = "152.53.186.119";
|
||||||
user = "sascha.koenig";
|
User = "sascha.koenig";
|
||||||
port = 2022;
|
Port = 2022;
|
||||||
identityFile = "~/.ssh/sascha.koenig";
|
IdentityFile = "~/.ssh/sascha.koenig";
|
||||||
};
|
};
|
||||||
"AZ-PRM-1" = {
|
"AZ-PRM-1" = {
|
||||||
hostname = "192.168.152.76";
|
HostName = "192.168.152.76";
|
||||||
user = "sascha.koenig";
|
User = "sascha.koenig";
|
||||||
port = 2022;
|
Port = 2022;
|
||||||
identityFile = "~/.ssh/sascha.koenig";
|
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;
|
||||||
user = "sascha.koenig";
|
User = "sascha.koenig";
|
||||||
identityFile = "~/.ssh/sascha.koenig";
|
IdentityFile = "~/.ssh/sascha.koenig";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user