MCPcopy Index your code
hub / github.com/abusoww/tuxmate

github.com/abusoww/tuxmate @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
118 symbols 286 edges 69 files 0 documented · 0% updated 3mo ago★ 1,79910 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

TuxMate

Linux Website Maintained GitHub issues GitHub stars GitHub license

🐧 The only Mate you need for setup

TuxMate is a cross-distro install command generator built for real Linux workflows.

Choose apps once, generate inspectable commands/scripts for your distro, and run only what you understand.

[!NOTE] Package mappings are verified against official distro registries and reviewed under strict contribution rules. Repositories evolve over time, so some entries can become outdated or unavailable later. If you spot an issue, please report it so we can fix it quickly.

[!WARNING] Security notice: TuxMate is a command generator (a wrapper around install logic), not a background installer. You copy and run commands yourself, so always inspect the generated command/script in the UI before executing. Downloadable scripts are produced with strict project rules, but no automation tool can replace user review. Confirm package names, flags, and targets for your distro before execution, and proceed at your own risk.

Supported Package Managers

Ubuntu (apt) · Debian (apt) · Arch (pacman) · AUR · Fedora (dnf) · openSUSE (zypper) · Nix (nixpkgs) · Flatpak (Flathub) · Snap (Snapcraft) · Homebrew

Features

  • Cross-distro generation: apt (Ubuntu/Debian), pacman + AUR helpers (yay/paru), dnf (Fedora), zypper (openSUSE), nix config output, Flatpak, Snap, and Homebrew.
  • Native-first resolution with npm/script fallbacks only when a distro target is missing.
  • Safe generation: inspectable output, installed-package checks, and retry with exponential backoff.
  • Faster setup: parallel Flatpak installs.
  • Homebrew-aware output with correct formula/cask separation.
  • Clean terminal UX: colored logs, progress, ETA, and final summaries.
  • Verification built in: AUR detection + allowlist, Nix unfree checks, and verified Flatpak/Snap badges.
  • Productive UI: copy/download drawer, yay/paru switch, unfree warnings, and distro-aware context.
  • Keyboard-first flow: Vim/arrow navigation, / search focus, and fast clear.
  • PWA support with network-first service worker for resilient loading.

Screenshots

1 2 3

Development

npm install
npm run dev

Open http://localhost:3000

Build

npm run build
npm start

Project Structure

  • src/app/: App Router entrypoints, layout, globals, and error boundary.
  • src/components/: UI modules (catalog, command drawer, distro selector, search, shared UI primitives).
  • src/hooks/: App interaction hooks (state orchestration, keyboard navigation, theme, tooltips).
  • src/lib/apps/: Source-of-truth app registry (category JSON files).
  • src/lib/scripts/: Distro-specific script generators and shared shell helpers.
  • src/lib/generateInstallScript.ts: Main orchestration for native targets + universal fallbacks.
  • src/lib/verification.ts: Verified source badges (Flathub/Snap).
  • src/__tests__/: Unit tests for data, script behavior, and utilities.

Docker Deployment

Build and Run

docker build -t tuxmate:latest .
docker run -p 3000:3000 tuxmate:latest

Use Prebuilt Image (GHCR)

docker pull ghcr.io/abusoww/tuxmate:latest
docker run -p 3000:3000 ghcr.io/abusoww/tuxmate:latest

# Version pinning example
docker pull ghcr.io/abusoww/tuxmate:v1.0.0
docker run -p 3000:3000 ghcr.io/abusoww/tuxmate:v1.0.0

Docker Compose

docker-compose up -d
docker-compose logs -f
docker-compose down

Open http://localhost:3000

Port Mapping

docker run -p 8080:3000 tuxmate:latest

Environment Variables

  • NODE_ENV=production - Run in production mode
  • PORT=3000 - Application port
  • NEXT_TELEMETRY_DISABLED=1 - Disable Next.js anonymous telemetry
docker run -p 3000:3000 \
  -e PORT=3000 \
  -e NEXT_TELEMETRY_DISABLED=1 \
  tuxmate:latest

Tech Stack

🤝 Contribution

See CONTRIBUTING.md for contribution guidelines.

🎯 Roadmap

Completed

  • [x] Multi-distro support (Ubuntu, Debian, Arch, Fedora, openSUSE)
  • [x] Nix, Flatpak & Snap universal package support
  • [x] 180+ applications across 15 categories
  • [x] Smart script generation with error handling
  • [x] Dark / Light theme toggle with smooth animations
  • [x] Copy command & Download script
  • [x] Custom domain
  • [x] Docker support
  • [x] CI/CD shortcuts & workflow
  • [x] Search & filter applications (Real-time)
  • [x] AUR Helper selection (yay/paru) + Auto-detection
  • [x] Keyboard navigation (Vim keys, Arrows, Space, Esc, Enter)
  • [x] Package availability indicators (including AUR badges)
  • [x] Homebrew support (macOS + Linux)
  • [x] PWA support for offline use
  • [x] Nix configuration.nix download with unfree package detection

Planned

  • [ ] Winget support (Windows)
  • [ ] Custom presets / profiles
  • [ ] Share configurations via URL
  • [ ] More distros (FreeBSD, Gentoo, Void, Alpine)
  • [ ] i18n / Multi-language support
  • [ ] Companion CLI tool
  • [ ] Expand application catalog (200+)
  • [ ] Dotfiles integration
  • [ ] Declarative NixOS options support (programs.*) [Issue #36]

Related Projects

  • LinuxToys – User-friendly collection of tools for Linux with an intuitive interface
  • Nixite – Generates bash scripts to install Linux software, inspired by Ninite
  • tuxmate-cli – CLI companion for tuxmate, uses tuxmate's package database

Monetary Contributions

No tips jar here. I’m happy just knowing you’re using Linux.

If you want to earn some real life karma points, consider donating to the following organizations:

Comments, suggestions, bug reports and contributions are welcome.

📜 License

Licensed under the GPL-3.0 License

Free software — you can redistribute and modify it under the terms of the GNU General Public License.

<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/footers/gray0_ctp_on_line.svg?sanitize=true" />

Extension points exported contracts — how you extend this code

AurPanelProps (Interface)
(no doc)
src/components/command/AurPanel.tsx
GenerateOptions (Interface)
(no doc)
src/lib/generateInstallScript.ts
ThemeContextType (Interface)
(no doc)
src/hooks/useTheme.tsx
ShortcutsBarProps (Interface)
(no doc)
src/components/command/ShortcutsBar.tsx
Window (Interface)
(no doc)
src/lib/analytics.ts
NavItem (Interface)
(no doc)
src/hooks/useKeyboardNavigation.ts
AurPopoverProps (Interface)
(no doc)
src/components/command/AurPopover.tsx
Distro (Interface)
(no doc)
src/lib/data.ts

Core symbols most depended-on inside this repo

isAurPackage
called by 18
src/lib/aur.ts
escapeShellString
called by 13
src/lib/scripts/shared.ts
track
called by 12
src/lib/analytics.ts
generateAsciiHeader
called by 9
src/lib/scripts/shared.ts
generateSharedUtils
called by 9
src/lib/scripts/shared.ts
injectUniversal
called by 8
src/lib/generateInstallScript.ts
appendExtras
called by 8
src/lib/generateInstallScript.ts
appendScripts
called by 8
src/lib/generateInstallScript.ts

Shape

Function 94
Interface 24

Languages

TypeScript100%

Modules by API surface

src/lib/scripts/shared.ts7 symbols
src/lib/generateInstallScript.ts6 symbols
src/components/command/CommandDrawer.tsx6 symbols
src/lib/data.ts5 symbols
src/hooks/useTooltip.ts5 symbols
src/components/command/AurFloatingCard.tsx5 symbols
scripts/fetch-verified-flatpaks.mjs5 symbols
src/hooks/useLinuxInit.ts4 symbols
src/hooks/useKeyboardNavigation.ts4 symbols
src/components/header/HowItWorks.tsx4 symbols
src/components/command/AurPanel.tsx4 symbols
src/hooks/useTheme.tsx3 symbols

Dependencies from manifests, versioned

@testing-library/react16.3.1 · 1×
@types/node20 · 1×
@types/react19 · 1×
@types/react-dom19 · 1×
@vitejs/plugin-react5.1.2 · 1×
clsx2.1.1 · 1×
eslint9 · 1×
eslint-config-next16.1.6 · 1×
framer-motion12.23.26 · 1×
gsap3.14.2 · 1×

For agents

$ claude mcp add tuxmate \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact