Skip to content

Commit

Permalink
Use nixpkgs fetchers for npins
Browse files Browse the repository at this point in the history
  • Loading branch information
Gerg-L committed Feb 6, 2025
1 parent c980c44 commit a980836
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 82 deletions.
4 changes: 2 additions & 2 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@
''
self.nixosModules.nvf;
};

pins = import ./npins;
};

perSystem = {pkgs, ...}: {
Expand All @@ -62,6 +60,8 @@
# syntax elements and results in unreadable code.
formatter = pkgs.alejandra;

legacyPackages.pins = pkgs.callPackages ./npins/sources.nix {};

# Check if codebase is properly formatted.
# This can be initiated with `nix build .#checks.<system>.nix-fmt`
# or with `nix flake check`
Expand Down
80 changes: 0 additions & 80 deletions npins/default.nix

This file was deleted.

80 changes: 80 additions & 0 deletions npins/sources.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Based off of:
# https://github.com/NixOS/nixpkgs/blob/776c3bee4769c616479393aeefceefeda16b6fcb/pkgs/tools/nix/npins/source.nix
{
lib,
fetchurl,
fetchgit,
fetchzip,
}:
builtins.mapAttrs
(
_:
let
getZip =
{ url, hash, ... }:
fetchzip {
inherit url;
sha256 = hash;
extension = "tar";

};
mkGitSource =
{
repository,
revision,
url ? null,
hash,
...
}@attrs:
assert repository ? type;
if url != null then
getZip attrs
else
assert repository.type == "Git";
let
urlToName =
url: rev:
let
matched = builtins.match "^.*/([^/]*)(\\.git)?$" repository.url;
short = builtins.substring 0 7 rev;
appendShort = if (builtins.match "[a-f0-9]*" rev) != null then "-${short}" else "";
in
"${if matched == null then "source" else builtins.head matched}${appendShort}";
name = urlToName repository.url revision;
in
fetchgit {
inherit name;
inherit (repository) url;
rev = revision;
sha256 = hash;
};

mkPyPiSource =
{ url, hash, ... }:
fetchurl {
inherit url;
sha256 = hash;
};
in
spec:
assert spec ? type;
let
func =
{
Git = mkGitSource;
GitRelease = mkGitSource;
PyPi = mkPyPiSource;
Channel = getZip;
}
.${spec.type} or (builtins.throw "Unknown source type ${spec.type}");
in
spec // { outPath = func spec; }

)
(
let
json = lib.importJSON ./sources.json;
in
assert lib.assertMsg (json.version == 3) "Npins version mismatch!";
json.pins
)

0 comments on commit a980836

Please sign in to comment.