whatisgithub

What is tack?

manic-systems/tack — explained in plain English

Analysis updated 2026-05-18

26RustAudience · developerComplexity · 4/5Setup · hard

In one sentence

A command-line tool for pinning and updating external code dependencies in Nix projects using plain TOML files instead of flakes.

Mindmap

mindmap
  root((tack))
    What it does
      Dependency pinning
      TOML based config
      Nix without flakes
    Tech stack
      Rust
      Nix
      TOML
    Use cases
      Pin dependencies
      Lock fixed hashes
      Dedup transitive inputs
    Audience
      Nix users
      Developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Pin external dependencies for a Nix project in a hand-editable TOML file.

USE CASE 2

Lock a dependency to a fixed download hash that will not silently update.

USE CASE 3

Point one dependency's sub-dependencies at your own top-level pins to avoid duplicate versions.

USE CASE 4

Run a dedup report that finds inputs reachable from multiple pins and generates fix rules.

What is it built with?

RustNixTOML

How does it compare?

manic-systems/tackgeekgineer/needle-rsipetkov/conch-runtime
Stars262626
LanguageRustRustRust
Last pushed2021-05-24
MaintenanceDormant
Setup difficultyhardmoderatemoderate
Complexity4/54/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires the Nix package manager and familiarity with flake-style dependency concepts.

So what is it?

Tack is a command-line tool for managing external code dependencies in projects that use the Nix package manager, but without requiring Nix's built-in flake system. It gives you a way to pin, update, and resolve external inputs using plain TOML configuration files instead of the Nix flake machinery. When you run tack in a project, it creates a hidden folder called .tack that holds three things: a hand-editable TOML file where you list what you want to depend on, a generated lock file that records the exact fetched versions, and a Nix resolver file that lets other Nix code consume those pinned inputs. The idea is to keep your project root clean while still tracking dependencies precisely. The tool supports a few kinds of dependency entries. The default kind evaluates a dependency's own flake file and exposes its outputs. A fetch-only kind grabs source code without evaluating anything. A fixed kind locks to a specific download hash and will refuse to silently update the hash, requiring explicit acknowledgment when you do want to change it. You can also define short URL aliases so that frequently used sources like GitHub repositories can be referenced with shorter names in your config. Tack also has a follows system that lets you point one dependency's sub-dependencies at your own top-level pins, which avoids ending up with multiple slightly different versions of the same package pulled in from different places. A dedup command reports cases where the same input is reachable from more than one of your pins and generates ready-to-paste configuration rules to consolidate them. The tool is built in Rust and can be compiled using nix develop and nix build. It is released under the EUPL-1.2 license.

Copy-paste prompts

Prompt 1
Help me set up tack in my Nix project by running tack init and explain what files it creates.
Prompt 2
Show me how to add a fixed-hash dependency pin using tack add with the --fixed flag.
Prompt 3
Explain how the follows system in tack prevents duplicate versions of the same dependency.
Prompt 4
Walk me through interpreting the output of tack dedup for my project's pins.

Frequently asked questions

What is tack?

A command-line tool for pinning and updating external code dependencies in Nix projects using plain TOML files instead of flakes.

What language is tack written in?

Mainly Rust. The stack also includes Rust, Nix, TOML.

How hard is tack to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is tack for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.