{ description = "Emacs mode development environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; jailed-agents.url = "path:/conf/jailed-agents"; }; outputs = { self, nixpkgs, flake-utils, jailed-agents, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; # Choose your Emacs build (e.g., pkgs.emacs, pkgs.emacs-nox, pkgs.emacs-pgtk) epkgs = pkgs.emacsPackagesFor pkgs.emacs; # Emacs wrapped with useful dev/test/lint packages available in load-path emacsWithDeps = epkgs.emacsWithPackages (p: with p; [ package-lint relint buttercup ]); devInputs = with pkgs; [ emacsWithDeps epkgs.eldev git gnumake texinfo ripgrep ]; in { devShells.default = pkgs.mkShell { packages = devInputs ++ [ (jailed-agents.lib.${system}.makeJailedOpencode system { extraPkgs = devInputs; }) ]; shellHook = '' echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo " Emacs Mode Development Environment" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "Common tasks:" echo " eldev lint # package-lint + relint" echo " eldev test # run ERT/Buttercup tests" echo " eldev compile # byte-compile" echo " eldev package # build release tarball" echo "" echo "Start Emacs (preconfigured load-path):" echo " emacs ." echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" ''; }; } ); }