2026-03-06 17:20:20 +01:00
2026-03-05 01:04:48 +01:00
2026-03-06 17:20:20 +01:00
2026-03-04 05:32:21 +01:00
2026-03-04 07:25:31 +01:00
2026-03-04 05:07:26 +01:00
2026-03-04 04:58:55 +01:00
2026-03-05 01:04:34 +01:00
2026-03-05 01:04:48 +01:00
2026-03-05 01:04:48 +01:00

repo-lib

Simple Nix flake library for:

  • a shared development shell (mkDevShell)
  • an optional release command (mkRelease)
  • a starter template (template/)

Prerequisites

  • Nix with flakes enabled
  • direnv (recommended)

Use the template (new repo)

From your new project folder:

nix flake new myapp -t 'git+https://git.dgren.dev/eric/nix-flake-lib?ref=v1.0.7#default' --refresh

Use the library (existing repo)

Add this flake input:

inputs.devshell-lib.url = "git+https://git.dgren.dev/eric/nix-flake-lib?ref=v1.0.7";
inputs.devshell-lib.inputs.nixpkgs.follows = "nixpkgs";

Create your shell from mkDevShell:

env = devshell-lib.lib.mkDevShell {
  inherit system;
  extraPackages = [ ];
  tools = [ ];
  additionalHooks = { };
};

Expose it in devShells as default and run:

nix develop

Common commands

nix fmt           # format files

Optional: release command

If your flake defines:

packages.${system}.release = devshell-lib.lib.mkRelease { inherit system; };

Run releases with:

release
release patch
release beta
release minor beta
release stable
release set 1.2.3

The release script uses ./VERSION as the source of truth and creates tags like v1.2.3. When switching from stable to a prerelease channel without an explicit bump (for example, release beta), it applies a patch bump automatically (for example, 1.0.0 -> 1.0.1-beta.1).

Description
Personal lib for bootstrapping repositories
Readme 16 MiB
Languages
Go 60.9%
Nix 32.7%
Shell 6.4%