blob: 4c8a0c7ef18b93180732d92bcda27436e8e00d84 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
{
lib,
rustPlatform,
fetchFromGitHub,
git,
makeBinaryWrapper,
pkg-config,
openssl,
nix-update-script,
onnxruntime,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "icm";
version = "0.10.63";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "rtk-ai";
repo = "icm";
tag = "icm-v${finalAttrs.version}";
hash = "sha256-gj0zqfJWrn9LyYTSi2IdIP01yDs6aQvlsFUZQ9pBokI=";
};
cargoHash = "sha256-f+j9SmxI046GFscyBwuZxwMZOtUk3cTePlCI6QIa+xw=";
nativeBuildInputs = [
makeBinaryWrapper
pkg-config
];
buildInputs = [
openssl
onnxruntime
];
# Build the HTTP dashboard
buildFeatures = [ "web" ];
# The project-detection tests shell out to `git` (init, worktree add, ...)
nativeCheckInputs = [
git
];
postInstall = ''
wrapProgram $out/bin/icm \
--suffix PATH : ${lib.makeBinPath [ git ]}
'';
env = {
# Use system OpenSSL instead of vendoring it
OPENSSL_NO_VENDOR = "1";
ORT_LIB_LOCATION = "${lib.getLib onnxruntime}/lib";
};
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
passthru.updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"^icm-(.*)"
];
};
meta = {
description = "Permanent memory system for AI agents with MCP integration";
homepage = "https://github.com/rtk-ai/icm";
changelog = "https://github.com/rtk-ai/icm/releases/tag/icm-v${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ jpds ];
mainProgram = "icm";
platforms = lib.platforms.unix;
badPlatforms = lib.platforms.darwin;
};
})
|