README.md (3138B)
1 # tools 2 [](https://builds.sr.ht/~mtmn/tools) 3 4 Various tools I have been using throughout the years. 5 6 | tool | description | 7 |---|---| 8 | [bandeno](bandeno/) | Bandcamp RSS feed proxy | 9 | [diggah](diggah/) | find files modified within a time range, locally or over SSH | 10 | [dam](dam/) | line-file syncer with rsync and coloured diff | 11 | [hue](hue/) | Ruby library and CLI for Philips Hue | 12 | [lastfm_rs](lastfm_rs/) | Last.fm scrobble exporter to CSV | 13 | [lazymaster](lazymaster/) | 2-pass audio loudness normalization via ffmpeg | 14 | [mpd](mpd/) | MPD utility tools | 15 | [nts](nts/) | NTS show tracklist fetcher | 16 | [pmn](pmn/) | password selection utility for pass (Wayland, X11, macOS) | 17 | [pracomer](pracomer/) | Pomodoro timer | 18 | [shuffle](shuffle/) | random album picker for MPD | 19 | [speediness](speediness/) | network speed test | 20 | [tempfox](tempfox/) | Firefox user.js preference overrides | 21 | [wrd](wrd/) | full-text search and reader for an offline web archive | 22 | [plants](plants/) | bluetooth battery monitoring for linux | 23 | [reflink-snap](reflink-snap/) | reflink (copy-on-write) snapshot manager for XFS | 24 | [kundali](kundali/) | scans track metadata and builds a sequence around an anchor track | 25 | [backup](backup/) | backup helper for git, tarsnap, plakar and rclone | 26 27 ## Toolchains 28 29 | language | version | pinned by | 30 |---|---|---| 31 | Rust | nightly | `rust-toolchain.toml` (rustup) | 32 | Zig | 0.16.0 | `build.zig.zon` (`minimum_zig_version`) | 33 | Python | 3.14 | system | 34 | Go | 1.26 | `go.mod` | 35 | Ruby | >= 3.0 | `hue.gemspec` (`required_ruby_version`). reflink-snap uses stdlib only | 36 | Janet | 1.41.2 | system | 37 38 ## Building 39 40 Install [knit](https://github.com/zyedidia/knit) 41 and the native toolchains. Knit orchestrates `cargo`, `zig build`, `go build`, 42 `cc`, and a shared Python virtualenv. All common tasks are available via 43 `just`: 44 45 ```sh 46 just all # build every tool into bin/ 47 just build <target> # build a specific tool, e.g. just build lazymaster 48 just run <target> # build and run a tool 49 ``` 50 51 ## Deploying 52 53 Knit builds and copies binaries to `$HOME/.local/bin`: 54 55 ```sh 56 knit deploy/<target> 57 knit deploy/all # build and install every tool 58 ``` 59 60 The equivalent convenience wrapper is `just deploy <target>`. 61 62 `knit deploy/mpd` (or `just deploy mpd`) installs the configured `mpd_*` 63 binaries. Deployed Python tools 64 (diggah, lazymaster, nts, shuffle) are thin shims that run out of this 65 repository's `.venv`, and deployed Ruby tools (hue, reflink-snap) run 66 straight from the checkout. Both need the checkout to stay in place. 67 68 ## Development 69 70 ```sh 71 just test # run the Rust, Zig, Go, and MPD test suites 72 just clippy # run Clippy over the Cargo workspace 73 just rustfmt # format the Cargo workspace with rustfmt 74 ``` 75 76 rust-analyzer works out of the box against the Cargo workspace. 77 78 ## Other 79 80 ```sh 81 just cargo-lockfile # update Cargo.lock 82 just pip-update # update requirements.txt (Python lockfile) 83 just clean # remove build artifacts and caches 84 ```