This is Profpatsch's personal monorepo (home-repo), extracted from the TVL depot using git-filter-repo to contain only the users/Profpatsch subtree and its dependencies.

This code is licensed under the MIT License (see LICENSE). The license remains unchanged from the original TVL depot for now.

Two rules, and no filesystem traversal:

  1. <dir>/default.nix — this directory is a package. It is a function taking { depot, pkgs, lib, ... } and returning a derivation (or an attribute set of them).

  2. <dir>/packages.nix — this directory is a namespace. It lists its contents explicitly, one import per entry.

A directory that no packages.nix names is not in the package tree. That is what keeps scratch directories, build outputs, rendered websites and vendored sources out of it, without needing any ignore-markers.

To find out where an attribute comes from, follow the imports starting at default.nixdepot.users.Profpatsch.git-blimey is users/packages.nixusers/Profpatsch/packages.nixusers/Profpatsch/git-blimey/default.nix.

To add a package: write <name>/default.nix, then add one line to the parent packages.nix:

  my-thing = import ./my-thing args;

Three file names are reserved and are not packages:

An optional, per-directory file telling the source browser at https://sources.profpatsch.de how that directory should be displayed. It has no effect on the package tree or on any build. See man source-forge (section FILES) for the full syntax; in short, shortcut = <path> adds an extra entry to the directory's listing pointing further down the tree, and description = <html> is a short phrase describing the directory the file sits in, shown on its entry wherever it is listed (in the root, it is the project's blurb instead).

Shortcuts only ever add links, so no such file can hide part of the tree.

Install packages directly from this repository using Nix flakes. The source browser at https://sources.profpatsch.de serves the tree as a flake tarball, so no git server round-trip is needed:

# Install a package
nix profile install https://sources.profpatsch.de/Profpatsch.tar.gz#<package-name>

# Run without installing
nix run https://sources.profpatsch.de/Profpatsch.tar.gz#<package-name>

The .tar.gz extension tells Nix to fetch it as a tarball flake.

All packages are built using Nix:

# Using flakes (recommended)
nix build .#<package-name>

# Traditional Nix
nix-build -A users.Profpatsch.<package-name>

# Enter a development shell
nix develop  # with flakes
nix-shell    # traditional

This is experimental code optimized for "f***ing around in order to find out". Most code is "do not try at work" unless noted otherwise.