52 lines
1.4 KiB
Nix
52 lines
1.4 KiB
Nix
{ lib, buildPackages, nim2Packages, fetchFromSourcehut, openssl }:
|
|
|
|
nim2Packages.buildNimPackage (finalAttrs: {
|
|
pname = "nim_lk";
|
|
version = "20231031";
|
|
nimBinOnly = true;
|
|
|
|
src = fetchFromSourcehut {
|
|
owner = "~ehmry";
|
|
repo = "nim_lk";
|
|
rev = finalAttrs.version;
|
|
hash = "sha256-dXm3dfXAxgucek19f1KdRShOsJyELPTB32qgGSKId6A=";
|
|
};
|
|
|
|
buildInputs = [ openssl ];
|
|
|
|
nimFlags = finalAttrs.passthru.nimFlagsFromLockFile ./lock.json;
|
|
|
|
meta = finalAttrs.src.meta // {
|
|
description = "Generate Nix specific lock files for Nim packages";
|
|
homepage = "https://git.sr.ht/~ehmry/nim_lk";
|
|
mainProgram = "nim_lk";
|
|
license = lib.licenses.bsd3;
|
|
platforms = lib.platforms.unix;
|
|
maintainers = with lib.maintainers; [ ehmry ];
|
|
};
|
|
|
|
passthru.nimFlagsFromLockFile = let
|
|
fetchDependency = let
|
|
methods = {
|
|
fetchzip = { url, sha256, ... }:
|
|
buildPackages.fetchzip {
|
|
name = "source";
|
|
inherit url sha256;
|
|
};
|
|
git = { fetchSubmodules, leaveDotGit, rev, sha256, url, ... }:
|
|
buildPackages.fetchgit {
|
|
inherit fetchSubmodules leaveDotGit rev sha256 url;
|
|
};
|
|
};
|
|
in attrs@{ method, ... }: methods.${method} attrs // attrs;
|
|
in lockFile:
|
|
with builtins;
|
|
lib.pipe lockFile [
|
|
readFile
|
|
fromJSON
|
|
(getAttr "depends")
|
|
(map fetchDependency)
|
|
(map ({ outPath, srcDir, ... }: ''--path:"${outPath}/${srcDir}"''))
|
|
];
|
|
|
|
})
|