Open panicgh opened 1 month ago
I created a basic flake for repology for dev testing, could probably be of help while creating a package in nixpkgs
{
description = "Build Repology with nix";
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.repology-webapp = {
url = "github:repology/repology-webapp";
flake = false;
};
inputs.repology-updater = {
url = "github:repology/repology-updater";
flake = false;
};
inputs.repology-rules = {
url = "github:repology/repology-rules";
flake = false;
};
inputs.repology-linkchecker = {
url = "github:repology/repology-linkchecker";
flake = false;
};
outputs = { self, nixpkgs, flake-utils, repology-rules, repology-updater, repology-webapp, repology-linkchecker }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
in rec {
packages = flake-utils.lib.flattenTree {
update = pkgs.stdenv.mkDerivation {
pname = "repology-updater";
version = "unstable-2023-12-11";
src = repology-updater;
propagatedBuildInputs = with pkgs; [
(python3.withPackages
(python3Packages: with python3Packages; [
jinja2
libversion
psycopg2
pyyaml
xxhash
pydantic
jsonslicer
lxml
protobuf
pyparsing
requests
rpm
rubymarshal
tomli
yarl
zstandard
brotli
])
)
git
subversion
rsync
];
dontUnpack = true;
installPhase = ''
runHook preInstall
mkdir -p $out/
cp -r $src/* $out/
cp $out/repology.conf.default $out/repology.conf
substituteInPlace $out/repology.conf \
--replace "repos.d" "$out/repos.d" \
--replace "sql.d" "$out/sql.d" \
--replace "rules.d" "${repology-rules}" \
--replace "repology.org" "test.local" \
--replace "_state" "/home/jopejoe1/dev/repology/_state" \
--replace "_parsed" "/home/jopejoe1/dev/repology/_parsed" \
--replace "production" "nix" \
--replace "None" "'/home/jopejoe1/.cache/repology/'"
runHook postInstall
'';
};
web = pkgs.stdenv.mkDerivation {
pname = "repology-webapp";
version = "unstable-2023-12-11";
src = "${repology-webapp}";
propagatedBuildInputs = with pkgs; [
(python3.withPackages
(python3Packages: with python3Packages; [
flask
libversion
pillow
psycopg2
])
)
];
dontUnpack = true;
installPhase = ''
runHook preInstall
mkdir -p $out/
cp -r $src/* $out/
cp $out/repology.conf.default $out/repology.conf
substituteInPlace $out/repology.conf \
--replace "sql.d" "$out/sql.d" \
--replace "#SECRET_KEY = ${"''"}" "SECRET_KEY = '192b9bdd22ba9ed4d12e236c43afcb9a393ec15f71bbf5dc987d54727823bcbf'" \
--replace "https://repology.org" "http://127.0.0.1:5000"
runHook postInstall
'';
};
};
defaultPackage = packages.update;
apps = {
update = flake-utils.lib.mkApp {
drv = packages.update;
exePath = "/repology-update.py";
};
web = flake-utils.lib.mkApp {
drv = packages.web;
exePath = "/repology-app.py";
};
};
defaultApp = apps.update;
});
}
Project description
Repology is a packaging hub, providing users with comparisons of statistics of packages. For example, which pkgs are available in which versions and repositories.
I would find it interesting to run my own instance of repology, scraping e.g. company internal (RPM, DEB) repositories, GitLab for new version tags etc. This would allow for easy comparison of available packages and versions. For example the organization may run its own customized Linux distro (e.g. spun-off Debian; using regular snapshots of upstream repos) with branches for the integration of internal software (e.g. stable, testing/development versions of the distro).
This would need packaging of the software components of repology as well as NixOS modules.
Metadata
Add a :+1: reaction to issues you find important.