Skip to content
vic

NixOS/flake-compat

null

NixOS/flake-compat.json
{
"createdAt": "2020-02-25T13:15:05Z",
"defaultBranch": "master",
"description": null,
"fullName": "NixOS/flake-compat",
"homepage": null,
"language": "Nix",
"name": "flake-compat",
"pushedAt": "2025-11-24T19:02:43Z",
"stargazersCount": 311,
"topics": [],
"updatedAt": "2025-11-25T22:14:14Z",
"url": "https://github.com/NixOS/flake-compat"
}

To use, add the following to your flake.nix:

inputs.flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";

Afterwards, create a default.nix file containing the following:

(import
(
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
nodeName = lock.nodes.root.inputs.flake-compat;
in
fetchTarball {
url = lock.nodes.${nodeName}.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.${nodeName}.locked.rev}.tar.gz";
sha256 = lock.nodes.${nodeName}.locked.narHash;
}
)
{ src = ./.; }
).defaultNix

If you would like a shell.nix file, create one containing the above, replacing defaultNix with shellNix.

You can access any flake output via the outputs attribute returned by flake-compat, e.g.

(import ... { src = ./.; }).outputs.packages.x86_64-linux.default