mitchmindtree / tidalcycles.nix

A Nix flake for Tidal Cycles.
GNU General Public License v3.0
61 stars 12 forks source link

Upstream the SuperCollider Quark packaging support to `nixpkgs` #6

Open mitchmindtree opened 2 years ago

mitchmindtree commented 2 years ago

Currently this provides a rudimentary mkQuark nix wrapper around SuperCollider Quarks in order to provide them to SuperCollider in a reproducible manner.

Support for Quark packaging should be upstreamed to the nixpkgs SuperCollider package. It should also be updated to properly handle a directed graph of packages. The current approach assumes the dependency graph is a tree rather than a DAG and will error in the case that the dependency graph forms a DAG (i.e. in the case that two Quarks share the same dependency).

Should work out how to solve #3 before upstreaming in order to be able to provide declared Quarks to supercollider out of the box.

mraethel commented 1 year ago

For the case this PR gets merged I have written a flake that extends the current nixpkgs/supercollider wrapper to support Quarks. It fetches the provided Quarks and their dependencies to then generate a sclang_conf.yaml for each Quark individually and finally pass the paths of those confs to SuperCollider. If two or more Quarks share dependencies, then any matching dependencies are the same object and with that share the same store path. SuperCollider then rules out any duplicate conf paths.