From 1ef535274234065e8b81c2bc0a32c7e129c73120 Mon Sep 17 00:00:00 2001 From: Mumtahin Farabi Date: Mon, 11 May 2026 23:58:31 -0400 Subject: build(devenv): scaffold setup Signed-off-by: Mumtahin Farabi --- devenv.nix | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 devenv.nix (limited to 'devenv.nix') 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); + }; + }; +} -- cgit v1.3