{ inputs.nixpkgs.url = "github:NixOS/nixpkgs"; description = "Useful libs"; outputs = { self, nixpkgs }: { lib = rec { computeNarHash = path: let pkgs = import nixpkgs {}; in builtins.readFile (pkgs.runCommand "narHash" { buildInputs = [ pkgs.nix ]; } "echo -n $(nix hash-path ${path}) > $out"); withNarKeyCompat = flakeCompat: path: moduleAttrs: let module = (flakeCompat path).${moduleAttrs}; narHash = computeNarHash path; in if builtins.isFunction module then args@{ config, lib, pkgs, ... }: (module args // { key = narHash; }) else module // { key = narHash; }; withNarKey = dep: moduleAttrs: let module = dep.${moduleAttrs}; in if builtins.isFunction module then args@{ config, lib, pkgs, ... }: (module args // { key = dep.narHash; }) else module // { key = dep.narHash; }; }; }; }