├── Casks ├── ft2-clone.rb ├── pt2-clone.rb └── flying-toasters.rb ├── iselect.rb ├── durdraw.rb ├── modplug-tools.rb ├── yaku-ns.rb ├── wipeout-rewrite.rb ├── form.rb ├── tcputils.rb ├── geant4.rb ├── ruptime.rb ├── README.md ├── dwarfs.rb └── macfuse.rb /Casks/ft2-clone.rb: -------------------------------------------------------------------------------- 1 | cask "ft2-clone" do 2 | version "1.95" 3 | sha256 "e0712739e95a1e2a3bc4c7ac6af433da5337bb0371defca0ac88eb5b8e84337a" 4 | 5 | url "https://16-bits.org/ft2-clone-v#{version}-macos.zip" 6 | name "ft2-clone" 7 | desc "Music tracker clone of Fasttracker II for modern computers" 8 | homepage "https://16-bits.org/ft2.php" 9 | 10 | app "ft2-clone-macos" 11 | end 12 | -------------------------------------------------------------------------------- /Casks/pt2-clone.rb: -------------------------------------------------------------------------------- 1 | cask "pt2-clone" do 2 | version "1.66" 3 | sha256 "8b046008d55cc8d4a56b56fb2356e53d89ef257640ad0f6ebbe5a6d605f40e04" 4 | 5 | url "https://16-bits.org/pt2-clone-v#{version}-macos.zip" 6 | name "pt2-clone" 7 | desc "Music tracker clone of ProTracker 2 for modern computers" 8 | homepage "https://16-bits.org/pt.php" 9 | 10 | app "pt2-clone-macos" 11 | end 12 | 13 | -------------------------------------------------------------------------------- /Casks/flying-toasters.rb: -------------------------------------------------------------------------------- 1 | cask "flying-toasters" do 2 | version "1.1" 3 | sha256 "527f79335d49b8ba4b2706eab2ee0bfa7db9d2bbc2f02ae4b613ad1c1ccecc83" 4 | 5 | url "https://github.com/robertventurini/FlyingToasters/releases/download/#{version}/Flying.Toasters.zip" 6 | name "flying-toasters" 7 | desc "Recreation of AfterDarks 2.0 Flying Toasters screensaver" 8 | homepage "https://github.com/robertventurini/FlyingToasters" 9 | 10 | screen_saver "Flying Toasters.saver" 11 | end 12 | -------------------------------------------------------------------------------- /iselect.rb: -------------------------------------------------------------------------------- 1 | class Iselect < Formula 2 | desc "Interactive line selection tool" 3 | homepage "http://www.ossp.org/pkg/tool/iselect/" 4 | url "ftp://ftp.ossp.org/pkg/tool/iselect/iselect-1.4.0.tar.gz" 5 | sha256 "5b75fc5fa5407e85fa77d2a299c4e7628c0213116809f343946e62a8a25c5b1b" 6 | license "GPL-2-only" 7 | 8 | # depends_on "cmake" => :build 9 | 10 | def install 11 | system "./configure", *std_configure_args, "--disable-silent-rules" 12 | system "make", "install" 13 | end 14 | 15 | test do 16 | system "true" 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /durdraw.rb: -------------------------------------------------------------------------------- 1 | class Durdraw < Formula 2 | desc "Versatile ASCII and ANSI Art text editor for drawing in terminal" 3 | homepage "https://durdraw.org" 4 | url "https://github.com/cmang/durdraw/archive/refs/tags/0.27.1.tar.gz" 5 | sha256 "809431fc3dded211a59b624397f6cd490aa0568a965808eed8dd76dbb92b5611" 6 | 7 | depends_on "python3" 8 | 9 | def install 10 | system "./configure", "--this-and-that", 11 | "--render-a-duck", 12 | system "make", "install" 13 | end 14 | 15 | test do 16 | system "#{bin}/durdraw", "-h" 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /modplug-tools.rb: -------------------------------------------------------------------------------- 1 | class ModplugTools < Formula 2 | desc "Music player based on libopenmpt/modplug for the command-line" 3 | homepage "https://github.com/alexmyczko/modplug-tools/" 4 | url "https://github.com/alexmyczko/modplug-tools/archive/refs/tags/0.5.6.tar.gz" 5 | sha256 "954b5cef17583e4e72f828c81fd07ccdfee51963171e8f34bc7c878a4323a8e4" 6 | license "GPL-3.0-or-later" 7 | 8 | depends_on "cmake" => :build 9 | depends_on "libmodplug" 10 | depends_on "libao" 11 | 12 | def install 13 | system "cmake", "." 14 | system "make" 15 | bin.install "mp123/modplug123" 16 | man1.install "modplug123.1" 17 | end 18 | 19 | test do 20 | system "true" 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /yaku-ns.rb: -------------------------------------------------------------------------------- 1 | class YakuNs < Formula 2 | desc "Small footprint, trivial to configure, DNS server" 3 | homepage "https://github.com/antirez/yaku-ns" 4 | url "https://deb.debian.org/debian/pool/main/y/yaku-ns/yaku-ns_0.2.orig.tar.gz" 5 | sha256 "9ad94c49d399d7b3b19e9042dd7a9413082d90c1f8efedb68f60332ef59c3fe6" 6 | license "GPL-3.0-or-later" 7 | 8 | depends_on "gcc" => :build 9 | 10 | fails_with :clang 11 | 12 | def install 13 | ENV["CC"] = "gcc-13" 14 | system "make" 15 | bin.install "yaku-ns" 16 | bin.install "yaku-getzone" 17 | man1.install "Documentation/yaku-ns.1" 18 | man1.install "Documentation/yaku-getzone.1" 19 | end 20 | 21 | test do 22 | system "#{bin}/yaku-ns", "-v" 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /wipeout-rewrite.rb: -------------------------------------------------------------------------------- 1 | class WipeoutRewrite < Formula 2 | desc "futuristic anti gravity racing" 3 | homepage "https://github.com/phoboslab/wipeout-rewrite" 4 | url "http://bananas.debian.net/debian/wipeout/wipeout-rewrite_0.tar.xz" 5 | sha256 "535ed89bad1e525407ffa73fbd252644d5b9a848eddd0b0af98a4c838c69998c" 6 | license "PUBLIC-DOMAIN" 7 | # get the data from https://phoboslab.org/files/wipeout-data-v01.zip 8 | # get gcdb from https://github.com/mdqinc/SDL_GameControllerDB/blob/master/gamecontrollerdb.txt 9 | 10 | depends_on "cmake" => :build 11 | depends_on "sdl2" => :build 12 | 13 | def install 14 | system "make" 15 | bin.install "wipegame" 16 | #man1.install "manpage/wipegame" => "wipegame.6" 17 | end 18 | 19 | test do 20 | system "#{bin}/wipegame", "-v" 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /form.rb: -------------------------------------------------------------------------------- 1 | class Form < Formula 2 | desc "The FORM project for symbolic manipulation of very big expressions" 3 | homepage "https://www.nikhef.nl/~form/" 4 | url "https://github.com/vermaseren/form/releases/download/v4.2.1/form-4.2.1.tar.gz" 5 | sha256 "f2722d6d4ccb034e01cf786d55342e1c21ff55b182a4825adf05d50702ab1a28" 6 | 7 | depends_on "gmp" 8 | depends_on "lzlib" 9 | 10 | def install 11 | system "./configure", "--disable-debug", 12 | "--disable-dependency-tracking", 13 | "--disable-silent-rules", 14 | "--with-zlib", 15 | "--with-gmp", 16 | "--prefix=#{prefix}" 17 | system "make", "install" 18 | end 19 | 20 | test do 21 | system "#{bin}/form", "-v" 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /tcputils.rb: -------------------------------------------------------------------------------- 1 | class Tcputils < Formula 2 | desc "Utilities for TCP programming in shell-scripts" 3 | homepage "https://packages.debian.org/sid/source/tcputils" 4 | url "http://deb.debian.org/debian/pool/main/t/tcputils/tcputils_0.6.2.orig.tar.gz" 5 | sha256 "ea63a2aee9f6505b6296a51f4d1f907beb0ecb4bd1e2dd63962b3aed8400f83f" 6 | license "public-domain" 7 | 8 | # depends_on "cmake" => :build 9 | 10 | def install 11 | ENV.deparallelize 12 | system "make", "NETLIBS=" 13 | bin.install "getpeername" 14 | bin.install "mini-inetd" 15 | bin.install "tcpbug" 16 | bin.install "tcpconnect" 17 | bin.install "tcplisten" 18 | man1.install "getpeername.1" 19 | man1.install "mini-inetd.1" 20 | man1.install "tcpbug.1" 21 | man1.install "tcpconnect.1" 22 | man1.install "tcplisten.1" 23 | end 24 | 25 | test do 26 | system "false" 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /geant4.rb: -------------------------------------------------------------------------------- 1 | class Geant4 < Formula 2 | desc "toolkit for the simulation of the passage of particles through matter" 3 | homepage "https://github.com/Geant4/geant4" 4 | url "https://github.com/Geant4/geant4/archive/refs/tags/v11.3.0.tar.gz" 5 | sha256 "a98340e3015d2e69ae956aa29d33dfc43c8cb3e0561ee2530b76dc1c79cd8698" 6 | license "GPL-3.0" 7 | 8 | depends_on "cmake" => :build 9 | depends_on "pkgconf" => :build 10 | depends_on "zlib" => :build 11 | depends_on "vtk" => :build 12 | depends_on "libtiff" => :build 13 | # qt5 or 6? 14 | 15 | def install 16 | system "cmake", "-S", ".", "-B", "build", *std_cmake_args 17 | system "cmake", "--build", "build" 18 | system "cmake", "--install", "build" 19 | # -DQt5_DIR=$(brew --prefix qt5)/lib/cmake/Qt5 20 | # or brew --prefix qt6 / brew --prefix qt 21 | #bin.install "yes" 22 | #man1.install "man1/yes.1" => "yes.1" 23 | end 24 | 25 | test do 26 | system "#{bin}/whatever", "-v" 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /ruptime.rb: -------------------------------------------------------------------------------- 1 | class Ruptime < Formula 2 | desc "poor man’s ruptime" 3 | homepage "http://aiei.ch/ruptime/" 4 | url "https://github.com/alexmyczko/ruptime/archive/refs/tags/1.8.tar.gz" 5 | sha256 "c7115c34e11d79d1d0e966516818f3e5f7a0417aadb6cdddfb415cb103f688eb" 6 | license "AGPL-3.0-or-later" 7 | 8 | depends_on "xz" 9 | depends_on "memtester" 10 | 11 | def install 12 | bin.install "ruptime" 13 | #bin.install "ruptimed" 14 | bin.install_symlink "ruptime" => "rsw" 15 | bin.install_symlink "ruptime" => "rhw" 16 | bin.install_symlink "ruptime" => "runame" 17 | bin.install_symlink "ruptime" => "rbench" 18 | bin.install_symlink "ruptime" => "rboot" 19 | bin.install_symlink "ruptime" => "rdisk" 20 | bin.install_symlink "ruptime" => "rload" 21 | bin.install_symlink "ruptime" => "rnet" 22 | bin.install_symlink "ruptime" => "rac" 23 | bin.install_symlink "ruptime" => "rwho" 24 | man1.install "man/ruptime.1" 25 | #man8.install "man/ruptimed.8" 26 | system "/usr/bin/defaults write ch.aiei.ruptime SERVER bananas.debian.net" 27 | system "/usr/bin/defaults write ch.aiei.ruptime PORT 51300" 28 | system "/usr/bin/defaults write ch.aiei.ruptime KEY PUBLICINTERNETRUPTIMEKEYNOTSUITABLEFORPRIVATEDATAYOUHAVEBEENWARNED" 29 | end 30 | 31 | test do 32 | assert_match "SERVER=", shell_output("/usr/bin/defaults read ch.aiei.ruptime") 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # homebrew-mac 2 | 3 | `brew tap alexmyczko/mac` 4 | 5 | Now you can install 6 | ``` 7 | - modplug-tools Music player based on libopenmpt/modplug for the command-line 8 | - tcputils Utilities for TCP programming in shell-scripts 9 | - ruptime poor man’s ruptime 10 | - iselect Interactive line selection tool 11 | - (official) nvtop Interactive GPU process monitor 12 | - dwarfs efficient high-compression read-only filesystem 13 | - (official) form The FORM project for symbolic manipulation of very big expressions 14 | - yaku-ns Small footprint, trivial to configure, DNS server 15 | - Casks/pt2-clone Music tracker clone of ProTracker 2 for modern computers 16 | - Casks/ft2-clone Music tracker clone of Fasttracker II for modern computers 17 | - Casks/flying-toasters Recreation of AfterDarks 2.0 Flying Toasters screensaver 18 | ``` 19 | 20 | # Creating 21 | 22 | `brew create url-to-your-source-tarball --set-name name` 23 | 24 | # Updating 25 | 26 | `brew edit ./your.rb` 27 | 28 | `brew fetch --cask ./your.rb` 29 | 30 | # Testing 31 | 32 | `brew reinstall --build-from-source --verbose --interactive ./your.rb` 33 | 34 | # List files of a package 35 | 36 | `brew list package` 37 | 38 | # Wishlist 39 | ``` 40 | - nweb 41 | ``` 42 | 43 | # Updating above list 44 | 45 | `find . -name "*.rb" |sort -r | sed s,./,-\ ,1 | sed 's,.rb,,g' |while read a b; do echo "$a $b $(grep desc $b.rb)"|sed 's,desc,,g'; done |column -s \" -t >> README.md` 46 | -------------------------------------------------------------------------------- /dwarfs.rb: -------------------------------------------------------------------------------- 1 | require_relative "macfuse" 2 | 3 | class Dwarfs < Formula 4 | desc "efficient high-compression read-only filesystem" 5 | homepage "https://github.com/mhx/dwarfs" 6 | url "http://bananas.debian.net/macos/dwarfs/dwarfs-0.9.9.orig.tar.xz" 7 | sha256 "76db2515e12530319a90798703d788e50c3c6eb96a993b8f89e2349e23bd6354" 8 | license "GPL-3.0" 9 | 10 | depends_on "cmake" => :build 11 | depends_on "pkgconf" => :build 12 | depends_on "xxhash" => :build 13 | depends_on "range-v3" => :build 14 | depends_on "libarchive" => :build 15 | depends_on "brotli" => :build 16 | depends_on "libdwarf" => :build 17 | depends_on "libelf" => :build 18 | depends_on "libunwind-headers" => :build 19 | depends_on "jemalloc" => :build 20 | depends_on "ronn" => :build 21 | depends_on "xz" => :build 22 | depends_on "double-conversion" => :build 23 | depends_on "ninja" => :build 24 | depends_on "python3" => :build 25 | depends_on "howard-hinnant-date" => :build 26 | depends_on "glog" => :build 27 | depends_on "libevent" => :build 28 | depends_on "flac" => :build 29 | depends_on "openssl" => :build 30 | depends_on "utf8cpp" => :build 31 | depends_on "boost" => :build 32 | depends_on "zstd" => :build 33 | depends_on MacfuseRequirement 34 | 35 | def install 36 | system "cmake", "." 37 | system "make" 38 | bin.install "dwarfs" 39 | bin.install "dwarfsbench" 40 | bin.install "dwarfsck" 41 | bin.install "dwarfsextract" 42 | bin.install "mkdwarfs" 43 | # mount.dwarfs symlink to dwarfs 44 | man1.install "man1/dwarfs.1" => "dwarfs.1" 45 | man1.install "man1/dwarfsck.1" => "dwarfsck.1" 46 | man1.install "man1/dwarfsextract.1" => "dwarfsextract.1" 47 | man1.install "man1/mkdwarfs.1" => "mkdwarfs.1" 48 | man5.install "man5/dwarfs-format.5" => "dwarfs-format.5" 49 | end 50 | 51 | test do 52 | system "#{bin}/dwarfs", "-v" 53 | end 54 | end 55 | -------------------------------------------------------------------------------- /macfuse.rb: -------------------------------------------------------------------------------- 1 | # typed: false 2 | # frozen_string_literal: true 3 | 4 | # USAGE: `depends_on MacfuseRequirement` 5 | class MacfuseRequirement < Requirement 6 | fatal true 7 | 8 | satisfy(build_env: false) { self.class.binary_osxfuse_installed? } 9 | 10 | def self.binary_osxfuse_installed? 11 | File.exist?("/usr/local/include/fuse.h") && 12 | !File.symlink?("/usr/local/include") 13 | end 14 | 15 | env do 16 | ENV.append_path "PKG_CONFIG_PATH", HOMEBREW_LIBRARY/"Homebrew/os/mac/pkgconfig/fuse" 17 | end 18 | 19 | def message 20 | "This formula requires macFUSE. Please run `brew install --cask macfuse` first." 21 | end 22 | 23 | def display_s 24 | "macFUSE" 25 | end 26 | end 27 | 28 | # Add `setup_fuse` to base Formula class, for use by FUSE formulae 29 | class Formula 30 | def need_alt_fuse? 31 | HOMEBREW_PREFIX.to_s != "/usr/local" 32 | end 33 | 34 | def alt_fuse_root 35 | buildpath/"temp" 36 | end 37 | 38 | def fuse_cmake_args 39 | return unless need_alt_fuse? 40 | 41 | %W[ 42 | -DCMAKE_INCLUDE_PATH=#{alt_fuse_root}/include/fuse;#{alt_fuse_root}/include 43 | -DCMAKE_LIBRARY_PATH=#{alt_fuse_root}/lib 44 | -DCMAKE_CXX_FLAGS=-I#{alt_fuse_root}/include/fuse\ -D_USE_FILE_OFFSET_BITS=64 45 | ] 46 | # -DPKG_CONFIG=#{fuse_pkgconfig} 47 | # -DPKG_CONFIG_EXECUTABLE=#{fuse_pkgconfig} 48 | # -DFUSE_INCLUDE_DIR=#{alt_fuse_root}/include/fuse 49 | # -DFUSE_LIBRARIES=#{alt_fuse_root}/lib/libfuse.dylib 50 | end 51 | 52 | def setup_fuse_includes 53 | mkdir "#{alt_fuse_root}/include" do 54 | Dir["/usr/local/include/fuse*"].each { |f| cp_r f, "." } 55 | end 56 | end 57 | 58 | def setup_fuse_libs 59 | mkdir "#{alt_fuse_root}/lib" do 60 | Dir["/usr/local/lib/*fuse*"].each { |f| cp_r f, "." } 61 | end 62 | end 63 | 64 | def setup_fuse_pkgconfig 65 | ### OLD METHOD: Fake pkg-config 66 | # mkdir "#{alt_fuse_root}/bin" do 67 | # cp path/"../../lib/fuse-pkg-config", "." 68 | # inreplace "fuse-pkg-config", "%FUSE_ROOT%", "#{alt_fuse_root}" 69 | # end 70 | # ENV["PKG_CONFIG"] = "#{fuse_pkgconfig}" 71 | 72 | ### NEW METHOD: Fix fuse.pc in alt root 73 | mkdir "#{alt_fuse_root}/lib/pkgconfig" do 74 | cp "/usr/local/lib/pkgconfig/fuse.pc", "." 75 | inreplace "fuse.pc", "/usr/local", alt_fuse_root.to_s 76 | end 77 | ENV.prepend_path "PKG_CONFIG_PATH", "#{alt_fuse_root}/lib/pkgconfig" 78 | end 79 | 80 | # def fuse_pkgconfig 81 | # return "#{alt_fuse_root}/bin/fuse-pkg-config" if need_alt_fuse? 82 | # "pkg-config" 83 | # end 84 | 85 | def setup_fuse_env 86 | odebug "Setting up FUSE temp environment under #{alt_fuse_root}" 87 | setup_fuse_includes 88 | setup_fuse_libs 89 | setup_fuse_pkgconfig 90 | Dir.glob("#{alt_fuse_root}/**/*").each { |f| odebug ">>> #{f}" } 91 | end 92 | 93 | def setup_fuse_flags 94 | ENV.append "CFLAGS", "-I#{alt_fuse_root}/include" 95 | ENV.append "CFLAGS", "-I#{alt_fuse_root}/include/fuse" 96 | ENV.append "CFLAGS", "-D_USE_FILE_OFFSET_BITS=64" 97 | ENV.append "CPPFLAGS", "-I#{alt_fuse_root}/include" 98 | ENV.append "CPPFLAGS", "-I#{alt_fuse_root}/include/fuse" 99 | ENV.append "CPPFLAGS", "-D_USE_FILE_OFFSET_BITS=64" 100 | ENV.append "CXXFLAGS", "-I#{alt_fuse_root}/include" 101 | ENV.append "CXXFLAGS", "-I#{alt_fuse_root}/include/fuse" 102 | ENV.append "CXXFLAGS", "-D_USE_FILE_OFFSET_BITS=64" 103 | ENV.append "LDFLAGS", "-L#{alt_fuse_root}/lib" 104 | ENV.append "CGO_CPPFLAGS", "-I#{alt_fuse_root}/include" 105 | ENV.append "CGO_CPPFLAGS", "-D_USE_FILE_OFFSET_BITS=64" 106 | ENV.append "CGO_LDFLAGS", "-L#{alt_fuse_root}/lib" 107 | odebug "PKG_CONFIG = #{ENV.fetch("PKG_CONFIG", nil)}" 108 | odebug "PKG_CONFIG_PATH = #{ENV.fetch("PKG_CONFIG_PATH", nil)}" 109 | odebug "CFLAGS = #{ENV.fetch("CFLAGS", nil)}" 110 | end 111 | 112 | def setup_fuse 113 | return unless need_alt_fuse? 114 | 115 | setup_fuse_env 116 | setup_fuse_flags 117 | end 118 | end 119 | --------------------------------------------------------------------------------