janet2nix is a set of tools for writing and packaging janet applications with and for the nix package manager.
See the example repo for how to use in a flake.
janet2nix provides 4 tools.
mkJanetApplication accepts an attrset with 3 properties;
name- this should be the name of your final executable. The function currently looks for this name to copy to thebin/folder.src- this gets passed to mkDerivation, all the same rules apply.withJanetPackages- this is a list of packages built usingmkJanetPackage
mkJanetApplication will run jpm install for each dependency listed in withJanetPackages.
It currently ignores any dependency listed
pkgs.mkJanetApplication {
    name = "example";
    src = ./.; # local
    withJanetPackages = [
      # Add any janet dependencies. These are made using mkJanetPackage
      pkgs.janetPackages.spork
    ];
};mkJanetPackage downloads a jpm package from a public git repository and sets it up to be installed by jpm install.
pkgs.mkJanetPackage {
      name = "sh";
      url = "https://github.com/andrewchambers/janet-sh.git";
      rev = "221bcc869bf998186d3c56a388c8313060bfd730";
      hash = "sha256-pFR5kIFpAV0ReYGE9QRc63fzD39TqwGI15RxdsqExl4=";
      withJanetPackages = [
        pkgs.janetPackages.posix-spawn
      ];
    };mkJanetTree accepts an attrset with 2 properties;
name- this should be the name of your final executable. The function currently looks for this name to copy to thebin/folder.withJanetPackages- this is a list of packages built usingmkJanetPackage
mkJanetTree will build a derivation that provides a janet and jpm binary with there path set to find any provided packages. jpm install is run for every package.
pkgs.mkJanetTree {
    name = "example";
    withJanetPackages = [
      # Add any janet dependencies. These are made using mkJanetPackage
      pkgs.janetPackages.spork
    ];
};Some jpm packages are pre-packaged here.
Current list includes:
- spork
 - sh
 - posix-spawn
 
-  Read 
project.janetfile to generate dependencies instead of explicitly creating them. -  Read 
project.janetfile determine what executable to copy tobin/. -  Optionally copy library exes to 
$out/bin/. -  Make all the "blessed" janet packages available in 
pkgs.janetPackages. -  Switch mkJanetPackage to take a 
srcattribute instead of assuming a git repo.