Skip to content

Secure terminal-based IDE for local JS development

License

Notifications You must be signed in to change notification settings

legobeat/l7-devenv

Repository files navigation

l7ide

Containerized neovim development environment. Primarily intended for contributors on MetaMask repositories.

For a guided tutorial, see docs/1-getting-started.md.

Goals

  • Ease-of-use
    • Quick and easy to set up with minimal configuration and sane defaults
    • Easy to maintain and update at your leisure
    • Easily extensible, configurable and customizable
    • Adapted for contribution to MetaMask and LavaMoat codebases
    • Familiar setup for vscode/vim users
  • Secure
    • Principle-of-least privilege applied
      • Text editor and plugins shouldn't need access to secrets like GitHub tokens
      • Keep development scripts and code-scanning tools away from each other and your home directory
    • Sandbox from rest of host system
      • Paste raw logs without exposing information about your user and host
    • Ephemeral file system
      • Everything beyond your sources and configuration are a clean slate after a restart
    • Auditable
  • Fast and efficient
    • Low performance overhead - save your memory and CPU for more interesting work
  • Productivity-enhanching
    • Code-analysis and refactoring features familiar for IDE users

Dependencies

  • OCI Container runtime
    • We will be using rootless podman to minimize privileges but Docker or any other compatible engine should work.
  • An SSH agent socket
    • Typically provided by running ssh-agent
  • (Optional) Nerd Fonts enabled in your terminal
    • For proper display of icons and font rendering
  • (Optional) Sixel support in your terminal
    • For rendering of images
  • (Optional) A GPG agent socket
    • For signing git commits. Typically provided by running gpg-agent on the host.

Screenshots

screenshot: TypeScript LSP integration screenshot: Forge issue and PR integration

Contribution Notes

⚠️ This is under early development and things might still shift around a bit. Open an issue if you have any!

PRs with bugfixes, compatibility improvements, documentation and testing are especially welcome. New features may be considered but if they conflict with goals, you are also encouraged to run your own fork.