Skip to content

abusoww/tuxmate

TuxMate

Linux Website Maintained GitHub issues GitHub stars GitHub license

🐧 The only Mate you need for setup

TuxMate is a web-based Linux application installer that generates distro-specific shell scripts, that aims to be the simplest way to bulk-install applications on a fresh Linux system.

Maybe you've just installed a fresh Linux distro. Perhaps you're setting up a new machine or can't remember all the package names for your favorite apps?

πŸ“¦ Supported Distributions

  • Ubuntu / Debian (apt)
  • Arch Linux (pacman + AUR)
  • Fedora (dnf)
  • openSUSE (zypper)
  • Nix (nix-env)
  • Flatpak
  • Snap

✨ Features 🌟

Application Catalog

150+ applications across 15 categories: browsers, communication, dev tools, terminals, media, creative software, gaming, office, VPN/network, security, and more.

Smart Script Generation

  • Detects already-installed packages
  • Handles AUR packages automatically on Arch
  • Enables RPM Fusion when needed on Fedora
  • Parallel installation for Flatpak
  • Network retry with exponential backoff
  • Progress bars with ETA
  • Colored output and summary reports

Availability Awareness

Shows which apps are available for your selected distro, with instructions for unavailable packages.

πŸ“Έ Screenshots

1 2 3

πŸ’» Development

npm install
npm run dev

Open http://localhost:3000

Build

npm run build
npm start

πŸ—‚οΈ Project Structure

src/
β”œβ”€β”€ app/                    # Next.js app router
β”‚   β”œβ”€β”€ page.tsx            # Main page component
β”‚   β”œβ”€β”€ layout.tsx          # Root layout with meta tags
β”‚   └── globals.css         # Tailwind styles
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ app/                # App cards & categories
β”‚   β”œβ”€β”€ command/            # Command footer & AUR bar
β”‚   β”œβ”€β”€ common/             # Tooltips, loading states
β”‚   β”œβ”€β”€ distro/             # Distribution selector
β”‚   β”œβ”€β”€ header/             # Header & theme toggle
β”‚   └── ui/                 # Base UI components
β”œβ”€β”€ hooks/                  # React hooks
β”‚   β”œβ”€β”€ useLinuxInit.ts     # Main app state management
β”‚   β”œβ”€β”€ useKeyboardNavigation.ts
β”‚   β”œβ”€β”€ useTheme.ts
β”‚   └── useDelayedTooltip.ts
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ data.ts             # Apps, distros, icons
β”‚   β”œβ”€β”€ aur.ts              # AUR package detection
β”‚   β”œβ”€β”€ analytics.ts        # Umami tracking
β”‚   β”œβ”€β”€ generateInstallScript.ts
β”‚   └── scripts/            # Per-distro script generators
└── __tests__/              # Vitest unit tests

🐳 Docker Deployment

Quick Start with Docker

# Build the Docker image
docker build -t tuxmate:latest .

# Run the container
docker run -p 3000:3000 tuxmate:latest

Using Pre-built Images

Pre-built Docker images are automatically published to GitHub Container Registry:

# Pull and run the latest image
docker pull ghcr.io/abusoww/tuxmate:latest
docker run -p 3000:3000 ghcr.io/abusoww/tuxmate:latest

# Or use a specific version
docker pull ghcr.io/abusoww/tuxmate:v1.0.0
docker run -p 3000:3000 ghcr.io/abusoww/tuxmate:v1.0.0

Using Docker Compose (Recommended)

# Start the application
docker-compose up -d

# View logs
docker-compose logs -f

# Stop the application
docker-compose down

Open http://localhost:3000

Configuration

The Docker container exposes port 3000 by default. You can customize the port mapping:

docker run -p 8080:3000 tuxmate:latest

Environment Variables

The following environment variables are configured by default:

  • NODE_ENV=production - Run in production mode
  • PORT=3000 - Application port
  • NEXT_TELEMETRY_DISABLED=1 - Disable Next.js anonymous telemetry

You can override these when running the container:

docker run -p 3000:3000 \
  -e PORT=3000 \
  -e NEXT_TELEMETRY_DISABLED=1 \
  tuxmate:latest

πŸ› οΈ Tech Stack

πŸš€ Usage

you can use the Arrow Keys orΒ hΒ jΒ kΒ lΒ to navigate,Β Enter to select, Esc to go back, Space to toggle selection.

  1. Select your distribution from the dropdown
  2. Browse categories and select applications
  3. Copy the generated command or download the full install script
  4. Run the script on your Linux machine

🀝 Contribution

See CONTRIBUTING.md for contribution guidelines.

🎯 Roadmap

Completed

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

Planned

  • Winget support (Windows)
  • Homebrew support (macOS)
  • Save custom presets / profiles
  • Share configurations via URL
  • More distros (Gentoo, Void, Alpine)
  • PWA support for offline use
  • Companion CLI tool
  • Expand application catalog (200+)
  • Dotfiles integration

πŸ”— 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

πŸ“œ 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.

About

THE MISSING BULK APP INSTALLER FOR LINUX

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors 7

Languages