This is an automated email from the git hooks/post-receive script.

guix_mirror_bot pushed a commit to branch master
in repository guix.

The following commit(s) were added to refs/heads/master by this push:
     new 279410efb8 gnu: Add codex.
279410efb8 is described below

commit 279410efb8a5749d7081cc89e02cc5e2dd7c5d3a
Author: Danny Milosavljevic <[email protected]>
AuthorDate: Fri Feb 27 19:01:22 2026 +0100

    gnu: Add codex.
    
    * gnu/packages/patches/codex-0.98.0-remove-patch-sections.patch: New file.
    * gnu/packages/patches/rust-codex-0.98.0-test-shebangs.patch: New file.
    * gnu/packages/patches/rust-codex-0.98.0-test-timeout.patch: New file.
    * 
gnu/packages/patches/rust-codex-0.98.0-windows-sandbox-protocol-version.patch: 
New file.
    * gnu/local.mk (dist_patch_DATA): Add references to the patches.
    * gnu/packages/rust-apps.scm (codex): New variable.
    * gnu/packages/rust-crates.scm: Add crates.
    * gnu/packages/rust-sources.scm (rust-codex-0.98.0): New variable.
    
    Change-Id: Ic4af28034cbae83a7e212ee328cbdc25bce31ef0
---
 gnu/local.mk                                       |    4 +
 .../codex-0.98.0-remove-patch-sections.patch       |   42 +
 .../patches/rust-codex-0.98.0-test-shebangs.patch  |   56 ++
 .../patches/rust-codex-0.98.0-test-timeout.patch   |   20 +
 ...x-0.98.0-windows-sandbox-protocol-version.patch |   23 +
 gnu/packages/rust-apps.scm                         |  326 +++++++
 gnu/packages/rust-crates.scm                       | 1019 ++++++++++++++++++++
 gnu/packages/rust-sources.scm                      |  108 +++
 8 files changed, 1598 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index fcf517c1e8..1992126078 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1125,6 +1125,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/coda-use-system-libs.patch              \
   %D%/packages/patches/codex-acp-0.9.2-remove-patch-sections.patch \
   %D%/packages/patches/codex-acp-0.9.2-replace-result-flatten.patch    \
+  %D%/packages/patches/codex-0.98.0-remove-patch-sections.patch    \
   %D%/packages/patches/cogl-fix-double-free.patch              \
   %D%/packages/patches/collada-dom-boost.patch                 \
   %D%/packages/patches/collectd-5.11.0-noinstallvar.patch      \
@@ -2382,6 +2383,9 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/rust-codex-0.98.0-core-file-lock.patch  \
   %D%/packages/patches/rust-codex-0.98.0-core-remove-self-dep.patch    \
   %D%/packages/patches/rust-codex-0.98.0-execpolicy-file-lock.patch    \
+  %D%/packages/patches/rust-codex-0.98.0-test-shebangs.patch   \
+  %D%/packages/patches/rust-codex-0.98.0-test-timeout.patch    \
+  
%D%/packages/patches/rust-codex-0.98.0-windows-sandbox-protocol-version.patch   
     \
   %D%/packages/patches/rust-ring-0.17-ring-core.patch          \
   %D%/packages/patches/rw-igraph-0.10.patch                    \
   %D%/packages/patches/rxvt-unicode-fix-cursor-position.patch  \
diff --git a/gnu/packages/patches/codex-0.98.0-remove-patch-sections.patch 
b/gnu/packages/patches/codex-0.98.0-remove-patch-sections.patch
new file mode 100644
index 0000000000..34cd8bccf5
--- /dev/null
+++ b/gnu/packages/patches/codex-0.98.0-remove-patch-sections.patch
@@ -0,0 +1,42 @@
+Author: Danny Milosavljevic <[email protected]>
+Date: 2026-02-08
+License: ASL2.0
+
+Remove [patch.crates-io] and [patch.'ssh://...'] sections and
+exclude network-proxy from workspace members.
+
+The [patch] sections point to git repositories which are unavailable
+in an offline build.  The vendored crossterm, ratatui,
+tokio-tungstenite and tungstenite forks are provided as cargo-inputs
+instead.
+
+The network-proxy workspace member depends on rama which requires
+Rust 1.91+.
+
+--- a/codex-rs/Cargo.toml
++++ b/codex-rs/Cargo.toml
+@@ -28,7 +28,6 @@
+     "lmstudio",
+     "login",
+     "mcp-server",
+-    "network-proxy",
+     "ollama",
+     "process-hardening",
+     "protocol",
+@@ -311,16 +310,3 @@
+ debug = 1         # Reduce debug symbol size
+ inherits = "test"
+ opt-level = 0
+-
+-[patch.crates-io]
+-# Uncomment to debug local changes.
+-# ratatui = { path = "../../ratatui" }
+-crossterm = { git = "https://github.com/nornagon/crossterm";, branch = 
"nornagon/color-query" }
+-ratatui = { git = "https://github.com/nornagon/ratatui";, branch = 
"nornagon-v0.29.0-patch" }
+-tokio-tungstenite = { git = 
"https://github.com/JakkuSakura/tokio-tungstenite";, rev = 
"2ae536b0de793f3ddf31fc2f22d445bf1ef2023d" }
+-
+-# Uncomment to debug local changes.
+-# rmcp = { path = "../../rust-sdk/crates/rmcp" }
+-
+-[patch."ssh://[email protected]/JakkuSakura/tungstenite-rs.git"]
+-tungstenite = { git = "https://github.com/JakkuSakura/tungstenite-rs";, rev = 
"f514de8644821113e5d18a027d6d28a5c8cc0a6e" }
diff --git a/gnu/packages/patches/rust-codex-0.98.0-test-shebangs.patch 
b/gnu/packages/patches/rust-codex-0.98.0-test-shebangs.patch
new file mode 100644
index 0000000000..8d819a412f
--- /dev/null
+++ b/gnu/packages/patches/rust-codex-0.98.0-test-shebangs.patch
@@ -0,0 +1,56 @@
+Author: Danny Milosavljevic <[email protected]>
+Date: 2026-02-27
+License: ASL2.0
+Subject: Use @SHELL@ placeholder for shebangs in embedded test scripts.
+
+Tests that create and execute temporary shell scripts at runtime use
+a hardcoded "#!/bin/sh" shebang.  Replace with @SHELL@ so the build
+phase can substitute the actual store path.
+
+Also change assertions to print the actual error on failure.
+
+diff -ruN a/codex-rs/rmcp-client/src/program_resolver.rs 
b/codex-rs/rmcp-client/src/program_resolver.rs
+--- a/codex-rs/rmcp-client/src/program_resolver.rs
++++ b/codex-rs/rmcp-client/src/program_resolver.rs
+@@ -82,7 +82,7 @@
+         cmd.envs(&env.mcp_env);
+
+         let output = cmd.output().await;
+-        assert!(output.is_ok(), "Unix should execute scripts directly");
++        output.expect("Unix should execute scripts directly");
+         Ok(())
+     }
+
+@@ -134,10 +134,7 @@
+         cmd.envs(&env.mcp_env);
+         let output = cmd.output().await;
+
+-        assert!(
+-            output.is_ok(),
+-            "Resolved program should execute successfully"
+-        );
++        output.expect("Resolved program should execute successfully");
+         Ok(())
+     }
+
+@@ -185,7 +182,7 @@
+             #[cfg(unix)]
+             {
+                 let file = dir.join(Self::TEST_PROGRAM);
+-                fs::write(&file, "#!/bin/sh\nexit 0")?;
++                fs::write(&file, "#!@SHELL@\nexit 0")?;
+                 Self::set_executable(&file)?;
+             }
+
+diff -ruN a/codex-rs/tui/src/external_editor.rs 
b/codex-rs/tui/src/external_editor.rs
+--- a/codex-rs/tui/src/external_editor.rs
++++ b/codex-rs/tui/src/external_editor.rs
+@@ -159,7 +159,7 @@
+
+         let dir = tempdir().unwrap();
+         let script_path = dir.path().join("edit.sh");
+-        fs::write(&script_path, "#!/bin/sh\nprintf \"edited\" > 
\"$1\"\n").unwrap();
++        fs::write(&script_path, "#!@SHELL@\nprintf \"edited\" > 
\"$1\"\n").unwrap();
+         let mut perms = fs::metadata(&script_path).unwrap().permissions();
+         perms.set_mode(0o755);
+         fs::set_permissions(&script_path, perms).unwrap();
diff --git a/gnu/packages/patches/rust-codex-0.98.0-test-timeout.patch 
b/gnu/packages/patches/rust-codex-0.98.0-test-timeout.patch
new file mode 100644
index 0000000000..2442d16ead
--- /dev/null
+++ b/gnu/packages/patches/rust-codex-0.98.0-test-timeout.patch
@@ -0,0 +1,20 @@
+Author: Danny Milosavljevic <[email protected]>
+Date: 2026-03-05
+License: ASL2.0
+Subject: Increase per-event test timeout from 10 to 30 seconds.
+
+In resource-constrained build environments, image processing (resize,
+base64-encode, JSON serialization) can exceed 10 seconds under CPU
+contention, causing intermittent test failures.
+
+diff -ruN a/codex-rs/core/tests/common/lib.rs 
b/codex-rs/core/tests/common/lib.rs
+--- a/codex-rs/core/tests/common/lib.rs
++++ b/codex-rs/core/tests/common/lib.rs
+@@ -174,7 +174,7 @@
+     loop {
+         // Allow a bit more time to accommodate async startup work (e.g. 
config IO, tool discovery)
+-        let ev = timeout(wait_time.max(Duration::from_secs(10)), 
codex.next_event())
++        let ev = timeout(wait_time.max(Duration::from_secs(30)), 
codex.next_event())
+             .await
+             .expect("timeout waiting for event")
+             .expect("stream ended unexpectedly");
diff --git 
a/gnu/packages/patches/rust-codex-0.98.0-windows-sandbox-protocol-version.patch 
b/gnu/packages/patches/rust-codex-0.98.0-windows-sandbox-protocol-version.patch
new file mode 100644
index 0000000000..9e6217348f
--- /dev/null
+++ 
b/gnu/packages/patches/rust-codex-0.98.0-windows-sandbox-protocol-version.patch
@@ -0,0 +1,23 @@
+Author: Danny Milosavljevic <[email protected]>
+Date: 2026-02-25
+License: ASL2.0
+Subject: Add version to codex-protocol dependency in windows-sandbox-rs.
+
+The codex-protocol dependency in windows-sandbox-rs uses the TOML table
+format with an explicit path, rather than workspace inheritance
+(workspace = true).  Because it is not an intra-workspace dependency,
+cargo cannot resolve its version from the workspace root Cargo.toml
+and cargo package fails with "dependency `codex-protocol` does not
+specify a version".
+
+diff -u a/codex-rs/windows-sandbox-rs/Cargo.toml 
b/codex-rs/windows-sandbox-rs/Cargo.toml
+--- a/codex-rs/windows-sandbox-rs/Cargo.toml
++++ b/codex-rs/windows-sandbox-rs/Cargo.toml
+@@ -38,6 +38,7 @@
+ [dependencies.codex-protocol]
+ package = "codex-protocol"
+ path = "../protocol"
++version = "0.0.0"
+
+ [dependencies.rand]
+ default-features = false
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index e033cd791e..fadc8dfa71 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -125,6 +125,7 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages ruby-xyz)
   #:use-module (gnu packages rust)
+  #:use-module (gnu packages rust-sources)
   #:use-module (gnu packages security-token)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages terminals)
@@ -836,6 +837,331 @@ Commit and SemVer specifications.")
      "This package provides CLI Tool for codeberg similar to gh and glab.")
     (license license:agpl3+)))
 
+(define-public codex
+  (package
+    (name "codex")
+    (version (package-version rust-codex-0.98.0))
+    (source
+     (origin
+       (inherit (package-source rust-codex-0.98.0))
+       (patches (search-patches
+                 "rust-codex-0.98.0-execpolicy-file-lock.patch"
+                 "rust-codex-0.98.0-core-file-lock.patch"
+                 "rust-codex-0.98.0-arg0-file-lock.patch"
+                 "codex-0.98.0-remove-patch-sections.patch"
+                 "rust-codex-0.98.0-test-shebangs.patch"
+                 "rust-codex-0.98.0-test-timeout.patch"))))
+    (build-system cargo-build-system)
+    (arguments
+     (list
+      #:install-source? #f
+      #:cargo-install-paths '(list "cli" "exec" "exec-server"
+                                   "linux-sandbox" "mcp-server"
+                                   "app-server" "tui")
+      ;; schema_fixtures_match_generated (upstream fixture is stale:
+      ;; FileChange::Update in codex-protocol gained old_content,
+      ;; new_content, move_path fields but the committed JSON schema
+      ;; fixture was not regenerated).
+      #:cargo-test-flags '(list "--workspace"
+                                "--exclude" "codex-app-server-protocol"
+                                "--"
+                                ;; These tests exercise sandbox denial and
+                                ;; escalation, which requires Landlock to
+                                ;; cleanly deny filesystem access.  Inside the
+                                ;; build container Landlock returns NotEnforced
+                                ;; and the sandbox binary panics instead.
+                                ;; Disabling Landlock would not help either,
+                                ;; since these tests need a working sandbox to
+                                ;; have anything to deny and escalate.
+                                "--skip" 
"sandbox_denied_shell_returns_original_output"
+                                "--skip" 
"shell_escalated_permissions_rejected_then_ok"
+                                "--skip" "unified_exec_runs_under_sandbox"
+                                ;; These tests (in codex-exec) directly call
+                                ;; spawn_command_under_linux_sandbox to verify
+                                ;; that python and bash work correctly inside
+                                ;; the Landlock sandbox.  The sandbox binary
+                                ;; (codex-exec) panics with LandlockRestrict
+                                ;; (exit code 101) before the inner command
+                                ;; even starts.
+                                "--skip" "python_getpwuid_works_under_sandbox"
+                                "--skip" 
"python_multiprocessing_lock_works_under_sandbox"
+                                "--skip" 
"sandbox_distinguishes_command_and_policy_cwds"
+                                ;; These linux-sandbox tests directly invoke
+                                ;; the Landlock sandbox via
+                                ;; process_exec_tool_call; same root cause.
+                                "--skip" "test_writable_root"
+                                "--skip" "test_timeout"
+                                "--skip" "test_root_read"
+                                "--skip" "test_dev_null_write"
+                                "--skip" "test_no_new_privs_is_enabled"
+                                ;; This test iterates many approval scenarios;
+                                ;; one of them
+                                ;; 
(danger_full_access_on_request_allows_network)
+                                ;; runs a command through the Landlock sandbox
+                                ;; binary, which panics with LandlockRestrict
+                                ;; inside the build container.  Cargo --skip
+                                ;; cannot target individual scenarios, so we
+                                ;; skip the entire matrix.
+                                "--skip" "approval_matrix_covers_all_modes"
+                                ;; This test verifies session-level patch
+                                ;; approval caching: approve once, skip
+                                ;; future prompts for the same file.  When
+                                ;; Landlock is unavailable (as in the Guix
+                                ;; build container) the sandbox binary panics,
+                                ;; triggering the escalation-retry path, which
+                                ;; interferes with the approval cache and
+                                ;; causes a spurious re-prompt on the second
+                                ;; patch.
+                                "--skip" 
"approving_apply_patch_for_session_skips_future_prompts_for_same_file"
+                                ;; These tests expect to interrupt a
+                                ;; long-running 'sleep 60' and receive
+                                ;; TurnAborted.  Default test config is
+                                ;; OnRequest + ReadOnly.  What happens:
+                                ;;
+                                ;; 1. ReadOnly wraps the command with
+                                ;;    codex-linux-sandbox (Landlock-based).
+                                ;; 2. Landlock is unavailable in the Guix
+                                ;;    build container, so the sandbox
+                                ;;    binary exits instantly (~1 ms).
+                                ;; 3. Orchestrator gets SandboxErr::Denied.
+                                ;;    wants_no_sandbox_approval(OnRequest)
+                                ;;    returns false (sandboxing.rs:222),
+                                ;;    so no escalation -- denial returned
+                                ;;    directly.
+                                ;; 4. ToolEmitter::finish sends the error
+                                ;;    to the mock model as
+                                ;;    function_call_output.
+                                ;; 5. Second mock SSE response fires,
+                                ;;    turn finishes with TurnComplete.
+                                ;; 6. Op::Interrupt arrives 100 ms later,
+                                ;;    but the turn is already done --
+                                ;;    TurnAborted is never emitted,
+                                ;;    test times out.
+                                ;;
+                                ;; The similar interrupt_long_running_tool_
+                                ;; emits_turn_aborted passes because it
+                                ;; sends the interrupt with no delay and
+                                ;; has only one mock response (so the turn
+                                ;; cannot complete first).
+                                "--skip" 
"interrupt_persists_turn_aborted_marker_in_next_request"
+                                "--skip" 
"interrupt_tool_records_history_entries"
+                                ;; Upstream bug: test hardcodes "0.0.0" in the
+                                ;; expected user-agent string but the workspace
+                                ;; version is "0.98.0".
+                                "--skip" 
"get_user_agent_returns_current_codex_user_agent"
+                                ;; Same upstream bug: mcp-server tests
+                                ;; check the initialize response which
+                                ;; includes "version": "0.0.0" but the
+                                ;; server returns "0.98.0".
+                                "--skip" 
"test_codex_tool_passes_base_instructions"
+                                "--skip" 
"test_shell_command_approval_triggers_elicitation"
+                                "--skip" 
"test_patch_approval_triggers_elicitation"
+                                ;; These codex-exec-server tests need
+                                ;; "dotslash", a Meta tool that lazily
+                                ;; downloads pre-built binaries from a
+                                ;; JSON manifest.  The test helper
+                                ;; create_transport runs
+                                ;; `dotslash -- fetch <path>` to obtain a
+                                ;; custom bash binary described in
+                                ;; exec-server/tests/suite/bash.
+                                ;; dotslash is not available in the build
+                                ;; container.
+                                "--skip" "list_tools"
+                                "--skip" "accept_elicitation_for_prompt_rule"
+                                ;;; Test isolation bug: each test in
+                                ;;; state/src/runtime.rs calls
+                                ;;; unique_temp_dir() to get its own
+                                ;;; temporary directory (and thus its
+                                ;;; own SQLite database).  That function
+                                ;;; names directories using the current
+                                ;;; nanosecond timestamp, so when tests
+                                ;;; run in parallel several can receive
+                                ;;; the same name and open the same
+                                ;;; database.  The initial SQLite
+                                ;;; migration runs CREATE TABLE threads
+                                ;;; (without IF NOT EXISTS), so any init
+                                ;;; after the first panics with "table
+                                ;;; threads already exists".  Any of
+                                ;;; these tests
+                                ;;; can be the victim.
+                                "--skip" "init_removes_legacy_state_db_files"
+                                "--skip" "upsert_and_get_thread_memory"
+                                "--skip" 
"get_last_n_thread_memories_for_cwd_matches_exactly"
+                                "--skip" 
"upsert_thread_memory_errors_for_unknown_thread"
+                                "--skip" 
"get_last_n_thread_memories_for_cwd_zero_returns_empty"
+                                "--skip" 
"get_last_n_thread_memories_for_cwd_does_not_prefix_match"
+                                "--skip" 
"deleting_thread_cascades_thread_memory")
+      #:cargo-package-crates
+      ''(;;; Tier 0: No internal deps.
+         "codex-async-utils"
+         "codex-client"
+         "codex-execpolicy"
+         "codex-file-search"
+         "codex-git"
+         "codex-keyring-store"
+         "codex-utils-absolute-path"
+         "codex-utils-cache"
+         "codex-utils-cargo-bin"
+         "codex-utils-home-dir"
+         "codex-utils-json-to-toml"
+         "codex-utils-pty"
+         "codex-utils-readiness"
+         "codex-utils-string"
+         "codex-backend-openapi-models"
+         "codex-process-hardening"
+         "codex-ansi-escape"
+         ;;; Tier 1: Depends on tier 0.
+         "codex-utils-image"
+         "codex-apply-patch"
+         "codex-protocol"
+         "codex-windows-sandbox"
+         "codex-api"
+         "codex-experimental-api-macros"
+         "codex-secrets"
+         "codex-execpolicy-legacy"
+         "codex-debug-client"
+         ;;; Tier 2.
+         "codex-app-server-protocol"
+         "codex-rmcp-client"
+         "codex-otel"
+         "codex-state"
+         "codex-core"
+         "codex-linux-sandbox"
+         "codex-feedback"
+         ;;; Tier 3.
+         "codex-arg0"
+         "codex-lmstudio"
+         "codex-login"
+         "codex-ollama"
+         "codex-common"
+         "codex-mcp-server"
+         "codex-backend-client"
+         "codex-responses-api-proxy"
+         ;;; Tier 4.
+         "codex-cloud-requirements"
+         "codex-exec"
+         "codex-exec-server"
+         "codex-stdio-to-uds"
+         ;; codex-network-proxy requires rama which needs Rust 1.91+.
+         "codex-chatgpt"
+         "codex-cloud-tasks-client"
+         ;;; Tier 5.
+         "codex-app-server"
+         "codex-app-server-test-client"
+         "codex-tui"
+         ;;; Tier 6.
+         "codex-cloud-tasks"
+         ;; The main executable.
+         "codex-cli")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'chdir-to-workspace
+            (lambda _
+              (chdir "codex-rs")))
+          (add-after 'chdir-to-workspace 'update-version-in-snapshots
+            (lambda _
+              ;; Snapshot test files contain hardcoded v0.0.0 version strings.
+              ;; Update them to match the actual package version.
+              (let ((snap-files (find-files "." "\\.snap$")))
+                (substitute* snap-files
+                  (("\\(v0\\.0\\.0\\) ") "(v0.98.0)")))))
+          (add-after 'chdir-to-workspace 'patch-git-deps-to-vendor
+            (lambda _
+              ;; Replace git dependencies with version references so cargo
+              ;; resolves them from the vendored sources.
+              (substitute* "Cargo.toml"
+                (("nucleo = \\{ git = [^}]+\\}")
+                 "nucleo = \"0.5.0\"")
+                (("runfiles = \\{ git = [^}]+\\}")
+                 "runfiles = \"0.1.0\""))))
+          (add-after 'chdir-to-workspace 'add-version-to-workspace-deps
+            (lambda _
+              ;; cargo package requires all dependencies to have versions.
+              ;; cargo package requires all dependencies to have versions.
+              ;; Add version = "0.98.0" to internal path dependencies.
+              (let ((cargo-files (find-files "." "^Cargo\\.toml$")))
+                (substitute* cargo-files
+                  ;; Handle inline deps: name = { path = "..." }
+                  (("(codex-[a-z0-9-]+) = \\{ path = " all name)
+                   (string-append name " = { version = \"0.98.0\", path = "))
+                  ;; Handle inline deps with package: name = { package = 
"...", path = "..." }
+                  (("(codex-[a-z0-9-]+) = \\{ package = " all name)
+                   (string-append name " = { version = \"0.98.0\", package = 
"))
+                  ;; Handle section deps: [dependencies.X] with path = "..."
+                  (("^(path = \"\\.\\./[^\"]*\")" all path-line)
+                   (string-append path-line "\nversion = \"0.98.0\""))))))
+          (add-after 'chdir-to-workspace 'patch-hardcoded-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((bash-bin (string-append
+                               (assoc-ref inputs "bash-minimal") "/bin"))
+                    (coreutils-bin (string-append
+                                    (assoc-ref inputs "coreutils") "/bin"))
+                    (git-bin (string-append
+                               (assoc-ref inputs "git-minimal") "/bin"))
+                    (sed-bin (string-append
+                               (assoc-ref inputs "sed") "/bin"))
+                    ;; Include .policy files: the execpolicy-legacy
+                    ;; crate embeds default.policy via include_str!
+                    ;; at compile time, so its paths must also be
+                    ;; patched.
+                    (rs-files (find-files "." "\\.(rs|policy)$")))
+                (substitute* rs-files
+                  (("\"/bin/bash\"")
+                   (string-append "\"" bash-bin "/bash\""))
+                  (("\"/bin/sh\"")
+                   (string-append "\"" bash-bin "/sh\""))
+                  (("\"/usr/bin/bash\"")
+                   (string-append "\"" bash-bin "/bash\""))
+                  (("\"/usr/bin/sh\"")
+                   (string-append "\"" bash-bin "/sh\""))
+                  ;;; bash/sh with inline arguments, e.g. "/bin/bash -i".
+                  (("\"/bin/bash ")
+                   (string-append "\"" bash-bin "/bash "))
+                  (("\"/bin/sh ")
+                   (string-append "\"" bash-bin "/sh "))
+                  ;; coreutils.
+                  (("\"/bin/(cat|cp|date|echo|head|ls|rm|sleep|true|touch)\"" 
all cmd)
+                   (string-append "\"" coreutils-bin "/" cmd "\""))
+                  ;; coreutils.
+                  (("\"/usr/bin/(cat|cp|head|ls|touch|true)\"" all cmd)
+                   (string-append "\"" coreutils-bin "/" cmd "\""))
+                  ;; coreutils with inline arguments
+                  ;; like "/bin/echo END-EVENT".
+                  (("\"/bin/(cat|cp|date|echo|head|ls|rm|sleep|true|touch) " 
all cmd)
+                   (string-append "\"" coreutils-bin "/" cmd " "))
+                  (("\"/usr/bin/git\"")
+                   (string-append "\"" git-bin "/git\""))
+                  (("\"/usr/bin/sed\"")
+                   (string-append "\"" sed-bin "/sed\"")))
+                ;; @SHELL@ placeholder from test-shebangs patch
+                (substitute*
+                  (list "rmcp-client/src/program_resolver.rs"
+                        "tui/src/external_editor.rs")
+                  (("@SHELL@")
+                   (string-append bash-bin "/sh")))
+                ;; shebang in test-only file
+                (substitute*
+                  "core/tests/suite/user_notification.rs"
+                  (("#!/bin/bash")
+                   (string-append "#!" bash-bin "/bash"))))))
+          (add-before 'check 'set-home
+            (lambda _
+              (setenv "HOME" "/tmp")
+              (setenv "USER" "nixbld"))))))
+    (native-inputs (list perl python-minimal  ;for tests
+                         pkg-config))
+    (inputs (cons* bash-minimal coreutils git-minimal sed
+                   openssl sqlite `(,zstd "lib")
+                   (cargo-inputs 'codex)))
+    (home-page "https://github.com/openai/codex";)
+    (synopsis "AI-assisted coding CLI and TUI")
+    (description
+     "Codex is an AI-powered coding assistant that runs in the terminal.
+It provides an interactive TUI for conversations with AI models, with
+support for shell command execution, file editing, and code generation.
+Configure providers via @file{~/.codex/config.toml}.")
+    (license license:asl2.0)))
+
 (define-public codex-acp
   (package
     (name "codex-acp")
diff --git a/gnu/packages/rust-crates.scm b/gnu/packages/rust-crates.scm
index 412074f5a3..615eaa294e 100644
--- a/gnu/packages/rust-crates.scm
+++ b/gnu/packages/rust-crates.scm
@@ -4368,6 +4368,101 @@
 (define rust-codex-windows-sandbox-0.0.0.785c0c43
   package:rust-codex-0.0.0.785c0c43)
 
+;;; Aliases for codex 0.98.0 workspace crates (see rust-sources.scm)
+
+(define rust-codex-api-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-app-server-protocol-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-apply-patch-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-arg0-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-async-utils-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-client-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-common-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-core-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-execpolicy-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-experimental-api-macros-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-file-search-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-git-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-keyring-store-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-linux-sandbox-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-lmstudio-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-login-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-mcp-server-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-ollama-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-otel-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-protocol-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-rmcp-client-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-state-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-utils-absolute-path-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-utils-cache-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-utils-home-dir-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-utils-image-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-utils-json-to-toml-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-utils-pty-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-utils-readiness-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-utils-string-0.98.0
+  package:rust-codex-0.98.0)
+
+(define rust-codex-windows-sandbox-0.98.0
+  package:rust-codex-0.98.0)
+
 (define rust-codspeed-2.10.0
   (crate-source "codspeed" "2.10.0"
                 "1x9anwlfzlfby794d5fcvp214bj8bp29br8pkksxwb7834djja6j"))
@@ -39248,6 +39343,930 @@
                                     rust-zerovec-0.11.5
                                     rust-zerovec-derive-0.11.2
                                     rust-zmij-1.0.21))
+                     (codex =>
+                            (list
+                             rust-actix-codec-0.5.2
+                             rust-actix-http-3.11.2
+                             rust-actix-router-0.5.3
+                             rust-actix-rt-2.11.0
+                             rust-actix-server-2.6.0
+                             rust-actix-service-2.0.3
+                             rust-actix-utils-3.0.1
+                             rust-actix-web-4.12.1
+                             rust-addr2line-0.25.1
+                             rust-adler2-2.0.1
+                             rust-aead-0.5.2
+                             rust-aes-0.8.4
+                             rust-age-0.11.2
+                             rust-age-core-0.11.0
+                             rust-ahash-0.8.12
+                             rust-aho-corasick-1.1.4
+                             rust-allocative-0.3.4
+                             rust-allocative-derive-0.3.3
+                             rust-allocator-api2-0.2.21
+                             rust-android-system-properties-0.1.5
+                             rust-annotate-snippets-0.9.2
+                             rust-ansi-to-tui-7.0.0
+                             rust-anstream-0.6.21
+                             rust-anstyle-1.0.13
+                             rust-anstyle-parse-0.2.7
+                             rust-anstyle-query-1.1.5
+                             rust-anstyle-wincon-3.0.11
+                             rust-anyhow-1.0.100
+                             rust-arbitrary-1.4.2
+                             rust-arboard-3.6.1
+                             rust-arc-swap-1.8.0
+                             rust-arrayvec-0.7.6
+                             rust-ascii-1.1.0
+                             rust-ascii-canvas-3.0.0
+                             rust-assert-cmd-2.1.2
+                             rust-assert-json-diff-2.0.2
+                             rust-assert-matches-1.5.0
+                             rust-async-broadcast-0.7.2
+                             rust-async-channel-2.5.0
+                             rust-async-executor-1.13.3
+                             rust-async-fs-2.2.0
+                             rust-async-io-2.6.0
+                             rust-async-lock-3.4.2
+                             rust-async-process-2.5.0
+                             rust-async-recursion-1.1.1
+                             rust-async-signal-0.2.13
+                             rust-async-stream-0.3.6
+                             rust-async-stream-impl-0.3.6
+                             rust-async-task-4.7.1
+                             rust-async-trait-0.1.89
+                             rust-asynk-strim-0.1.5
+                             rust-atoi-2.0.0
+                             rust-atomic-waker-1.1.2
+                             rust-autocfg-1.5.0
+                             rust-axum-0.8.8
+                             rust-axum-core-0.5.6
+                             rust-backtrace-0.3.76
+                             rust-base64-0.21.7
+                             rust-base64-0.22.1
+                             rust-base64ct-1.8.3
+                             rust-basic-toml-0.1.10
+                             rust-bech32-0.9.1
+                             rust-beef-0.5.2
+                             rust-bindgen-0.72.1
+                             rust-bit-set-0.5.3
+                             rust-bit-vec-0.6.3
+                             rust-bitflags-1.3.2
+                             rust-bitflags-2.10.0
+                             rust-block-buffer-0.10.4
+                             rust-block-padding-0.3.3
+                             rust-block2-0.6.2
+                             rust-blocking-1.6.2
+                             rust-borsh-1.6.0
+                             rust-bstr-1.12.1
+                             rust-bumpalo-3.19.1
+                             rust-bytemuck-1.25.0
+                             rust-byteorder-1.5.0
+                             rust-byteorder-lite-0.1.0
+                             rust-bytes-1.11.1
+                             rust-bytestring-1.5.0
+                             rust-bzip2-0.5.2
+                             rust-bzip2-sys-0.1.13+1.0.8
+                             rust-cassowary-0.3.0
+                             rust-castaway-0.2.4
+                             rust-cbc-0.1.2
+                             rust-cc-1.2.55
+                             rust-cesu8-1.1.0
+                             rust-cexpr-0.6.0
+                             rust-cfg-aliases-0.1.1
+                             rust-cfg-aliases-0.2.1
+                             rust-cfg-if-1.0.4
+                             rust-chacha20-0.9.1
+                             rust-chacha20poly1305-0.10.1
+                             rust-chardetng-0.1.17
+                             rust-chrono-0.4.43
+                             rust-chunked-transfer-1.5.0
+                             rust-cipher-0.4.4
+                             rust-clang-sys-1.8.1
+                             rust-clap-4.5.56
+                             rust-clap-builder-4.5.56
+                             rust-clap-complete-4.5.65
+                             rust-clap-derive-4.5.55
+                             rust-clap-lex-0.7.7
+                             rust-clipboard-win-5.4.1
+                             rust-cmake-0.1.57
+                             rust-cmp-any-0.8.1
+                             rust-color-eyre-0.6.5
+                             rust-color-spantrace-0.3.0
+                             rust-colorchoice-1.0.4
+                             rust-combine-4.6.7
+                             rust-compact-str-0.8.1
+                             rust-concurrent-queue-2.5.0
+                             rust-console-0.15.11
+                             rust-const-format-0.2.35
+                             rust-const-format-proc-macros-0.2.34
+                             rust-const-hex-1.17.0
+                             rust-const-oid-0.9.6
+                             rust-constant-time-eq-0.3.1
+                             rust-convert-case-0.10.0
+                             rust-convert-case-0.6.0
+                             rust-cookie-factory-0.3.3
+                             rust-core-foundation-0.10.1
+                             rust-core-foundation-0.9.4
+                             rust-core-foundation-sys-0.8.7
+                             rust-cpufeatures-0.2.17
+                             rust-crc-3.4.0
+                             rust-crc-catalog-2.4.0
+                             rust-crc32fast-1.5.0
+                             rust-critical-section-1.2.0
+                             rust-crossbeam-channel-0.5.15
+                             rust-crossbeam-deque-0.8.6
+                             rust-crossbeam-epoch-0.9.18
+                             rust-crossbeam-queue-0.3.12
+                             rust-crossbeam-utils-0.8.21
+                             rust-crossterm-0.28.1.87db8bfa
+                             rust-crossterm-winapi-0.9.1
+                             rust-crunchy-0.2.4
+                             rust-crypto-common-0.1.7
+                             rust-csv-1.4.0
+                             rust-csv-core-0.1.13
+                             rust-ctor-0.1.26
+                             rust-ctor-0.6.3
+                             rust-ctor-proc-macro-0.0.7
+                             rust-curve25519-dalek-4.1.3
+                             rust-curve25519-dalek-derive-0.1.1
+                             rust-darling-0.21.3
+                             rust-darling-0.23.0
+                             rust-darling-core-0.21.3
+                             rust-darling-core-0.23.0
+                             rust-darling-macro-0.21.3
+                             rust-darling-macro-0.23.0
+                             rust-data-encoding-2.10.0
+                             rust-dbus-0.9.10
+                             rust-dbus-secret-service-4.1.0
+                             rust-deadpool-0.12.3
+                             rust-deadpool-runtime-0.1.4
+                             rust-debugid-0.8.0
+                             rust-debugserver-types-0.5.0
+                             rust-deflate64-0.1.10
+                             rust-der-0.7.10
+                             rust-deranged-0.5.5
+                             rust-derivative-2.2.0
+                             rust-derive-arbitrary-1.4.2
+                             rust-derive-more-1.0.0
+                             rust-derive-more-2.1.1
+                             rust-derive-more-impl-1.0.0
+                             rust-derive-more-impl-2.1.1
+                             rust-diff-0.1.13
+                             rust-difflib-0.4.0
+                             rust-diffy-0.4.2
+                             rust-digest-0.10.7
+                             rust-dirs-6.0.0
+                             rust-dirs-next-2.0.0
+                             rust-dirs-sys-0.5.0
+                             rust-dirs-sys-next-0.1.2
+                             rust-dispatch2-0.3.0
+                             rust-display-container-0.9.0
+                             rust-displaydoc-0.2.5
+                             rust-dotenvy-0.15.7
+                             rust-downcast-rs-1.2.1
+                             rust-dtor-0.1.1
+                             rust-dtor-proc-macro-0.0.6
+                             rust-dunce-1.0.5
+                             rust-dupe-0.9.1
+                             rust-dupe-derive-0.9.1
+                             rust-dyn-clone-1.0.20
+                             rust-either-1.15.0
+                             rust-ena-0.14.3
+                             rust-encode-unicode-1.0.0
+                             rust-encoding-rs-0.8.35
+                             rust-endi-1.1.1
+                             rust-endian-type-0.1.2
+                             rust-endian-type-0.2.0
+                             rust-enum-as-inner-0.6.1
+                             rust-enumflags2-0.7.12
+                             rust-enumflags2-derive-0.7.12
+                             rust-env-filter-0.1.4
+                             rust-env-flags-0.1.1
+                             rust-env-home-0.1.0
+                             rust-env-logger-0.11.8
+                             rust-equivalent-1.0.2
+                             rust-erased-serde-0.3.31
+                             rust-errno-0.3.14
+                             rust-error-code-3.3.2
+                             rust-etcetera-0.8.0
+                             rust-event-listener-5.4.1
+                             rust-event-listener-strategy-0.5.4
+                             rust-eventsource-stream-0.2.3
+                             rust-eyre-0.6.12
+                             rust-fastrand-2.3.0
+                             rust-fax-0.2.6
+                             rust-fax-derive-0.2.0
+                             rust-fd-lock-4.0.4
+                             rust-fdeflate-0.3.7
+                             rust-fiat-crypto-0.2.9
+                             rust-filedescriptor-0.8.3
+                             rust-find-crate-0.6.3
+                             rust-find-msvc-tools-0.1.9
+                             rust-findshlibs-0.10.2
+                             rust-fixed-decimal-0.7.1
+                             rust-fixedbitset-0.4.2
+                             rust-fixedbitset-0.5.7
+                             rust-flate2-1.1.8
+                             rust-float-cmp-0.10.0
+                             rust-fluent-0.16.1
+                             rust-fluent-bundle-0.15.3
+                             rust-fluent-langneg-0.13.1
+                             rust-fluent-syntax-0.11.1
+                             rust-flume-0.11.1
+                             rust-flume-0.12.0
+                             rust-fnv-1.0.7
+                             rust-foldhash-0.1.5
+                             rust-foldhash-0.2.0
+                             rust-foreign-types-0.3.2
+                             rust-foreign-types-0.5.0
+                             rust-foreign-types-macros-0.2.3
+                             rust-foreign-types-shared-0.1.1
+                             rust-foreign-types-shared-0.3.1
+                             rust-form-urlencoded-1.2.2
+                             rust-fs-extra-1.3.0
+                             rust-fsevent-sys-4.1.0
+                             rust-fslock-0.2.1
+                             rust-futures-0.3.31
+                             rust-futures-channel-0.3.31
+                             rust-futures-core-0.3.31
+                             rust-futures-executor-0.3.31
+                             rust-futures-intrusive-0.5.0
+                             rust-futures-io-0.3.31
+                             rust-futures-lite-2.6.1
+                             rust-futures-macro-0.3.31
+                             rust-futures-sink-0.3.31
+                             rust-futures-task-0.3.31
+                             rust-futures-util-0.3.31
+                             rust-fxhash-0.2.1
+                             rust-generator-0.8.8
+                             rust-generic-array-0.14.7
+                             rust-gethostname-1.1.0
+                             rust-getopts-0.2.24
+                             rust-getrandom-0.2.17
+                             rust-getrandom-0.3.4
+                             rust-gimli-0.32.3
+                             rust-glob-0.3.3
+                             rust-globset-0.4.18
+                             rust-h2-0.4.13
+                             rust-half-2.7.1
+                             rust-hashbrown-0.12.3
+                             rust-hashbrown-0.14.5
+                             rust-hashbrown-0.15.5
+                             rust-hashbrown-0.16.1
+                             rust-hashlink-0.10.0
+                             rust-heck-0.5.0
+                             rust-hermit-abi-0.5.2
+                             rust-hex-0.4.3
+                             rust-hickory-proto-0.25.2
+                             rust-hickory-resolver-0.25.2
+                             rust-hkdf-0.12.4
+                             rust-hmac-0.12.1
+                             rust-home-0.5.12
+                             rust-hostname-0.4.2
+                             rust-http-0.2.12
+                             rust-http-1.4.0
+                             rust-http-body-1.0.1
+                             rust-http-body-util-0.1.3
+                             rust-http-range-header-0.4.2
+                             rust-httparse-1.10.1
+                             rust-httpdate-1.0.3
+                             rust-hyper-1.8.1
+                             rust-hyper-rustls-0.27.7
+                             rust-hyper-timeout-0.5.2
+                             rust-hyper-tls-0.6.0
+                             rust-hyper-util-0.1.19
+                             rust-i18n-config-0.4.8
+                             rust-i18n-embed-0.15.4
+                             rust-i18n-embed-fl-0.9.4
+                             rust-i18n-embed-impl-0.8.4
+                             rust-iana-time-zone-0.1.65
+                             rust-iana-time-zone-haiku-0.1.2
+                             rust-icu-collections-2.1.1
+                             rust-icu-decimal-2.1.1
+                             rust-icu-decimal-data-2.1.1
+                             rust-icu-locale-2.1.1
+                             rust-icu-locale-core-2.1.1
+                             rust-icu-locale-data-2.1.2
+                             rust-icu-normalizer-2.1.1
+                             rust-icu-normalizer-data-2.1.1
+                             rust-icu-properties-2.1.2
+                             rust-icu-properties-data-2.1.2
+                             rust-icu-provider-2.1.1
+                             rust-ident-case-1.0.1
+                             rust-idna-1.1.0
+                             rust-idna-adapter-1.2.1
+                             rust-ignore-0.4.25
+                             rust-image-0.25.9
+                             rust-impl-more-0.1.9
+                             rust-include-dir-0.7.4
+                             rust-include-dir-macros-0.7.4
+                             rust-indenter-0.3.4
+                             rust-indexmap-1.9.3
+                             rust-indexmap-2.13.0
+                             rust-indoc-2.0.7
+                             rust-inflector-0.11.4
+                             rust-inotify-0.11.0
+                             rust-inotify-sys-0.1.5
+                             rust-inout-0.1.4
+                             rust-insta-1.46.2
+                             rust-instability-0.3.11
+                             rust-intl-memoizer-0.5.3
+                             rust-intl-pluralrules-7.0.2
+                             rust-inventory-0.3.21
+                             rust-io-tee-0.1.1
+                             rust-ipconfig-0.3.2
+                             rust-ipnet-2.11.0
+                             rust-iri-string-0.7.10
+                             rust-is-ci-1.2.0
+                             rust-is-terminal-0.4.17
+                             rust-is-terminal-polyfill-1.70.2
+                             rust-itertools-0.10.5
+                             rust-itertools-0.13.0
+                             rust-itertools-0.14.0
+                             rust-itoa-1.0.17
+                             rust-jiff-0.2.18
+                             rust-jiff-static-0.2.18
+                             rust-jni-0.21.1
+                             rust-jni-sys-0.3.0
+                             rust-jobserver-0.1.34
+                             rust-js-sys-0.3.85
+                             rust-keyring-3.6.3
+                             rust-kqueue-1.1.1
+                             rust-kqueue-sys-1.0.4
+                             rust-lalrpop-0.19.12
+                             rust-lalrpop-util-0.19.12
+                             rust-landlock-0.4.4
+                             rust-language-tags-0.3.2
+                             rust-lazy-static-1.5.0
+                             rust-libc-0.2.180
+                             rust-libdbus-sys-0.2.7
+                             rust-libloading-0.8.9
+                             rust-libm-0.2.16
+                             rust-libredox-0.1.12
+                             rust-libsqlite3-sys-0.30.1
+                             rust-linux-keyutils-0.2.4
+                             rust-linux-raw-sys-0.11.0
+                             rust-linux-raw-sys-0.4.15
+                             rust-litemap-0.8.1
+                             rust-local-waker-0.1.4
+                             rust-lock-api-0.4.14
+                             rust-log-0.4.29
+                             rust-logos-0.12.1
+                             rust-logos-derive-0.12.1
+                             rust-loom-0.7.2
+                             rust-lru-0.12.5
+                             rust-lru-0.16.3
+                             rust-lru-slab-0.1.2
+                             rust-lsp-types-0.94.1
+                             rust-lzma-rs-0.3.0
+                             rust-lzma-sys-0.1.20
+                             rust-maplit-1.0.2
+                             rust-matchers-0.2.0
+                             rust-matchit-0.8.4
+                             rust-matchit-0.9.1
+                             rust-md-5-0.10.6
+                             rust-md5-0.8.0
+                             rust-memchr-2.7.6
+                             rust-memoffset-0.6.5
+                             rust-memoffset-0.9.1
+                             rust-mime-0.3.17
+                             rust-mime-guess-2.0.5
+                             rust-minimal-lexical-0.2.1
+                             rust-miniz-oxide-0.8.9
+                             rust-mio-1.1.1
+                             rust-moka-0.12.13
+                             rust-moxcms-0.7.11
+                             rust-multimap-0.10.1
+                             rust-native-tls-0.2.14
+                             rust-ndk-context-0.1.1
+                             rust-new-debug-unreachable-1.0.6
+                             rust-nibble-vec-0.1.0
+                             rust-nix-0.28.0
+                             rust-nix-0.29.0
+                             rust-nix-0.30.1
+                             rust-nom-7.1.3
+                             rust-nom-8.0.0
+                             rust-normalize-line-endings-0.3.0
+                             rust-notify-8.2.0
+                             rust-notify-types-2.1.0
+                             rust-nu-ansi-term-0.50.3
+                             rust-nucleo-0.5.0.4253de9f
+                             rust-nucleo-matcher-0.3.1
+                             rust-num-0.4.3
+                             rust-num-bigint-0.4.6
+                             rust-num-bigint-dig-0.8.6
+                             rust-num-complex-0.4.6
+                             rust-num-conv-0.2.0
+                             rust-num-cpus-1.17.0
+                             rust-num-integer-0.1.46
+                             rust-num-iter-0.1.45
+                             rust-num-rational-0.4.2
+                             rust-num-threads-0.1.7
+                             rust-num-traits-0.2.19
+                             rust-oauth2-5.0.0
+                             rust-objc2-0.6.3
+                             rust-objc2-app-kit-0.3.2
+                             rust-objc2-cloud-kit-0.3.2
+                             rust-objc2-core-data-0.3.2
+                             rust-objc2-core-foundation-0.3.2
+                             rust-objc2-core-graphics-0.3.2
+                             rust-objc2-core-image-0.3.2
+                             rust-objc2-core-location-0.3.2
+                             rust-objc2-core-text-0.3.2
+                             rust-objc2-encode-4.1.0
+                             rust-objc2-foundation-0.3.2
+                             rust-objc2-io-surface-0.3.2
+                             rust-objc2-quartz-core-0.3.2
+                             rust-objc2-ui-kit-0.3.2
+                             rust-objc2-user-notifications-0.3.2
+                             rust-object-0.37.3
+                             rust-once-cell-1.21.3
+                             rust-once-cell-polyfill-1.70.2
+                             rust-opaque-debug-0.3.1
+                             rust-openssl-0.10.75
+                             rust-openssl-macros-0.1.1
+                             rust-openssl-probe-0.1.6
+                             rust-openssl-probe-0.2.1
+                             rust-openssl-src-300.5.5+3.5.5
+                             rust-openssl-sys-0.9.111
+                             rust-opentelemetry-0.31.0
+                             rust-opentelemetry-appender-tracing-0.31.1
+                             rust-opentelemetry-http-0.31.0
+                             rust-opentelemetry-otlp-0.31.0
+                             rust-opentelemetry-proto-0.31.0
+                             rust-opentelemetry-sdk-0.31.0
+                             rust-opentelemetry-semantic-conventions-0.31.0
+                             rust-option-ext-0.2.0
+                             rust-ordered-stream-0.2.0
+                             rust-os-info-3.14.0
+                             rust-os-pipe-1.2.3
+                             rust-owo-colors-4.2.3
+                             rust-parking-2.2.1
+                             rust-parking-lot-0.12.5
+                             rust-parking-lot-core-0.9.12
+                             rust-paste-1.0.15
+                             rust-pastey-0.2.1
+                             rust-path-absolutize-3.1.1
+                             rust-path-dedot-3.1.1
+                             rust-pathdiff-0.2.3
+                             rust-pbkdf2-0.12.2
+                             rust-pem-rfc7468-0.7.0
+                             rust-percent-encoding-2.3.2
+                             rust-petgraph-0.6.5
+                             rust-petgraph-0.8.3
+                             rust-phf-shared-0.11.3
+                             rust-pin-project-1.1.10
+                             rust-pin-project-internal-1.1.10
+                             rust-pin-project-lite-0.2.16
+                             rust-pin-utils-0.1.0
+                             rust-piper-0.2.4
+                             rust-pkcs1-0.7.5
+                             rust-pkcs8-0.10.2
+                             rust-pkg-config-0.3.32
+                             rust-png-0.18.0
+                             rust-polling-3.11.0
+                             rust-poly1305-0.8.0
+                             rust-portable-atomic-1.13.1
+                             rust-portable-atomic-util-0.2.5
+                             rust-portable-pty-0.9.0
+                             rust-potential-utf-0.1.4
+                             rust-powerfmt-0.2.0
+                             rust-ppv-lite86-0.2.21
+                             rust-precomputed-hash-0.1.1
+                             rust-predicates-3.1.3
+                             rust-predicates-core-1.0.9
+                             rust-predicates-tree-1.0.12
+                             rust-pretty-assertions-1.4.1
+                             rust-proc-macro-crate-3.4.0
+                             rust-proc-macro-error-attr2-2.0.0
+                             rust-proc-macro-error2-2.0.1
+                             rust-proc-macro2-1.0.106
+                             rust-process-wrap-9.0.1
+                             rust-proptest-1.9.0
+                             rust-prost-0.14.3
+                             rust-prost-derive-0.14.3
+                             rust-psl-2.1.184
+                             rust-psl-types-2.0.11
+                             rust-pulldown-cmark-0.10.3
+                             rust-pulldown-cmark-escape-0.10.1
+                             rust-pxfm-0.1.27
+                             rust-quick-error-2.0.1
+                             rust-quick-xml-0.38.4
+                             rust-quinn-0.11.9
+                             rust-quinn-proto-0.11.13
+                             rust-quinn-udp-0.5.14
+                             rust-quote-1.0.44
+                             rust-r-efi-5.3.0
+                             rust-radix-trie-0.2.1
+                             rust-radix-trie-0.3.0
+                             rust-rama-boring-0.5.10
+                             rust-rama-boring-sys-0.5.10
+                             rust-rama-boring-tokio-0.5.10
+                             rust-rama-core-0.3.0-alpha.4
+                             rust-rama-dns-0.3.0-alpha.4
+                             rust-rama-error-0.3.0-alpha.4
+                             rust-rama-http-0.3.0-alpha.4
+                             rust-rama-http-backend-0.3.0-alpha.4
+                             rust-rama-http-core-0.3.0-alpha.4
+                             rust-rama-http-headers-0.3.0-alpha.4
+                             rust-rama-http-types-0.3.0-alpha.4
+                             rust-rama-macros-0.3.0-alpha.4
+                             rust-rama-net-0.3.0-alpha.4
+                             rust-rama-socks5-0.3.0-alpha.4
+                             rust-rama-tcp-0.3.0-alpha.4
+                             rust-rama-tls-boring-0.3.0-alpha.4
+                             rust-rama-udp-0.3.0-alpha.4
+                             rust-rama-unix-0.3.0-alpha.4
+                             rust-rama-utils-0.3.0-alpha.4
+                             rust-rand-0.8.5
+                             rust-rand-0.9.2
+                             rust-rand-chacha-0.3.1
+                             rust-rand-chacha-0.9.0
+                             rust-rand-core-0.6.4
+                             rust-rand-core-0.9.5
+                             rust-rand-xorshift-0.4.0
+                             rust-ratatui-0.29.0.9b2ad129
+                             rust-ratatui-macros-0.6.0
+                             rust-rayon-1.11.0
+                             rust-rayon-core-1.13.0
+                             rust-redox-syscall-0.5.18
+                             rust-redox-syscall-0.7.0
+                             rust-redox-users-0.4.6
+                             rust-redox-users-0.5.2
+                             rust-ref-cast-1.0.25
+                             rust-ref-cast-impl-1.0.25
+                             rust-regex-1.12.2
+                             rust-regex-automata-0.4.13
+                             rust-regex-lite-0.1.8
+                             rust-regex-syntax-0.6.29
+                             rust-regex-syntax-0.8.8
+                             rust-reqwest-0.12.28
+                             rust-resolv-conf-0.7.6
+                             rust-ring-0.17.14
+                             rust-rmcp-0.12.0
+                             rust-rmcp-macros-0.12.0
+                             rust-rsa-0.9.10
+                             rust-runfiles-0.1.0.b56cbaa8
+                             rust-rust-embed-8.11.0
+                             rust-rust-embed-impl-8.11.0
+                             rust-rust-embed-utils-8.11.0
+                             rust-rustc-demangle-0.1.27
+                             rust-rustc-hash-1.1.0
+                             rust-rustc-hash-2.1.1
+                             rust-rustc-version-0.4.1
+                             rust-rustix-0.38.44
+                             rust-rustix-1.1.3
+                             rust-rustls-0.23.36
+                             rust-rustls-native-certs-0.8.3
+                             rust-rustls-pki-types-1.14.0
+                             rust-rustls-webpki-0.103.9
+                             rust-rustversion-1.0.22
+                             rust-rustyline-14.0.0
+                             rust-ryu-1.0.22
+                             rust-salsa20-0.10.2
+                             rust-same-file-1.0.6
+                             rust-scc-2.4.0
+                             rust-schannel-0.1.28
+                             rust-schemafy-0.5.2
+                             rust-schemafy-core-0.5.2
+                             rust-schemafy-lib-0.5.2
+                             rust-schemars-0.8.22
+                             rust-schemars-0.9.0
+                             rust-schemars-1.2.1
+                             rust-schemars-derive-0.8.22
+                             rust-schemars-derive-1.2.1
+                             rust-scoped-tls-1.0.1
+                             rust-scopeguard-1.2.0
+                             rust-scrypt-0.11.0
+                             rust-sdd-3.0.10
+                             rust-seccompiler-0.5.0
+                             rust-secrecy-0.10.3
+                             rust-secret-service-4.0.0
+                             rust-security-framework-2.11.1
+                             rust-security-framework-3.5.1
+                             rust-security-framework-sys-2.15.0
+                             rust-self-cell-0.10.3
+                             rust-self-cell-1.2.2
+                             rust-semver-1.0.27
+                             rust-sentry-0.46.1
+                             rust-sentry-actix-0.46.1
+                             rust-sentry-backtrace-0.46.1
+                             rust-sentry-contexts-0.46.1
+                             rust-sentry-core-0.46.1
+                             rust-sentry-debug-images-0.46.1
+                             rust-sentry-panic-0.46.1
+                             rust-sentry-tracing-0.46.1
+                             rust-sentry-types-0.46.1
+                             rust-serde-1.0.228
+                             rust-serde-core-1.0.228
+                             rust-serde-derive-1.0.228
+                             rust-serde-derive-internals-0.29.1
+                             rust-serde-html-form-0.3.2
+                             rust-serde-json-1.0.149
+                             rust-serde-path-to-error-0.1.20
+                             rust-serde-repr-0.1.20
+                             rust-serde-spanned-1.0.4
+                             rust-serde-urlencoded-0.7.1
+                             rust-serde-with-3.16.1
+                             rust-serde-with-macros-3.16.1
+                             rust-serde-yaml-0.9.34+deprecated
+                             rust-serial-test-3.3.1
+                             rust-serial-test-derive-3.3.1
+                             rust-serial2-0.2.33
+                             rust-sha1-0.10.6
+                             rust-sha1-smol-1.0.1
+                             rust-sha2-0.10.9
+                             rust-sharded-slab-0.1.7
+                             rust-shared-library-0.1.9
+                             rust-shell-words-1.1.1
+                             rust-shlex-1.3.0
+                             rust-signal-hook-0.3.18
+                             rust-signal-hook-mio-0.2.5
+                             rust-signal-hook-registry-1.4.8
+                             rust-signature-2.2.0
+                             rust-simd-adler32-0.3.8
+                             rust-simdutf8-0.1.5
+                             rust-similar-2.7.0
+                             rust-siphasher-1.0.2
+                             rust-slab-0.4.12
+                             rust-smallvec-1.15.1
+                             rust-smawk-0.3.2
+                             rust-smol-str-0.3.5
+                             rust-socket2-0.5.10
+                             rust-socket2-0.6.2
+                             rust-spin-0.9.8
+                             rust-spki-0.7.3
+                             rust-sqlx-0.8.6
+                             rust-sqlx-core-0.8.6
+                             rust-sqlx-macros-0.8.6
+                             rust-sqlx-macros-core-0.8.6
+                             rust-sqlx-mysql-0.8.6
+                             rust-sqlx-postgres-0.8.6
+                             rust-sqlx-sqlite-0.8.6
+                             rust-sse-stream-0.2.1
+                             rust-stable-deref-trait-1.2.1
+                             rust-starlark-0.13.0
+                             rust-starlark-derive-0.13.0
+                             rust-starlark-map-0.13.0
+                             rust-starlark-syntax-0.13.0
+                             rust-static-assertions-1.1.0
+                             rust-streaming-iterator-0.1.9
+                             rust-string-cache-0.8.9
+                             rust-stringprep-0.1.5
+                             rust-strsim-0.10.0
+                             rust-strsim-0.11.1
+                             rust-strum-0.26.3
+                             rust-strum-0.27.2
+                             rust-strum-macros-0.26.4
+                             rust-strum-macros-0.27.2
+                             rust-subtle-2.6.1
+                             rust-supports-color-2.1.0
+                             rust-supports-color-3.0.2
+                             rust-syn-1.0.109
+                             rust-syn-2.0.114
+                             rust-sync-wrapper-1.0.2
+                             rust-synstructure-0.13.2
+                             rust-sys-locale-0.3.2
+                             rust-system-configuration-0.6.1
+                             rust-system-configuration-sys-0.6.0
+                             rust-tagptr-0.2.0
+                             rust-tempfile-3.24.0
+                             rust-term-0.7.0
+                             rust-termcolor-1.4.1
+                             rust-terminal-size-0.4.3
+                             rust-termtree-0.5.1
+                             rust-test-case-3.3.1
+                             rust-test-case-core-3.3.1
+                             rust-test-case-macros-3.3.1
+                             rust-test-log-0.2.19
+                             rust-test-log-macros-0.2.19
+                             rust-textwrap-0.11.0
+                             rust-textwrap-0.16.2
+                             rust-thiserror-1.0.69
+                             rust-thiserror-2.0.18
+                             rust-thiserror-impl-1.0.69
+                             rust-thiserror-impl-2.0.18
+                             rust-thread-local-1.1.9
+                             rust-tiff-0.10.3
+                             rust-time-0.3.46
+                             rust-time-core-0.1.8
+                             rust-time-macros-0.2.26
+                             rust-tiny-http-0.12.0
+                             rust-tiny-keccak-2.0.2
+                             rust-tinystr-0.8.2
+                             rust-tinyvec-1.10.0
+                             rust-tinyvec-macros-0.1.1
+                             rust-tokio-1.49.0
+                             rust-tokio-graceful-0.2.2
+                             rust-tokio-macros-2.6.0
+                             rust-tokio-native-tls-0.3.1
+                             rust-tokio-rustls-0.26.4
+                             rust-tokio-stream-0.1.18
+                             rust-tokio-test-0.4.5
+                             rust-tokio-tungstenite-0.28.0.2ae536b0
+                             rust-tokio-util-0.7.18
+                             rust-toml-0.5.11
+                             rust-toml-0.9.11+spec-1.1.0
+                             rust-toml-datetime-0.7.5+spec-1.1.0
+                             rust-toml-edit-0.23.10+spec-1.0.0
+                             rust-toml-edit-0.24.0+spec-1.1.0
+                             rust-toml-parser-1.0.6+spec-1.1.0
+                             rust-toml-writer-1.0.6+spec-1.1.0
+                             rust-tonic-0.14.3
+                             rust-tonic-prost-0.14.3
+                             rust-tower-0.5.3
+                             rust-tower-http-0.6.8
+                             rust-tower-layer-0.3.3
+                             rust-tower-service-0.3.3
+                             rust-tracing-0.1.44
+                             rust-tracing-appender-0.2.4
+                             rust-tracing-attributes-0.1.31
+                             rust-tracing-core-0.1.36
+                             rust-tracing-error-0.2.1
+                             rust-tracing-log-0.2.0
+                             rust-tracing-opentelemetry-0.32.1
+                             rust-tracing-subscriber-0.3.22
+                             rust-tracing-test-0.2.5
+                             rust-tracing-test-macro-0.2.5
+                             rust-tree-magic-mini-3.2.2
+                             rust-tree-sitter-0.25.10
+                             rust-tree-sitter-bash-0.25.1
+                             rust-tree-sitter-highlight-0.25.10
+                             rust-tree-sitter-language-0.1.7
+                             rust-try-lock-0.2.5
+                             rust-ts-rs-11.1.0
+                             rust-ts-rs-macros-11.1.0
+                             rust-tungstenite-0.28.0.f514de86
+                             rust-type-map-0.5.1
+                             rust-typenum-1.19.0
+                             rust-uds-windows-1.1.0
+                             rust-uname-0.1.1
+                             rust-unarray-0.1.4
+                             rust-unic-langid-0.9.6
+                             rust-unic-langid-impl-0.9.6
+                             rust-unicase-2.9.0
+                             rust-unicode-bidi-0.3.18
+                             rust-unicode-ident-1.0.22
+                             rust-unicode-linebreak-0.1.5
+                             rust-unicode-normalization-0.1.25
+                             rust-unicode-properties-0.1.4
+                             rust-unicode-segmentation-1.12.0
+                             rust-unicode-truncate-1.1.0
+                             rust-unicode-width-0.1.14
+                             rust-unicode-width-0.2.1
+                             rust-unicode-xid-0.2.6
+                             rust-universal-hash-0.5.1
+                             rust-unsafe-libyaml-0.2.11
+                             rust-untrusted-0.9.0
+                             rust-ureq-3.1.4
+                             rust-ureq-proto-0.5.3
+                             rust-url-2.5.8
+                             rust-urlencoding-2.1.3
+                             rust-utf-8-0.7.6
+                             rust-utf8-iter-1.0.4
+                             rust-utf8parse-0.2.2
+                             rust-uuid-1.20.0
+                             rust-valuable-0.1.1
+                             rust-vcpkg-0.2.15
+                             rust-version-check-0.9.5
+                             rust-vt100-0.16.2
+                             rust-vte-0.15.0
+                             rust-wait-timeout-0.2.1
+                             rust-walkdir-2.5.0
+                             rust-want-0.3.1
+                             rust-wasi-0.11.1+wasi-snapshot-preview1
+                             rust-wasip2-1.0.2+wasi-0.2.9
+                             rust-wasite-0.1.0
+                             rust-wasm-bindgen-0.2.108
+                             rust-wasm-bindgen-futures-0.4.58
+                             rust-wasm-bindgen-macro-0.2.108
+                             rust-wasm-bindgen-macro-support-0.2.108
+                             rust-wasm-bindgen-shared-0.2.108
+                             rust-wasm-streams-0.4.2
+                             rust-wayland-backend-0.3.12
+                             rust-wayland-client-0.31.12
+                             rust-wayland-protocols-0.32.10
+                             rust-wayland-protocols-wlr-0.3.10
+                             rust-wayland-scanner-0.31.8
+                             rust-wayland-sys-0.31.8
+                             rust-web-sys-0.3.85
+                             rust-web-time-1.1.0
+                             rust-webbrowser-1.0.6
+                             rust-webpki-root-certs-1.0.5
+                             rust-webpki-roots-0.26.11
+                             rust-webpki-roots-1.0.5
+                             rust-weezl-0.1.12
+                             rust-which-8.0.0
+                             rust-whoami-1.6.1
+                             rust-widestring-1.2.1
+                             rust-wildcard-0.3.0
+                             rust-wildmatch-2.6.1
+                             rust-winapi-0.3.9
+                             rust-winapi-i686-pc-windows-gnu-0.4.0
+                             rust-winapi-util-0.1.11
+                             rust-winapi-x86-64-pc-windows-gnu-0.4.0
+                             rust-windows-0.58.0
+                             rust-windows-0.62.2
+                             rust-windows-aarch64-gnullvm-0.42.2
+                             rust-windows-aarch64-gnullvm-0.48.5
+                             rust-windows-aarch64-gnullvm-0.52.6
+                             rust-windows-aarch64-gnullvm-0.53.1
+                             rust-windows-aarch64-msvc-0.42.2
+                             rust-windows-aarch64-msvc-0.48.5
+                             rust-windows-aarch64-msvc-0.52.6
+                             rust-windows-aarch64-msvc-0.53.1
+                             rust-windows-collections-0.3.2
+                             rust-windows-core-0.58.0
+                             rust-windows-core-0.62.2
+                             rust-windows-future-0.3.2
+                             rust-windows-i686-gnu-0.42.2
+                             rust-windows-i686-gnu-0.48.5
+                             rust-windows-i686-gnu-0.52.6
+                             rust-windows-i686-gnu-0.53.1
+                             rust-windows-i686-gnullvm-0.52.6
+                             rust-windows-i686-gnullvm-0.53.1
+                             rust-windows-i686-msvc-0.42.2
+                             rust-windows-i686-msvc-0.48.5
+                             rust-windows-i686-msvc-0.52.6
+                             rust-windows-i686-msvc-0.53.1
+                             rust-windows-implement-0.58.0
+                             rust-windows-implement-0.60.2
+                             rust-windows-interface-0.58.0
+                             rust-windows-interface-0.59.3
+                             rust-windows-link-0.2.1
+                             rust-windows-numerics-0.3.1
+                             rust-windows-registry-0.6.1
+                             rust-windows-result-0.2.0
+                             rust-windows-result-0.4.1
+                             rust-windows-strings-0.1.0
+                             rust-windows-strings-0.5.1
+                             rust-windows-sys-0.45.0
+                             rust-windows-sys-0.48.0
+                             rust-windows-sys-0.52.0
+                             rust-windows-sys-0.59.0
+                             rust-windows-sys-0.60.2
+                             rust-windows-sys-0.61.2
+                             rust-windows-targets-0.42.2
+                             rust-windows-targets-0.48.5
+                             rust-windows-targets-0.52.6
+                             rust-windows-targets-0.53.5
+                             rust-windows-threading-0.2.1
+                             rust-windows-x86-64-gnu-0.42.2
+                             rust-windows-x86-64-gnu-0.48.5
+                             rust-windows-x86-64-gnu-0.52.6
+                             rust-windows-x86-64-gnu-0.53.1
+                             rust-windows-x86-64-gnullvm-0.42.2
+                             rust-windows-x86-64-gnullvm-0.48.5
+                             rust-windows-x86-64-gnullvm-0.52.6
+                             rust-windows-x86-64-gnullvm-0.53.1
+                             rust-windows-x86-64-msvc-0.42.2
+                             rust-windows-x86-64-msvc-0.48.5
+                             rust-windows-x86-64-msvc-0.52.6
+                             rust-windows-x86-64-msvc-0.53.1
+                             rust-winnow-0.7.14
+                             rust-winreg-0.10.1
+                             rust-winreg-0.50.0
+                             rust-winres-0.1.12
+                             rust-winsafe-0.0.19
+                             rust-winsplit-0.1.0
+                             rust-wiremock-0.6.5
+                             rust-wit-bindgen-0.51.0
+                             rust-wl-clipboard-rs-0.9.3
+                             rust-writeable-0.6.2
+                             rust-x11rb-0.13.2
+                             rust-x11rb-protocol-0.13.2
+                             rust-x25519-dalek-2.0.1
+                             rust-xdg-home-1.3.0
+                             rust-xz2-0.1.7
+                             rust-yansi-1.0.1
+                             rust-yoke-0.8.1
+                             rust-yoke-derive-0.8.1
+                             rust-zbus-4.4.0
+                             rust-zbus-macros-4.4.0
+                             rust-zbus-names-3.0.0
+                             rust-zerocopy-0.8.37
+                             rust-zerocopy-derive-0.8.37
+                             rust-zerofrom-0.1.6
+                             rust-zerofrom-derive-0.1.6
+                             rust-zeroize-1.8.2
+                             rust-zeroize-derive-1.4.3
+                             rust-zerotrie-0.2.3
+                             rust-zerovec-0.11.5
+                             rust-zerovec-derive-0.11.2
+                             rust-zip-2.4.2
+                             rust-zmij-1.0.19
+                             rust-zopfli-0.8.3
+                             rust-zstd-0.13.3
+                             rust-zstd-safe-7.2.4
+                             rust-zstd-sys-2.0.16+zstd.1.5.7
+                             rust-zune-core-0.4.12
+                             rust-zune-core-0.5.1
+                             rust-zune-jpeg-0.4.21
+                             rust-zune-jpeg-0.5.12
+                             rust-zvariant-4.2.0
+                             rust-zvariant-derive-4.2.0
+                             rust-zvariant-utils-2.1.0))
                      (codex-acp =>
                                 (list rust-inflector-0.11.4
                                  rust-adler2-2.0.1
diff --git a/gnu/packages/rust-sources.scm b/gnu/packages/rust-sources.scm
index 963d3b123a..fa4cb02f73 100644
--- a/gnu/packages/rust-sources.scm
+++ b/gnu/packages/rust-sources.scm
@@ -818,6 +818,114 @@ intelligence.")
 and runtime for AI-assisted coding.")
        (license license:asl2.0)))))
 
+(define-public rust-codex-0.98.0
+  (hidden-package
+   (package
+     (name "rust-codex")
+     (version "0.98.0")
+     (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/openai/codex";)
+              (commit "82464689ce0ba8a3b2065e73a8aa0cfdf2ad0625")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1mn322gbir4gn4y5jihdqg0wprjlnx771chyfmmm7ri7pnim1zmc"))
+        ;; TODO: Remove patches when Rust provides stable file locking API.
+        ;; The file_lock feature is tracked at
+        ;; <https://github.com/rust-lang/rust/issues/130994>.
+        (snippet '(begin
+                    ;;; These are JSON manifests with a dotslash
+                    ;;; shebang that download and run pre-built
+                    ;;; binaries (ripgrep, bash) at runtime.
+                    (delete-file "codex-cli/bin/rg")
+                    (delete-file "codex-rs/exec-server/tests/suite/bash")
+                    ;; Bundled bubblewrap source tree; includes a
+                    ;; compiled BPF blob (demos/flatpak.bpf).
+                    (delete-file-recursively "codex-rs/vendor/bubblewrap")))
+        (patches (search-patches "rust-codex-0.98.0-execpolicy-file-lock.patch"
+                                 "rust-codex-0.98.0-core-file-lock.patch"
+                                 "rust-codex-0.98.0-arg0-file-lock.patch"
+                                 "rust-codex-0.98.0-core-remove-self-dep.patch"
+                                 
"rust-codex-0.98.0-windows-sandbox-protocol-version.patch"
+                                 "rust-codex-0.98.0-test-shebangs.patch"))))
+     (build-system cargo-build-system)
+     (arguments
+      (list
+       #:skip-build? #t
+       #:cargo-package-crates
+       ;; Order matters: dependencies must come before packages that need them
+       ''("codex-async-utils"        ; No internal deps
+          "codex-client"             ; No internal deps
+          "codex-execpolicy"         ; No internal deps
+          "codex-file-search"        ; No internal deps
+          "codex-git"                ; No internal deps
+          "codex-keyring-store"      ; No internal deps
+          "codex-utils-absolute-path" ; No internal deps
+          "codex-utils-cache"        ; No internal deps
+          "codex-utils-cargo-bin"    ; No internal deps
+          "codex-utils-home-dir"     ; No internal deps
+          "codex-utils-json-to-toml" ; No internal deps
+          "codex-utils-pty"          ; No internal deps
+          "codex-utils-readiness"    ; No internal deps
+          "codex-utils-string"       ; No internal deps
+          "codex-utils-image"        ; Depends on codex-utils-cache
+          "codex-apply-patch"        ; Depends on codex-utils-cargo-bin
+          "codex-protocol"           ; Depends on codex-git, codex-utils-*
+          "codex-windows-sandbox"    ; Depends on codex-utils-absolute-path, 
codex-protocol
+          "codex-api"                ; Depends on codex-client, codex-protocol
+          "codex-experimental-api-macros" ; Macro crate (must come before 
app-server-protocol)
+          "codex-app-server-protocol" ; Depends on codex-protocol, 
codex-experimental-api-macros
+          "codex-rmcp-client"        ; Depends on codex-keyring-store, 
codex-protocol
+          "codex-otel"               ; Depends on codex-app-server-protocol, 
codex-api
+          "codex-state"              ; Depends on codex-protocol, codex-otel
+          "codex-core"               ; Depends on many packages above
+          "codex-linux-sandbox"      ; Depends on codex-core, 
codex-utils-absolute-path
+          "codex-arg0"               ; Depends on codex-apply-patch, 
codex-core, codex-linux-sandbox
+          "codex-lmstudio"           ; Depends on codex-core
+          "codex-login"              ; Depends on codex-core
+          "codex-ollama"             ; Depends on codex-core
+          "codex-common"             ; Depends on codex-core, codex-lmstudio, 
codex-ollama
+          "codex-mcp-server")         ; Depends on codex-core, codex-common
+       #:phases
+       #~(modify-phases %standard-phases
+          (add-after 'unpack 'chdir-to-workspace
+            (lambda _
+              (chdir "codex-rs")))
+          (add-after 'chdir-to-workspace 'patch-git-deps-to-vendor
+            (lambda _
+              (substitute* "Cargo.toml"
+                (("crossterm = \\{ git = [^}]+\\}")
+                 "crossterm = { version = \"0.28.1\" }")
+                (("ratatui = \\{ git = [^}]+\\}")
+                 "ratatui = { version = \"0.29.0\" }")
+                (("tokio-tungstenite = \\{ git = [^}]+\\}")
+                 "tokio-tungstenite = { version = \"0.28.0\" }")
+                (("nucleo = \\{ git = [^}]+\\}")
+                 "nucleo = { version = \"0.5.0\" }")
+                (("runfiles = \\{ git = [^}]+\\}")
+                 "runfiles = { version = \"0.1.0\" }"))))
+          (add-after 'chdir-to-workspace 'add-version-to-workspace-deps
+            (lambda _
+              ;; cargo package requires all dependencies to have versions.
+              ;; Add version = "0.98.0" to internal path dependencies.
+              (let ((cargo-files (find-files "." "^Cargo\\.toml$")))
+                (substitute* cargo-files
+                  (("(codex-[a-z0-9-]+) = \\{ path = " all name)
+                   (string-append name " = { version = \"0.98.0\", path = "))
+                  (("(codex-[a-z0-9-]+) = \\{ package = " all name)
+                   (string-append name " = { version = \"0.98.0\", package = 
"))
+                  (("(mcp-types) = \\{ path = " all name)
+                   (string-append name " = { version = \"0.98.0\", path = 
")))))))))
+     (inputs (cargo-inputs 'rust-codex-0.0.0.785c0c43))
+     (home-page "https://github.com/openai/codex";)
+     (synopsis "OpenAI Codex workspace crates")
+     (description
+      "This package provides the workspace crates for the OpenAI Codex CLI
+and runtime for AI-assisted coding.")
+     (license license:asl2.0))))
+
 ;; Also update (@ (gnu packages gnome) glycin-loaders) when updating this.
 (define-public rust-glycin-3
   (package

Reply via email to