Talk:Rust: Difference between revisions
imported>L0b0 →How to integrate with intellij-rust?: new section |
imported>Cessationoftime →Intellij Idea and Rust, launching from terminal.: new section |
||
| Line 9: | Line 9: | ||
[[User:L0b0|L0b0]] ([[User talk:L0b0|talk]]) 01:37, 5 September 2021 (UTC) | [[User:L0b0|L0b0]] ([[User talk:L0b0|talk]]) 01:37, 5 September 2021 (UTC) | ||
== Intellij Idea and Rust, launching from terminal. == | |||
I seem to be having success by using nix develop, flakes and launching Intellij from the terminal. Launching this way lets me capture the environment variables of my development environment. I used to get errors when doing this but I found the key is to export an XDG environment variable in the shellHook. I also use a shellAlias to launch idea with the command "@idea". This requires a .XDG folder be added to the development environment for the XDG_DATA_HOME. There are three other XDG variables that may need to be similarly exported too and folders created. But this one is the only one I have identified that is definitely problematic. | |||
environment.shellAliases = { | |||
"@idea" = "idea-community </dev/null &>/dev/null &; echo 'Launching Intellij idea-community'"; # launch idea from the command line. This let's it access the environment variables in the 'nix develop' shell environment. | |||
}; | |||
I combine that with: | |||
allows one to automatically enter nix develop shell: | |||
direnv = { | |||
enable = true; | |||
nix-direnv.enable = true; | |||
}; | |||
a .envrc file with the following two lines: | |||
strict_env | |||
use flake | |||
I then modify the basic rust-overlay flake found here: | |||
https://github.com/oxalica/rust-overlay#use-in-devshell-for-nix-develop | |||
The key is to add: | |||
shellHook = ''''''' | |||
export XDG_DATA_HOME="$PWD/.XDG/share" | |||
'''''''; | |||
The XDG_DATA_HOME variable export avoids the following error message from Intellij Idea: | |||
/nix/store/hl5v6vjsf3yhi9a2fyf5vnq06w6c257r-rust-default-1.64.0/bin/cargo check --message-format json --workspace --all-targets -Z unstable-options --keep-going | |||
error: failed to run `rustc` to learn about target-specific information | |||
error: failed to run `rustc` to learn about target-specific information | |||
Caused by: | |||
could not execute process `/home/username/.local/share/JetBrains/IdeaIC2023.1/intellij-rust/bin/linux/x86-64/intellij-rust-native-helper /nix/store/hl5v6vjsf3yhi9a2fyf5vnq06w6c257r-rust-default-1.64.0/bin/rustc - --crate-name ___ --print=file-names --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (never executed) | |||
Caused by: | |||
No such file or directory (os error 2) | |||
My unredacted flake.nix that seems to be working with Intellij is here: https://gist.github.com/cessationoftime/e4e988059727ba664f8f105bd5526c0c | |||