Files
nix-flake-lib/README.md

1.3 KiB

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.git#default

Use the library (existing repo)

Add this flake input:

inputs.devshell-lib.url = "git+https://git.dgren.dev/eric/nix-flake-lib?ref=v0.0.5";
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 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.