{ inputs = { devenv = { inputs.nixpkgs.follows = "nixpkgs"; url = "github:cachix/devenv"; }; espkgs = { inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; }; url = "github:mirrexagon/nixpkgs-esp-dev"; }; fenix = { inputs.nixpkgs.follows = "nixpkgs"; url = "github:nix-community/fenix"; }; flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-python = { inputs.nixpkgs.follows = "nixpkgs"; url = "github:cachix/nixpkgs-python"; }; rust-overlay = { inputs.nixpkgs.follows = "nixpkgs"; url = "github:oxalica/rust-overlay"; }; }; outputs = inputs @ { self, devenv, espkgs, flake-utils, nixpkgs, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ (_: _: espkgs.packages.${system}) ]; }; in { packages = { devenv-up = self.devShells.${system}.default.config.procfileScript; devenv-test = self.devShells.${system}.default.config.test; }; devShells.default = devenv.lib.mkShell { inherit inputs pkgs; modules = [ { env = { LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; }; git-hooks.hooks = { alejandra.enable = true; taplo.enable = true; }; languages = { nix.enable = true; python.enable = true; rust = { enable = true; channel = "nightly"; components = [ "cargo" "clippy" "rustc" "rustfmt" "rust-analyzer" "rust-src" ]; mold.enable = false; }; typst.enable = true; }; packages = with pkgs; [ espflash # esp-idf-full ldproxy opencode sops ]; } ]; }; }); }