{ description = "A tool for organising a music library"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; utils.url = "github:numtide/flake-utils"; flake-compat = { url = "github:edolstra/flake-compat"; flake = false; }; }; outputs = { self, nixpkgs, utils, ... }: { hmModule = import ./hm-module.nix; overlay = final: prev: let system = final.system; in { musicutil = final.buildGoModule rec { pname = "musicutil"; version = "latest"; src = ./.; postPatch = '' substituteInPlace meta/meta.go --replace 'var ffmpeg_path = "ffmpeg"' 'var ffmpeg_path = "${final.ffmpeg}/bin/ffmpeg"' substituteInPlace meta/meta.go --replace 'var ffprobe_path = "ffprobe"' 'var ffprobe_path = "${final.ffmpeg}/bin/ffprobe"' ''; vendorSha256 = "sha256-8mL467JTgtlmXKElDDtHRjkPpzvcB4G7qcPcLrA7Pzw="; doCheck = false; buildInputs = with final; [ ffmpeg ]; }; }; } // utils.lib.eachSystem (utils.lib.defaultSystems) (system: let pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; }; in { defaultPackage = self.packages."${system}".musicutil; packages.musicutil = pkgs.musicutil; apps = rec { musicutil = { type = "app"; program = "${self.defaultPackage.${system}}/bin/musicutil"; }; default = musicutil; }; defaultApp = self.apps."${system}".musicutil; devShell = pkgs.mkShell { buildInputs = with pkgs; [ go ffmpeg ]; }; lib = pkgs.musicutil.lib; }); }