Skip to content
vic

mitchmindtree/tidalcycles.nix

A Nix flake for Tidal Cycles.

mitchmindtree/tidalcycles.nix.json
{
"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"
}

A Nix flake for Tidal Cycles. https://tidalcycles.org/

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.

Requires a recent version of Nix with the “flakes” feature enabled.

Includes the following packages:

PackageDescription
superdirt-startA 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.
tidalA 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-installA 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-tidalThis is the official tidalcycles Vim plugin packaged for Nix and patched to use the tidal command for its GHCi interpreter.

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.nix

You 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.

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-project

By default the project will have the tidal devShell. cd into your project and run nix develop to start working with tidal!

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.

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.

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.