From 4bbea5a7f0e7c7a536243f16741f61946e81cdb1 Mon Sep 17 00:00:00 2001 From: m3tam3re Date: Sat, 20 Jun 2026 10:38:20 +0200 Subject: [PATCH] chore: litellm update --- .gitignore | 1 + flake.lock | 375 ++++++++++++++---- .../AZ-CLD-1/services/containers/litellm.nix | 2 +- 3 files changed, 297 insertions(+), 81 deletions(-) diff --git a/.gitignore b/.gitignore index 3bbbca2..00e71b7 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ opencode.json .pi-lens/ coding-rules.json coding-rules/ +docs/ # Git worktrees .worktrees/ diff --git a/flake.lock b/flake.lock index 49288a8..a6db121 100644 --- a/flake.lock +++ b/flake.lock @@ -50,11 +50,11 @@ ] }, "locked": { - "lastModified": 1780157040, - "narHash": "sha256-j2d3nj3FvOlxQ+Zlse+rMo3qHD3m4Gick5uiwtTaA2o=", + "lastModified": 1781348569, + "narHash": "sha256-1BJtmKSqtD0CD753ZE37RgxvCJK6Iw3iKLDDaS8trY4=", "ref": "refs/heads/master", - "rev": "f63712a9ba03da6e2f591766d0f055aa65e6d237", - "revCount": 24, + "rev": "75a2ed2533b4d6d8e4a34acd37e83d98d81a5fb0", + "revCount": 30, "type": "git", "url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib" }, @@ -100,11 +100,11 @@ "agents_3": { "flake": false, "locked": { - "lastModified": 1778518220, - "narHash": "sha256-6AQs9VZ0/DuD4njPbYHRE4v+SgJc6SBrGwemTWxikVc=", + "lastModified": 1780133320, + "narHash": "sha256-8AiN9tV9PBb5xblJiPlhumBbKj61qLjzqXXFtkj3vvY=", "ref": "refs/heads/master", - "rev": "b6e1aaa6261c5056d024d8d4785659eaa4e675e6", - "revCount": 87, + "rev": "920c00313ae242bd93275c30131b9ab1e52ee2fb", + "revCount": 88, "type": "git", "url": "https://code.m3ta.dev/m3tam3re/AGENTS" }, @@ -352,11 +352,11 @@ ] }, "locked": { - "lastModified": 1780290312, - "narHash": "sha256-eTAlX0CwgB84Ts3GaBd944A3DRXVMzgA0EqroZBISUo=", + "lastModified": 1781152676, + "narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=", "owner": "nix-community", "repo": "disko", - "rev": "115e5211780054d8a890b41f0b7734cafad54dfe", + "rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1", "type": "github" }, "original": { @@ -373,11 +373,11 @@ ] }, "locked": { - "lastModified": 1779699611, - "narHash": "sha256-EcCaSTKnmg2o4wLKaN1aqQFomwyhO7ik0bX9COdyCas=", + "lastModified": 1781152676, + "narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=", "owner": "nix-community", "repo": "disko", - "rev": "5ba0c9555c28685e57fa54c7a25e42c7efdbfc8d", + "rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1", "type": "github" }, "original": { @@ -418,11 +418,11 @@ ] }, "locked": { - "lastModified": 1780281921, - "narHash": "sha256-ZDsDl7lTOfM+Le2l6gDyEP3o+KHR3TUCkuxd9hQaLro=", + "lastModified": 1781317940, + "narHash": "sha256-uMVOhV6pVPgm2hn1WGEbIcJRWjnsyWKy8PHCUn0++iI=", "owner": "AvengeMedia", "repo": "dms-plugin-registry", - "rev": "ee4eeacce5a7041ed39f8cd7fe64b6e0e888e73b", + "rev": "4ab59f3da3df33bf106045b856db8de875cc42c6", "type": "github" }, "original": { @@ -453,6 +453,28 @@ } }, "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "m3ta-home", + "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_3": { "inputs": { "nixpkgs-lib": [ "m3ta-home", @@ -474,7 +496,7 @@ "type": "github" } }, - "flake-parts_3": { + "flake-parts_4": { "inputs": { "nixpkgs-lib": [ "nur", @@ -513,6 +535,32 @@ "type": "github" } }, + "hermes-agent": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "m3ta-home", + "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": { "inputs": { "nixpkgs": [ @@ -541,11 +589,11 @@ ] }, "locked": { - "lastModified": 1780361225, - "narHash": "sha256-wnV9ttf4fPWNonBIQmvlrSlNpQYgx5HgWWd007mwIFA=", + "lastModified": 1781319724, + "narHash": "sha256-ZGuxexEMo4Xv28KJ0dX/m/PHN4oZIOnxHZpNTyrvx4M=", "owner": "nix-community", "repo": "home-manager", - "rev": "e28654b71096e08c019d4861ca26acb646f583d8", + "rev": "8355f0a16b2dbb06a97959a918af5b239bbe05ae", "type": "github" }, "original": { @@ -585,11 +633,11 @@ ] }, "locked": { - "lastModified": 1780099287, - "narHash": "sha256-efIPwVGtIWIjWcznhaop6XN6HxnOL8800hF6CBNvlqQ=", + "lastModified": 1781305496, + "narHash": "sha256-g8Vv4Qfc7n+lgov97REu3X6BeJtvYY0hlSUZR1GrGQQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "7d8127d308c3fb9664f7e643eec944be74ebb37d", + "rev": "c87a39aa979acc4848016d2220c6238390d84779", "type": "github" }, "original": { @@ -608,11 +656,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1780362950, - "narHash": "sha256-jWHc4ib841JKvr/ViDy0DScfK2stDX4D7SjUDjPORrQ=", + "lastModified": 1781935030, + "narHash": "sha256-VbghtmBX09cL/JIm5fXSzHnI2tFE8lorxe9Fx/hE6yk=", "owner": "numtide", "repo": "llm-agents.nix", - "rev": "9653dc94f94cf618d984fe49b4d7d23bac4cb3c0", + "rev": "6d65e7002dd5fe407af6d989ea49f9e89619d4db", "type": "github" }, "original": { @@ -628,6 +676,7 @@ "agents": "agents_2", "dms": "dms", "dms-plugin-registry": "dms-plugin-registry", + "hermes-agent": "hermes-agent", "home-manager": "home-manager_4", "m3ta-nixpkgs": "m3ta-nixpkgs", "nix-colors": "nix-colors", @@ -637,11 +686,11 @@ "nur": "nur" }, "locked": { - "lastModified": 1780337412, - "narHash": "sha256-MBwZlvpERSjAn0Xa9i6QViMQkPPI4zRrvIGDiCzyBP4=", + "lastModified": 1781937258, + "narHash": "sha256-+jB2LAkPWGH3EldHD5Jdmnfvy4xRsXxVfzjow9zWNJo=", "ref": "refs/heads/master", - "rev": "6286921cd1b23120221dc4c67a211263349d9c8f", - "revCount": 42, + "rev": "0ae4996d974a1e5ddd3088525eeaebfd345e7d88", + "revCount": 72, "type": "git", "url": "ssh://gitea@code.m3ta.dev/m3tam3re/m3ta-home" }, @@ -662,11 +711,11 @@ "openspec": "openspec" }, "locked": { - "lastModified": 1779944037, - "narHash": "sha256-jO6zAJjgc9n3SeDJW1EbV6CEqOa9DK+2AhTgWc+ImHQ=", + "lastModified": 1781500279, + "narHash": "sha256-810qVHwu6jVhu01FWj9dXuruK84Gw2smAlbu6FPBfeY=", "ref": "refs/heads/master", - "rev": "ae1fb97c21b311dc03a46e8d50867048e5568c88", - "revCount": 323, + "rev": "050c273c65b36dc03c34a7547d80e88afff5ac48", + "revCount": 327, "type": "git", "url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs" }, @@ -684,11 +733,11 @@ "openspec": "openspec_2" }, "locked": { - "lastModified": 1781153970, - "narHash": "sha256-OtC89zreW6Api7wpF5u76Jvkn8uQJiM+0yFFn/r+rj8=", + "lastModified": 1781872358, + "narHash": "sha256-qtMNCCERu2wC1Y3RWOKFzmhfJY1w4J3/ExeRpUeKiGc=", "ref": "refs/heads/master", - "rev": "8fae0726a53ecabb04f4a0931a17a25de6a05fbf", - "revCount": 324, + "rev": "96f5d7f3787e8690fd0129bd1c8b0b0cc4c0827a", + "revCount": 329, "type": "git", "url": "https://code.m3ta.dev/m3tam3re/nixpkgs" }, @@ -763,11 +812,11 @@ ] }, "locked": { - "lastModified": 1779799925, - "narHash": "sha256-kMBQRZjb2A+qVpuNCiRoqMhDElkP/jR2m9Lu7PAt7M4=", + "lastModified": 1781506385, + "narHash": "sha256-kvTBHLiqB911yf2D9VThIRfB6Ai/E2H9+mVF0wR+9AY=", "owner": "numtide", "repo": "nix-vm-test", - "rev": "d41d806a5c9699ab9cbac5a698aac889c83fa57e", + "rev": "2071ebc1f5b2a2e0211a2ca38c4e678092df76a5", "type": "github" }, "original": { @@ -788,11 +837,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1779867678, - "narHash": "sha256-b2sjqQRofVAxpCi5lxUJ4Hg7vN/Avng1lxdjbdM4JMA=", + "lastModified": 1781681115, + "narHash": "sha256-z8bD7qctIVWSv42xIvdPaw8IyC5hVTsoz4Nr6wAt46o=", "owner": "nix-community", "repo": "nixos-anywhere", - "rev": "354eea27536cf7354fe0ff59bd1a69634fa428cf", + "rev": "13d4a2c51a896417289acc0664ed41936c6897e2", "type": "github" }, "original": { @@ -813,11 +862,11 @@ ] }, "locked": { - "lastModified": 1778754897, - "narHash": "sha256-UlPBPrqOYTDB9g/8pUaIUzYpGgjQL/YMK3Ein6m9DkY=", + "lastModified": 1781173814, + "narHash": "sha256-lCoAwHfFXM0bhy7bY3QkN3XPW5HEyCwVOAgWyO3jl/w=", "owner": "nix-community", "repo": "nixos-images", - "rev": "66fe34a02cc29c825fdb4ece1a79c17e8f2ade2e", + "rev": "bf315e58d33dcc5a04df17304166f64bc550983f", "type": "github" }, "original": { @@ -828,11 +877,11 @@ }, "nixos-stable": { "locked": { - "lastModified": 1779622335, - "narHash": "sha256-ViA62qtL5za7V3d5I8OA9q9JcFhsVAiL5jVHwEclWqk=", + "lastModified": 1781216227, + "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "705e9929918b43bd7b715dc0a878ac870449bb03", + "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", "type": "github" }, "original": { @@ -890,11 +939,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1779457550, - "narHash": "sha256-yALoy2CrvwvNfwMtGZDRdc+jqVNHulyuM5iVK12lUAI=", + "lastModified": 1781153468, + "narHash": "sha256-ZBRmjFtJn/XmHBV230OSabKQqxOoOJunJmBtSt1sLs0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a9c18fd234dbe4fd8de4bac53760b785c47e94ff", + "rev": "cd265fd6b43f2ec1257c2e400f648895d2ad7ccd", "type": "github" }, "original": { @@ -938,11 +987,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1780243769, - "narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", + "lastModified": 1781577229, + "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", + "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", "type": "github" }, "original": { @@ -954,11 +1003,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1780336545, - "narHash": "sha256-vhVhuXzFrIOfcssC/9hDHx7MHzDKjF3keHuREOQqQiQ=", + "lastModified": 1781607440, + "narHash": "sha256-rxO+uc/KFbSJp+pgyXRuAX6QlG9hJdnt0BXpEQRXY+U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4df1b885d76a54e1aa1a318f8d16fd6005b6401f", + "rev": "3e41b24abd260e8f71dbe2f5737d24122f972158", "type": "github" }, "original": { @@ -1002,11 +1051,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1779560665, - "narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=", + "lastModified": 1781074563, + "narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", + "rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca", "type": "github" }, "original": { @@ -1034,11 +1083,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1780203844, - "narHash": "sha256-K5sT4jTpGs15ADhviMKNBH38REpPf5Q6mM1+N6cArVE=", + "lastModified": 1781216227, + "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b51242d7d43689db2f3be91bd05d5b24fbb469c4", + "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", "type": "github" }, "original": { @@ -1080,17 +1129,39 @@ "type": "github" } }, + "npm-lockfile-fix": { + "inputs": { + "nixpkgs": [ + "m3ta-home", + "hermes-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775903712, + "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", + "flake-parts": "flake-parts_3", "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1780290189, - "narHash": "sha256-2igu6l2/d4RikYmC/SsykZ1jF1e4+Df+2qWPYjq2xto=", + "lastModified": 1781346642, + "narHash": "sha256-o92OOSMAB08HQgG7pW2BZVIO53Pkv4oAjLk4Iol3Iko=", "owner": "nix-community", "repo": "NUR", - "rev": "8b6210602dcbd4409ab1c3453ea0c292637c2799", + "rev": "6e4e8d731fbb3831296607d5f88de727cf7bf6de", "type": "github" }, "original": { @@ -1101,17 +1172,17 @@ }, "nur_2": { "inputs": { - "flake-parts": "flake-parts_3", + "flake-parts": "flake-parts_4", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1780373535, - "narHash": "sha256-hAAFIDxOUG4GEwZtNObQfjzia7M9pnKix5i4WJPOnxM=", + "lastModified": 1781939953, + "narHash": "sha256-ShrBUdbgIUzdJebnjP83rHadGnrwNWG2l6laZHqfFgc=", "owner": "nix-community", "repo": "NUR", - "rev": "3a004ab81c9c8799d9e156df6a2b41d8749b78e8", + "rev": "16d79cbdb047a88b69d7dbd5a111e00ea733905d", "type": "github" }, "original": { @@ -1152,11 +1223,11 @@ ] }, "locked": { - "lastModified": 1779302169, - "narHash": "sha256-OOSPtUXC4F2umtsZPkyWlPQxhXBsxF2vqBXLeI/lqIw=", + "lastModified": 1780479100, + "narHash": "sha256-VZZ/ukjciXqiebwei2JizyOnxx0T3IeoowFWElKec4o=", "owner": "Fission-AI", "repo": "OpenSpec", - "rev": "79303b521068c5f525ee61db06b915fc44b098f4", + "rev": "1b06fddd59d8e592d5b5794a1970b22867e85b1f", "type": "github" }, "original": { @@ -1186,6 +1257,98 @@ "type": "github" } }, + "pyproject-build-systems": { + "inputs": { + "nixpkgs": [ + "m3ta-home", + "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": [ + "m3ta-home", + "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": [ + "m3ta-home", + "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": [ + "m3ta-home", + "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": [ @@ -1316,11 +1479,11 @@ ] }, "locked": { - "lastModified": 1775636079, - "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=", + "lastModified": 1780220602, + "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", + "rev": "db947814a175b7ca6ded66e21383d938df01c227", "type": "github" }, "original": { @@ -1329,6 +1492,58 @@ "type": "github" } }, + "uv2nix": { + "inputs": { + "nixpkgs": [ + "m3ta-home", + "hermes-agent", + "pyproject-build-systems", + "nixpkgs" + ], + "pyproject-nix": [ + "m3ta-home", + "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": [ + "m3ta-home", + "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" + } + }, "zugferd-service": { "inputs": { "agents": "agents_5", diff --git a/hosts/AZ-CLD-1/services/containers/litellm.nix b/hosts/AZ-CLD-1/services/containers/litellm.nix index 16c5794..32c2389 100644 --- a/hosts/AZ-CLD-1/services/containers/litellm.nix +++ b/hosts/AZ-CLD-1/services/containers/litellm.nix @@ -4,7 +4,7 @@ in { virtualisation.oci-containers.containers.${serviceName} = { #image = "ghcr.io/berriai/litellm:v1.78.5-stable"; - image = "docker.litellm.ai/berriai/litellm:1.87.0"; + image = "docker.litellm.ai/berriai/litellm:1.89.0"; ports = ["127.0.0.1:${toString servicePort}:4000"]; environmentFiles = [config.age.secrets.litellm-env.path]; environment = {