diff --git a/modules/tools.nix b/modules/tools.nix index d9a4b77..30d8d36 100644 --- a/modules/tools.nix +++ b/modules/tools.nix @@ -28,5 +28,6 @@ in { pkgs.senpai pkgs.timg pkgs.typos + pkgs-self.mac-mole ]; } diff --git a/pkgs/default.nix b/pkgs/default.nix index 87de06f..2d80cca 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -7,6 +7,7 @@ imbox = callPackage ./imbox.nix {}; ubin-client = callPackage ./ubin-client.nix {}; hosevka = callPackage ./hosevka.nix {}; + mac-mole = callPackage ./mac-mole.nix {}; fswatch = writeShellApplication { name = "fswatch"; diff --git a/pkgs/mac-mole.nix b/pkgs/mac-mole.nix new file mode 100644 index 0000000..a112e75 --- /dev/null +++ b/pkgs/mac-mole.nix @@ -0,0 +1,59 @@ +{ + stdenv, + fetchFromGitHub, + lib, + buildGoModule, +}: + +let + version = "1.30.0"; + src = fetchFromGitHub { + owner = "tw93"; + repo = "Mole"; + tag = "V${version}"; + hash = "sha256-uo/wPKObL5i6A0i/1hmOjXCzlJkkrFsmZHvLoHmM8Ro="; + }; + + goComponents = buildGoModule { + pname = "mac-mole-go"; + inherit version src; + + ldflags = [ + "-s" "-w" + "-X main.Version=${version}" + ]; + + subPackages = [ "cmd/analyze" "cmd/status" ]; + + vendorHash = "sha256-oepnMZcaTB9u3h6S0jcP4W0pqNkDDgETVqDdCL0jarM="; + }; + +in stdenv.mkDerivation (self: { + pname = "mac-mole"; + inherit version src; + + buildPhase = '' + script_dir="$out/libexec" + + mkdir -p $out/bin $script_dir + + cp -r ./bin $script_dir + cp -r ./lib $script_dir + + ln -s ${goComponents}/bin/analyze $script_dir/bin/analyze-go + ln -s ${goComponents}/bin/status $script_dir/bin/status-go + + cp mole $out/bin + ln -s $out/bin/mole $out/bin/mo + + substituteInPlace $out/bin/mole \ + --replace 'SCRIPT_DIR="$(cd "$(dirname "''${BASH_SOURCE[0]}")" && pwd)"' "SCRIPT_DIR='$script_dir'" + ''; + + meta = { + description = "Deep clean and optimize your Mac"; + homepage = "https://github.com/tw93/Mole"; + licenses = lib.licenses.mit; + mainProgram = "mole"; + }; +})