devenv.nix 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. { pkgs, lib, config, inputs, ... }:
  2. let
  3. rosettaPkgs =
  4. if pkgs.stdenv.isDarwin && pkgs.stdenv.isAarch64
  5. then pkgs.pkgsx86_64Darwin
  6. else pkgs;
  7. darwinPackages = with pkgs; [
  8. darwin.apple_sdk.frameworks.Security
  9. darwin.apple_sdk.frameworks.CoreServices
  10. darwin.apple_sdk.frameworks.CoreFoundation
  11. darwin.apple_sdk.frameworks.Foundation
  12. ];
  13. linuxPackages = with pkgs; [
  14. ];
  15. in {
  16. packages = with pkgs; [
  17. git
  18. cargo-edit
  19. ] ++ lib.optionals pkgs.stdenv.isDarwin darwinPackages
  20. ++ lib.optionals pkgs.stdenv.isLinux linuxPackages;
  21. env = {
  22. APP_GREET = "Relay";
  23. } // lib.optionalAttrs pkgs.stdenv.isLinux {
  24. LD_LIBRARY_PATH = lib.makeLibraryPath [
  25. ];
  26. } // lib.optionalAttrs pkgs.stdenv.isDarwin {
  27. # Place to put macOS-specific environment variables
  28. };
  29. scripts = {
  30. hello.exec = "echo hello from $APP_GREET";
  31. e.exec = "emacs";
  32. };
  33. enterShell = ''
  34. git --version
  35. ${lib.optionalString pkgs.stdenv.isDarwin ''
  36. # Place to put macOS-specific shell initialization
  37. ''}
  38. ${lib.optionalString pkgs.stdenv.isLinux ''
  39. # Place to put Linux-specific shell initialization
  40. ''}
  41. '';
  42. enterTest = ''
  43. echo "Running tests"
  44. '';
  45. dotenv.enable = true;
  46. languages = {
  47. rust = {
  48. enable = true;
  49. channel = "nightly";
  50. components = [
  51. "rustc"
  52. "cargo"
  53. "clippy"
  54. "rustfmt"
  55. "rust-analyzer"
  56. "llvm-tools-preview"
  57. "rust-src"
  58. "rustc-codegen-cranelift-preview"
  59. ];
  60. };
  61. };
  62. }