1{
2 rustPlatform,
3 testers,
4 libdrm,
5 coolercontrol,
6 runtimeShell,
7}:
8
9{
10 version,
11 src,
12 meta,
13}:
14
15rustPlatform.buildRustPackage {
16 pname = "coolercontrold";
17 inherit version src;
18 sourceRoot = "${src.name}/coolercontrold";
19
20 cargoHash = "sha256-ZyYyQcaYd3VZ7FL0Hki33JO3LscPfBT5gl+nw2cXvUs=";
21
22 buildInputs = [ libdrm ];
23
24 postPatch = ''
25 # copy the frontend static resources to a directory for embedding
26 mkdir -p ui-build
27 cp -R ${coolercontrol.coolercontrol-ui-data}/* resources/app/
28
29 # Hardcode a shell
30 substituteInPlace src/repositories/utils.rs \
31 --replace-fail 'Command::new("sh")' 'Command::new("${runtimeShell}")'
32 '';
33
34 postInstall = ''
35 install -Dm444 "${src}/packaging/systemd/coolercontrold.service" -t "$out/lib/systemd/system"
36 substituteInPlace "$out/lib/systemd/system/coolercontrold.service" \
37 --replace-fail '/usr/bin' "$out/bin"
38 '';
39
40 passthru.tests.version = testers.testVersion {
41 package = coolercontrol.coolercontrold;
42 # coolercontrold prints its version with "v" prefix
43 version = "v${version}";
44 };
45
46 meta = meta // {
47 description = "${meta.description} (Main Daemon)";
48 mainProgram = "coolercontrold";
49 };
50}