From ef0b2b07ef7f307034fc665912767ab45db87a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thea=20Sch=C3=B6bl?= Date: Tue, 25 Nov 2025 10:11:11 +0100 Subject: [PATCH] stuff --- flake.lock | 110 +++++++++++++++++- flake.nix | 9 ++ modules/home-manager/modules/nixvim/README.md | 2 + .../home-manager/modules/nixvim/default.nix | 4 + .../modules/nixvim/languages/strudel.nix | 28 +++++ .../modules/nixvim/plugins/strudel.nix | 59 ++++++++++ .../modules/nixvim/plugins/tidal.nix | 13 +++ modules/home-manager/programs/nixvim.nix | 2 + overlays/strudel-nvim/default.nix | 14 +++ 9 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 modules/home-manager/modules/nixvim/README.md create mode 100644 modules/home-manager/modules/nixvim/languages/strudel.nix create mode 100644 modules/home-manager/modules/nixvim/plugins/strudel.nix create mode 100644 modules/home-manager/modules/nixvim/plugins/tidal.nix create mode 100644 overlays/strudel-nvim/default.nix diff --git a/flake.lock b/flake.lock index 7cfce6a..e8c8492 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "dirt-samples-src": { + "flake": false, + "locked": { + "lastModified": 1698439458, + "narHash": "sha256-Mp8qBpsOvW9Zguv95Kv7EU6S3ICaF2aO02Wz6xGURtE=", + "owner": "tidalcycles", + "repo": "dirt-samples", + "rev": "9a6dff8f9ec3cd55b287290cf04e01afa6b8f532", + "type": "github" + }, + "original": { + "owner": "tidalcycles", + "repo": "dirt-samples", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -268,7 +284,24 @@ "niri": "niri", "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs", - "nixvim": "nixvim" + "nixvim": "nixvim", + "tidalcycles": "tidalcycles" + } + }, + "superdirt-src": { + "flake": false, + "locked": { + "lastModified": 1697377840, + "narHash": "sha256-9qU9CHYAXbN1IE3xXDqGipuroifVaSVXj3c/cDfwM80=", + "owner": "musikinformatik", + "repo": "superdirt", + "rev": "c7f32998572984705d340e7c1b9ed9ad998a39b6", + "type": "github" + }, + "original": { + "owner": "musikinformatik", + "repo": "superdirt", + "type": "github" } }, "systems": { @@ -316,6 +349,81 @@ "type": "github" } }, + "tidal-src": { + "flake": false, + "locked": { + "lastModified": 1712519522, + "narHash": "sha256-LbvxQmVxHElidCgvt+w0g1k+QQbNLebK46vtRCgsLeQ=", + "owner": "tidalcycles", + "repo": "tidal", + "rev": "88f09edf6bef2228d5f530dea872b08a9d803066", + "type": "github" + }, + "original": { + "owner": "tidalcycles", + "ref": "v1.9.5", + "repo": "tidal", + "type": "github" + } + }, + "tidalcycles": { + "inputs": { + "dirt-samples-src": "dirt-samples-src", + "nixpkgs": [ + "nixpkgs" + ], + "superdirt-src": "superdirt-src", + "tidal-src": "tidal-src", + "vim-tidal-src": "vim-tidal-src", + "vowel-src": "vowel-src" + }, + "locked": { + "lastModified": 1730626669, + "narHash": "sha256-nFyZrvTPn9OM9UZmuAwy3e1Ba0ZuYc2FaDCOOhGtqg4=", + "owner": "mitchmindtree", + "repo": "tidalcycles.nix", + "rev": "0db0918e7a3d3c30ed7a6e81dc9d4e3832870ac4", + "type": "github" + }, + "original": { + "owner": "mitchmindtree", + "ref": "0db0918e7a3d3c30ed7a6e81dc9d4e3832870ac4", + "repo": "tidalcycles.nix", + "type": "github" + } + }, + "vim-tidal-src": { + "flake": false, + "locked": { + "lastModified": 1685703852, + "narHash": "sha256-8gyk17YLeKpLpz3LRtxiwbpsIbZka9bb63nK5/9IUoA=", + "owner": "tidalcycles", + "repo": "vim-tidal", + "rev": "e440fe5bdfe07f805e21e6872099685d38e8b761", + "type": "github" + }, + "original": { + "owner": "tidalcycles", + "repo": "vim-tidal", + "type": "github" + } + }, + "vowel-src": { + "flake": false, + "locked": { + "lastModified": 1641306144, + "narHash": "sha256-zfF6cvAGDNYWYsE8dOIo38b+dIymd17Pexg0HiPFbxM=", + "owner": "supercollider-quarks", + "repo": "vowel", + "rev": "ab59caa870201ecf2604b3efdd2196e21a8b5446", + "type": "github" + }, + "original": { + "owner": "supercollider-quarks", + "repo": "vowel", + "type": "github" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 3157e76..ce404b5 100644 --- a/flake.nix +++ b/flake.nix @@ -18,6 +18,10 @@ url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; + tidalcycles = { + url = "github:mitchmindtree/tidalcycles.nix/?ref=0db0918e7a3d3c30ed7a6e81dc9d4e3832870ac4"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = @@ -28,6 +32,7 @@ matugen, nix-flatpak, niri, + tidalcycles, ... }@inputs: let @@ -56,6 +61,10 @@ rastertokpsl-re = prev.callPackage ./overlays/rastertokpsl-re { }; usb-sniffer = prev.callPackage ./overlays/usb-sniffer { }; gamma-launcher = prev.callPackage ./overlays/gamma-launcher { }; + vimPlugins = prev.vimPlugins // { + strudel-nvim = prev.callPackage ./overlays/strudel-nvim { }; + vim-tidal = tidalcycles.packages.${prev.system}.vim-tidal; + }; wireshark = prev.wireshark.overrideAttrs ( finalAttrs: prevAttrs: { postInstall = prevAttrs.postInstall + '' diff --git a/modules/home-manager/modules/nixvim/README.md b/modules/home-manager/modules/nixvim/README.md new file mode 100644 index 0000000..54cb3b9 --- /dev/null +++ b/modules/home-manager/modules/nixvim/README.md @@ -0,0 +1,2 @@ +The configuration I use is located in [`/modules/home-manager/programs/nixvim.nix`](../../programs/nixvim.nix). +This module has to be included in home manager first as shown in [`/modules/home-manager/default.nix`](../../default.nix) diff --git a/modules/home-manager/modules/nixvim/default.nix b/modules/home-manager/modules/nixvim/default.nix index 0f625d3..62b37c4 100644 --- a/modules/home-manager/modules/nixvim/default.nix +++ b/modules/home-manager/modules/nixvim/default.nix @@ -12,6 +12,9 @@ inherit pkgs hostname username; }; modules = [ + ./plugins/strudel.nix + ./plugins/tidal.nix + ./aerial.nix ./auto-save.nix ./auto-format.nix @@ -43,6 +46,7 @@ ./languages/python.nix ./languages/rust.nix ./languages/shell.nix + ./languages/strudel.nix ./languages/svelte.nix ./remaps/half-page-scroll.nix diff --git a/modules/home-manager/modules/nixvim/languages/strudel.nix b/modules/home-manager/modules/nixvim/languages/strudel.nix new file mode 100644 index 0000000..d805b00 --- /dev/null +++ b/modules/home-manager/modules/nixvim/languages/strudel.nix @@ -0,0 +1,28 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.presets.languages.strudel; +in +{ + options.presets.languages.strudel = { + enable = lib.mkEnableOption "Strudel"; + }; + + config = lib.mkIf cfg.enable { + plugins = { + strudel.enable = true; + web-devicons.customIcons = { + str = { + icon = " "; + color = "#34E2E1"; + cterm_color = "14"; + name = "Strudel"; + }; + }; + }; + }; +} diff --git a/modules/home-manager/modules/nixvim/plugins/strudel.nix b/modules/home-manager/modules/nixvim/plugins/strudel.nix new file mode 100644 index 0000000..7e9e069 --- /dev/null +++ b/modules/home-manager/modules/nixvim/plugins/strudel.nix @@ -0,0 +1,59 @@ +{ + lib, + ... +}: +let + inherit (lib.nixvim) defaultNullOpts; +in +lib.nixvim.plugins.mkNeovimPlugin { + name = "strudel"; + package = "strudel-nvim"; + maintainers = [ lib.maintainers.theaninova ]; + description = "A Neovim based strudel.cc controller, live coding using Strudel from Neovim."; + + settingsOptions = { + ui = { + maximise_menu_panel = defaultNullOpts.mkBool true '' + Maximise the menu panel + ''; + hide_menu_panel = defaultNullOpts.mkBool false '' + Hide the Strudel menu panel (and handle) + ''; + hide_top_bar = defaultNullOpts.mkBool false '' + Hide the default Strudel top bar (controls) + ''; + hide_code_editor = defaultNullOpts.mkBool false '' + Hide the Strudel code editor + ''; + hide_error_display = defaultNullOpts.mkBool false '' + Hide the Strudel eval error display under the editor + ''; + }; + start_on_launch = defaultNullOpts.mkBool true '' + Automatically start playback when launching Strudel + ''; + update_on_save = defaultNullOpts.mkBool false '' + Set to `true` to automatically trigger the code evaluation after saving the buffer content + Only works if the playback was already started (doesn't start the playback on save) + ''; + sync_cursor = defaultNullOpts.mkBool true '' + Enable two-way cursor position sync between Neovim and Strudel editor + ''; + report_eval_errors = defaultNullOpts.mkBool true '' + Report evaluation errors from Strudel as Neovim notifications + ''; + custom_css_file = defaultNullOpts.mkStr null '' + Path to a custom CSS file to style the Strudel web editor (base64-encoded and injected at launch) + This allows you to override or extend the default Strudel UI appearance + ''; + headless = defaultNullOpts.mkBool false '' + Headless mode: set to `true` to run the browser without launching a window + ''; + browser_data_dir = defaultNullOpts.mkStr "~/.cache/strudel-nvim/" '' + Path to the directory where Strudel browser user data (cookies, sessions, etc.) is stored + ''; + browser_exec_path = defaultNullOpts.mkStr null '' + Path to a (chromium-based) browser executable of choice + ''; + }; +} diff --git a/modules/home-manager/modules/nixvim/plugins/tidal.nix b/modules/home-manager/modules/nixvim/plugins/tidal.nix new file mode 100644 index 0000000..c587d9f --- /dev/null +++ b/modules/home-manager/modules/nixvim/plugins/tidal.nix @@ -0,0 +1,13 @@ +{ + lib, + ... +}: +let + inherit (lib.nixvim) defaultNullOpts; +in +lib.nixvim.plugins.mkVimPlugin { + name = "vim-tidal"; + package = "vim-tidal"; + maintainers = [ lib.maintainers.theaninova ]; + description = "Vim plugin for TidalCycles"; +} diff --git a/modules/home-manager/programs/nixvim.nix b/modules/home-manager/programs/nixvim.nix index d30082d..396c2b8 100644 --- a/modules/home-manager/programs/nixvim.nix +++ b/modules/home-manager/programs/nixvim.nix @@ -77,6 +77,7 @@ python.enable = true; rust.enable = true; shell.enable = true; + strudel.enable = true; svelte.enable = true; }; remaps = { @@ -94,6 +95,7 @@ origami.enable = false; nvim-surround.enable = true; fidget.enable = true; + vim-tidal.enable = true; treesitter-context = { enable = false; # TODO: looks weird with Neovide settings.line_numbers = false; diff --git a/overlays/strudel-nvim/default.nix b/overlays/strudel-nvim/default.nix new file mode 100644 index 0000000..21c0364 --- /dev/null +++ b/overlays/strudel-nvim/default.nix @@ -0,0 +1,14 @@ +{ + vimUtils, + fetchFromGitHub, + lib, +}: +vimUtils.buildVimPlugin { + name = "strudel-nvim"; + src = fetchFromGitHub { + owner = "gruvw"; + repo = "strudel.nvim"; + rev = "97699f9f08b0deb635038687f92c6237ab67e3b5"; + hash = "sha256-xe7ItXCfq+gqXxm2Y6zxbiz4AAGgPaP/w6zNgpL+Cl4="; + }; +}