52 lines
1.3 KiB
Nix
52 lines
1.3 KiB
Nix
{
|
|
description = "Package Sources";
|
|
|
|
inputs = { };
|
|
|
|
outputs = { self, nixpkgs, ... }: {
|
|
overlay = final: prev: {
|
|
inherit (self) srcs;
|
|
};
|
|
|
|
srcs =
|
|
let
|
|
inherit (nixpkgs) lib;
|
|
|
|
mkVersion = name: input:
|
|
let
|
|
inputs = (builtins.fromJSON
|
|
(builtins.readFile ./flake.lock)).nodes;
|
|
|
|
ref =
|
|
if lib.hasAttrByPath [ name "original" "ref" ] inputs
|
|
then inputs.${name}.original.ref
|
|
else "";
|
|
|
|
version =
|
|
let version' = builtins.match
|
|
"[[:alpha:]]*[-._]?([0-9]+(\.[0-9]+)*)+"
|
|
ref;
|
|
in
|
|
if lib.isList version'
|
|
then lib.head version'
|
|
else if input ? lastModifiedDate && input ? shortRev
|
|
then "${lib.substring 0 8 input.lastModifiedDate}_${input.shortRev}"
|
|
else null;
|
|
in
|
|
version;
|
|
in
|
|
lib.mapAttrs
|
|
(pname: input:
|
|
let
|
|
version = mkVersion pname input;
|
|
in
|
|
input // { inherit pname; }
|
|
// lib.optionalAttrs (! isNull version)
|
|
{
|
|
inherit version;
|
|
}
|
|
)
|
|
(lib.filterAttrs (n: _: n != "nixpkgs")
|
|
self.inputs);
|
|
};
|
|
}
|