From 6bb1adb672ab2f0f4c8289286b4c50fa7124a905 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Niemier?= <~@hauleth.dev> Date: Wed, 18 Mar 2026 10:03:09 +0100 Subject: [PATCH] Add Mole for cleaning macOS --- modules/tools.nix | 1 + pkgs/default.nix | 1 + pkgs/mac-mole.nix | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 pkgs/mac-mole.nix 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"; + }; +}) -- 2.51.2