Skip to content

Commit

Permalink
chore: update README
Browse files Browse the repository at this point in the history
update readme

docs: update README.md

docs: update README.md

Add files via upload

chore: nix-flake-update.yaml

chore: update README.md
  • Loading branch information
simonwjackson committed Jan 27, 2025
2 parents 0d17a03 + ed0e9bf commit cd500c8
Show file tree
Hide file tree
Showing 5 changed files with 177 additions and 18 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 7 additions & 7 deletions .github/workflows/nix-flake-update.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ jobs:
run: |
nix flake update
nix flake check
# - name: Commit and Push Changes
# run: |
# git config --global user.email "github-actions@example.com"
# git config --global user.name "GitHub Actions"
# git add flake.lock
# git commit -m "Update flake.lock"
# git push
- name: Commit and Push Changes
run: |
git config --global user.email "github-actions@example.com"
git config --global user.name "GitHub Actions"
git add flake.lock
git commit -m "Update flake.lock"
git push
176 changes: 167 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,175 @@
# Nixvim template
<h3 align="center">
<img src="./.github/assets/8e7b8cce-3782-42c0-a3eb-62ca1ec649bd_removalai_preview.png" width="300px"/>
</h3>
<h1 align="center">
icho | A bespoke neovim workspace. Powered by <a href="https://github.com/nix-community/nixvim">nixvim</a>.
</h1>

This template gives you a good starting point for configuring nixvim standalone.
<div align="center">
<img alt="Static Badge" src="https://img.shields.io/badge/nixpkgs-unstable-d2a8ff?style=for-the-badge&logo=NixOS&logoColor=cba6f7&labelColor=161B22">
<img alt="Static Badge" src="https://img.shields.io/badge/State-Forever_WIP-ff7b72?style=for-the-badge&logo=fireship&logoColor=ff7b72&labelColor=161B22">
<a href="https://github.com/simonwjackson/icho/pulse">
<img alt="Last commit" src="https://img.shields.io/github/last-commit/simonwjackson/icho?style=for-the-badge&logo=github&logoColor=D9E0EE&labelColor=302D41&color=9fdf9f"/>
</a>
<br/>
<img alt="Static Badge" src="https://img.shields.io/badge/Powered_by-Caffeine-79c0ff?style=for-the-badge&logo=nuke&logoColor=79c0ff&labelColor=161B22">
<a href="https://github.com/simonwjackson/icho/tree/main/LICENSE">
<img alt="License" src="https://img.shields.io/badge/License-MIT-907385605422448742?style=for-the-badge&logo=agpl&color=DDB6F2&logoColor=D9E0EE&labelColor=302D41">
</a>
<a href="https://www.buymeacoffee.com/simonwjackson">
<img alt="Buy me a coffee" src="https://img.shields.io/badge/Buy%20me%20a%20coffee-grey?style=for-the-badge&logo=buymeacoffee&logoColor=D9E0EE&label=Sponsor&labelColor=302D41&color=ffff99" />
</a>
</div>

## Configuring
## Features

To start configuring, just add or modify the nix files in `./config`.
If you add a new configuration file, remember to add it to the
[`config/default.nix`](./config/default.nix) file
* 🌿 **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.

## Testing your new configuration
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.

To test your configuration simply run the following command
> [!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

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

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

```
nix run .
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

```shell
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.
1 change: 1 addition & 0 deletions config/clipboard.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
wl-clipboard
];

# NOTE: Incase this plugin gets removed:
# extraPlugins = [
# (pkgs.vimUtils.buildVimPlugin {
# name = "my-plugin";
Expand Down
4 changes: 2 additions & 2 deletions config/lualine.nix
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
];
lualine_b = [
"branch"
"overseer"
];
lualine_c = [
];
lualine_c = [];
lualine_x = [
"diagnostics"
];
Expand Down

0 comments on commit cd500c8

Please sign in to comment.