No description
  • Rust 42%
  • Shell 36.3%
  • Nix 12.2%
  • Python 9.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ivan 0ede4e8b9b
All checks were successful
CI / Format, lint and build (push) Successful in 2m30s
fix(scripts): recolour workmux's windows on a scheme switch
workmux gives each window it manages a local copy of the window formats
with its status appended, and that copy kept the old colours over the new
global until the session was replaced. Whatever a window appended to the
old global now carries over onto the new one.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 22:16:22 +03:00
.forgejo/workflows fix(ls-posts): keep cargo out of $HOME so the build is pure unsandboxed 2026-09-23 23:07:59 +03:00
.github/workflows feat(init): initial commit 2026-09-23 21:23:27 +03:00
tools fix(scripts): recolour workmux's windows on a scheme switch 2026-09-26 22:16:22 +03:00
.gitignore feat(init): initial commit 2026-09-23 21:23:27 +03:00
.markdownlint.json feat(init): initial commit 2026-09-23 21:23:27 +03:00
flake.lock feat(init): initial commit 2026-09-23 21:23:27 +03:00
flake.nix feat(scripts): import the shell and python scripts from nixos-dotfiles 2026-09-25 18:38:28 +03:00
LICENSE feat(init): initial commit 2026-09-23 21:23:27 +03:00
README.md feat(scripts): import the shell and python scripts from nixos-dotfiles 2026-09-25 18:38:28 +03:00

cli-utils

A collection of small command-line utilities, one directory per tool. The repository is language-agnostic: every tool is a Nix package, so whether it is built by Cargo, Go, or a Python wrapper is an implementation detail.

Tools

Tool Language What it does
ls-posts Rust Reconstruct gallery-dl post URLs from a folder tree
scripts Bash, Python Desktop and shell helpers, one package per script, named after its file

Install

The flake is meant to be consumed as an input by another flake, usually nixos-dotfiles:

inputs.cli-utils.url = "path:/home/hutao/Projects/cli-utils";

home.packages = [ inputs.cli-utils.packages.${pkgs.system}.default ];

packages.<system>.default is a symlinkJoin of every tool, so one entry installs all of them. Individual tools stay available as packages.<system>.<tool>.

Develop

nix develop                 # cargo, rustc, clippy, rustfmt, rust-analyzer
nix build .#ls-posts        # one tool
nix build                   # every tool (the default bundle)
nix flake check             # evaluate packages, checks and shells
pre-commit run --all-files  # what CI runs

Hooks are defined in flake.nix; .pre-commit-config.yaml is generated by git-hooks.nix and is not tracked. Cargo commands for a Rust tool run from that tool's own directory, not the repo root.

Layout

flake.nix            # packages.<system>.<tool>, devShells, checks
tools/
  ls-posts/          # one directory per tool, with its own build files
  scripts/           # grouped by responsibility, one default.nix for all