diff --git a/third_party/bqn-libs/default.nix b/third_party/bqn-libs/default.nix new file mode 100644 index 000000000..d76826d38 --- /dev/null +++ b/third_party/bqn-libs/default.nix @@ -0,0 +1,39 @@ +# - Standalone, importable files are installed to $out/lib/*.bqn. +# They have no external dependencies, but do import each other (via relative paths). +# - Documentation to $out/share/doc/bqn-libs. +# +# Note: This packaging is ad hoc and tentative. No way to handle BQN dependencies +# for depot (or Nix, for that matter) has been proposed yet. If you have ideas / +# want to work on this, talk to sterni. +# TODO(sterni): Find out whether any work towards a BQN package manager exists +# +# The problem is that BQN is sort of like Nix: It only has the notion of direct +# file imports. Unlike Nix, however, it doesn't even have a builtin notion of a +# search path, so the design space is unconstrained. The most obvious solution +# would be to implement some kind of search part ourselves. Unfortunately, there +# is no portable way to access environment variables in BQN at the moment. +{ depot, pkgs, lib, ... }: + +let + src = pkgs.fetchFromGitHub { + inherit (depot.third_party.sources.bqn-libs) + repo + owner + sha256 + rev + ; + }; +in + +pkgs.runCommandNoCC "bqn-libs-${builtins.substring 0 7 src.rev}" +{ + nativeBuildInputs = [ + pkgs.cbqn + ]; + meta.license = lib.licenses.bsd0; +} '' + BQN "${src}/test/main.bqn" + + install -Dm644 "${src}/"*.bqn -t "$out/lib" + install -Dm644 "${src}/LICENSE" -t "$out/share/doc/bqn-libs" +'' diff --git a/third_party/sources/sources.json b/third_party/sources/sources.json index 3c6d6d129..c0504159c 100644 --- a/third_party/sources/sources.json +++ b/third_party/sources/sources.json @@ -11,6 +11,18 @@ "url": "https://github.com/ryantm/agenix/archive/f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, + "bqn-libs": { + "branch": "master", + "description": "Informal collection of BQN utilities", + "homepage": "", + "owner": "mlochbaum", + "repo": "bqn-libs", + "rev": "405644fe7aeca7cd31304c05b95de1a6c197fff6", + "sha256": "0wxa3k9kyqr4xlvjdrhza00gk3al9f3gjbfqws1vppx5m7cq97xq", + "type": "tarball", + "url": "https://github.com/mlochbaum/bqn-libs/archive/405644fe7aeca7cd31304c05b95de1a6c197fff6.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + }, "gitignore.nix": { "branch": "master", "description": "Nix functions for filtering local git sources",