mitchmindtree/tidalcycles.nix
{ "createdAt": "2022-06-18T03:48:38Z", "defaultBranch": "main", "description": "A Nix flake for Tidal Cycles.", "fullName": "mitchmindtree/tidalcycles.nix", "homepage": null, "language": "Nix", "name": "tidalcycles.nix", "pushedAt": "2024-11-03T09:37:49Z", "stargazersCount": 94, "topics": [], "updatedAt": "2025-11-25T21:25:29Z", "url": "https://github.com/mitchmindtree/tidalcycles.nix"}tidalcycles.nix
Section titled “tidalcycles.nix”A Nix flake for Tidal Cycles. https://tidalcycles.org/
Motivation
Section titled “Motivation”Typically, setting up a Tidal Cycles environment can be quite involved. It requires:
- An instance of the Glasgow Haskell Compiler interpreter (GHCi) with the Tidal library installed.
- Supercollider, ideally with SC3-plugins included.
- The SuperDirt SuperCollider Quark to be installed (along with its dependencies).
- An editor with a Tidal-aware plugin.
This flake aims to provide all of this in a declarative, reproducible manner.
System Requirements
Section titled “System Requirements”Requires a recent version of Nix with the “flakes” feature enabled.
Packages
Section titled “Packages”Includes the following packages:
| Package | Description |
|---|---|
superdirt-start | A short-hand command for starting up SuperCollider and running SuperDirt.start;. No need to manually install SuperDirt as it is provided to sclang via a custom sclang_conf.yaml. If you want to use a custom start script (e.g. to load additional samples), you can pass its path as an argument to the command. |
tidal | A command for entering the GHCi interpreter initialised with BootTidal.hs and the Tidal library loaded. This is a useful repl for experimenting with Tidal. |
superdirt-install | A command for installing SuperDirt and its dependencies under the user’s SuperCollider configuration (the traditional installation approach). This is currently the recommended way to provide SuperDirt to the SuperCollider IDE until this issue is addressed. |
vim-tidal | This is the official tidalcycles Vim plugin packaged for Nix and patched to use the tidal command for its GHCi interpreter. |
Dev Shell
Section titled “Dev Shell”This flake features a tidal devShell. It allows for trivially entering a shell
that includes all of the above packages available on the PATH.
If you have Nix installed with the “flakes” feature enabled, you can enter the shell with:
nix develop github:mitchmindtree/tidalcycles.nixYou can then exit the shell these tools will no longer be on the PATH.
Note that currently the vim plugin still needs to be installed separately. See the “Overlay” section below and the Nix Vim wiki for more details.
Tidal Project Template
Section titled “Tidal Project Template”A flake template for Tidal Cycles projects is provided.
Start a new Tidal Cycles project with the following:
nix flake new --template github:mitchmindtree/tidalcycles.nix#templates.default ./my-tidal-projectBy default the project will have the tidal devShell. cd into your project
and run nix develop to start working with tidal!
Overlay
Section titled “Overlay”A nixpkgs overlay is provided that allows for “merging” the set of tools provided by this flake with nixpkgs.
Note that this makes the vim-tidal plugin accessible via the vimPlugins set
following the nixpkgs convention, e.g. nixpkgs.vimPlugins.vim-tidal.
Editor plugins
Section titled “Editor plugins”Currently this flake and its overlay only provide the vim-tidal Vim plugin.
Contributions adding support for other editors/IDE plugins are more than welcome.
Contributing
Section titled “Contributing”Contributions in the form of PRs are very welcome!
Note that this repository has some automated checks that must pass before a PR
can be merged. This includes a nix flake check and standard formatting of the
nix code. To automatically format the nix code before opening a PR, run nix fmt from the root of the repository.
Feel free to post questions, bugs or feature requests as issues.
Please keep in mind that this project is created and maintained in personal time.