summaryrefslogtreecommitdiff
path: root/devenv.nix
blob: 3c70e45d9b467c7510ec42e08c8d1b9672f154d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{
  lib,
  pkgs,
  config,
  inputs,
  ...
}:
{
  name = "apidae-systems";

  infoSections = {
    name = [ config.name ];
  };

  scripts = {
    slides.exec = "bun dev";
    up.exec = ''devenv up "$@"'';
    clean.exec = "git clean -fdX";
    docs.exec = "bunx likec4 start";
    tio.exec = ''HOME="$DEVENV_ROOT" ${pkgs.tio}/bin/tio "$@"'';
  };

  enterShell = ''
    export PATH="$HOME/.cargo/bin:$PATH";

    if [ -f "\$\{ESPUP_EXPORT_FILE:-}" ]; then
      . "$ESPUP_EXPORT_FILE"
    elif [ -f "$HOME/export-esp.sh" ]; then
      . "$HOME/export-esp.sh"
    fi

    if command -v xtensa-esp-elf-gcc >/dev/null 2>&1; then
      echo -e "\033[36m[devenv:embassy]:\033[0m\033[32m Espressif Rust toolchain ready 🦀\033[0m"
    else
      echo -e "\033[36m[devenv:embassy]:\033[0m\033[34m xtensa-esp-elf-gcc \033[0m\033[31mtoolchain not found ⚠️\033[0m"
      echo -e "\033[36m[devenv:embassy]:\033[0m\033[33m install with \033[0m\033[35mespup install && direnv allow\033[0m\n"
    fi
  '';

  cachix = {
    enable = true;
    pull = [
      "cachix"
      "oxalica"
      "devenv"
      "nixpkgs"
      "mfarabi"
      "nix-community"
      "pre-commit-hooks"
    ];
  };

  languages = rec {
    nix.enable = true;
    shell.enable = true;
    cplusplus.enable = true;

    c = {
      enable = true;
      debugger = pkgs.gdb;
    };

    rust = {
      enable = true;
      channel = "stable";
      # lld.enable = true;  # FIXME: breaks dioxus
      # mold.enable = true; # FIXME: breaks loco

      components = [
        "rustc"
        "cargo"
        "clippy"
        "rustfmt"
        "rust-std"
        "rust-src"
        "rust-analyzer"
      ];
    };

    typescript.enable = javascript.enable;

    javascript = rec {
      enable = true;
      bun.enable = enable;
      package = pkgs.nodejs_24;
      # FIXME: find out why this crashes for intel macbooks
      # pnpm.enable = !(pkgs.stdenv.isDarwin && pkgs.stdenv.isx86_64);
    };
  };
}