aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorTim Keller <tjk@tjkeller.xyz>2026-07-08 16:40:50 -0500
committerTim Keller <tjk@tjkeller.xyz>2026-07-08 16:40:50 -0500
commit4ee40b64e3121f5b7d7c13c6d115d7f970da4dfb (patch)
tree7f2fdf05493595cb94dd29b99b50f968994d433c /README.md
downloadopen-bamboo-network-plugin-flake-4ee40b64e3121f5b7d7c13c6d115d7f970da4dfb.tar.xz
open-bamboo-network-plugin-flake-4ee40b64e3121f5b7d7c13c6d115d7f970da4dfb.zip
initial commit
Diffstat (limited to 'README.md')
-rw-r--r--README.md124
1 files changed, 124 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ae322a6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,124 @@
+# open-bamboo-networking (Nix/home-manager)
+
+Nix packaging of [open-bamboo-networking](https://github.com/ClusterM/open-bamboo-networking),
+an open-source drop-in replacement for the proprietary `bambu_networking`
+plugin.
+
+The proprietary plugin (which OrcaSlicer will try to download) is not
+compatible with NixOS unless you go through the effort of (at the very least)
+relinking the shared objects (`libBambuSource.so` +
+`libbambu_networking_xx.xx.xx.xx.so`) downloaded to the plugins directory
+(`~/.config/OrcaSlicer/plugins`). The open plugin, on the other hand, can be
+easily built with Nix and the binaries can be dropped into the plugins
+directory to replace the proprietary ones.
+
+The flake includes also a home-manager module which installs the plugin for
+OrcaSlicer decoratively. One caveat is that `OrcaSlicer.conf` will need to be
+patched in order for it to recognize the plugin when it is (as in this case)
+installed manually (see instructions below). Correctly done, the user will not
+be notified of a missing plugin on launch.
+
+## Usage
+
+```nix
+{
+ inputs.open-bamboo-networking.url = "github:you/open-bamboo-networking";
+
+ # in your home-manager config:
+ imports = [ inputs.open-bamboo-networking.homeManagerModules.default ];
+
+ programs.openBambooNetworking = {
+ enable = true;
+ orcaSlicer = {
+ enable = true; # default
+ };
+ };
+}
+```
+
+### Options
+
+| option | default | description |
+|---|---|---|
+| `programs.openBambooNetworking.enable` | `false` | enable the module |
+| `programs.openBambooNetworking.orcaSlicer.enable` | `true` | build and link the plugin for OrcaSlicer / a compatible fork |
+| `programs.openBambooNetworking.orcaSlicer.obnVersion` | `"02.03.00.99"` | ABI version baked into the built filename |
+| `programs.openBambooNetworking.orcaSlicer.configDir` | `${config.xdg.configHome}/OrcaSlicer` | where `OrcaSlicer.conf` and `plugins/` live - override for forks, nightlies, or Flatpak installs |
+
+`orcaSlicer.enable` only links the shared objects declaratively into
+`<configDir>/plugins` - it does **not** touch `OrcaSlicer.conf`. That file
+is mutable app state the slicer reads and rewrites on its own, so patching
+it is left as a manual step (below) rather than something
+`home-manager switch` does for you.
+
+## Patching OrcaSlicer.conf
+
+After `home-manager switch`, and after launching the slicer at least once
+so `<configDir>/OrcaSlicer.conf` exists, run:
+
+```bash
+# Ensure correct $ver
+cat <<< $(jq --arg ver "02.03.00.99" '
+ .app.installed_networking = "true"
+ | .app.network_plugin_version = $ver
+ | .app.network_plugin_remind_later = "true"
+' ~/.config/OrcaSlicer/OrcaSlicer.conf) > ~/.config/OrcaSlicer/OrcaSlicer.conf
+```
+
+Use the same `$ver` as `orcaSlicer.obnVersion`. Restart the slicer. Re-run
+this whenever you change `obnVersion`, or if the app ever resets
+`network_plugin_version` on its own.
+
+### Automating it with home.activationScripts
+
+If you'd rather this happen automatically on every `home-manager switch`
+instead of by hand, add this alongside the module import. It reads
+`obnVersion`/`configDir` straight from `programs.openBambooNetworking.orcaSlicer`,
+so it can't drift out of sync with what the module actually built and
+linked:
+
+```nix
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.programs.openBambooNetworking.orcaSlicer;
+in
+{
+ home.activationScripts.openBambooNetworkingOrcaConf = ''
+ CONF="${cfg.configDir}/OrcaSlicer.conf"
+
+ if [ ! -e "$CONF" ]; then
+ echo "open-bamboo-networking: $CONF doesn't exist yet, skipping" \
+ "(launch OrcaSlicer once first)"
+ else
+ NEEDS_PATCH=$(${pkgs.jq}/bin/jq -r --arg ver "${cfg.obnVersion}" '
+ (.app.installed_networking != "true")
+ or (.app.network_plugin_version != $ver)
+ ' "$CONF")
+
+ if [ "$NEEDS_PATCH" = "true" ]; then
+ if [ -n "''${DRY_RUN_CMD:-}" ]; then
+ echo "open-bamboo-networking: would patch $CONF (dry run)"
+ else
+ cp -f "$CONF" "$CONF.bak"
+ TMP=$(mktemp)
+ ${pkgs.jq}/bin/jq --arg ver "${cfg.obnVersion}" '
+ .app.installed_networking = "true"
+ | .app.network_plugin_version = $ver
+ | .app.network_plugin_remind_later = "true"
+ ' "$CONF" > "$TMP"
+ cat "$TMP" > "$CONF"
+ rm -f "$TMP"
+ echo "open-bamboo-networking: patched $CONF (backup: $CONF.bak)"
+ fi
+ fi
+ fi
+ '';
+}
+```
+
+## AI disclosure
+
+The Nix packaging in this repo was written with substantial AI assistance. It
+hasn't been reviewed by anyone but the repo maintainer's own testing - treat it
+accordingly and read through `package.nix`/`hm-module.nix` yourself before
+trusting it with your setup.