bambuddy-nix/flake.nix

99 lines
2.5 KiB
Nix
Raw Permalink Normal View History

{
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
];
};
}
);
};
}