summaryrefslogtreecommitdiff
path: root/devenv.nix
diff options
context:
space:
mode:
authorMumtahin Farabi <[email protected]>2026-05-11 23:58:31 -0400
committerMumtahin Farabi <[email protected]>2026-05-11 23:58:31 -0400
commit1ef535274234065e8b81c2bc0a32c7e129c73120 (patch)
tree0cea4940cc2ebde8d235fc5e9ee0ad33d2e609c6 /devenv.nix
parent9b0fb073ed687ab5b49fdd4e7d2b3e58af325049 (diff)
build(devenv): scaffold setup
Signed-off-by: Mumtahin Farabi <[email protected]>
Diffstat (limited to 'devenv.nix')
-rw-r--r--devenv.nix90
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);
+ };
+ };
+}