npins: enhance import-from-flake capabilities

We still chose this implementation because `getFlake' is "broken".
c.f. https://github.com/andir/npins/issues/159#issuecomment-3201185411

Also this avoids the double fetch problem.
c.f. https://github.com/andir/npins/issues/159#issuecomment-3148532945
This commit is contained in:
Primrose 2025-09-02 18:44:56 +08:00
parent e3c26ec831
commit 52e027ddd2
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
2 changed files with 34 additions and 4 deletions

View file

@ -64,7 +64,17 @@ let
then mkTarballSource spec then mkTarballSource spec
else builtins.throw "Unknown source type ${spec.type}"; else builtins.throw "Unknown source type ${spec.type}";
in in
spec // {outPath = mayOverride name path;}; spec
// rec {
outPath = mayOverride name path;
# Waiting for discussion upstream
# https://github.com/andir/npins/issues/159
asFlake =
if sources ? flake-compat
then (import sources.flake-compat {src = outPath;}).outputs
else throw ".asFlake needs flake-compat as a source";
};
mkGitSource = { mkGitSource = {
repository, repository,
@ -146,7 +156,10 @@ let
url = locked_url; url = locked_url;
sha256 = hash; sha256 = hash;
}; };
sources =
if version == 5
then builtins.mapAttrs mkSource data.pins
else throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`";
in in
if version == 5 sources
then builtins.mapAttrs mkSource data.pins
else throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"

View file

@ -75,6 +75,23 @@
"url": null, "url": null,
"hash": "07d2mzjnggbxlpqarcj65xdndkqxcab38lkbbqh65cyfqzqahdg0" "hash": "07d2mzjnggbxlpqarcj65xdndkqxcab38lkbbqh65cyfqzqahdg0"
}, },
"flake-compat": {
"type": "GitRelease",
"repository": {
"type": "GitHub",
"owner": "edolstra",
"repo": "flake-compat"
},
"pre_releases": false,
"version_upper_bound": null,
"release_prefix": null,
"submodules": false,
"version": "v1.1.0",
"revision": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"url": "https://api.github.com/repos/edolstra/flake-compat/tarball/v1.1.0",
"hash": "19d2z6xsvpxm184m41qrpi1bplilwipgnzv9jy17fgw421785q1m",
"frozen": true
},
"home-manager": { "home-manager": {
"type": "Git", "type": "Git",
"repository": { "repository": {