Skip to content

Latest commit

 

History

History
213 lines (158 loc) · 9.17 KB

File metadata and controls

213 lines (158 loc) · 9.17 KB

Myfish — Your shell. Your setup. Fish, Bash and Zsh for Linux and macOS.

Validation status Fish, Bash and Zsh Linux and macOS Home Manager optional

A personalized terminal, with a guided setup and a way back.
Choose your shell, choose how to manage it, and make yourself at home.

Quick start · Features · Customize · Full guide · Report an issue

What you get

Myfish brings a consistent terminal setup to Fish, Bash and Zsh. Use your system’s package manager or opt into Home Manager for pinned packages and generations.

Included
A recognizable prompt A shared Powerline-style Starship theme with directory, Git and clock segments.
Icons that render JetBrainsMono Nerd Font installation and a grouped Fastfetch system overview.
Faster navigation zoxide, fzf file and text pickers, eza listings and directory shortcuts.
Persistent terminal sessions Zellij with Tokyo Night Storm, your selected shell and locked shortcuts; launch manually.
A personal welcome Write your own greeting, insert your username, or turn the greeting off.
Everyday helpers Git shortcuts, archive extraction and optional Neovim with the official LazyVim starter, plus development tools.
Maintenance included Reinstall, remove selected components, or detach Home Manager while keeping your tools.

Fish includes built-in suggestions and highlighting. Bash uses ble.sh. Zsh suggestions and highlighting are configured through Home Manager or macOS native installation. See the shell comparison for key bindings and backend differences.

Quick start

git clone https://github.com/Commanderx-code/Myfish.git
cd Myfish
./install.sh --apply

The installer walks you through the installation mode, shell and greeting. It shows the configuration plan and asks for APPLY before applying it. Run as your normal user; it requests elevated access when needed for dependencies or login-shell changes.

After installation: select JetBrainsMono Nerd Font Mono in your terminal’s font settings, then close all terminal windows and reopen them. If you changed your login shell, log out and back in.

No Git installed?

Download Code → Download ZIP from this repository, extract it, and run bash install.sh --apply from the extracted folder.

Choose your setup

Mode Package management Best suited to
Native / direct apt, dnf, pacman or macOS Homebrew A setup using your existing package manager, without Nix.
Home Manager Nix packages pinned by flake.lock A declarative home configuration with generation-based recovery.
# Native Fish setup
./install.sh --apply --backend native --shell fish

# Home Manager with Zsh
./install.sh --apply --backend home-manager --shell zsh

Both modes support Fish, Bash and Zsh. You can also choose keep current shell to install selected tools without replacing your shell configuration.

On macOS only, the installer checks for Homebrew and offers to install it if missing. Home Manager mode additionally installs Nix when needed. Native mode refuses an existing Home Manager profile or symlink-managed target configuration; use the maintenance menu when changing how you manage a setup.

Platform support

Platform Native package manager Automated coverage
Debian / Ubuntu family apt Linux x86_64 CI on Ubuntu
Fedora family dnf Package-planning tests
Arch family pacman Package-planning tests
macOS — Apple Silicon & Intel Homebrew CI on both Mac architectures

CI runs tests and Home Manager builds without activating a home. Clean-machine installation, desktop behavior, Linux ARM and cross-distro activation still need manual testing. Automatic Nix setup on Linux requires systemd with SELinux disabled; macOS must meet Homebrew’s requirements. Intel Home Manager support depends on the pinned Nixpkgs release. Platform details →

Myfish configures a terminal environment; it does not install an operating system or configure your desktop, bootloader or backup services.

Make it yours

Pick a greeting

./install.sh --apply --greeting 'Welcome back, {user}!'
./install.sh --apply --no-greeting
./install.sh --apply --default-greeting

{user} inserts the account username. Custom text is printed literally. Disabling the greeting keeps Fastfetch enabled; COMMANDER_QUIET=1 suppresses both for a session.

Keep your preferences

Your shell, greeting and optional features are saved outside the repository in ~/.config/commander-os/machine.json, respecting XDG_CONFIG_HOME.

  • Shell: fish, bash, zsh or keep.
  • Editor: toggle Neovim with the default LazyVim starter.
  • Development: toggle Git configuration and the tools available for your backend.

To inspect a native installation plan first:

./install.sh --backend native --shell fish --no-install

--no-install prohibits dependency installation. Other preview commands may offer to install prerequisites. Settings and previews →

Neovim with LazyVim

Enabling Neovim installs the official LazyVim starter. Open nvim after installation; its first launch downloads the plugins. Then run :LazyHealth to check the setup. Internet access is required for that first launch.

Native installs upgrade Myfish's unchanged minimal editor config, while preserving existing personal or edited configs. Home Manager manages the starter Lua files; its generated plugin lockfile remains writable. Plugins update through lazy.nvim, independently of Myfish's Nix lock.

Older native Linux packages get checksum-verified Neovim and Tree-sitter binaries under ~/.local, with install records for removal. macOS uses Homebrew; Home Manager supplies the tools through Nix. Editor details →

Update or uninstall

Update your saved setup:

git pull --ff-only
./install.sh --apply

Open the maintenance menu:

./uninstall.sh

Choose a full reinstall, remove selected components, inspect installation status, or remove Home Manager while keeping its tools as a fixed Nix snapshot.

Removal previews the changes, creates a recovery backup and asks for confirmation. Native removal restores original files where possible, preserves edited files and offers only recorded packages for removal. Nix, Homebrew, personal history and recovery backups remain. Home Manager removal covers its entire active generation and generation history. Maintenance and recovery details →

Documentation

Guide What it covers
Setup and reference Prerequisites, installation choices and platform behavior.
Shell customizations Aliases, pickers, previews and everyday commands.
Recovery and rollback Backups, login-shell recovery and generations.
Validation Local checks and the limits of automated testing.

Found a problem? Open an issue with your OS, shell, installation mode, command and relevant error output. Remove personal information before sharing logs.

Credits

Inspired by Chris Titus Tech’s mybash, with a guided installer and support for multiple shells. The bundled Fastfetch layout retains its upstream MIT notice, and downloaded fonts include their license.

Built with Starship, Nerd Fonts, Fastfetch, Home Manager and the shell tools listed in the guide.


Previously Commander-os. Existing settings paths, startup markers and recovery records keep their original names so existing installations remain compatible.

Toolbox integration

Changes on main are picked up automatically after CI succeeds. Add new exported tools to toolbox.json; see publishing tools for package names, config paths and the update workflow.