Skip to content

Latest commit

 

History

63 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linux Mint Setup

Bash License Version

Personal post-install setup for Linux Mint. Follow the steps below in order.

Step 1 - Run the Automated Setup Script

Open a terminal and run:

wget -O setup.sh https://raw.githubusercontent.com/diegochagas/linux-mint-setup/main/setup.sh && chmod +x setup.sh && ./setup.sh

The script asks for the administrator password when it needs sudo permissions. Keep an internet connection active while it runs.

Step 2 - Manual Post-Install Steps

  1. Configure automatic system snapshots: Update Manager > Edit > System Snapshots > Wizard > Next > Next > Weekly - Keep 4 > Next > Next > Finish.
  2. Open a new terminal and run claude once to sign in to Claude Code.
  3. If Claude for Firefox needs to be loaded manually, open about:debugging#/runtime/this-firefox, click Load Temporary Add-on, and select ~/.claude/firefox/extension/manifest.json.

What setup.sh Does

The script stops if an unhandled command fails and performs the following actions:

System and APT Packages

  • Removes Linux Mint's Snap restriction by renaming nosnap.pref, when present.
  • Adds the official Sublime Text APT repository.
  • Updates APT and installs: Firefox, ExifTool, VLC, Sublime Text, Git, Node.js, npm, Python 3, curl, jq, AntiMicroX, unzip, rsync, xclip, FreeRDP X11, libsecret-tools, CopyQ, btop, Inkscape, Nextcloud Desktop, FFmpeg, fontconfig, GParted, Tree, ShellCheck, Docker, Docker Compose, gh, nfs-kernel-server, zbar-tools, Anki, the TimGM6mb SoundFont, and supporting libraries.
  • Configures Docker after installation by adding the current user to the docker group, fixing existing ~/.docker ownership if needed, and enabling and starting the Docker and containerd systemd services. Log out and back in before using Docker without sudo.
  • On AMD64 systems, installs Remote Mouse and the latest balenaEtcher release.
  • On AMD64 and ARM64 systems, installs the latest immich-go release.
  • On AMD64 and ARM64 systems, installs AppManager and uses it to install the Wattage nightly AppImage from nightly.link.
  • On AMD64 systems, installs WinBoat from its AppImage release using AppManager.
  • Installs Claude Code for terminal use.
  • On AMD64 systems, installs Claude Desktop from Anthropic's latest x64 .deb installer.
  • Installs Claude for Firefox, the community Firefox extension bridge for Claude Code.

Snap Applications

The script installs Snap support and then installs:

  • Surfshark
  • Visual Studio Code
  • Insomnia
  • LocalSend

Flatpak Applications

The script installs Flatpak, adds Flathub, and installs:

  • NormCap
  • Google Chrome
  • Emojify
  • Master PDF Editor
  • Kdenlive
  • Free Download Manager
  • Dosage
  • mGBA
  • EasyRPG Player
  • Telegram Desktop

GIMP Ecosystem

The complete GIMP ecosystem lives in its own repository: gimp-setup.

If the GIMP Flatpak is already installed, this step is skipped entirely — GIMP itself is the marker for the whole ecosystem. To add missing pieces to an existing GIMP install, run the (idempotent) gimp-setup/setup.sh directly.

Otherwise the script clones that repository and runs its setup.sh, which installs and configures with a single command the features listed in gimp-setup/docs/

The repository to clone can be overridden with the GIMP_SETUP_REPO variable in config.sh, and the GEMINI_API_KEY / OPENAI_API_KEY values set there are forwarded to the GIMP setup for its AI plug-ins. See the gimp-setup README for details, configuration and how to add new GIMP features.

Homelab Backup Automation

After the other setup steps finish, the script clones homelab-backup to:

~/Projects/homelab-backup

It then applies the systemd user timer configuration from backup.md:

  • Makes ~/Projects/homelab-backup/backup.sh executable.
  • Creates ~/.config/systemd/user/homelab-backup.service.
  • Creates ~/.config/systemd/user/homelab-backup.timer.
  • Reloads the user systemd daemon.
  • Enables and starts the timer with systemctl --user enable --now homelab-backup.timer.

The timer runs the backup daily at 10:00 AM. Because Persistent=true is set, if the computer is powered off at the scheduled time, the backup runs on the next login.

The repository to clone can be overridden with the HOMELAB_BACKUP_REPO variable in config.sh. The clone location remains ~/Projects/homelab-backup, matching the systemd unit configuration.

Other Software

  • Installs Tailscale using its official installation script.
  • Installs immich-go to /usr/local/bin/immich-go on AMD64 and ARM64 systems.
  • Installs AppManager, then downloads the latest successful Wattage build-appimage.yml artifact for the current CPU architecture and installs the extracted AppImage with app-manager install.
  • Installs WinBoat on AMD64 systems by downloading the configured AppImage release and installing it with app-manager install.
  • Installs Claude Code using Anthropic's Linux terminal installer:
    curl -fsSL https://claude.ai/install.sh | bash
  • Installs Claude Desktop on AMD64 systems by downloading Anthropic's latest x64 .deb installer and installing it with APT. The installer registers Anthropic's APT repository so Claude Desktop updates with the rest of the system packages.
  • Installs Claude for Firefox by cloning the repository, running its Linux installer, copying the extension to ~/.claude/firefox/extension/, registering Firefox native messaging hosts, and creating the Claude Firefox desktop launcher.

The Claude for Firefox repository to clone can be overridden with the CLAUDE_FIREFOX_REPO variable in config.sh.

Installer and release source URLs, including the WinBoat AppImage URL, can also be overridden in config.sh. See config.sh.example for the full list.

Desktop Configuration

The script creates these Cinnamon keyboard shortcuts:

Shortcut Action
Alt + V Toggle CopyQ
Alt + T Open NormCap
Alt + E Open Emojify
Alt + C Copy a screenshot of an area to clipboard
Shift + Super + S Copy a screenshot to clipboard

It also:

  • Configures CopyQ to start automatically.
  • Installs the fonts from the fonts folder into ~/.local/share/fonts/linux-mint-setup and refreshes the font cache with fc-cache -f.
  • Installs the AntiMicroX controller profiles from antimicrox/profiles into ~/.config/antimicrox/profiles: ALendaDoHeroi, ApocalypseAcabouAPutaria, DragonBallZFighters, FallGuys, Jaspion, MegamanCollection, and SegaMegaDriveEGenesisClassics. When the repository files are not available locally, they are downloaded from GitHub. Open AntiMicroX, click Load, and pick the game's profile before playing.
  • Points mGBA at the Game Boy Advance library set by GBA_LIBRARY_DIR in config.sh — a directory with ROMs in a Rooms/ subfolder and save files in a Saves/ subfolder, e.g. a folder synced by Nextcloud: the ROM file dialog opens in Rooms/ and saves are read and written in Saves/, so game progress stays synced across machines. If the variable is empty or the library does not exist yet, the step is skipped — set the path in config.sh and re-run setup.sh.
  • Grants EasyRPG Player access to the RPG Maker library set by RPG_MAKER_LIBRARY_DIR in config.sh — a directory with one subfolder per game and the shared RTP assets in RTP/2000 and RTP/2003 subfolders, e.g. a folder synced by Nextcloud — and copies the RTP into EasyRPG's default search path together with the TimGM6mb GM soundfont so MIDI music plays. Open the games with EasyRPG's built-in game browser by navigating to the library folder; saves are written inside each game folder, so progress stays synced across machines. If the variable is empty or the library does not exist yet, the step is skipped — set the path in config.sh and re-run setup.sh.
  • Allows unverified Flatpak applications to appear in Software Manager.
  • Enables automatic update checks and updates in Update Manager.
  • Configures the Homelab Backup systemd user timer after the other setup steps.

Notes

GIMP

  • Everything GIMP-related is handled by the gimp-setup repository. See its README for installation details, notes and troubleshooting.
  • If GIMP has not been opened before the setup script runs, some GIMP plug-ins and features are skipped. Open GIMP once, close it, and re-run setup.sh.
  • The script downloads software and runs official third-party installation scripts, so review setup.sh before running it.

Fixing Random Wi-Fi Disconnects on Linux Mint (MediaTek MT7921)

  • Check your Wi-Fi adapter:
    lspci -nnk | grep -A3 -i network
    If you see something similar to:
    MediaTek Corp. MT7921 802.11ax PCI Express Wireless Network Adapter
    Kernel driver in use: mt7921e
    
    then this guide applies.
  • Install the iw utility, if it is not already installed:
    sudo apt update
    sudo apt install iw
  • Check the current power-saving status:
    iw dev wlp63s0 get power_save
    You may see:
    Power save: on
    
  • Disable Wi-Fi power saving permanently. Create the NetworkManager configuration file:
    sudo mkdir -p /etc/NetworkManager/conf.d
    sudo nano /etc/NetworkManager/conf.d/wifi-powersave.conf
    Paste the following:
    [connection]
    wifi.powersave = 2
    Save and exit with Ctrl+O, Enter, then Ctrl+X.
  • Restart NetworkManager:
    sudo systemctl restart NetworkManager
  • Verify that power saving is disabled:
    iw dev wlp63s0 get power_save
    Expected output:
    Power save: off
    
  • Reboot and verify again:
    iw dev wlp63s0 get power_save
    If it still shows Power save: off, the configuration has been applied successfully and should persist across reboots. After disabling Wi-Fi power saving, the random network drops stopped occurring on the MediaTek MT7921 adapter under Linux Mint.

ZimaOS Server

Everything related to the ZimaOS home server — the apps it runs and how to reinstall them with their customizations after a fresh installation — is handled by the zimaos-setup repository. Its data backup and restore chain lives in homelab-backup.

Other Notes

  • Remote Mouse and balenaEtcher are installed only on AMD64 systems.
  • immich-go is installed only on AMD64 and ARM64 systems.
  • AppManager and Wattage are installed only on AMD64 and ARM64 systems. WinBoat is installed only on AMD64 systems. If a configured AppImage or nightly artifact is temporarily unavailable, the script reports that in the summary and continues.
  • Claude Code is installed with Anthropic's terminal installer. Run claude once after setup to sign in.
  • Claude Desktop is installed only on AMD64 systems.
  • Claude for Firefox is an unofficial community extension. Firefox release builds load it as a temporary extension, so after restarting Firefox you may need to open about:debugging#/runtime/this-firefox, choose Load Temporary Add-on, and select ~/.claude/firefox/extension/manifest.json. If the sidebar shows authentication errors after signing in to Claude Code, run ~/.claude/firefox/refresh-tokens.sh.
  • Homelab Backup is cloned to ~/Projects/homelab-backup and scheduled with a user systemd timer.
  • Some operations may already be complete when the script is run again. Review any errors before retrying.
  • Type the cedilla character (ç) with AltGr + , (comma).
  • The correct audio profile in Sound Settings is Headset JBL TUNE770NC.
  • Install Python packages only for your user with python3 -m pip install --user --break-system-packages PACKAGE_NAME

About

Personal post-install setup for Linux Mint. Follow the steps below in order.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages