diff --git a/flake.nix b/flake.nix index 1b0b5ad..a4e5a34 100644 --- a/flake.nix +++ b/flake.nix @@ -3,39 +3,57 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + # Ghostty uses 'systems' to be cleaner, we can do similar or stick to a list + }; + + # This mirrors the Ghostty 'nixConfig' to ensure settings stay local to the project + nixConfig = { + extra-substituters = ["https://cache.nixos.org"]; + extra-trusted-public-keys = ["cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="]; }; outputs = { self, nixpkgs, }: let - supportedSystems = ["aarch64-darwin" "x86_64-darwin" "x86_64-linux"]; - forAllSystems = nixpkgs.lib.genAttrs supportedSystems; - pkgsFor = system: import nixpkgs {inherit system;}; + supportedSystems = ["aarch64-darwin" "x86_64-darwin" "aarch64-linux" "x86_64-linux"]; + # A helper to generate outputs for all systems + forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f (import nixpkgs {inherit system;})); in { - # This allows other flakes to "consume" this library - packages = forAllSystems (system: let - pkgs = pkgsFor system; - in { + # 1. THE PACKAGE (What you 'pull' into other projects) + packages = forAllSystems (pkgs: { default = pkgs.stdenv.mkDerivation { pname = "image_processor"; version = "0.1.0"; src = ./.; + nativeBuildInputs = [pkgs.cmake pkgs.pkg-config]; buildInputs = [pkgs.libjpeg_turbo]; + + # Ensure headers are found in the dev environment + propagatedBuildInputs = [pkgs.libjpeg_turbo]; }; }); - # This provides the dev environment for the API itself - devShells = forAllSystems (system: let - pkgs = pkgsFor system; - in { + # 2. THE DEV SHELL (What 'direnv' uses) + devShells = forAllSystems (pkgs: { default = pkgs.mkShell { - nativeBuildInputs = [pkgs.cmake pkgs.pkg-config]; - buildInputs = [pkgs.libjpeg_turbo]; + # Use 'inputsFrom' so the shell always matches the package + inputsFrom = [self.packages.${pkgs.system}.default]; + + # Add extra dev tools you only want when coding, not building + nativeBuildInputs = with pkgs; [ + gdb + pkg-config + ]; + shellHook = '' + # These exports make sure your C compiler finds the Nix-provided libs export CPATH="${pkgs.libjpeg_turbo.dev}/include:$CPATH" - echo "⚙️ Image Processor API Dev Shell" + export LIBRARY_PATH="${pkgs.libjpeg_turbo.out}/lib:$LIBRARY_PATH" + export PKG_CONFIG_PATH="${pkgs.libjpeg_turbo.dev}/lib/pkgconfig:$PKG_CONFIG_PATH" + + echo "⚙️ Image Processor API Dev Shell Loaded" ''; }; });