This fork is no-longer maintained. Flake-compat is now an official NixOS project living at https://github.com/NixOS/flake-compat.
Nix Flakes: Using flakes project from a legacy Nix.
To use, add the following to your flake.nix:
inputs.flake-compat.url = "github:nix-community/flake-compat";Example in a flake.nix file:
{
description = "My first flake";
inputs.nixpkgs.url = "nixpkgs/nixos-unstable";
inputs.flake-compat.url = "github:nix-community/flake-compat";
outputs = { self, nixpkgs, ... }:
let
eachSystem = f: nixpkgs.lib.genAttrs self.lib.supportedSystems (system: f nixpkgs.legacyPackages.${system});
in
{
lib.supportedSystems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];
devShells = eachSystem (pkgs: {
default = pkgs.mkShell { buildInputs = [ pkgs.hello pkgs.cowsay ]; };
});
};
}Update the flake.lock to include the hashes for flake-compat:
$ nix --extra-experimental-features "flakes nix-command" flake lockYou can say no to potential questions about adding additional substituters,
public keys or other configuration, we just care about the updates to
flake.lock here.
Afterwards, create a default.nix file containing the following:
# This file provides backward compatibility to nix < 2.4 clients
{ system ? builtins.currentSystem }:
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
root = lock.nodes.${lock.root};
inherit (lock.nodes.${root.inputs.flake-compat}.locked) owner repo rev narHash;
flake-compat = fetchTarball {
url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
sha256 = narHash;
};
flake = import flake-compat { inherit system; src = ./.; };
in
flake.defaultNixIf you would like a shell.nix file, create one containing the above, replacing defaultNix with shellNix.