{ description = "Development Nix flake for OpenAI Codex CLI"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, rust-overlay, ... }: let systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forAllSystems = f: nixpkgs.lib.genAttrs systems f; in { packages = forAllSystems (system: let pkgs = import nixpkgs { inherit system; overlays = [ rust-overlay.overlays.default ]; }; codex-rs = pkgs.callPackage ./codex-rs { rustPlatform = pkgs.makeRustPlatform { cargo = pkgs.rust-bin.stable.latest.minimal; rustc = pkgs.rust-bin.stable.latest.minimal; }; }; in { codex-rs = codex-rs; default = codex-rs; } ); devShells = forAllSystems (system: let pkgs = import nixpkgs { inherit system; overlays = [ rust-overlay.overlays.default ]; }; rust = pkgs.rust-bin.stable.latest.default.override { extensions = [ "rust-src" "rust-analyzer" ]; }; in { default = pkgs.mkShell { buildInputs = [ rust pkgs.pkg-config pkgs.openssl pkgs.cmake pkgs.llvmPackages.clang pkgs.llvmPackages.libclang.lib ]; PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; # Use clang for BoringSSL compilation (avoids GCC 15 warnings-as-errors) shellHook = '' export CC=clang export CXX=clang++ ''; }; } ); }; }