feat(packages): Add marmel autonomous coding agent
Pin Na1w/marmel to commit fd551ae. Upstream publishes no tags or releases, so the version uses the shape nix-update generates for a tagless repository, keeping `nix-update --version=branch=main` usable. The test suite runs green (325 lib tests plus all integration suites) with two accommodations, both documented in the derivation: - Export SSL_CERT_FILE from nixpkgs cacert. rustls refuses to construct a reqwest::Client without a system trust store, which failed 38 tests with "No CA certificates were loaded from the system". - Serialise the test harness. The lib suite shares process-global worker registries and steer/abort buses, so manager-loop tests fail nondeterministically on parallel threads: one unchanged derivation produced 3 failures, then 1 failure, then 0 with --test-threads=1. No test is skipped or filtered. Annotated example configs are installed to share/doc/marmel/examples/. Role prompts are embedded via include_str!, so there is no runtime data directory. Upstream README states MIT but ships no LICENSE file and no Cargo.toml license field.
This commit is contained in:
@@ -22,6 +22,7 @@ A custom Nix overlay and flake providing additional packages not found in upstre
|
|||||||
| `graphify` | Turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph | AI Coding Agents |
|
| `graphify` | Turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph | AI Coding Agents |
|
||||||
| `haivemind` | Multi-model AI consensus, aggregation, and fusion runner for popular AI CLIs | AI Coding Agents |
|
| `haivemind` | Multi-model AI consensus, aggregation, and fusion runner for popular AI CLIs | AI Coding Agents |
|
||||||
| `hipengine` | ROCm-native local LLM inference engine with torch-free runtime for AMD RDNA GPUs | AI Inference |
|
| `hipengine` | ROCm-native local LLM inference engine with torch-free runtime for AMD RDNA GPUs | AI Inference |
|
||||||
|
| `marmel` | Autonomous agentic coding assistant with Manager + specialist subagent orchestration over any OpenAI-compatible LLM backend | AI Coding Agents |
|
||||||
| `mcp-gateway` | Universal Model Context Protocol gateway that sits between AI client and MCP tools/servers | MCP Servers |
|
| `mcp-gateway` | Universal Model Context Protocol gateway that sits between AI client and MCP tools/servers | MCP Servers |
|
||||||
| `nftables-analyzer` | Analyze nftables firewall rules and evaluate traffic queries | Networking |
|
| `nftables-analyzer` | Analyze nftables firewall rules and evaluate traffic queries | Networking |
|
||||||
| `nftablesbuilder` | Web interface to manage nftables rules with drag-and-drop rule creation | Networking |
|
| `nftablesbuilder` | Web interface to manage nftables rules with drag-and-drop rule creation | Networking |
|
||||||
|
|||||||
5
packages/marmel/default.nix
Normal file
5
packages/marmel/default.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
pkgs.callPackage ./package.nix { }
|
||||||
76
packages/marmel/package.nix
Normal file
76
packages/marmel/package.nix
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
rustPlatform,
|
||||||
|
fetchFromGitHub,
|
||||||
|
cacert,
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "marmel";
|
||||||
|
# Upstream publishes no git tags or releases, so this is pinned to a commit.
|
||||||
|
# The version shape matches what `nix-update --version=branch=main` generates
|
||||||
|
# for a tagless repository.
|
||||||
|
version = "unstable-2026-09-13";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Na1w";
|
||||||
|
repo = "marmel";
|
||||||
|
rev = "fd551ae3198d427b0f0df3429f88764c49095b23";
|
||||||
|
hash = "sha256-nghvUF0EdqTGWT6GMG5oW1iK76r9vgvYeUj98hNraIo=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoHash = "sha256-sUSsxcj4m4uJ28RKdJWKsb+MlVW6GkWjZdhKPFKlE/Y=";
|
||||||
|
|
||||||
|
nativeCheckInputs = [ cacert ];
|
||||||
|
|
||||||
|
# The test suite builds `reqwest::Client`s, and rustls rejects construction
|
||||||
|
# outright when no system trust store is found ("No CA certificates were
|
||||||
|
# loaded from the system"). The sandbox has no /etc/ssl, so point the tests
|
||||||
|
# at nixpkgs' bundle. Build-time only; the installed binary still uses the
|
||||||
|
# host's trust store at runtime.
|
||||||
|
preCheck = ''
|
||||||
|
export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Serialise the test harness. The lib suite shares process-global worker
|
||||||
|
# registries and steer/abort buses (src/orchestrator/workers.rs,
|
||||||
|
# src/orchestrator/bus.rs, src/orchestrator/preemption.rs), so the
|
||||||
|
# manager-loop tests fail nondeterministically when the harness runs them on
|
||||||
|
# parallel threads: rebuilding one unchanged derivation yielded 3 failures,
|
||||||
|
# then 1 failure, then 0 with serial threads. All 325 tests still run — none
|
||||||
|
# are skipped or filtered. Drop this flag once upstream makes that state
|
||||||
|
# per-instance.
|
||||||
|
cargoTestFlags = [
|
||||||
|
"--"
|
||||||
|
"--test-threads=1"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Role prompts are embedded with `include_str!`, so the binary needs no
|
||||||
|
# runtime data files. The annotated example configs are the de-facto
|
||||||
|
# first-run documentation, since a backend URL and model are mandatory.
|
||||||
|
postInstall = ''
|
||||||
|
install -Dm644 marmel.toml.example $out/share/doc/${pname}/examples/marmel.toml.example
|
||||||
|
install -Dm644 marmel.toml.cloud $out/share/doc/${pname}/examples/marmel.toml.cloud
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
category = "AI Coding Agents";
|
||||||
|
updateScript = [
|
||||||
|
"nix-update"
|
||||||
|
"--flake"
|
||||||
|
".#marmel"
|
||||||
|
"--version=branch=main"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Autonomous agentic coding assistant with Manager + specialist subagent orchestration over any OpenAI-compatible LLM backend";
|
||||||
|
homepage = "https://github.com/Na1w/marmel";
|
||||||
|
# Upstream README states MIT, but the repository ships no LICENSE file and
|
||||||
|
# Cargo.toml has no license field.
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
sourceProvenance = with lib.sourceTypes; [ fromSource ];
|
||||||
|
mainProgram = "marmel";
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user