SkyLok/flake.nix
2026-05-20 10:50:47 +02:00

87 lines
1.7 KiB
Nix

{
description = "Cross compile libcamera app for Raspberry Pi Zero";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
crossSystem = {
config = "armv6l-unknown-linux-gnueabihf";
};
};
in
{
devShells.${system}.default = pkgs.mkShell {
nativeBuildInputs = [
pkgs.pkgsBuildBuild.pkg-config
];
buildInputs = with pkgs; [
libcamera
libGL
libglvnd
mesa
];
shellHook = ''
export CC=${pkgs.stdenv.cc.targetPrefix}gcc
export CXX=${pkgs.stdenv.cc.targetPrefix}g++
export PKG_CONFIG_ALLOW_CROSS=1
echo "Cross shell ready"
'';
};
packages.${system}.default = pkgs.stdenv.mkDerivation {
pname = "rpi-zero-libcamera-app";
version = "0.1.0";
src = ./.;
nativeBuildInputs = [
pkgs.pkgsBuildBuild.pkg-config
];
buildInputs = with pkgs; [
libcamera
libGL
libglvnd
mesa
];
buildPhase = ''
runHook preBuild
export PKG_CONFIG_ALLOW_CROSS=1
mkdir -p build
${pkgs.stdenv.cc.targetPrefix}g++ \
main.cpp \
-o build/app \
$(pkg-config --cflags --libs libcamera)
runHook postBuild
'';
installPhase = ''
mkdir -p $out/bin
cp build/app $out/bin/app
'';
};
apps.${system}.default = {
type = "app";
program = "${self.packages.${system}.default}/bin/app";
};
};
}