From c7e3c093b4e35052b4c20b90ec810afb717d9146 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 31 Oct 2026 14:47:45 -0400 Subject: [PATCH] feat(nixos): add Bambu Studio Flatpak Manage the user Flatpak through nix-flatpak and enable printer discovery through the host firewall. --- configs/nixos/hosts/zeus/default.nix | 1 + .../modules/desktop/apps/bambu-studio.nix | 36 +++++++++++++++++++ flake.lock | 17 +++++++++ flake.nix | 3 ++ 4 files changed, 57 insertions(+) create mode 100644 configs/nixos/modules/desktop/apps/bambu-studio.nix diff --git a/configs/nixos/hosts/zeus/default.nix b/configs/nixos/hosts/zeus/default.nix index 71524d6..65509ac 100644 --- a/configs/nixos/hosts/zeus/default.nix +++ b/configs/nixos/hosts/zeus/default.nix @@ -43,6 +43,7 @@ modules.shell.omp.enable = true; modules.desktop.enable = true; + modules.desktop.apps.bambu-studio.enable = true; modules.desktop.apps.obsidian.enable = true; modules.desktop.apps.r2modman.enable = true; modules.desktop.emulation.enable = true; diff --git a/configs/nixos/modules/desktop/apps/bambu-studio.nix b/configs/nixos/modules/desktop/apps/bambu-studio.nix new file mode 100644 index 0000000..cb1c99b --- /dev/null +++ b/configs/nixos/modules/desktop/apps/bambu-studio.nix @@ -0,0 +1,36 @@ +{ + config, + inputs, + lib, + util, + ... +}: +# Bambu Studio for preparing and monitoring Bambu Lab prints. +let + user = config.user.name; +in +{ + options.modules.desktop.apps.bambu-studio.enable = + lib.mkEnableOption "Bambu Studio for preparing and monitoring Bambu Lab prints"; + + config = lib.mkIf config.modules.desktop.apps.bambu-studio.enable { + services.flatpak.enable = true; + + home-manager.sharedModules = [ inputs.nix-flatpak.homeManagerModules.nix-flatpak ]; + home-manager.users.${user}.services.flatpak = { + enable = true; + packages = [ "com.bambulab.BambuStudio" ]; + }; + + # Bambu printers announce themselves with SSDP multicast or broadcast traffic. + networking.firewall.allowedUDPPorts = [ + 1990 + 2021 + ]; + + registry.window-icon.${config.networking.hostName}.bambu-studio = { + class = "[Bb]ambu[Ss]tudio"; + icon = util.glyph "f1b2"; + }; + }; +} diff --git a/flake.lock b/flake.lock index 04cfc48..db3f5a5 100644 --- a/flake.lock +++ b/flake.lock @@ -321,6 +321,22 @@ "type": "github" } }, + "nix-flatpak": { + "locked": { + "lastModified": 1767983141, + "narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "440818969ac2cbd77bfe025e884d0aa528991374", + "type": "github" + }, + "original": { + "owner": "gmodena", + "ref": "v0.7.0", + "repo": "nix-flatpak", + "type": "github" + } + }, "nixos-hardware": { "inputs": { "nixpkgs": [ @@ -456,6 +472,7 @@ "firefox-addons": "firefox-addons", "gitea-axi": "gitea-axi", "home-manager": "home-manager_3", + "nix-flatpak": "nix-flatpak", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable", diff --git a/flake.nix b/flake.nix index 5440d5d..941303f 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,9 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + # Installs Flatpak applications declaratively. + nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.7.0"; + # Provides signed AMO extensions pinned by version and hash. firefox-addons = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";