NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
18.32k stars 14.3k forks source link

Package request: linkml #344416

Open stanleyj-edsn opened 2 months ago

stanleyj-edsn commented 2 months ago

Project description

LinkML is a flexible modeling language that allows you to author schemas in YAML that describe the structure of your data. Additionally, it is a framework for working with and validating data in a variety of formats (JSON, RDF, TSV), with generators for compiling LinkML schemas to other frameworks.

Metadata


Add a :+1: reaction to issues you find important.

stanleyj-edsn commented 2 months ago

I have it running locally using poetry2nix, adding my default.nix it for inspiration:

let
  sources = import ./nix/sources.nix; # niv managed
  pkgs = import sources.nixpkgs { };
  poetry2nix = import sources.poetry2nix { inherit pkgs; };

  version = "1.8.3";
  src = pkgs.fetchFromGitHub {
    owner = "linkml";
    repo = "linkml";
    rev = "v${version}";
    hash = "sha256-k8jp/E2BcK3Mr1e4MAyQkJ2Udy4tveBuBzvfWh1jIyY=";
  };

  pypkgs-build-requirements = {
    hbreader = [ "setuptools" "pbr" ];
    jsonasobj2 = [ "setuptools" "pbr" ];
    jsonasobj = [ "setuptools" ];
    json-flattener = [ "setuptools" ];
    pyjsg = [ "setuptools" ];
    shexjsg = [ "setuptools" ];
    cfgraph = [ "setuptools" ];
    owlrl = [ "setuptools" ];
    rdflib-jsonld = [ "setuptools" ];
    rdflib-shim = [ "setuptools" "pbr" ];
    sparqlwrapper = [ "setuptools" ];
    pyshexc = [ "setuptools" ];
    pytrie = [ "setuptools" ];
    prefixcommons = [ "setuptools" "poetry-core" ];
    pytest-logging = [ "setuptools" ];
    sparqlslurper = [ "setuptools" ];
    curies = [ "setuptools" ];
    pyshex = [ "setuptools" ];
    prefixmaps = [ "poetry-dynamic-versioning" "poetry-core" ];
    pyshacl = [ "poetry-core" ];
    linkml-runtime = [ "poetry-dynamic-versioning" "poetry-core" ];
    linkml-dataops = [ "setuptools" ];
  };
  p2n-overrides = poetry2nix.defaultPoetryOverrides.extend (final: prev:
    builtins.mapAttrs (package: build-requirements:
      (builtins.getAttr package prev).overridePythonAttrs (old: {
        buildInputs = (old.buildInputs or [ ]) ++ (builtins.map (pkg:
          if builtins.isString pkg then builtins.getAttr pkg prev else pkg)
          build-requirements);
      })) pypkgs-build-requirements);

in poetry2nix.mkPoetryApplication {
  projectDir = src;
  overrides = p2n-overrides;
}