| { |
| 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 = { self, nixpkgs, rust-overlay, ... }: |
| let |
| systems = [ |
| "x86_64-linux" |
| "aarch64-linux" |
| "x86_64-darwin" |
| "aarch64-darwin" |
| ]; |
| forAllSystems = f: nixpkgs.lib.genAttrs systems f; |
|
|
| |
| |
| cargoToml = builtins.fromTOML (builtins.readFile ./codex-rs/Cargo.toml); |
| cargoVersion = cargoToml.workspace.package.version; |
|
|
| |
| |
| |
| version = |
| if cargoVersion != "0.0.0" |
| then cargoVersion |
| else "0.0.0-dev+${self.shortRev or "dirty"}"; |
| in |
| { |
| packages = forAllSystems (system: |
| let |
| pkgs = import nixpkgs { |
| inherit system; |
| overlays = [ rust-overlay.overlays.default ]; |
| }; |
| codex-rs = pkgs.callPackage ./codex-rs { |
| inherit version; |
| 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"; |
| |
| shellHook = '' |
| export CC=clang |
| export CXX=clang++ |
| ''; |
| }; |
| } |
| ); |
| }; |
| } |
|
|