Skip to content

Repository files navigation

Mintbook Workstation

This is an easy-to-replicate setup of my current Linux Mint workstation. Feel free to fork it, make it yours, and share your improvements.

Linux Mint Cinnamon desktop with CPU, CPU temperature and fan state, memory, network speed, storage, and battery monitors

The current Cinnamon desktop: a simple top panel, app dock, and live system monitors.

What is this, really?

It is a collection of small, readable setup scripts that recreate the useful parts of my workstation on another Linux Mint machine.

Instead of remembering every package, setting, shortcut, and desktop tweak, I keep the repeatable parts here. You can preview everything first, apply only the profiles you want, and change the public defaults without copying any of my private data.

Area What it recreates
Apps A curated set of APT packages and Flatpaks
Desktop Cinnamon panel, themes when available, four workspaces, and app shortcuts
Monitoring CPU, CPU temperature and fan state, RAM, network up/down speed, storage, and battery
Terminal GNOME Terminal colours and JetBrains Mono
Shell A small Bash PATH fragment without replacing the default .bashrc
Startup Portable Slack and CopyQ login entries
Development GitHub CLI, Node/npm, compilers, and optional pinned developer tools

This is not a full disk image or a backup of my home folder. It deliberately leaves out documents, passwords, browser sessions, SSH keys, Wi-Fi credentials, and other personal state.

Try it safely

Clone the repository:

git clone https://github.com/karthikmudaliarX/mintbook-workstation.git
cd mintbook-workstation

Preview the desktop setup without changing anything:

./install.sh --profile desktop

Preview the desktop and development setup together:

./install.sh --profile desktop --profile development

When the preview looks right, apply it explicitly:

./install.sh --apply --profile desktop --profile development

Important

The installer is a dry run by default. It changes the machine only when you add --apply.

The project currently targets Linux Mint 22.3 with Cinnamon on X11. Apply mode is intentionally conservative on other environments.

Pick the parts you want

Profiles can be combined, so you do not need to adopt the whole setup.

Profile Includes
desktop Codecs, desktop utilities, Flatpaks, terminal styling, autostart entries, Cinnamon layout, and monitor widgets
development Compilers, GitHub CLI, Node/npm, shell tooling, and optional pinned Codex, OpenCode, and Rust configuration
remote OpenSSH and network diagnostics; Tailscale and NoMachine remain manual vendor installs
optional Opt-in conveniences such as earlyoom and zram tools
hardware-intel-laptop Intel microcode, thermal, sensor, firmware, and VA-API packages; use only on matching hardware

APT and Flatpak installation is idempotent: packages that are already installed are left in place.

The desktop profile also:

  • fetches exact reviewed component revisions without running their installers
  • installs the pinned system-monitor desklet and disabled BlurCinnamon files
  • lays out six monitor cards relative to the detected primary display
  • detects the default network interface, battery name, root filesystem, and CPU fan sensor
  • restores the top panel, available themes, four workspaces, and the Super + V CopyQ shortcut
  • backs up existing shell, terminal, component, and Cinnamon state before changing it
  • automatically restores desktop state if an apply step fails

Make it yours

Fork the repository and edit the one-package-per-line manifests in packages/, change a profile in profiles/, or add your own small installer.

For local values that should not be committed, copy the example configuration and pass it explicitly:

cp local.example.conf local.conf
./install.sh --config ./local.conf --profile development
./install.sh --apply --config ./local.conf --profile development

The installer never searches for or imports local.conf, dotfiles, or existing home-directory configuration automatically.

How it is organised

install.sh checks the operating system, combines the selected profiles, and hands each job to a focused installer.

install.sh
  ├─ packages/ + profiles/       APT and Flatpak intent
  ├─ components/                 pinned, non-executing source acquisition
  ├─ desktop/cinnamon/           settings and detected monitor layout
  ├─ desktop/terminal/           presentation-only terminal settings
  ├─ dotfiles/bash/              one portable sourced PATH fragment
  ├─ autostart/                  Slack and CopyQ login entries
  └─ services/                   separately enabled user-service templates

External tools are handled carefully:

  • Codex and OpenCode are installed only when explicit versions are supplied through --config.
  • An existing rustup installation can be moved to an explicit toolchain.
  • Bun, Cursor, Google Chrome, Tailscale, and NoMachine are not installed through mutable curl-pipe-shell commands. Follow their official instructions and pin versions where possible.

Optional services

The always-awake and weekly Codex Desktop update services are not enabled by any profile. Review and preview them separately:

./services/install.sh
./services/install.sh --apply never-sleep

Blocking sleep is not a sensible default for many laptops, so it remains an explicit choice.

What is intentionally not included

  • Mintbook's custom Clear/Dark and Local/Remote theme variants are not redistributed yet.
  • codexbar@local remains optional until its command paths and release source are public. The panel works without it.
  • Wayland, monitor/EDID restoration, Wi-Fi/VPN, printers, browsers, SSH, and authentication state are out of scope.
  • Bun, Cursor, Google Chrome, Tailscale, and NoMachine remain documented manual installs.
  • This is not presented as a complete disaster-recovery image until apply mode has also been tested on a clean Cinnamon X11 account.

Privacy and safety

Please do not commit:

  • SSH or GPG private keys, tokens, cookies, credentials, or .env files
  • browser, editor, Codex, OpenCode, or cloud session state
  • shell history, Wi-Fi/VPN secrets, or NetworkManager connections
  • complete dconf dumps, monitors.xml, device IDs, or private endpoints
  • personal documents or assets you do not have permission to redistribute

The bootstrap never copies content from the current home directory. Public templates contain placeholders only.

Before publishing a change, run:

./scripts/verify.sh

The verifier checks Bash syntax, JSON, tests, ShellCheck when available, and a deterministic secret/path scanner. It also runs Gitleaks when installed.

Contributing

Fork it, customise it, and open a pull request if you make something broadly useful. See CONTRIBUTING.md for the small set of project rules.

License

The bootstrap code is available under the MIT License. Third-party packages and applications keep their own licenses.

About

An easy-to-replicate setup of my current Linux Mint workstation.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages