onCreate is not taking effect

I am starting a Python project that was imported through git.
However, the default branch in my git repository does not have a nix configuration file.
When I switched to the development branch and rebuilt the environment, I found that the onCreate field did not take effect (no .venv environment was generated), but the onStart field did take effect and the command was successfully executed.

my dev.nix file (I hide a part of onCreate command)

{ pkgs, ... }: {
  # Which nixpkgs channel to use.
  channel = "stable-23.11"; # or "unstable"

  # Use https://search.nixos.org/packages to find packages
  packages = [
    pkgs.python311
    pkgs.python311Packages.pip
    pkgs.ffmpeg-full
    pkgs.pre-commit
    pkgs.openssh
    pkgs.util-linux
  ];

  # Sets environment variables in the workspace
  env = {
    "APP_PATH" = "/home/user/sekai-backend";
  };
  idx = {
    # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
    extensions = [
      "ms-python.flake8"
      "ms-python.debugpy"
      "ms-python.python"
    ];

    # Enable previews
    previews = {
      enable = false;
      previews = {
      };
    };

    # Workspace lifecycle hooks
    workspace = {
      # Runs when a workspace is first created
      onCreate = {
        prepare = ''
          python3 -m venv ".venv"
          source .venv/bin/activate
          pip install -r requirements.txt
          pip install fastapi uvicorn[standard]
          pip install pre-commit && pre-commit install
        '';
      };
      onStart = {
        redis = "chmod 400 portforward.pem && ssh -i \"./portforward.pem\" -L 6378:############## -N";
      };
    };
  };
}

Hey there, thanks for the report! I replied in the issue tracker with some ideas — we can update this thread with the resolution.

1 Like

The solution shared in the issue tracker that worked:

Try manually running the onCreate hook by opening the command palette
(Ctrl+Shift+P) and finding the Project IDX: Run onCreate troubleshooting
command.

2 Likes

:thinking: I wonder if you try this example of loading pyhton,