99 lines
2.5 KiB
Nix
99 lines
2.5 KiB
Nix
|
|
{
|
||
|
|
description = "Bambuddy — self-hosted command center for Bambu Lab 3D printers (package + NixOS module)";
|
||
|
|
|
||
|
|
inputs = {
|
||
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||
|
|
};
|
||
|
|
|
||
|
|
outputs =
|
||
|
|
{ self, nixpkgs }:
|
||
|
|
let
|
||
|
|
systems = [
|
||
|
|
"x86_64-linux"
|
||
|
|
"aarch64-linux"
|
||
|
|
"x86_64-darwin"
|
||
|
|
"aarch64-darwin"
|
||
|
|
];
|
||
|
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||
|
|
|
||
|
|
pkgsFor = system: nixpkgs.legacyPackages.${system};
|
||
|
|
in
|
||
|
|
{
|
||
|
|
packages = forAllSystems (
|
||
|
|
system:
|
||
|
|
let
|
||
|
|
pkgs = pkgsFor system;
|
||
|
|
in
|
||
|
|
rec {
|
||
|
|
bambuddy = pkgs.callPackage ./pkgs/bambuddy { };
|
||
|
|
default = bambuddy;
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
overlays.default = final: prev: {
|
||
|
|
bambuddy = self.packages.${final.stdenv.hostPlatform.system}.bambuddy;
|
||
|
|
};
|
||
|
|
|
||
|
|
nixosModules = rec {
|
||
|
|
# Wires the module against this flake's own package as the default,
|
||
|
|
# so `services.bambuddy.enable = true;` works out of the box.
|
||
|
|
bambuddy =
|
||
|
|
{ lib, pkgs, ... }:
|
||
|
|
{
|
||
|
|
imports = [ ./nixos/module.nix ];
|
||
|
|
services.bambuddy.package = lib.mkOptionDefault self.packages.${pkgs.stdenv.hostPlatform.system}.bambuddy;
|
||
|
|
};
|
||
|
|
default = bambuddy;
|
||
|
|
};
|
||
|
|
|
||
|
|
checks = forAllSystems (
|
||
|
|
system:
|
||
|
|
let
|
||
|
|
pkgs = pkgsFor system;
|
||
|
|
bambuddy = self.packages.${system}.bambuddy;
|
||
|
|
in
|
||
|
|
{
|
||
|
|
bambuddy-import = pkgs.callPackage ./tests/import-check.nix { inherit bambuddy; };
|
||
|
|
}
|
||
|
|
// nixpkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux {
|
||
|
|
bambuddy-service = pkgs.callPackage ./tests/service-test.nix {
|
||
|
|
inherit bambuddy;
|
||
|
|
nixosModule = self.nixosModules.default;
|
||
|
|
};
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
apps = forAllSystems (
|
||
|
|
system:
|
||
|
|
let
|
||
|
|
bambuddy = self.packages.${system}.bambuddy;
|
||
|
|
in
|
||
|
|
{
|
||
|
|
default = {
|
||
|
|
type = "app";
|
||
|
|
program = "${bambuddy}/bin/bambuddy";
|
||
|
|
meta.description = "Run the Bambuddy server";
|
||
|
|
};
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
devShells = forAllSystems (
|
||
|
|
system:
|
||
|
|
let
|
||
|
|
pkgs = pkgsFor system;
|
||
|
|
bambuddy = self.packages.${system}.bambuddy;
|
||
|
|
in
|
||
|
|
{
|
||
|
|
default = pkgs.mkShell {
|
||
|
|
packages = [
|
||
|
|
bambuddy.passthru.pythonEnv
|
||
|
|
pkgs.nodejs
|
||
|
|
pkgs.ffmpeg
|
||
|
|
pkgs.nixfmt
|
||
|
|
];
|
||
|
|
};
|
||
|
|
}
|
||
|
|
);
|
||
|
|
};
|
||
|
|
}
|