Skip to content

nerima-lisp/nshell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

444 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nshell

CI License: MIT Documentation

nshell is a modern, fish-inspired interactive shell written in Common Lisp for SBCL. It puts the interactive experience first — real-time syntax highlighting, history-aware autosuggestions, fish-style abbreviations, and a context-aware completion engine driven by a logic knowledge base — on top of a domain-driven core whose line editor is a pure reducer over an immutable input state, and a reproducible Nix build that ships as a single dumped SBCL image.

Status: early development (0.4.x). The interactive editor and core pipeline execution are solid and heavily tested. The shell language is a growing subset of POSIX/fish semantics. nshell is usable as a daily interactive shell for common workflows; it is not a script-compatible /bin/sh replacement.

Full documentation is published at https://nerima-lisp.github.io/nshell/. The source for that site lives in docs/src/.

Quick Start

nix run github:nerima-lisp/nshell

Then type as you would in any shell. Commands and paths colorize live, and a dimmed completion of the most recent matching history entry trails the cursor — press or Ctrl-F to accept it:

~/src/nshell> git com                    # "mit -m " suggested from history
~/src/nshell> echo hello | string upper
HELLO

Install

nix profile install github:nerima-lisp/nshell
# flake.nix
inputs.nshell = {
  url = "github:nerima-lisp/nshell/v0.4.0";
  inputs.nixpkgs.follows = "nixpkgs";
};

Note the pinned tag. Consumers inside this org must pin a release tag rather than follow the default branch. Prebuilt x86_64-linux and aarch64-darwin tarballs with checksums are attached to every release.

Documentation

Development

nix develop          # SBCL with CL_SOURCE_REGISTRY already set
nix run .#test       # run the test suite
nix flake check      # tests + formatting + docs, the same gate CI uses
nix fmt              # format Nix sources (treefmt)
nix build            # produces ./result/bin/nshell

Tests live in t/ and run under cl-weave, the org's test framework. Cases needing a real PTY, stty, or external binaries cannot run in the Nix sandbox and are covered by CI's separate integration job; run them locally with the command in Recipes.

Contributing

See the org-wide CONTRIBUTING guide and the package standard.

Support

See SUPPORT. Report vulnerabilities privately via the org security policy rather than a public issue.

License

MIT. See LICENSE.

About

Modern, fish-inspired interactive shell written in Common Lisp

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages