Skip to content

simonwjackson/icho

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

icho | A bespoke neovim workspace. Powered by nixvim.

Features

  • 🌿 AI-Powered Assistance: Code completion, chat, and context-aware prompts.
  • 🦥 Enhanced Editing: Code refactoring tools, etc.
  • 🏃 Navigation: LSP navigation and bookmark management.
  • 🎨 Customizable UI: Zen mode, refined UI elements, and improved notifications
  • 🔧 Quality of Life: Auto session management, file saving with elevated privileges, and streamlined Git workflows.
  • 🛠️ Language Support:: Support for a wide range of programming languages and tools, ensuring a tailored experience for developers.
  • 🧩 Modular Configuration: Files for each plugin.
  • 💻 Automatic Updates: The project flake updates the plugins nightly.

Welcome to my Neovim configuration crafted for Nix. Feel free to use it as is or extract pieces to help construct your own unique setup.

Important

This repo is provided as-is and is primarily developed for my own workflows. As such, I offer no guarantees of regular updates or support. Bug fixes and feature enhancements will be implemented at my discretion, and only if they align with my personal use-cases. Feel free to fork the project and customize it to your needs, but please understand my involvement in further development will be intermittent.

Usage

{
    inputs.icho.url = "github:simonwjackson/icho";
}

To utilize this configuration, clone the repo and run the following command from the directory:

nix run

or remote:

nix run github:simonwjackson/icho

Plugins

This configuration includes a variety of plugins:

AI

  • supermaven-nvim: AI code completion with customizable keymaps and conditions.
  • avante: AI-powered plugin (specific functionality not detailed in the config).

Keyboard

  • better-escape: Improved escape key mappings with customizable timeout and mappings.

HTTP

  • kulala: HTTP client with debug options, environment scoping, and custom icons.
  • rest: REST client for Neovim.

UI

  • otter: UI plugin (specific functionality not detailed in the config).
  • dressing: Enhanced UI for input and select dialogs.
  • zen-mode: Distraction-free writing mode with customizable window settings.
  • noice: Improved UI for notifications, messages, and popup menus.

Quality of Life

  • vim-suda: Allows saving files with sudo privileges.

Editing

  • vim-matchup: Enhanced match-up functionality with Treesitter support.
  • repeat: Repeat plugin commands with ..

Syntax

  • todo-comments: Highlight and manage TODO comments.
  • typescript-tools: TypeScript language support.
  • tailwind-tools: Tailwind CSS utilities.
  • scope: Scope management for syntax highlighting.
  • smear-cursor: Smooth cursor animations.
  • refactoring: Code refactoring tools with Telescope integration.
  • qmk: QMK firmware configuration support.
  • lspsaga: Enhanced LSP UI.
  • nvim-surround: Surround text with brackets, quotes, etc.

Navigation

  • marks: Manage and navigate marks.
  • navbuddy: Navigation sidebar with LSP integration.
  • lazydev: Lazy development tools with custom runtime settings.

Utilities

  • helpview: Enhanced help viewer.
  • direnv: Environment variable management.
  • git-worktree: Git worktree management.
  • glance: Quick navigation and preview.
  • improved-search: Enhanced search functionality.
  • auto-session: Automatic session management.
  • comment: Comment toggling and management.
  • firenvim: Embed Neovim in the browser.
  • lazygit: Git integration with LazyGit.
  • grug-far: Search and replace functionality.

Plugin Updates

all

nix flake update

Repository Structure

The repository is organized into a modular structure for managing Neovim configurations using Nix. Key components include:

  • config/: Contains modular configuration files for Neovim plugins, LSP, UI, and utilities. Each file is dedicated to a specific plugin or feature, making it easy to customize or extend.
  • flake.nix: The main Nix flake configuration, defining the Neovim environment and its dependencies.
  • flake.lock: Ensures reproducible builds by locking dependency versions.
  • README.md: Documentation for the repository, including setup instructions and plugin details.

This structure is designed for flexibility, allowing users to pick and choose components for their own Neovim setups.

Language Support

The repo includes support for the following programming languages and tools:

🌐 Web Applications

  • Frontend: HTML, CSS, JavaScript, TypeScript, React (TSX), Vue, Svelte
  • Backend: Python, Ruby, PHP, Java
  • Data: SQL, GraphQL
  • Styling: SCSS, CSS

🔧 Systems Development

  • Languages: C, C++, Rust, Zig
  • Build Tools: Make, Just
  • Shell: Bash, Fish

📦 DevOps & Configuration

  • Containers: Dockerfile
  • Package Management: Nix
  • Data Formats: JSON, YAML, TOML, XML, Protocol Buffers

📚 Documentation & Writing

  • Markup: Markdown, LaTeX, Typst
  • API Docs: Vimdoc
  • Regular Expressions: Regex support for pattern matching

🧪 Functional Programming

  • Pure FP: Haskell, Elm
  • Actor Model: Erlang, Elixir

License

The files and scripts in this repository are licensed under the MIT License, which is a very permissive license allowing you to use, modify, copy, distribute, sell, give away, etc. the software. In other words, do what you want with it. The only requirement with the MIT License is that the license and copyright notice must be provided with the software.

About

A bespoke neovim workspace. Powered by lua and nix.

Topics

Resources

Stars

Watchers

Forks

Languages