← back to Exo
Workspace tweaks (#1849)
fd5b23281c7e5b30de21cd4b367369a8069bec3e · 2026-04-07 18:26:29 +0100 · Andrei Cravtov
## Changes
Mostly chore changes around vscode and jetbrains workspace settings, and
some basedpyright settings tweaks, to allow direnv to work and nixd
autocomplete with flake parts to work
Files touched
M .envrcD .idea/exo-v2.imlM .idea/externalDependencies.xmlD .idea/inspectionProfiles/Project_Default.xmlM .idea/misc.xmlM .vscode/extensions.jsonM .vscode/settings.jsonM dashboard/package-lock.jsonM flake.nixM python/parts.nix
Diff
commit fd5b23281c7e5b30de21cd4b367369a8069bec3e
Author: Andrei Cravtov <the.andrei.cravtov@gmail.com>
Date: Tue Apr 7 18:26:29 2026 +0100
Workspace tweaks (#1849)
## Changes
Mostly chore changes around vscode and jetbrains workspace settings, and
some basedpyright settings tweaks, to allow direnv to work and nixd
autocomplete with flake parts to work
---
.envrc | 7 +++++++
.idea/exo-v2.iml | 31 ----------------------------
.idea/externalDependencies.xml | 2 +-
.idea/inspectionProfiles/Project_Default.xml | 14 -------------
.idea/misc.xml | 3 ---
.vscode/extensions.json | 3 ++-
.vscode/settings.json | 31 +++++++++++++++++++++++++++-
dashboard/package-lock.json | 10 +++++++++
flake.nix | 13 ++++++------
python/parts.nix | 3 +++
10 files changed, 60 insertions(+), 57 deletions(-)
diff --git a/.envrc b/.envrc
index 3550a30f..38cef425 100644
--- a/.envrc
+++ b/.envrc
@@ -1 +1,8 @@
use flake
+
+# creates .venv if doesn't exist and loads its environment
+export VIRTUAL_ENV=".venv"
+if ! [ -d "./$VIRTUAL_ENV" ]; then
+ uv venv
+fi
+layout python
diff --git a/.idea/exo-v2.iml b/.idea/exo-v2.iml
deleted file mode 100644
index aa638174..00000000
--- a/.idea/exo-v2.iml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="EMPTY_MODULE" version="4">
- <component name="FacetManager">
- <facet type="Python" name="Python facet">
- <configuration sdkName="Python 3.13 virtualenv at ~/Desktop/exo/.venv" />
- </facet>
- </component>
- <component name="Go" enabled="true" />
- <component name="NewModuleRootManager">
- <content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/scripts/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/rust/exo_pyo3_bindings/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/rust/exo_pyo3_bindings/tests" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/rust/util/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/rust/networking/examples" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/rust/networking/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/rust/networking/tests" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/rust/system_custodian/src" isTestSource="false" />
- <excludeFolder url="file://$MODULE_DIR$/.venv" />
- <excludeFolder url="file://$MODULE_DIR$/.direnv" />
- <excludeFolder url="file://$MODULE_DIR$/build" />
- <excludeFolder url="file://$MODULE_DIR$/dist" />
- <excludeFolder url="file://$MODULE_DIR$/.go_cache" />
- <excludeFolder url="file://$MODULE_DIR$/rust/target" />
- </content>
- <orderEntry type="jdk" jdkName="Python 3.13 (exo)" jdkType="Python SDK" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" name="Python 3.13 virtualenv at ~/Desktop/exo/.venv interpreter library" level="application" />
- </component>
-</module>
\ No newline at end of file
diff --git a/.idea/externalDependencies.xml b/.idea/externalDependencies.xml
index 60785b21..e56fc329 100644
--- a/.idea/externalDependencies.xml
+++ b/.idea/externalDependencies.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalDependencies">
- <plugin id="systems.fehn.intellijdirenv" />
+ <plugin id="al.aoli.intellijdirenv" />
</component>
</project>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index 12df2a84..00000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="InspectionProjectProfileManager">
- <profile version="1.0">
- <option name="myName" value="Project Default" />
- <inspection_tool class="PyCompatibilityInspection" enabled="true" level="WARNING" enabled_by_default="true">
- <option name="ourVersions">
- <value>
- <list size="1">
- <item index="0" class="java.lang.String" itemvalue="3.14" />
- </list>
- </value>
- </option>
- </inspection_tool>
- </profile>
-</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 4c4cf56c..124c79a1 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,4 @@
<option name="sdkName" value="Python 3.13 (exo)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13 (exo)" project-jdk-type="Python SDK" />
- <component name="PythonCompatibilityInspectionAdvertiser">
- <option name="version" value="3" />
- </component>
</project>
\ No newline at end of file
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 3dfc2a75..b2e0978e 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,7 +1,8 @@
{
"recommendations": [
"detachhead.basedpyright",
- "ms-python.python"
+ "ms-python.python",
+ "jnoortheen.nix-ide"
],
"unwantedRecommendations": [
"ms-python.vscode-pylance",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 31682d35..19dfab4d 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,32 @@
{
- "basedpyright.importStrategy": "fromEnvironment"
+ "files.associations": {
+ "*.nix": "nix",
+ },
+ "nix.enableLanguageServer": true,
+ "nix.serverPath": "nixd",
+ "nix.serverSettings": {
+ "nixd": {
+ "formatting": {
+ "command": ["nixpkgs-fmt"]
+ },
+ "nixpkgs": {
+ "expr": "(builtins.getFlake \"path:${workspaceFolder}\").currentSystem.config._module.args.pkgs"
+ },
+ "options": {
+ "flake-parts": {
+ "expr": "(builtins.getFlake \"path:${workspaceFolder}\").debug.options"
+ },
+ "flake-parts-perSystem": {
+ "expr": "(builtins.getFlake \"path:${workspaceFolder}\").currentSystem.options"
+ }
+ }
+ }
+ },
+ "[nix]": {
+ "editor.defaultFormatter": "jnoortheen.nix-ide"
+ },
+
+ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
+ "basedpyright.analysis.configFilePath": "${workspaceFolder}/pyproject.toml",
+ "basedpyright.importStrategy": "fromEnvironment",
}
\ No newline at end of file
diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json
index 341dce91..cf8ef1dc 100644
--- a/dashboard/package-lock.json
+++ b/dashboard/package-lock.json
@@ -1116,6 +1116,7 @@
"integrity": "sha512-oH8tXw7EZnie8FdOWYrF7Yn4IKrqTFHhXvl8YxXxbKwTMcD/5NNCryUSEXRk2ZR4ojnub0P8rNrsVGHXWqIDtA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@standard-schema/spec": "^1.0.0",
"@sveltejs/acorn-typescript": "^1.0.5",
@@ -1155,6 +1156,7 @@
"integrity": "sha512-Y1Cs7hhTc+a5E9Va/xwKlAJoariQyHY+5zBgCZg4PFWNYQ1nMN9sjK1zhw1gK69DuqVP++sht/1GZg1aRwmAXQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@sveltejs/vite-plugin-svelte-inspector": "^4.0.1",
"debug": "^4.4.1",
@@ -1771,6 +1773,7 @@
"integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -1780,6 +1783,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -2192,6 +2196,7 @@
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"dev": true,
"license": "ISC",
+ "peer": true,
"engines": {
"node": ">=12"
}
@@ -2919,6 +2924,7 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=12"
},
@@ -2961,6 +2967,7 @@
"integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -3133,6 +3140,7 @@
"resolved": "https://registry.npmjs.org/svelte/-/svelte-5.45.3.tgz",
"integrity": "sha512-ngKXNhNvwPzF43QqEhDOue7TQTrG09em1sd4HBxVF0Wr2gopAmdEWan+rgbdgK4fhBtSOTJO8bYU4chUG7VXZQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@jridgewell/remapping": "^2.3.4",
"@jridgewell/sourcemap-codec": "^1.5.0",
@@ -3277,6 +3285,7 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -3298,6 +3307,7 @@
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.4",
diff --git a/flake.nix b/flake.nix
index 0220d44d..75f3098e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -55,8 +55,7 @@
extra-substituters = "https://exo.cachix.org";
};
- outputs =
- inputs:
+ outputs = inputs:
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
systems = [
"x86_64-linux"
@@ -71,8 +70,9 @@
./python/parts.nix
];
- perSystem =
- { config, self', pkgs, lib, system, ... }:
+ debug = true; # Enable options autocompletion
+
+ perSystem = { config, self', pkgs, lib, system, ... }:
let
# Use pinned nixpkgs for swift-format (swift is broken on x86_64-linux in newer nixpkgs)
pkgsSwift = import inputs.nixpkgs-swift { inherit system; };
@@ -149,7 +149,7 @@
config.treefmt.build.wrapper
# PYTHON
- python313
+ self'.packages.python
uv
ruff
basedpyright
@@ -159,6 +159,7 @@
maturin
# NIX
+ nixd
nixpkgs-fmt
# SVELTE
@@ -178,7 +179,7 @@
OPENSSL_NO_VENDOR = "1";
shellHook = ''
- export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${python313}/lib"
+ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${self'.packages.python}/lib"
${lib.optionalString stdenv.isLinux ''
export LD_LIBRARY_PATH="${openssl.out}/lib:$LD_LIBRARY_PATH"
''}
diff --git a/python/parts.nix b/python/parts.nix
index d1d1b6d6..913d8ca3 100644
--- a/python/parts.nix
+++ b/python/parts.nix
@@ -181,6 +181,9 @@
# Test environment for running pytest outside of Nix sandbox (needs GPU access)
exo-test-env = testVenv;
} // {
+
+ inherit python;
+
exo-bench = mkBenchScript "exo-bench" (inputs.self + /bench/exo_bench.py);
exo-eval = mkBenchScript "exo-eval" (inputs.self + /bench/exo_eval.py);
exo-eval-tool-calls = mkBenchScript "exo-eval-tool-calls" (inputs.self + /bench/eval_tool_calls.py);
← 43b3df45 Fix BatchGenerator in line with upstream refactor (and preve
·
back to Exo
·
Add download utility script (#1855) 5757c27d →