diff options
| author | Mumtahin Farabi <[email protected]> | 2026-05-11 23:58:31 -0400 |
|---|---|---|
| committer | Mumtahin Farabi <[email protected]> | 2026-05-11 23:58:31 -0400 |
| commit | 1ef535274234065e8b81c2bc0a32c7e129c73120 (patch) | |
| tree | 0cea4940cc2ebde8d235fc5e9ee0ad33d2e609c6 /devenv.nix | |
| parent | 9b0fb073ed687ab5b49fdd4e7d2b3e58af325049 (diff) | |
build(devenv): scaffold setup
Signed-off-by: Mumtahin Farabi <[email protected]>
Diffstat (limited to 'devenv.nix')
| -rw-r--r-- | devenv.nix | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 0000000..3c70e45 --- /dev/null +++ b/devenv.nix @@ -0,0 +1,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); + }; + }; +} |
