diff --git a/flake.nix b/flake.nix index e028ecc..34044a8 100644 --- a/flake.nix +++ b/flake.nix @@ -18,36 +18,69 @@ }; in { - devShells.${system}.default = - pkgs.mkShell { - packages = with pkgs; [ - stdenv.cc + devShells.${system}.default = pkgs.mkShell { + nativeBuildInputs = [ + pkgs.pkgsBuildBuild.pkg-config + ]; - pkg-config + buildInputs = with pkgs; [ + libcamera + libGL + libglvnd + mesa + ]; - libcamera + shellHook = '' + export CC=${pkgs.stdenv.cc.targetPrefix}gcc + export CXX=${pkgs.stdenv.cc.targetPrefix}g++ - libGL - libglvnd + export PKG_CONFIG_ALLOW_CROSS=1 - mesa + echo "Cross shell ready" + ''; + }; - # useful tools - gdb - ]; + packages.${system}.default = pkgs.stdenv.mkDerivation { + pname = "rpi-zero-libcamera-app"; + version = "0.1.0"; - shellHook = '' - echo "ARM cross shell for Raspberry Pi Zero" - echo + src = ./.; - export CC=arm-linux-gnueabihf-gcc - export CXX=arm-linux-gnueabihf-g++ + nativeBuildInputs = [ + pkgs.pkgsBuildBuild.pkg-config + ]; - export PKG_CONFIG_ALLOW_CROSS=1 + buildInputs = with pkgs; [ + libcamera + libGL + libglvnd + mesa + ]; - echo "Compiler:" - $CXX --version - ''; - }; + 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"; + }; }; }