{ lib, rustPlatform, makeWrapper, ... }: let pname = "pscand"; version = "0.1.0"; src = let fs = lib.fileset; s = ../.; in lib.cleanSourceWith { src = fs.toSource { root = s; fileset = fs.unions [ (s + /crates) (s + /scanners) (s + /Cargo.lock) (s + /Cargo.toml) ]; }; }; in rustPlatform.buildRustPackage { inherit pname version src; cargoLock.lockFile = ../Cargo.lock; nativeBuildInputs = [ makeWrapper ]; postFixup = let scannerDir = "${placeholder "out"}/lib/pscand/scanners"; in '' mkdir -p ${scannerDir} for scanner in scanners/**/target/release/*.so; do if [ -f "$scanner" ]; then install -Dm755 "$scanner" "${scannerDir}/$(basename "$scanner")" fi done wrapProgram "$out/bin/pscand" \ --set PSCAND_SCANNER_DIRS "${scannerDir}" ''; meta = { description = "Pluggable System Condition Monitoring Daemon"; homepage = "https://github.com/notashelf/pscand"; license = lib.licenses.mpl20; maintainers = with lib.maintainers; [NotAShelf]; platforms = lib.platforms.linux; }; }