Skip to content

Default Applications

When marchyo.desktop.enable = true, the marchyo.defaults.* options control which applications are installed and registered as system defaults. Set any option to null to skip management for that category.

Option Default Choices
marchyo.defaults.browser "google-chrome" "brave", "google-chrome", "firefox", "chromium"
marchyo.defaults.editor "emacs" "emacs", "vscode", "vscodium", "zed"
marchyo.defaults.terminalEditor "emacs" "emacs", "neovim", "helix", "nano"
marchyo.defaults.videoPlayer "mpv" "mpv", "vlc", "celluloid"
marchyo.defaults.audioPlayer "mpv" "mpv", "cmus", "vlc", "amberol"
marchyo.defaults.musicPlayer "spotify-player" "spotify-player", "ncspot", "spotify"
marchyo.defaults.fileManager "nautilus" "nautilus", "thunar"
marchyo.defaults.terminalFileManager "yazi" "yazi", "ranger", "lf"
marchyo.defaults.imageEditor "pinta" "pinta", "gimp", "krita"
marchyo.defaults.email "aerc" "aerc", "neomutt", "gmail", "outlook"
marchyo.defaults.aiAgent null "claude-code", "codex", "opencode" (installed only with development.enable)
marchyo.defaults = {
browser = "firefox";
editor = "vscode";
terminalEditor = "neovim";
videoPlayer = "mpv";
audioPlayer = "mpv"; # or "cmus" for a TUI library player
musicPlayer = "spotify-player"; # TUI Spotify client (floating terminal)
fileManager = "nautilus";
terminalFileManager = "yazi";
imageEditor = "gimp";
email = "aerc"; # TUI mail client; requires account config
};

Set any option to null to prevent Marchyo from installing or configuring that category:

marchyo.defaults = {
browser = null; # Don't manage browser
musicPlayer = null; # Don't install a music player
};

marchyo.defaults.excludePackages drops individual packages from Marchyo’s default bundles (the shell, TUI, desktop, media, office, and development tool sets) without turning off a whole feature flag. It mirrors NixOS’s own *.excludePackages options: it subtracts only from what Marchyo adds by default, not from packages pulled in by other modules or your own environment.systemPackages.

marchyo.defaults.excludePackages = with pkgs; [
signal-desktop # drop the bundled desktop messenger
obsidian # drop the bundled note-taking app
];

Each entry must be the same package value Marchyo installs (from the configuration’s pkgs).

Some choices are “externally managed” — Marchyo does not install a package for them:

  • "gmail" and "outlook" (email) — Web applications opened in the default browser. No package is installed.

"emacs" is the default editor and terminalEditor. When selected, Marchyo installs pkgs.emacs and sets $VISUAL to emacsclient -c -a emacs (graphical frame) and $EDITOR to emacsclient -t -a 'emacs -nw' (terminal), each with a plain-Emacs fallback when no daemon is running. Switch editor to "vscode"/… or terminalEditor to "neovim"/… to use another editor. The two selectors resolve independently, so you can mix (e.g. editor = "emacs" with terminalEditor = "neovim").

When a default is set, Marchyo:

  1. Installs the package (unless externally managed)
  2. Registers MIME type associations — for browser, editor, videoPlayer, audioPlayer, fileManager, and email. E.g., setting browser = "firefox" registers Firefox as the handler for text/html, x-scheme-handler/http, etc. The other categories are install-only: imageEditor is never registered as a MIME handler (Loupe stays the default image viewer), and terminalEditor, terminalFileManager, and musicPlayer register no associations either.
  3. Sets environment variables — browser sets $BROWSER, editor sets $VISUAL, terminalEditor sets $EDITOR