Compare commits
38
Commits
9cd60383f8
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a67324c6d | ||
|
|
c90f5a5857 | ||
|
|
69082a07f2 | ||
|
|
d2b39a3f2d | ||
|
|
de16245929 | ||
|
|
b01084482f | ||
|
|
66b1dc72f5 | ||
|
|
0db970c161 | ||
|
|
516f9d74e0 | ||
|
|
7926491466 | ||
|
|
a9cf13abd4 | ||
|
|
4dec87ebc7 | ||
|
|
53de70bf4f | ||
|
|
206ee46d4f | ||
|
|
4ac8d6fb9a | ||
|
|
a22ff06004 | ||
|
|
acbf02c3e1 | ||
|
|
128391afb2 | ||
|
|
92244b5f02 | ||
|
|
7b3ef4a2c3 | ||
|
|
2aac223e77 | ||
|
|
5e26e13aa7 | ||
|
|
017bf5002e | ||
|
|
c85600a3b0 | ||
|
|
32fdaddf7c | ||
|
|
99753e18df | ||
|
|
10876be5e6 | ||
|
|
93cecb1a53 | ||
|
|
192b5df938 | ||
|
|
47fbdaaa37 | ||
|
|
ed976b0e9e | ||
|
|
671ad7bb8f | ||
|
|
013f031a56 | ||
|
|
9f44404d94 | ||
|
|
2f4c5c8cba | ||
|
|
7febc62f50 | ||
|
|
6c9d082e41 | ||
|
|
a42c196840 |
+346
-57
@@ -533,6 +533,17 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/changelog"
|
"path": "skills/changelog"
|
||||||
},
|
},
|
||||||
|
"crunch-jobs": {
|
||||||
|
"entry": "skills/crunch-jobs/SKILL.md",
|
||||||
|
"licenseFiles": [],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Use when: (1) The user asks to be reminded at a specific time, (2) Schedule recurring notifications, (3) Set up AI-powered scheduled jobs (summarize, review, report), (4) Run custom pipeline scripts on a schedule with voice output. Triggers: remind me, erinnere mich, schedule, cron, daily, weekly, täglich, jeden Montag, crunch, talk at, notify me at, voice reminder.",
|
||||||
|
"name": "crunch-jobs",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/crunch-jobs"
|
||||||
|
},
|
||||||
"doc-translator": {
|
"doc-translator": {
|
||||||
"entry": "skills/doc-translator/SKILL.md",
|
"entry": "skills/doc-translator/SKILL.md",
|
||||||
"licenseFiles": [],
|
"licenseFiles": [],
|
||||||
@@ -555,6 +566,17 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/excalidraw"
|
"path": "skills/excalidraw"
|
||||||
},
|
},
|
||||||
|
"m3ta-brain": {
|
||||||
|
"entry": "skills/m3ta-brain/SKILL.md",
|
||||||
|
"licenseFiles": [],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Shared Obsidian vault for human-agent collaboration. Use when: (1) Loading project context at session start (auto-recall), (2) Writing session summaries, decisions, project updates, or learning notes, (3) Searching for past decisions or project state, (4) Running nightly/weekly digest passes, (5) Creating or updating person profiles, (6) Any reference to 'the vault', 'shared brain', 'our context', 'what did we decide'. Triggers: m3ta-brain, shared brain, vault, session summary, decision note, project update, memory candidate, brain vault, auto-recall, digest, nightly pass.",
|
||||||
|
"name": "m3ta-brain",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/m3ta-brain"
|
||||||
|
},
|
||||||
"mem0-memory": {
|
"mem0-memory": {
|
||||||
"entry": "skills/mem0-memory/SKILL.md",
|
"entry": "skills/mem0-memory/SKILL.md",
|
||||||
"licenseFiles": [],
|
"licenseFiles": [],
|
||||||
@@ -643,6 +665,17 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/reflection"
|
"path": "skills/reflection"
|
||||||
},
|
},
|
||||||
|
"shared-brain-vault": {
|
||||||
|
"entry": "skills/shared-brain-vault/SKILL.md",
|
||||||
|
"licenseFiles": [],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Build and maintain a Git-synced Obsidian vault as shared working memory between user and AI agents. Use when: (1) Writing session summaries or project updates, (2) Recording decisions or learnings, (3) Adding people/profiles to the vault, (4) Populating or restructuring the vault, (5) Setting up multi-agent vault access, (6) Answering 'what did we decide' or 'where do we stand on X'. Triggers: 'shared brain', 'm3ta-brain', 'session summary', 'vault update', 'decision note', 'project status', 'what did we decide'.",
|
||||||
|
"name": "shared-brain-vault",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/shared-brain-vault"
|
||||||
|
},
|
||||||
"skill-creator": {
|
"skill-creator": {
|
||||||
"entry": "skills/skill-creator/SKILL.md",
|
"entry": "skills/skill-creator/SKILL.md",
|
||||||
"licenseFiles": [],
|
"licenseFiles": [],
|
||||||
@@ -665,6 +698,17 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/systematic-debugging"
|
"path": "skills/systematic-debugging"
|
||||||
},
|
},
|
||||||
|
"voice-notify": {
|
||||||
|
"entry": "skills/voice-notify/SKILL.md",
|
||||||
|
"licenseFiles": [],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Use when: (1) A long-running task (build, test, migration, cruncher job) completes, (2) The user asks to be notified audibly, (3) An agent finishes delegated work and should announce results, (4) Important errors or completions need immediate attention. Triggers: talk, voice, notify, audio, abbrechen, notify me, let me know when done, cruncher, job complete.",
|
||||||
|
"name": "voice-notify",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/voice-notify"
|
||||||
|
},
|
||||||
"xlsx": {
|
"xlsx": {
|
||||||
"entry": "skills/xlsx/SKILL.md",
|
"entry": "skills/xlsx/SKILL.md",
|
||||||
"licenseFiles": [],
|
"licenseFiles": [],
|
||||||
@@ -679,9 +723,9 @@
|
|||||||
},
|
},
|
||||||
"tools": {}
|
"tools": {}
|
||||||
},
|
},
|
||||||
"narHash": "sha256:640f5c15e9124526564a5438952c3231d9fa3cbab6a4e6b1cecdf4cd280c7847",
|
"narHash": "sha256:c119e6197eb556c9c00a13a88d2e8f42d740c724262b2b0e2ac6fb05456fe621",
|
||||||
"ref": null,
|
"ref": null,
|
||||||
"rev": "920c00313ae242bd93275c30131b9ab1e52ee2fb",
|
"rev": "83284d752d2ac325d4bf3ab7b38acad1c2fffe3a",
|
||||||
"root": ".",
|
"root": ".",
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://code.m3ta.dev/m3tam3re/AGENTS",
|
"url": "https://code.m3ta.dev/m3tam3re/AGENTS",
|
||||||
@@ -726,18 +770,70 @@
|
|||||||
"agents": {},
|
"agents": {},
|
||||||
"prompts": {},
|
"prompts": {},
|
||||||
"skills": {
|
"skills": {
|
||||||
"caveman": {
|
"ask-matt": {
|
||||||
"entry": "skills/productivity/caveman/SKILL.md",
|
"entry": "skills/engineering/ask-matt/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": ">",
|
"description": "Ask which skill or flow fits your situation. A router over the skills in this repo.",
|
||||||
"name": "caveman",
|
"name": "ask-matt",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/productivity/caveman"
|
"path": "skills/engineering/ask-matt"
|
||||||
|
},
|
||||||
|
"batch-grill-me": {
|
||||||
|
"entry": "skills/in-progress/batch-grill-me/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "A relentless interview that asks every frontier question at once, round by round.",
|
||||||
|
"name": "batch-grill-me",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/in-progress/batch-grill-me"
|
||||||
|
},
|
||||||
|
"claude-handoff": {
|
||||||
|
"entry": "skills/in-progress/claude-handoff/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Hand the current conversation off to a fresh background agent that picks up the work immediately.",
|
||||||
|
"name": "claude-handoff",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/in-progress/claude-handoff"
|
||||||
|
},
|
||||||
|
"code-review": {
|
||||||
|
"entry": "skills/engineering/code-review/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/PRD asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to \"review since X\".",
|
||||||
|
"name": "code-review",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/engineering/code-review"
|
||||||
|
},
|
||||||
|
"codebase-design": {
|
||||||
|
"entry": "skills/engineering/codebase-design/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.",
|
||||||
|
"name": "codebase-design",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/engineering/codebase-design"
|
||||||
},
|
},
|
||||||
"design-an-interface": {
|
"design-an-interface": {
|
||||||
"entry": "skills/deprecated/design-an-interface/SKILL.md",
|
"entry": "skills/deprecated/design-an-interface/SKILL.md",
|
||||||
@@ -752,18 +848,31 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/deprecated/design-an-interface"
|
"path": "skills/deprecated/design-an-interface"
|
||||||
},
|
},
|
||||||
"diagnose": {
|
"diagnosing-bugs": {
|
||||||
"entry": "skills/engineering/diagnose/SKILL.md",
|
"entry": "skills/engineering/diagnosing-bugs/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says \"diagnose this\" / \"debug this\", reports a bug, says something is broken/throwing/failing, or describes a performance regression.",
|
"description": "Diagnosis loop for hard bugs and performance regressions. Use when the user says \"diagnose\"/\"debug this\", or reports something broken/throwing/failing/slow.",
|
||||||
"name": "diagnose",
|
"name": "diagnosing-bugs",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/engineering/diagnose"
|
"path": "skills/engineering/diagnosing-bugs"
|
||||||
|
},
|
||||||
|
"domain-modeling": {
|
||||||
|
"entry": "skills/engineering/domain-modeling/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Build and sharpen a project's domain model. Use when the user wants to pin down domain terminology or a ubiquitous language, record an architectural decision, or when another skill needs to maintain the domain model.",
|
||||||
|
"name": "domain-modeling",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/engineering/domain-modeling"
|
||||||
},
|
},
|
||||||
"edit-article": {
|
"edit-article": {
|
||||||
"entry": "skills/personal/edit-article/SKILL.md",
|
"entry": "skills/personal/edit-article/SKILL.md",
|
||||||
@@ -797,7 +906,7 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".",
|
"description": "A relentless interview to sharpen a plan or design.",
|
||||||
"name": "grill-me",
|
"name": "grill-me",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -810,13 +919,26 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.",
|
"description": "A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.",
|
||||||
"name": "grill-with-docs",
|
"name": "grill-with-docs",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/engineering/grill-with-docs"
|
"path": "skills/engineering/grill-with-docs"
|
||||||
},
|
},
|
||||||
|
"grilling": {
|
||||||
|
"entry": "skills/productivity/grilling/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.",
|
||||||
|
"name": "grilling",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/productivity/grilling"
|
||||||
|
},
|
||||||
"handoff": {
|
"handoff": {
|
||||||
"entry": "skills/productivity/handoff/SKILL.md",
|
"entry": "skills/productivity/handoff/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
@@ -830,19 +952,45 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/productivity/handoff"
|
"path": "skills/productivity/handoff"
|
||||||
},
|
},
|
||||||
|
"implement": {
|
||||||
|
"entry": "skills/engineering/implement/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Implement a piece of work based on a spec or set of tickets.",
|
||||||
|
"name": "implement",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/engineering/implement"
|
||||||
|
},
|
||||||
"improve-codebase-architecture": {
|
"improve-codebase-architecture": {
|
||||||
"entry": "skills/engineering/improve-codebase-architecture/SKILL.md",
|
"entry": "skills/engineering/improve-codebase-architecture/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.",
|
"description": "Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.",
|
||||||
"name": "improve-codebase-architecture",
|
"name": "improve-codebase-architecture",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/engineering/improve-codebase-architecture"
|
"path": "skills/engineering/improve-codebase-architecture"
|
||||||
},
|
},
|
||||||
|
"loop-me": {
|
||||||
|
"entry": "skills/in-progress/loop-me/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Grill me about specs for the workflows I want to build, within this workspace.",
|
||||||
|
"name": "loop-me",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/in-progress/loop-me"
|
||||||
|
},
|
||||||
"migrate-to-shoehorn": {
|
"migrate-to-shoehorn": {
|
||||||
"entry": "skills/misc/migrate-to-shoehorn/SKILL.md",
|
"entry": "skills/misc/migrate-to-shoehorn/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
@@ -875,7 +1023,7 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Build a throwaway prototype to flesh out a design before committing to it. Routes between two branches — a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route. Use when the user wants to prototype, sanity-check a data model or state machine, mock up a UI, explore design options, or says \"prototype this\", \"let me play with it\", \"try a few designs\".",
|
"description": "Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.",
|
||||||
"name": "prototype",
|
"name": "prototype",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -908,18 +1056,31 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/deprecated/request-refactor-plan"
|
"path": "skills/deprecated/request-refactor-plan"
|
||||||
},
|
},
|
||||||
"review": {
|
"research": {
|
||||||
"entry": "skills/in-progress/review/SKILL.md",
|
"entry": "skills/engineering/research/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/PRD asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to \"review since X\".",
|
"description": "Investigate a question against high-trust primary sources and capture the findings as a Markdown file in the repo. Use when the user wants a topic researched, docs or API facts gathered, or reading legwork delegated to a background agent.",
|
||||||
"name": "review",
|
"name": "research",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/in-progress/review"
|
"path": "skills/engineering/research"
|
||||||
|
},
|
||||||
|
"resolving-merge-conflicts": {
|
||||||
|
"entry": "skills/engineering/resolving-merge-conflicts/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Use when you need to resolve an in-progress git merge/rebase conflict.",
|
||||||
|
"name": "resolving-merge-conflicts",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/engineering/resolving-merge-conflicts"
|
||||||
},
|
},
|
||||||
"scaffold-exercises": {
|
"scaffold-exercises": {
|
||||||
"entry": "skills/misc/scaffold-exercises/SKILL.md",
|
"entry": "skills/misc/scaffold-exercises/SKILL.md",
|
||||||
@@ -940,7 +1101,7 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub or local markdown), triage label vocabulary, and domain doc layout. Run before first use of `to-issues`, `to-prd`, `triage`, `diagnose`, `tdd`, `improve-codebase-architecture`, or `zoom-out` — or if those skills appear to be missing context about the issue tracker, triage labels, or domain docs.",
|
"description": "Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.",
|
||||||
"name": "setup-matt-pocock-skills",
|
"name": "setup-matt-pocock-skills",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -960,13 +1121,26 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/misc/setup-pre-commit"
|
"path": "skills/misc/setup-pre-commit"
|
||||||
},
|
},
|
||||||
|
"setup-ts-deep-modules": {
|
||||||
|
"entry": "skills/in-progress/setup-ts-deep-modules/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.",
|
||||||
|
"name": "setup-ts-deep-modules",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/in-progress/setup-ts-deep-modules"
|
||||||
|
},
|
||||||
"tdd": {
|
"tdd": {
|
||||||
"entry": "skills/engineering/tdd/SKILL.md",
|
"entry": "skills/engineering/tdd/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions \"red-green-refactor\", wants integration tests, or asks for test-first development.",
|
"description": "Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions \"red-green-refactor\", or wants integration tests.",
|
||||||
"name": "tdd",
|
"name": "tdd",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -986,31 +1160,44 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/productivity/teach"
|
"path": "skills/productivity/teach"
|
||||||
},
|
},
|
||||||
"to-issues": {
|
"to-questionnaire": {
|
||||||
"entry": "skills/engineering/to-issues/SKILL.md",
|
"entry": "skills/in-progress/to-questionnaire/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Break a plan, spec, or PRD into independently-grabbable issues on the project issue tracker using tracer-bullet vertical slices. Use when user wants to convert a plan into issues, create implementation tickets, or break down work into issues.",
|
"description": "Turn a decision you can't fully answer into a questionnaire for someone else to fill in.",
|
||||||
"name": "to-issues",
|
"name": "to-questionnaire",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/engineering/to-issues"
|
"path": "skills/in-progress/to-questionnaire"
|
||||||
},
|
},
|
||||||
"to-prd": {
|
"to-spec": {
|
||||||
"entry": "skills/engineering/to-prd/SKILL.md",
|
"entry": "skills/engineering/to-spec/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Turn the current conversation context into a PRD and publish it to the project issue tracker. Use when user wants to create a PRD from the current context.",
|
"description": "Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.",
|
||||||
"name": "to-prd",
|
"name": "to-spec",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/engineering/to-prd"
|
"path": "skills/engineering/to-spec"
|
||||||
|
},
|
||||||
|
"to-tickets": {
|
||||||
|
"entry": "skills/engineering/to-tickets/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — edges as text in one file per ticket locally, or native blocking links on a real tracker.",
|
||||||
|
"name": "to-tickets",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/engineering/to-tickets"
|
||||||
},
|
},
|
||||||
"triage": {
|
"triage": {
|
||||||
"entry": "skills/engineering/triage/SKILL.md",
|
"entry": "skills/engineering/triage/SKILL.md",
|
||||||
@@ -1018,7 +1205,7 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Triage issues through a state machine driven by triage roles. Use when user wants to create an issue, triage issues, review incoming bugs or feature requests, prepare issues for an AFK agent, or manage issue workflow.",
|
"description": "Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs.",
|
||||||
"name": "triage",
|
"name": "triage",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -1038,18 +1225,31 @@
|
|||||||
},
|
},
|
||||||
"path": "skills/deprecated/ubiquitous-language"
|
"path": "skills/deprecated/ubiquitous-language"
|
||||||
},
|
},
|
||||||
"write-a-skill": {
|
"wayfinder": {
|
||||||
"entry": "skills/productivity/write-a-skill/SKILL.md",
|
"entry": "skills/engineering/wayfinder/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.",
|
"description": "Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.",
|
||||||
"name": "write-a-skill",
|
"name": "wayfinder",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/productivity/write-a-skill"
|
"path": "skills/engineering/wayfinder"
|
||||||
|
},
|
||||||
|
"wizard": {
|
||||||
|
"entry": "skills/in-progress/wizard/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Generate an interactive bash wizard that walks a human through a manual procedure — third-party setup, a one-off migration, an A→B state transition — opening URLs, capturing values, confirming each step, and writing .env files and GitHub Actions secrets.",
|
||||||
|
"name": "wizard",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/in-progress/wizard"
|
||||||
},
|
},
|
||||||
"writing-beats": {
|
"writing-beats": {
|
||||||
"entry": "skills/in-progress/writing-beats/SKILL.md",
|
"entry": "skills/in-progress/writing-beats/SKILL.md",
|
||||||
@@ -1057,7 +1257,7 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.",
|
"description": "Writing, exploit — assemble raw material into a journey of beats, grounding each term before a beat leans on it.",
|
||||||
"name": "writing-beats",
|
"name": "writing-beats",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -1070,50 +1270,139 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Grilling session that mines the user for fragments — heterogeneous nuggets of writing (claims, vignettes, sharp sentences, half-thoughts) — and appends them to a single document as raw material for a future article. Use when the user wants to develop ideas before imposing structure, or mentions \"fragments\", \"ideate\", or \"raw material\" for writing.",
|
"description": "Writing, explore — mine raw fragments, no structure yet.",
|
||||||
"name": "writing-fragments",
|
"name": "writing-fragments",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/in-progress/writing-fragments"
|
"path": "skills/in-progress/writing-fragments"
|
||||||
},
|
},
|
||||||
|
"writing-great-skills": {
|
||||||
|
"entry": "skills/productivity/writing-great-skills/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Reference for writing and editing skills well — the vocabulary and principles that make a skill predictable.",
|
||||||
|
"name": "writing-great-skills",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/productivity/writing-great-skills"
|
||||||
|
},
|
||||||
"writing-shape": {
|
"writing-shape": {
|
||||||
"entry": "skills/in-progress/writing-shape/SKILL.md",
|
"entry": "skills/in-progress/writing-shape/SKILL.md",
|
||||||
"licenseFiles": [
|
"licenseFiles": [
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.",
|
"description": "Writing, exploit — shape raw material into an article, paragraph by paragraph.",
|
||||||
"name": "writing-shape",
|
"name": "writing-shape",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"path": "skills/in-progress/writing-shape"
|
"path": "skills/in-progress/writing-shape"
|
||||||
},
|
|
||||||
"zoom-out": {
|
|
||||||
"entry": "skills/engineering/zoom-out/SKILL.md",
|
|
||||||
"licenseFiles": [
|
|
||||||
"LICENSE"
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"description": "Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.",
|
|
||||||
"name": "zoom-out",
|
|
||||||
"requires": [],
|
|
||||||
"tags": []
|
|
||||||
},
|
|
||||||
"path": "skills/engineering/zoom-out"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tools": {}
|
"tools": {}
|
||||||
},
|
},
|
||||||
"narHash": "sha256:f0f009c64fe1572fbfade479e4829f2fd4499f703e7110c1387a5e05bfe00b9e",
|
"narHash": "sha256:51778614e8086c70f3382b8076425f1a6c9edaa6f926e0771e21d10315d2f118",
|
||||||
"ref": null,
|
"ref": null,
|
||||||
"rev": "694fa30311e02c2639942308513555e61ee84a6f",
|
"rev": "ed37663cc5fbef691ddfecd080dff42f7e7e350d",
|
||||||
"root": ".",
|
"root": ".",
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/mattpocock/skills",
|
"url": "https://github.com/mattpocock/skills",
|
||||||
"warnings": []
|
"warnings": []
|
||||||
},
|
},
|
||||||
|
"okf": {
|
||||||
|
"discovery": {
|
||||||
|
"agents": {
|
||||||
|
"include": [
|
||||||
|
"**/AGENT.md"
|
||||||
|
],
|
||||||
|
"paths": [
|
||||||
|
"agents"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"prompts": {
|
||||||
|
"include": [
|
||||||
|
"**/PROMPT.md"
|
||||||
|
],
|
||||||
|
"paths": [
|
||||||
|
"prompts"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"skills": {
|
||||||
|
"include": [
|
||||||
|
"**/SKILL.md"
|
||||||
|
],
|
||||||
|
"paths": [
|
||||||
|
"skills"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tools": {
|
||||||
|
"include": [
|
||||||
|
"**/TOOL.md"
|
||||||
|
],
|
||||||
|
"paths": [
|
||||||
|
"tools"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"items": {
|
||||||
|
"agents": {},
|
||||||
|
"prompts": {},
|
||||||
|
"skills": {
|
||||||
|
"okf": {
|
||||||
|
"entry": "skills/okf/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": ">-",
|
||||||
|
"name": "okf",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/okf"
|
||||||
|
},
|
||||||
|
"validate": {
|
||||||
|
"entry": "skills/validate/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": ">-",
|
||||||
|
"name": "validate",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/validate"
|
||||||
|
},
|
||||||
|
"visualize": {
|
||||||
|
"entry": "skills/visualize/SKILL.md",
|
||||||
|
"licenseFiles": [
|
||||||
|
"LICENSE"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"description": ">-",
|
||||||
|
"name": "visualize",
|
||||||
|
"requires": [],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"path": "skills/visualize"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tools": {}
|
||||||
|
},
|
||||||
|
"narHash": "sha256:7491a95f121a0e5d045381113955252bd6d401009fe2b9b27752f3caeeb6682e",
|
||||||
|
"ref": null,
|
||||||
|
"rev": "cb5c0a9973c81ea3702f677e0b8852d93b47be80",
|
||||||
|
"root": ".",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/scaccogatto/okf-skills",
|
||||||
|
"warnings": []
|
||||||
|
},
|
||||||
"superpowers": {
|
"superpowers": {
|
||||||
"discovery": {
|
"discovery": {
|
||||||
"agents": {
|
"agents": {
|
||||||
|
|||||||
Generated
+101
-70
@@ -46,11 +46,11 @@
|
|||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780133320,
|
"lastModified": 1783016143,
|
||||||
"narHash": "sha256-8AiN9tV9PBb5xblJiPlhumBbKj61qLjzqXXFtkj3vvY=",
|
"narHash": "sha256-3qejDAo4g2XfzTyWCaX8RVKH17JXnw/fujsbXQA+Mzc=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "920c00313ae242bd93275c30131b9ab1e52ee2fb",
|
"rev": "83284d752d2ac325d4bf3ab7b38acad1c2fffe3a",
|
||||||
"revCount": 88,
|
"revCount": 98,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS"
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS"
|
||||||
},
|
},
|
||||||
@@ -62,11 +62,11 @@
|
|||||||
"agents_2": {
|
"agents_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780133320,
|
"lastModified": 1783016143,
|
||||||
"narHash": "sha256-8AiN9tV9PBb5xblJiPlhumBbKj61qLjzqXXFtkj3vvY=",
|
"narHash": "sha256-3qejDAo4g2XfzTyWCaX8RVKH17JXnw/fujsbXQA+Mzc=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "920c00313ae242bd93275c30131b9ab1e52ee2fb",
|
"rev": "83284d752d2ac325d4bf3ab7b38acad1c2fffe3a",
|
||||||
"revCount": 88,
|
"revCount": 98,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://code.m3ta.dev/m3tam3re/AGENTS"
|
"url": "https://code.m3ta.dev/m3tam3re/AGENTS"
|
||||||
},
|
},
|
||||||
@@ -99,16 +99,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774505501,
|
"lastModified": 1785348116,
|
||||||
"narHash": "sha256-7UiRrDptj7yuEFwToOfdunUMz/i3jRLR7CmMoYQjq6k=",
|
"narHash": "sha256-AVycTcomtfvQJ/AHvMg5xu7lVoOzDXxjN+pV7mqUIQ4=",
|
||||||
"owner": "basecamp",
|
"owner": "basecamp",
|
||||||
"repo": "basecamp-cli",
|
"repo": "basecamp-cli",
|
||||||
"rev": "f087e6ef84002503d0dbc75ea1c8c928a8928d9e",
|
"rev": "e1059fb123a03295ce6176272e4bbaf43d7971c6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "basecamp",
|
"owner": "basecamp",
|
||||||
"ref": "v0.7.2",
|
"ref": "v0.8.0-rc.1",
|
||||||
"repo": "basecamp-cli",
|
"repo": "basecamp-cli",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -137,17 +137,17 @@
|
|||||||
},
|
},
|
||||||
"dms": {
|
"dms": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"quickshell": "quickshell"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777431599,
|
"lastModified": 1785111455,
|
||||||
"narHash": "sha256-g6r/Gx8PTDzO3jCNzzySA+Ff1lmLF9nDlMCNyyoQjoE=",
|
"narHash": "sha256-aTNuC9NDBnYAeEtFsleeUwmGX3AZlKOutbl+LQRPkmQ=",
|
||||||
"owner": "AvengeMedia",
|
"owner": "AvengeMedia",
|
||||||
"repo": "DankMaterialShell",
|
"repo": "DankMaterialShell",
|
||||||
"rev": "eb5afcdc40ea5446c27e18552ff4a19f9daf9484",
|
"rev": "069ddab041c738236a8910e4c39b65d9628d3018",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -164,11 +164,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781317940,
|
"lastModified": 1785375021,
|
||||||
"narHash": "sha256-uMVOhV6pVPgm2hn1WGEbIcJRWjnsyWKy8PHCUn0++iI=",
|
"narHash": "sha256-SV24PP3ctDSAuQjg0LdYAvzN7GEustIrtZfciiSrgRI=",
|
||||||
"owner": "AvengeMedia",
|
"owner": "AvengeMedia",
|
||||||
"repo": "dms-plugin-registry",
|
"repo": "dms-plugin-registry",
|
||||||
"rev": "4ab59f3da3df33bf106045b856db8de875cc42c6",
|
"rev": "672e213a1e20b980708d81bd82df9bf85c15a590",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -177,6 +177,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
@@ -231,15 +247,16 @@
|
|||||||
"uv2nix": "uv2nix_2"
|
"uv2nix": "uv2nix_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781346807,
|
"lastModified": 1782936460,
|
||||||
"narHash": "sha256-ytT4ojx0qFW4b/oYeW+MkmaA3b/BZ9pqkPmpAg8j1gg=",
|
"narHash": "sha256-Wt72AQtA6Eizi7Ubj23JBhwZ7GKYcjY4mcV6upqHOaU=",
|
||||||
"owner": "NousResearch",
|
"owner": "NousResearch",
|
||||||
"repo": "hermes-agent",
|
"repo": "hermes-agent",
|
||||||
"rev": "2a5dc0ef3df433a36abed9ee544ea067d807c438",
|
"rev": "7c1a029553d87c43ecff8a3821336bc95872213b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NousResearch",
|
"owner": "NousResearch",
|
||||||
|
"ref": "v2026.7.1",
|
||||||
"repo": "hermes-agent",
|
"repo": "hermes-agent",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -272,11 +289,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781305496,
|
"lastModified": 1785306346,
|
||||||
"narHash": "sha256-g8Vv4Qfc7n+lgov97REu3X6BeJtvYY0hlSUZR1GrGQQ=",
|
"narHash": "sha256-DScBkW0fOgpGPK2trNoX3ryLTlaC14+gglFo/BhGJ4g=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "c87a39aa979acc4848016d2220c6238390d84779",
|
"rev": "e705714e918c3b11affcdd15db2cbe3a070420a0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -293,14 +310,15 @@
|
|||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nixpkgs-master": "nixpkgs-master",
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
|
"opencode": "opencode",
|
||||||
"openspec": "openspec"
|
"openspec": "openspec"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781500279,
|
"lastModified": 1785670526,
|
||||||
"narHash": "sha256-810qVHwu6jVhu01FWj9dXuruK84Gw2smAlbu6FPBfeY=",
|
"narHash": "sha256-tC1CW+Kxh9ZZxJC0y472i0KoieMqNwNi+AiCmS4n7To=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "050c273c65b36dc03c34a7547d80e88afff5ac48",
|
"rev": "69fce234a8607cd3e71233831564b8ceeba70626",
|
||||||
"revCount": 327,
|
"revCount": 374,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs"
|
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs"
|
||||||
},
|
},
|
||||||
@@ -361,11 +379,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781153468,
|
"lastModified": 1785386845,
|
||||||
"narHash": "sha256-ZBRmjFtJn/XmHBV230OSabKQqxOoOJunJmBtSt1sLs0=",
|
"narHash": "sha256-CvXXTgWxbwTn6Diev4nLTP5+8tsFtth/SQAtaR9iVY0=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "cd265fd6b43f2ec1257c2e400f648895d2ad7ccd",
|
"rev": "3c5a718ce27c9283364d4c664fac4e4a23acdfb4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -393,11 +411,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781074563,
|
"lastModified": 1776683584,
|
||||||
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
|
"narHash": "sha256-NuTLMrr10Tng72hurYG8jYQ4XKK8wnpJmOGcPiis96g=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
|
"rev": "9dd5558b06dbdacbf635a3dd36dce1b1a7ee3a89",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1785318670,
|
||||||
|
"narHash": "sha256-dN6Ou5x/+23FZLEpYP3IffO+NyJFzUlGumt1uu3MMaY=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0954f7ee2f6bb3dc7d4e3d0d8bcb8fd4bde4cfc5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -407,13 +441,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781074563,
|
"lastModified": 1785318670,
|
||||||
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
|
"narHash": "sha256-dN6Ou5x/+23FZLEpYP3IffO+NyJFzUlGumt1uu3MMaY=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
|
"rev": "0954f7ee2f6bb3dc7d4e3d0d8bcb8fd4bde4cfc5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -447,14 +481,14 @@
|
|||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781346642,
|
"lastModified": 1785395064,
|
||||||
"narHash": "sha256-o92OOSMAB08HQgG7pW2BZVIO53Pkv4oAjLk4Iol3Iko=",
|
"narHash": "sha256-ZZoXKpTETeIU93xQOxleE27JWT1FcpF9pe1nSPrFbuw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "6e4e8d731fbb3831296607d5f88de727cf7bf6de",
|
"rev": "cce2408845d0298ae0dcc42582c1d8b390de105c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -463,6 +497,25 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"opencode": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1785386452,
|
||||||
|
"narHash": "sha256-iYfkMmn1ZKbi0cv8XIAXVgPH4idzsVSK4cWyi/KGMJQ=",
|
||||||
|
"owner": "anomalyco",
|
||||||
|
"repo": "opencode",
|
||||||
|
"rev": "f7204902192624481e526b1852cdedaadb914e24",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "anomalyco",
|
||||||
|
"ref": "dev",
|
||||||
|
"repo": "opencode",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"openspec": {
|
"openspec": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -471,11 +524,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780479100,
|
"lastModified": 1785371113,
|
||||||
"narHash": "sha256-VZZ/ukjciXqiebwei2JizyOnxx0T3IeoowFWElKec4o=",
|
"narHash": "sha256-r3fwnb5gMTV9UXBj7bqkKpTZIWwF4AgghULOIv2Fr4c=",
|
||||||
"owner": "Fission-AI",
|
"owner": "Fission-AI",
|
||||||
"repo": "OpenSpec",
|
"repo": "OpenSpec",
|
||||||
"rev": "1b06fddd59d8e592d5b5794a1970b22867e85b1f",
|
"rev": "2b3d368539132be6311e55db58899abbf5306b81",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -572,28 +625,6 @@
|
|||||||
"type": "github"
|
"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",
|
||||||
@@ -605,7 +636,7 @@
|
|||||||
"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_3",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nur": "nur"
|
"nur": "nur"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -23,12 +23,12 @@
|
|||||||
|
|
||||||
agent-lib = {
|
agent-lib = {
|
||||||
# url = "path:/home/m3tam3re/p/NIX/agent-lib";
|
# url = "path:/home/m3tam3re/p/NIX/agent-lib";
|
||||||
url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib";
|
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";
|
url = "github:NousResearch/hermes-agent/v2026.7.1";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
./packages.nix
|
./packages.nix
|
||||||
./television.nix
|
./television.nix
|
||||||
./zellij.nix
|
./zellij.nix
|
||||||
./zellij-ps.nix
|
|
||||||
./zoxide.nix
|
./zoxide.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,40 +2,47 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
options,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.base.cliTools.fzf;
|
cfg = config.base.cliTools.fzf;
|
||||||
|
changeDirWidgetCommand = "fd --type d --exclude .git --follow --hidden";
|
||||||
in {
|
in {
|
||||||
# Enabled by default — base modules are always-on.
|
# Enabled by default — base modules are always-on.
|
||||||
options.base.cliTools.fzf.enable = (mkEnableOption "enable fuzzy finder") // {default = true;};
|
options.base.cliTools.fzf.enable = (mkEnableOption "enable fuzzy finder") // {default = true;};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.fzf = {
|
programs.fzf =
|
||||||
enable = true;
|
{
|
||||||
enableFishIntegration = true;
|
enable = true;
|
||||||
colors = {
|
enableFishIntegration = true;
|
||||||
"fg" = "#${config.colorScheme.palette.base05}";
|
colors = {
|
||||||
"bg" = "#${config.colorScheme.palette.base00}";
|
"fg" = "#${config.colorScheme.palette.base05}";
|
||||||
"hl" = "#${config.colorScheme.palette.base0E}";
|
"bg" = "#${config.colorScheme.palette.base00}";
|
||||||
"fg+" = "#${config.colorScheme.palette.base05}";
|
"hl" = "#${config.colorScheme.palette.base0E}";
|
||||||
"bg+" = "#${config.colorScheme.palette.base02}";
|
"fg+" = "#${config.colorScheme.palette.base05}";
|
||||||
"hl+" = "#${config.colorScheme.palette.base0E}";
|
"bg+" = "#${config.colorScheme.palette.base02}";
|
||||||
"info" = "#${config.colorScheme.palette.base09}";
|
"hl+" = "#${config.colorScheme.palette.base0E}";
|
||||||
"prompt" = "#${config.colorScheme.palette.base0B}";
|
"info" = "#${config.colorScheme.palette.base09}";
|
||||||
"pointer" = "#${config.colorScheme.palette.base08}";
|
"prompt" = "#${config.colorScheme.palette.base0B}";
|
||||||
"marker" = "#${config.colorScheme.palette.base08}";
|
"pointer" = "#${config.colorScheme.palette.base08}";
|
||||||
"spinner" = "#${config.colorScheme.palette.base09}";
|
"marker" = "#${config.colorScheme.palette.base08}";
|
||||||
"header" = "#${config.colorScheme.palette.base03}";
|
"spinner" = "#${config.colorScheme.palette.base09}";
|
||||||
};
|
"header" = "#${config.colorScheme.palette.base03}";
|
||||||
defaultOptions = [
|
};
|
||||||
"--preview='bat --color=always -n {}'"
|
defaultOptions = [
|
||||||
"--bind 'ctrl-/:toggle-preview'"
|
"--preview='bat --color=always -n {}'"
|
||||||
"--header 'Press CTRL-Y to copy command into clipboard'"
|
"--bind 'ctrl-/:toggle-preview'"
|
||||||
"--bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort'"
|
"--header 'Press CTRL-Y to copy command into clipboard'"
|
||||||
];
|
"--bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort'"
|
||||||
defaultCommand = "fd --type f --exclude .git --follow --hidden";
|
];
|
||||||
changeDirWidgetCommand = "fd --type d --exclude .git --follow --hidden";
|
defaultCommand = "fd --type f --exclude .git --follow --hidden";
|
||||||
};
|
}
|
||||||
|
// (
|
||||||
|
if options.programs.fzf ? changeDirWidget
|
||||||
|
then {changeDirWidget.command = changeDirWidgetCommand;}
|
||||||
|
else {inherit changeDirWidgetCommand;}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
# Zellij-ps — project-aware Zellij session manager from m3ta-nixpkgs.
|
|
||||||
# Delegates to `cli.zellij-ps` — the home-manager module namespace provided by
|
|
||||||
# m3ta-nixpkgs. Requires m3ta-nixpkgs overlays to be applied to pkgs
|
|
||||||
# (via home-manager.useGlobalPkgs = true in NixOS, or overlays in standalone).
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.zellijPs;
|
|
||||||
in {
|
|
||||||
options.base.cliTools.zellijPs = {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
enable = (mkEnableOption "enable zellij-ps project session manager") // {default = true;};
|
|
||||||
|
|
||||||
projectFolders = mkOption {
|
|
||||||
type = types.listOf types.path;
|
|
||||||
description = "Project root folders scanned by zellij-ps.";
|
|
||||||
default = ["${config.home.homeDirectory}/p"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
cli.zellij-ps = {
|
|
||||||
enable = true;
|
|
||||||
projectFolders = cfg.projectFolders;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -6,6 +6,8 @@
|
|||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.base.shell.nushell;
|
cfg = config.base.shell.nushell;
|
||||||
|
# User-specific secrets file from agenix, resolved at build time.
|
||||||
|
secretsFile = "/run/agenix/${config.home.username}-secrets";
|
||||||
in {
|
in {
|
||||||
# Enabled by default — base modules are always-on.
|
# Enabled by default — base modules are always-on.
|
||||||
options.base.shell.nushell.enable = (mkEnableOption "enable nushell") // {default = true;};
|
options.base.shell.nushell.enable = (mkEnableOption "enable nushell") // {default = true;};
|
||||||
@@ -42,15 +44,16 @@ in {
|
|||||||
| load-env
|
| load-env
|
||||||
}
|
}
|
||||||
|
|
||||||
# Load m3tam3re secrets from agenix. The secret file is Nushell code
|
# Load user-specific secrets from agenix. The secret file is Nushell code
|
||||||
# containing a `load-env { ... }` block, not KEY=VALUE lines.
|
# containing a `load-env { ... }` block, not KEY=VALUE lines.
|
||||||
# `source` resolves literal paths at parse time, so use `null` when absent.
|
# `source` resolves literal paths at parse time, so use `null` when absent.
|
||||||
const m3tam3re_secrets_file = if ("/run/agenix/m3tam3re-secrets" | path exists) {
|
# Path is resolved at Nix build time via config.home.username.
|
||||||
"/run/agenix/m3tam3re-secrets"
|
const user_secrets_file = if ("${secretsFile}" | path exists) {
|
||||||
|
"${secretsFile}"
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
source $m3tam3re_secrets_file
|
source $user_secrets_file
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configFile.text = ''
|
configFile.text = ''
|
||||||
|
|||||||
@@ -57,6 +57,7 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
pointerCursor = {
|
pointerCursor = {
|
||||||
|
enable = true;
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
package = pkgs.bibata-cursors;
|
package = pkgs.bibata-cursors;
|
||||||
name = "Bibata-Modern-Ice";
|
name = "Bibata-Modern-Ice";
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
}: {
|
}: {
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme.name = "gtk";
|
platformTheme.name = "gtk3";
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
|
|||||||
@@ -6,95 +6,148 @@
|
|||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.desktop.wm.hyprland;
|
cfg = config.desktop.wm.hyprland;
|
||||||
|
lua = lib.generators.mkLuaInline;
|
||||||
|
luaString = builtins.toJSON;
|
||||||
|
|
||||||
|
mkEnvVar = name: value: {
|
||||||
|
_args = [
|
||||||
|
name
|
||||||
|
value
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
modKey = key: lua ''mainMod .. " + ${key}"'';
|
||||||
|
mkDispatcher = expression: lua expression;
|
||||||
|
execCmd = command: "hl.dsp.exec_cmd(${luaString command})";
|
||||||
|
execExpr = expression: "hl.dsp.exec_cmd(${expression})";
|
||||||
|
|
||||||
|
mkBinding = keys: dispatcher: {
|
||||||
|
_args = [
|
||||||
|
keys
|
||||||
|
(mkDispatcher dispatcher)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
mkBindingWithOptions = keys: dispatcher: options: {
|
||||||
|
_args = [
|
||||||
|
keys
|
||||||
|
(mkDispatcher dispatcher)
|
||||||
|
options
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
startupCommand = command: {
|
||||||
|
_args = [
|
||||||
|
"hyprland.start"
|
||||||
|
(lua ''
|
||||||
|
function()
|
||||||
|
hl.exec_cmd(${luaString command})
|
||||||
|
end
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
focusWorkspace = workspace: "hl.dsp.focus({ workspace = ${luaString workspace} })";
|
||||||
|
moveToWorkspace = workspace: "hl.dsp.window.move({ workspace = ${luaString workspace} })";
|
||||||
in {
|
in {
|
||||||
options.desktop.wm.hyprland.enable = mkEnableOption "Hyprland window manager";
|
options.desktop.wm.hyprland.enable = mkEnableOption "Hyprland window manager";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
configType = "hyprlang";
|
configType = "lua";
|
||||||
|
extraLuaFiles."00-dms" = {
|
||||||
|
autoLoad = true;
|
||||||
|
content = ''
|
||||||
|
-- DMS setup/runtime owns these modules. Load only the Lua equivalents
|
||||||
|
-- of the pre-migration active sources, before local Home Manager
|
||||||
|
-- settings, preserving the old source-first order without enabling new
|
||||||
|
-- DMS default binds or rules.
|
||||||
|
--
|
||||||
|
-- Keep fresh Home Manager generations usable before DMS has written
|
||||||
|
-- ~/.config/hypr/dms/*.lua.
|
||||||
|
local function require_if_present(module)
|
||||||
|
if package.searchpath(module, package.path) ~= nil then
|
||||||
|
require(module)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
require_if_present("dms.colors")
|
||||||
|
require_if_present("dms.layout")
|
||||||
|
require_if_present("dms.outputs")
|
||||||
|
'';
|
||||||
|
};
|
||||||
settings = {
|
settings = {
|
||||||
xwayland = {
|
mainMod = {
|
||||||
force_zero_scaling = true;
|
_var = "SUPER";
|
||||||
};
|
};
|
||||||
source = [
|
terminal = {
|
||||||
"~/.config/hypr/dms/colors.conf"
|
_var = "ghostty";
|
||||||
"~/.config/hypr/dms/layout.conf"
|
|
||||||
"~/.config/hypr/dms/outputs.conf"
|
|
||||||
];
|
|
||||||
exec-once = [
|
|
||||||
"vibetyper"
|
|
||||||
];
|
|
||||||
|
|
||||||
env = [
|
|
||||||
"XCURSOR_SIZE,32"
|
|
||||||
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
|
|
||||||
"WLR_NO_HARDWARE_CURSORS,1"
|
|
||||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
|
||||||
"XDG_SESSION_TYPE,wayland"
|
|
||||||
"XDG_SESSION_DESKTOP,Hyprland"
|
|
||||||
"XKB_DEFAULT_LAYOUT,de"
|
|
||||||
"NIXOS_OZONE_WL,1"
|
|
||||||
"QT_QPA_PLATFORM,wayland;xcb"
|
|
||||||
"QT_QPA_PLATFORMTHEME,gtk3"
|
|
||||||
"QT_QPA_PLATFORMTHEME_QT6,gtk3"
|
|
||||||
];
|
|
||||||
|
|
||||||
input = {
|
|
||||||
kb_layout = "us";
|
|
||||||
kb_variant = "";
|
|
||||||
kb_model = "";
|
|
||||||
kb_rules = "";
|
|
||||||
kb_options = "ctrl:nocaps";
|
|
||||||
follow_mouse = 1;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
general = {
|
config = {
|
||||||
gaps_in = 5;
|
xwayland = {
|
||||||
gaps_out = 5;
|
force_zero_scaling = true;
|
||||||
border_size = 1;
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
shadow = {
|
|
||||||
enabled = true;
|
|
||||||
range = 60;
|
|
||||||
render_power = 3;
|
|
||||||
# color = "rgba(${config.colorScheme.palette.base00}66)";
|
|
||||||
offset = "1 2";
|
|
||||||
scale = 0.97;
|
|
||||||
};
|
};
|
||||||
rounding = 8;
|
input = {
|
||||||
blur = {
|
kb_layout = "us";
|
||||||
|
kb_variant = "";
|
||||||
|
kb_model = "";
|
||||||
|
kb_rules = "";
|
||||||
|
kb_options = "ctrl:nocaps";
|
||||||
|
follow_mouse = 1;
|
||||||
|
};
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 5;
|
||||||
|
border_size = 1;
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
decoration = {
|
||||||
|
shadow = {
|
||||||
|
enabled = true;
|
||||||
|
range = 60;
|
||||||
|
render_power = 3;
|
||||||
|
# color = "rgba(${config.colorScheme.palette.base00}66)";
|
||||||
|
offset = "1 2";
|
||||||
|
scale = 0.97;
|
||||||
|
};
|
||||||
|
rounding = 8;
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 3;
|
||||||
|
passes = 3;
|
||||||
|
};
|
||||||
|
active_opacity = 0.9;
|
||||||
|
inactive_opacity = 0.5;
|
||||||
|
};
|
||||||
|
animations = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
size = 3;
|
};
|
||||||
passes = 3;
|
dwindle = {
|
||||||
|
# pseudotile = true; # TODO
|
||||||
|
preserve_split = true;
|
||||||
|
};
|
||||||
|
master = {
|
||||||
|
new_status = "master";
|
||||||
};
|
};
|
||||||
active_opacity = 0.9;
|
|
||||||
inactive_opacity = 0.5;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
animations = {
|
on = [
|
||||||
enabled = true;
|
(startupCommand "vibetyper")
|
||||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
];
|
||||||
animation = [
|
|
||||||
"windows, 1, 7, myBezier"
|
|
||||||
"windowsOut, 1, 7, default, popin 80%"
|
|
||||||
"border, 1, 10, default"
|
|
||||||
"borderangle, 1, 8, default"
|
|
||||||
"fade, 1, 7, default"
|
|
||||||
"workspaces, 1, 6, default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
dwindle = {
|
"env" = [
|
||||||
# pseudotile = true; # TODO
|
(mkEnvVar "XCURSOR_SIZE" "32")
|
||||||
preserve_split = true;
|
(mkEnvVar "HYPRCURSOR_THEME" "Bibata-Modern-Ice")
|
||||||
};
|
(mkEnvVar "WLR_NO_HARDWARE_CURSORS" "1")
|
||||||
|
(mkEnvVar "XDG_CURRENT_DESKTOP" "Hyprland")
|
||||||
master = {
|
(mkEnvVar "XDG_SESSION_TYPE" "wayland")
|
||||||
new_status = "master";
|
(mkEnvVar "XDG_SESSION_DESKTOP" "Hyprland")
|
||||||
};
|
(mkEnvVar "XKB_DEFAULT_LAYOUT" "de")
|
||||||
|
(mkEnvVar "NIXOS_OZONE_WL" "1")
|
||||||
|
(mkEnvVar "QT_QPA_PLATFORM" "wayland;xcb")
|
||||||
|
(mkEnvVar "QT_QPA_PLATFORMTHEME" "gtk3")
|
||||||
|
(mkEnvVar "QT_QPA_PLATFORMTHEME_QT6" "gtk3")
|
||||||
|
];
|
||||||
|
|
||||||
device = [
|
device = [
|
||||||
# Alle normalen Keyboards explizit auf de setzen:
|
# Alle normalen Keyboards explizit auf de setzen:
|
||||||
@@ -141,114 +194,298 @@ in {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
windowrule = [
|
curve = {
|
||||||
"match:class file_progress, float on"
|
_args = [
|
||||||
"match:class confirm, float on"
|
"myBezier"
|
||||||
"match:class dialog, float on"
|
(lua ''{ type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } }'')
|
||||||
"match:class download, float on"
|
];
|
||||||
"match:class notification, float on"
|
};
|
||||||
"match:class error, float on"
|
|
||||||
"match:class splash, float on"
|
animation = [
|
||||||
"match:class confirmreset, float on"
|
{
|
||||||
"match:title Open File, float on"
|
leaf = "windows";
|
||||||
"match:title branchdialog, float on"
|
enabled = true;
|
||||||
"match:class pavucontrol-qt, float on"
|
speed = 7;
|
||||||
"match:class pavucontrol, float on"
|
bezier = "myBezier";
|
||||||
"match:class class:^(espanso)$, float on"
|
}
|
||||||
"match:class wlogout, fullscreen on"
|
{
|
||||||
"match:title wlogout, float on"
|
leaf = "windowsOut";
|
||||||
"match:title wlogout, fullscreen on"
|
enabled = true;
|
||||||
"match:class mpv, float on"
|
speed = 7;
|
||||||
"match:class mpv, idle_inhibit focus"
|
bezier = "default";
|
||||||
"match:class mpv, opacity 1.0 override"
|
style = "popin 80%";
|
||||||
"match:title ^(Media viewer)$, float on"
|
}
|
||||||
"match:title ^(Volume Control)$, float on"
|
{
|
||||||
"match:title ^(Picture-in-Picture)$, float on"
|
leaf = "border";
|
||||||
"match:title ^(floating-pomodoro)$, float on"
|
enabled = true;
|
||||||
"match:title ^(floating-pomodoro)$, size 250 50"
|
speed = 10;
|
||||||
"match:title ^(floating-pomodoro)$, move 12 (monitor_h-150)"
|
bezier = "default";
|
||||||
"match:title ^(floating-pomodoro)$, pin on"
|
}
|
||||||
"match:initial_title .*streamlabs.com.*, float on"
|
{
|
||||||
"match:initial_title .*streamlabs.com.*, pin on"
|
leaf = "borderangle";
|
||||||
"match:initial_title .*streamlabs.com.*, size 800 400"
|
enabled = true;
|
||||||
"match:initial_title .*alert-box.*, move 100%-820 102"
|
speed = 8;
|
||||||
"match:initial_title .*chat-box.*, move 100%-820 512"
|
bezier = "default";
|
||||||
"match:initial_title .*streamlabs.com.*, opacity 0.5 override"
|
}
|
||||||
"match:initial_title .*streamlabs.com.*, idle_inhibit focus"
|
{
|
||||||
"match:initial_title .*streamlabs.com.*, no_anim on"
|
leaf = "fade";
|
||||||
"match:initial_title .*streamlabs.com.*, decorate off"
|
enabled = true;
|
||||||
"match:initial_title .*streamlabs.com.*, no_shadow on"
|
speed = 7;
|
||||||
"match:initial_title .*streamlabs.com.*, no_blur on"
|
bezier = "default";
|
||||||
"match:class ^vibe-typer$, match:title ^Recording Indicator$, no_blur on"
|
}
|
||||||
"match:class ^vibe-typer$, match:title ^Recording Indicator$, no_shadow on"
|
{
|
||||||
"match:class ^vibe-typer$, match:title ^Recording Indicator$, no_anim on"
|
leaf = "workspaces";
|
||||||
"match:class ^vibe-typer$, match:title ^Recording Indicator$, border_size 0"
|
enabled = true;
|
||||||
"match:class ^vibe-typer$, match:title ^Recording Indicator$, no_focus on"
|
speed = 6;
|
||||||
"border_color rgb(ffffff), match:xwayland 1"
|
bezier = "default";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
"$mainMod" = "SUPER";
|
window_rule = [
|
||||||
"$terminal" = "ghostty";
|
{
|
||||||
|
match.class = "file_progress";
|
||||||
bind = [
|
float = true;
|
||||||
"$mainMod, return, exec, $terminal nu -c zellij-ps"
|
}
|
||||||
"$mainMod, t, exec, $terminal -e nu -c 'nitch; exec nu'"
|
{
|
||||||
"$mainMod SHIFT, t, exec, launch-timer"
|
match.class = "confirm";
|
||||||
"$mainMod, n, exec, $terminal -e nvim"
|
float = true;
|
||||||
"$mainMod, z, exec, uwsm app -- zeditor"
|
}
|
||||||
"$mainMod, o, exec, hyprctl dispatch setprop activewindow opaque toggle"
|
{
|
||||||
"$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512"
|
match.class = "dialog";
|
||||||
"$mainMod, b, exec, uwsm app -- thunar"
|
float = true;
|
||||||
"$mainMod SHIFT, B, exec, uwsm app -- vivaldi"
|
}
|
||||||
"$mainMod, Escape, exec, uwsm app -- dms ipc call powermenu toggle"
|
{
|
||||||
# "$mainMod, Space, togglefloating"
|
match.class = "download";
|
||||||
"$mainMod, q, killactive"
|
float = true;
|
||||||
"$mainMod, M, exit"
|
}
|
||||||
"$mainMod, F, fullscreen"
|
{
|
||||||
"$mainMod SHIFT, V, togglefloating"
|
match.class = "notification";
|
||||||
"$mainMod, D, exec, uwsm app -- dms ipc call spotlight toggle"
|
float = true;
|
||||||
"$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 SHIFT, S, exec, uwsm app -- rofi -show emoji"
|
match.class = "error";
|
||||||
"$mainMod, P, exec, uwsm app -- rofi-pass"
|
float = true;
|
||||||
"$mainMod SHIFT, P, pseudo"
|
}
|
||||||
"$mainMod, R, exec, stt-ptt start"
|
{
|
||||||
"$mainMod, S, exec, stt-ptt start"
|
match.class = "splash";
|
||||||
# "$mainMod, J, togglesplit" # TODO
|
float = true;
|
||||||
"$mainMod, h, movefocus, l"
|
}
|
||||||
"$mainMod, l, movefocus, r"
|
{
|
||||||
"$mainMod, k, movefocus, u"
|
match.class = "confirmreset";
|
||||||
"$mainMod, j, movefocus, d"
|
float = true;
|
||||||
"$mainMod, 1, workspace, 1"
|
}
|
||||||
"$mainMod, 2, workspace, 2"
|
{
|
||||||
"$mainMod, 3, workspace, 3"
|
match.title = "Open File";
|
||||||
"$mainMod, 4, workspace, 4"
|
float = true;
|
||||||
"$mainMod, 5, workspace, 5"
|
}
|
||||||
"$mainMod, 6, workspace, 6"
|
{
|
||||||
"$mainMod, 7, workspace, 7"
|
match.title = "branchdialog";
|
||||||
"$mainMod, 8, workspace, 8"
|
float = true;
|
||||||
"$mainMod, 9, workspace, 9"
|
}
|
||||||
"$mainMod, 0, workspace, 10"
|
{
|
||||||
"$mainMod SHIFT, 1, movetoworkspace, 1"
|
match.class = "pavucontrol-qt";
|
||||||
"$mainMod SHIFT, 2, movetoworkspace, 2"
|
float = true;
|
||||||
"$mainMod SHIFT, 3, movetoworkspace, 3"
|
}
|
||||||
"$mainMod SHIFT, 4, movetoworkspace, 4"
|
{
|
||||||
"$mainMod SHIFT, 5, movetoworkspace, 5"
|
match.class = "pavucontrol";
|
||||||
"$mainMod SHIFT, 6, movetoworkspace, 6"
|
float = true;
|
||||||
"$mainMod SHIFT, 7, movetoworkspace, 7"
|
}
|
||||||
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
{
|
||||||
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
match.class = "class:^(espanso)$";
|
||||||
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
float = true;
|
||||||
"$mainMod, mouse_down, workspace, e+1"
|
}
|
||||||
"$mainMod, mouse_up, workspace, e-1"
|
{
|
||||||
|
match.class = "wlogout";
|
||||||
|
fullscreen = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "wlogout";
|
||||||
|
float = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "wlogout";
|
||||||
|
fullscreen = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.class = "mpv";
|
||||||
|
float = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.class = "mpv";
|
||||||
|
idle_inhibit = "focus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.class = "mpv";
|
||||||
|
opacity = "1.0 override";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "^(Media viewer)$";
|
||||||
|
float = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "^(Volume Control)$";
|
||||||
|
float = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "^(Picture-in-Picture)$";
|
||||||
|
float = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "^(floating-pomodoro)$";
|
||||||
|
float = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "^(floating-pomodoro)$";
|
||||||
|
size = "250 50";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "^(floating-pomodoro)$";
|
||||||
|
move = "12 (monitor_h-150)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.title = "^(floating-pomodoro)$";
|
||||||
|
pin = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
float = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
pin = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
size = "800 400";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*alert-box.*";
|
||||||
|
move = "100%-820 102";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*chat-box.*";
|
||||||
|
move = "100%-820 512";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
opacity = "0.5 override";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
idle_inhibit = "focus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
no_anim = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
decorate = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
no_shadow = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.initial_title = ".*streamlabs.com.*";
|
||||||
|
no_blur = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match = {
|
||||||
|
class = "^vibe-typer$";
|
||||||
|
title = "^Recording Indicator$";
|
||||||
|
};
|
||||||
|
no_blur = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match = {
|
||||||
|
class = "^vibe-typer$";
|
||||||
|
title = "^Recording Indicator$";
|
||||||
|
};
|
||||||
|
no_shadow = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match = {
|
||||||
|
class = "^vibe-typer$";
|
||||||
|
title = "^Recording Indicator$";
|
||||||
|
};
|
||||||
|
no_anim = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match = {
|
||||||
|
class = "^vibe-typer$";
|
||||||
|
title = "^Recording Indicator$";
|
||||||
|
};
|
||||||
|
border_size = 0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match = {
|
||||||
|
class = "^vibe-typer$";
|
||||||
|
title = "^Recording Indicator$";
|
||||||
|
};
|
||||||
|
no_focus = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
match.xwayland = true;
|
||||||
|
border_color = "rgb(ffffff)";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
bindr = [
|
"bind" = [
|
||||||
];
|
# mainMod + return intentionally remains disabled from the previous config.
|
||||||
|
(mkBinding (modKey "t") (execExpr ''terminal .. " -e nu -c 'nitch; exec nu'"''))
|
||||||
bindm = [
|
(mkBinding (modKey "SHIFT + t") (execCmd "launch-timer"))
|
||||||
"$mainMod, mouse:272, movewindow"
|
(mkBinding (modKey "n") (execExpr ''terminal .. " -e nvim"''))
|
||||||
"$mainMod, mouse:273, resizewindow"
|
(mkBinding (modKey "z") (execCmd "uwsm app -- zeditor"))
|
||||||
|
(mkBinding (modKey "o") ''hl.dsp.window.set_prop({ prop = "opaque", value = "toggle" })'')
|
||||||
|
(mkBinding (modKey "r") (
|
||||||
|
execCmd ''hyprctl dispatch focuswindow "initialtitle:.*alert-box.*" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow "initialtitle:.*chat-box.*" && hyprctl dispatch moveactive exact 4300 512''
|
||||||
|
))
|
||||||
|
(mkBinding (modKey "b") (execCmd "uwsm app -- thunar"))
|
||||||
|
(mkBinding (modKey "SHIFT + B") (execCmd "uwsm app -- vivaldi"))
|
||||||
|
(mkBinding (modKey "Escape") (execCmd "uwsm app -- dms ipc call powermenu toggle"))
|
||||||
|
(mkBinding (modKey "q") "hl.dsp.window.close()")
|
||||||
|
(mkBinding (modKey "M") "hl.dsp.exit()")
|
||||||
|
(mkBinding (modKey "F") "hl.dsp.window.fullscreen({})")
|
||||||
|
(mkBinding (modKey "SHIFT + V") ''hl.dsp.window.float({ action = "toggle" })'')
|
||||||
|
(mkBinding (modKey "D") (execCmd "uwsm app -- dms ipc call spotlight toggle"))
|
||||||
|
(mkBinding (modKey "V") (execCmd "uwsm app -- dms ipc call clipboard toggle"))
|
||||||
|
(mkBinding (modKey "C") (
|
||||||
|
execCmd "bash -c 'FILE=/tmp/screenshot_$(date +%s).png; grim -g \"$(slurp)\" \"$FILE\" && ksnip \"$FILE\"'"
|
||||||
|
))
|
||||||
|
(mkBinding (modKey "SHIFT + S") (execCmd "uwsm app -- rofi -show emoji"))
|
||||||
|
(mkBinding (modKey "P") (execCmd "uwsm app -- rofi-pass"))
|
||||||
|
(mkBinding (modKey "SHIFT + P") "hl.dsp.window.pseudo({})")
|
||||||
|
(mkBinding (modKey "R") (execCmd "stt-ptt start"))
|
||||||
|
(mkBinding (modKey "S") (execCmd "stt-ptt start"))
|
||||||
|
(mkBinding (modKey "h") ''hl.dsp.focus({ direction = "l" })'')
|
||||||
|
(mkBinding (modKey "l") ''hl.dsp.focus({ direction = "r" })'')
|
||||||
|
(mkBinding (modKey "k") ''hl.dsp.focus({ direction = "u" })'')
|
||||||
|
(mkBinding (modKey "j") ''hl.dsp.focus({ direction = "d" })'')
|
||||||
|
(mkBinding (modKey "1") (focusWorkspace "1"))
|
||||||
|
(mkBinding (modKey "2") (focusWorkspace "2"))
|
||||||
|
(mkBinding (modKey "3") (focusWorkspace "3"))
|
||||||
|
(mkBinding (modKey "4") (focusWorkspace "4"))
|
||||||
|
(mkBinding (modKey "5") (focusWorkspace "5"))
|
||||||
|
(mkBinding (modKey "6") (focusWorkspace "6"))
|
||||||
|
(mkBinding (modKey "7") (focusWorkspace "7"))
|
||||||
|
(mkBinding (modKey "8") (focusWorkspace "8"))
|
||||||
|
(mkBinding (modKey "9") (focusWorkspace "9"))
|
||||||
|
(mkBinding (modKey "0") (focusWorkspace "10"))
|
||||||
|
(mkBinding (modKey "SHIFT + 1") (moveToWorkspace "1"))
|
||||||
|
(mkBinding (modKey "SHIFT + 2") (moveToWorkspace "2"))
|
||||||
|
(mkBinding (modKey "SHIFT + 3") (moveToWorkspace "3"))
|
||||||
|
(mkBinding (modKey "SHIFT + 4") (moveToWorkspace "4"))
|
||||||
|
(mkBinding (modKey "SHIFT + 5") (moveToWorkspace "5"))
|
||||||
|
(mkBinding (modKey "SHIFT + 6") (moveToWorkspace "6"))
|
||||||
|
(mkBinding (modKey "SHIFT + 7") (moveToWorkspace "7"))
|
||||||
|
(mkBinding (modKey "SHIFT + 8") (moveToWorkspace "8"))
|
||||||
|
(mkBinding (modKey "SHIFT + 9") (moveToWorkspace "9"))
|
||||||
|
(mkBinding (modKey "SHIFT + 0") (moveToWorkspace "10"))
|
||||||
|
(mkBinding (modKey "mouse_down") (focusWorkspace "e+1"))
|
||||||
|
(mkBinding (modKey "mouse_up") (focusWorkspace "e-1"))
|
||||||
|
(mkBindingWithOptions (modKey "mouse:272") "hl.dsp.window.drag()" {mouse = true;})
|
||||||
|
(mkBindingWithOptions (modKey "mouse:273") "hl.dsp.window.resize()" {mouse = true;})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,6 +26,9 @@
|
|||||||
mattpocock.skills = {
|
mattpocock.skills = {
|
||||||
all = true;
|
all = true;
|
||||||
};
|
};
|
||||||
|
okf.skills = {
|
||||||
|
all = true;
|
||||||
|
};
|
||||||
superpowers.skills = {
|
superpowers.skills = {
|
||||||
all = true;
|
all = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -29,35 +29,35 @@
|
|||||||
programs.mcp = {
|
programs.mcp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
servers = {
|
servers = {
|
||||||
|
ContextMode = {
|
||||||
|
command = "bash";
|
||||||
|
args = ["-c" "exec bunx context-mode@latest"];
|
||||||
|
};
|
||||||
DeepWiki = {
|
DeepWiki = {
|
||||||
url = "https://mcp.deepwiki.com/mcp";
|
url = "https://mcp.deepwiki.com/mcp";
|
||||||
};
|
};
|
||||||
Ref = {
|
|
||||||
command = "bash";
|
|
||||||
args = ["-c" "REF_API_KEY=$(cat /run/agenix/ref-key) exec bunx ref-tools-mcp@latest"];
|
|
||||||
};
|
|
||||||
Exa = {
|
Exa = {
|
||||||
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 = {
|
||||||
|
url = "https://api.fireflies.ai/mcp";
|
||||||
|
};
|
||||||
Outline = {
|
Outline = {
|
||||||
url = "https://wiki.az-gruppe.com/mcp";
|
url = "https://wiki.az-gruppe.com/mcp";
|
||||||
};
|
};
|
||||||
ContextMode = {
|
|
||||||
command = "bash";
|
|
||||||
args = ["-c" "exec bunx context-mode@latest"];
|
|
||||||
};
|
|
||||||
Honcho = {
|
|
||||||
command = "bash";
|
|
||||||
args = [
|
|
||||||
"-c"
|
|
||||||
''exec bunx mcp-remote@latest https://mcp.honcho.dev --header "Authorization:Bearer $(cat /run/agenix/honcho-key)" --header "X-Honcho-User-Name:m3tam3re"''
|
|
||||||
];
|
|
||||||
};
|
|
||||||
Playwright = {
|
Playwright = {
|
||||||
command = "bash";
|
command = "bash";
|
||||||
args = ["-c" "exec bunx @playwright/mcp@latest"];
|
args = ["-c" "exec bunx @playwright/mcp@latest"];
|
||||||
};
|
};
|
||||||
|
Ref = {
|
||||||
|
command = "bash";
|
||||||
|
args = ["-c" "REF_API_KEY=$(cat /run/agenix/ref-key) exec bunx ref-tools-mcp@latest"];
|
||||||
|
};
|
||||||
|
Teams = {
|
||||||
|
command = "bunx";
|
||||||
|
args = ["-y" "@floriscornel/teams-mcp@latest"];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -66,14 +66,18 @@
|
|||||||
agent-browser
|
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
|
beads
|
||||||
|
crunch
|
||||||
|
docker-sbx
|
||||||
|
herdr
|
||||||
pi-coding-agent
|
pi-coding-agent
|
||||||
(qmd.override {
|
(qmd.override {
|
||||||
vulkanSupport = videoDrivers == ["amdgpu"];
|
vulkanSupport = videoDrivers == ["amdgpu"];
|
||||||
cudaSupport = videoDrivers == ["nvidia"];
|
cudaSupport = videoDrivers == ["nvidia"];
|
||||||
})
|
})
|
||||||
# opencode-desktop
|
opencode-desktop
|
||||||
openshell
|
openshell
|
||||||
openspec
|
openspec
|
||||||
openwork
|
openwork
|
||||||
|
talk
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,25 +4,25 @@
|
|||||||
|
|
||||||
ohMyOpencodeSettings = {
|
ohMyOpencodeSettings = {
|
||||||
agents = {
|
agents = {
|
||||||
sisyphus.model = "litellm/claude-opus-4-6";
|
sisyphus.model = "zai-coding-plan/glm-5.2";
|
||||||
oracle.model = "litellm/claude-sonnet-4-6";
|
oracle.model = "litellm/claude-sonnet-5";
|
||||||
librarian.model = "litellm/claude-sonnet-4-6";
|
librarian.model = "litellm/claude-sonnet-5";
|
||||||
explore.model = "litellm/claude-haiku-4-5";
|
explore.model = "litellm/claude-haiku-4-5";
|
||||||
multimodal-looker.model = "litellm/gpt-5.3-codex";
|
multimodal-looker.model = "litellm/gpt-5.3-codex";
|
||||||
prometheus.model = "litellm/claude-opus-4-6";
|
prometheus.model = "litellm/claude-opus-4-8";
|
||||||
metis.model = "litellm/claude-opus-4-6";
|
metis.model = "litellm/claude-opus-4-8";
|
||||||
momus.model = "litellm/claude-opus-4-6";
|
momus.model = "zai-coding-plan/glm-5.2";
|
||||||
atlas.model = "litellm/claude-sonnet-4-6";
|
atlas.model = "zai-coding-plan/glm-5.2";
|
||||||
};
|
};
|
||||||
categories = {
|
categories = {
|
||||||
visual-engineering.model = "zai-coding-plan/glm-5.1";
|
visual-engineering.model = "zai-coding-plan/glm-5.2";
|
||||||
ultrabrain.model = "litellm/claude-opus-4-6";
|
ultrabrain.model = "litellm/claude-opus-4-8";
|
||||||
deep.model = "litellm/claude-sonnet-4-6";
|
deep.model = "litellm/claude-sonnet-5";
|
||||||
artistry.model = "zai-coding-plan/glm-5.1";
|
artistry.model = "zai-coding-plan/glm-5.2";
|
||||||
quick.model = "litellm/claude-haiku-4-5";
|
quick.model = "litellm/claude-haiku-4-5";
|
||||||
unspecified-low.model = "litellm/claude-sonnet-4-6";
|
unspecified-low.model = "litellm/claude-sonnet-5";
|
||||||
unspecified-high.model = "litellm/claude-opus-4-6";
|
unspecified-high.model = "litellm/claude-opus-4-8";
|
||||||
writing.model = "zai-coding-plan/glm-5.1";
|
writing.model = "zai-coding-plan/glm-5.2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -194,8 +194,8 @@
|
|||||||
output = 128000;
|
output = 128000;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"gpt-5.3-codex" = {
|
"gpt-5.6-sol" = {
|
||||||
name = "GPT-5.3 Codex";
|
name = "GPT-5.6 Sol";
|
||||||
limit = {
|
limit = {
|
||||||
context = 400000;
|
context = 400000;
|
||||||
output = 128000;
|
output = 128000;
|
||||||
@@ -214,12 +214,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 = {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
"npm:@dreadedzombie/pi-init"
|
"npm:@dreadedzombie/pi-init"
|
||||||
"git:github.com/a5c-ai/babysitter-pi"
|
"git:github.com/a5c-ai/babysitter-pi"
|
||||||
"npm:@plannotator/pi-extension"
|
"npm:@plannotator/pi-extension"
|
||||||
"npm:@thesethrose/pi-zai-provider"
|
|
||||||
"npm:pi-agent-browser-native"
|
"npm:pi-agent-browser-native"
|
||||||
"npm:pi-beads-extension"
|
"npm:pi-beads-extension"
|
||||||
"npm:pi-lens"
|
"npm:pi-lens"
|
||||||
@@ -18,7 +17,6 @@
|
|||||||
"npm:pi-subagents"
|
"npm:pi-subagents"
|
||||||
"npm:pi-tool-display"
|
"npm:pi-tool-display"
|
||||||
"npm:pi-web-access"
|
"npm:pi-web-access"
|
||||||
"git:github.com/hk-vk/pi-connect"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
defaultProvider = "openai-codex";
|
defaultProvider = "openai-codex";
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ in {
|
|||||||
bun
|
bun
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file.".npmrc".text = ''
|
|
||||||
prefix=${npmGlobalPrefix}
|
|
||||||
'';
|
|
||||||
home.sessionVariables.NPM_CONFIG_PREFIX = npmGlobalPrefix;
|
home.sessionVariables.NPM_CONFIG_PREFIX = npmGlobalPrefix;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ in {
|
|||||||
amf
|
amf
|
||||||
ffmpeg_6-full
|
ffmpeg_6-full
|
||||||
gst_all_1.gstreamer
|
gst_all_1.gstreamer
|
||||||
gst_all_1.gst-vaapi
|
gst_all_1.gst-plugins-bad
|
||||||
pamixer
|
pamixer
|
||||||
pavucontrol
|
pavucontrol
|
||||||
qpwgraph
|
qpwgraph
|
||||||
|
|||||||
@@ -57,6 +57,12 @@
|
|||||||
Port = 2022;
|
Port = 2022;
|
||||||
IdentityFile = "~/.ssh/sascha.koenig";
|
IdentityFile = "~/.ssh/sascha.koenig";
|
||||||
};
|
};
|
||||||
|
"AZ-TC-01" = {
|
||||||
|
HostName = "192.168.153.146";
|
||||||
|
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;
|
||||||
|
|||||||
@@ -11,7 +11,9 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
npmGlobalPrefix = "${config.home.homeDirectory}/.npm-global";
|
||||||
|
in {
|
||||||
# ── Clipboard ──
|
# ── Clipboard ──
|
||||||
services.cliphist = {
|
services.cliphist = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -25,4 +27,10 @@
|
|||||||
# These are overridden by the identity module, but provide safe defaults.
|
# These are overridden by the identity module, but provide safe defaults.
|
||||||
home.username = lib.mkDefault "m3tam3re";
|
home.username = lib.mkDefault "m3tam3re";
|
||||||
home.homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
home.homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
||||||
|
|
||||||
|
home.file.".npmrc".text = ''
|
||||||
|
prefix=${npmGlobalPrefix}
|
||||||
|
@m3ta:registry=https://code.m3ta.dev/api/packages/m3tam3re/npm/
|
||||||
|
//code.m3ta.dev/api/packages/m3tam3re/npm/:_authToken=''${GITEA_TOKEN}
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user