A simple music compression tool
  • Go 60.7%
  • Nix 39.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-27 16:23:46 +02:00
cmd/mushrink init 2026-09-27 03:38:28 +02:00
internal init 2026-09-27 03:38:28 +02:00
.gitignore init 2026-09-27 03:38:28 +02:00
flake.lock init 2026-09-27 03:38:28 +02:00
flake.nix expose module 2026-09-27 16:23:46 +02:00
go.mod init 2026-09-27 03:38:28 +02:00
go.sum init 2026-09-27 03:38:28 +02:00
module.nix init 2026-09-27 03:38:28 +02:00
package.nix init 2026-09-27 03:38:28 +02:00
README.md wording 2026-09-27 03:50:48 +02:00
treefmt.toml init 2026-09-27 03:38:28 +02:00
wrapper.nix prefix 2026-09-27 03:43:49 +02:00

Mushrink

A simple music compression tool.

If you're anything like me, you obtain music in FLAC format for archival and compress it down to MP3 files for actual listening. Mushrink exists to automate the continuous compression work that would otherwise have to be done manually.

It:

  • scans the input and output directories,
  • makes sure the content is properly synchronized (i.e., there are no tracks in the output directory that don't exist in the input directory), and
  • compresses the music from FLAC to MP3 in parallel.

Dependencies

Mushrink requires ffmpeg with LAME support in $PATH in order to function, which is included in the Nix package.

NixOS

A NixOS module is provided within this flake. Here's an example of how to use it:

{
  services.mushrink.jobs.main = {
    input = "/srv/music";
    output = "/srv/compressed-music";
    timerConfig = {
      OnCalendar = "daily";
      Persistent = true;
    };
    inhibit = ["sleep"];
  };
}