summaryrefslogtreecommitdiff
path: root/npins
diff options
context:
space:
mode:
Diffstat (limited to 'npins')
-rw-r--r--npins/default.nix64
-rw-r--r--npins/sources.json234
2 files changed, 298 insertions, 0 deletions
diff --git a/npins/default.nix b/npins/default.nix
new file mode 100644
index 0000000..891db57
--- /dev/null
+++ b/npins/default.nix
@@ -0,0 +1,64 @@
+# Generated by npins. Do not modify; will be overwritten regularly
+let
+ requireFile = { sha256, hashMode ? "recursive" }:
+ builtins.derivation {
+ name = "source";
+ outputHashMode = hashMode;
+ outputHashAlgo = "sha256";
+ outputHash = sha256;
+ preferLocalBuild = true;
+ allowSubstitutes = false;
+ builder = "builtins:fetchurl";
+ system = "builtin"; # builtins.currentSystem;
+ };
+
+ data = builtins.fromJSON (builtins.readFile ./sources.json);
+ version = data.version;
+
+ mkSource = spec:
+ assert spec ? type; let
+ path =
+ if spec.type == "Git" then mkGitSource spec
+ else if spec.type == "GitRelease" then mkGitSource spec
+ else if spec.type == "PyPi" then mkPyPiSource spec
+ else if spec.type == "Channel" then mkChannelSource spec
+ else builtins.throw "Unknown source type ${spec.type}";
+ in
+ spec // { outPath = path; };
+
+ mkGitSource = { repository, revision, url ? null, hash, ... }:
+ assert repository ? type;
+ # At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository
+ # In the latter case, there we will always be an url to the tarball
+ if url != null then
+ (builtins.fetchTarball {
+ inherit url;
+ sha256 = hash; # FIXME: check nix version & use SRI hashes
+ })
+ else assert repository.type == "Git";
+ let
+ cached = requireFile { sha256 = hash; };
+ fetched = builtins.fetchGit {
+ url = repository.url;
+ rev = revision;
+ };
+ in if builtins.pathExists (builtins.unsafeDiscardStringContext cached.outPath)
+ then cached.outPath
+ else builtins.trace "npins: re-fetching source ${repository.url}" fetched.outPath;
+
+ mkPyPiSource = { url, hash, ... }:
+ builtins.fetchurl {
+ inherit url;
+ sha256 = hash;
+ };
+
+ mkChannelSource = { url, hash, ... }:
+ builtins.fetchTarball {
+ inherit url;
+ sha256 = hash;
+ };
+in
+if version == 3 then
+ builtins.mapAttrs (_: mkSource) data.pins
+else
+ throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"
diff --git a/npins/sources.json b/npins/sources.json
new file mode 100644
index 0000000..ee51261
--- /dev/null
+++ b/npins/sources.json
@@ -0,0 +1,234 @@
+{
+ "pins": {
+ "almanac": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/forks/almanac"
+ },
+ "branch": "master",
+ "revision": "cdd82b013777324f146c4961b866154a9287110b",
+ "url": null,
+ "hash": "0804k1zcnyhfdgjxmpgyg9l537j6p4ajrjgzz9svxka6acc1l85h"
+ },
+ "bahnhof-name": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/bahnhof.name"
+ },
+ "branch": "main",
+ "revision": "0c05c14574ed301c1f80ceeb5edabc34e47feffb",
+ "url": null,
+ "hash": "0vmvxypsxxlj2zxmssgpjfqmbs5lkc7vq1cfchc6pkszrywydg0g"
+ },
+ "blog": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "ssh://cgit/~/blog"
+ },
+ "branch": "main",
+ "revision": "58e380da3f6cc57bc8673067973d880c209c011c",
+ "url": null,
+ "hash": "129v5q9ayf63v616rjy88v07i2brl8s7hw6s2yxsxvknyrnykbj7"
+ },
+ "deploy-rs": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/forks/deploy-rs"
+ },
+ "branch": "nom-flag",
+ "revision": "9001480e03ab8c957716e2bf164bbde605472399",
+ "url": null,
+ "hash": "1iiplqa731ldha728xk2fi36n87p20hnzf35g21jli1dlknw388f"
+ },
+ "flake-utils": {
+ "type": "GitRelease",
+ "repository": {
+ "type": "GitHub",
+ "owner": "numtide",
+ "repo": "flake-utils"
+ },
+ "pre_releases": false,
+ "version_upper_bound": null,
+ "version": "v1.0.0",
+ "revision": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
+ "url": "https://api.github.com/repos/numtide/flake-utils/tarball/v1.0.0",
+ "hash": "0hynd4rbkbplxzl2a8wb3r8z0h17z2alhhdsam78g3vgzpzg0d43"
+ },
+ "gtfsBooks": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/forks/gtfs-books"
+ },
+ "branch": "main",
+ "revision": "2a9d4fcf48b872aef1343f71dfddf44946fd8eb5",
+ "url": null,
+ "hash": "077xjxaisjqcnqwjpq8cfg34y27cv5aidvzwv4d5736rz9v96bak"
+ },
+ "home-manager": {
+ "type": "Git",
+ "repository": {
+ "type": "GitHub",
+ "owner": "nix-community",
+ "repo": "home-manager"
+ },
+ "branch": "release-23.11",
+ "revision": "86853e31dc1b62c6eeed11c667e8cdd0285d4411",
+ "url": "https://github.com/nix-community/home-manager/archive/86853e31dc1b62c6eeed11c667e8cdd0285d4411.tar.gz",
+ "hash": "1hw53llinnqj61138bh0iwv31b73h9h6lvzrphq3prgxkg8anzay"
+ },
+ "isabelle-utils": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/isabelle-utils"
+ },
+ "branch": "master",
+ "revision": "e7427d5c67c0a90c369adecb4b0c65c043cb2e34",
+ "url": null,
+ "hash": "129pizyyvxg7lzgk9pqn48a7brhyh5fv7vwzrs7wnhkp30hrpjq2"
+ },
+ "nixpkgs": {
+ "type": "Git",
+ "repository": {
+ "type": "GitHub",
+ "owner": "NixOS",
+ "repo": "nixpkgs"
+ },
+ "branch": "nixos-23.11",
+ "revision": "12430e43bd9b81a6b4e79e64f87c624ade701eaf",
+ "url": "https://github.com/NixOS/nixpkgs/archive/12430e43bd9b81a6b4e79e64f87c624ade701eaf.tar.gz",
+ "hash": "1ry06nhk8ayfb7wjmkacz8zqk0hwvp9phyachbkxsyxgc0hj3y6z"
+ },
+ "nixpkgs-unstable": {
+ "type": "Git",
+ "repository": {
+ "type": "GitHub",
+ "owner": "NixOS",
+ "repo": "nixpkgs"
+ },
+ "branch": "nixpkgs-unstable",
+ "revision": "2b1f64b358f2cab62617f26b3870fd0ee375d848",
+ "url": "https://github.com/NixOS/nixpkgs/archive/2b1f64b358f2cab62617f26b3870fd0ee375d848.tar.gz",
+ "hash": "1iy5vigbw2dx7rhzmsszc7d87sw545f0vw4kcwxk3mazxg9qrzgl"
+ },
+ "ntfy-matrix-bot": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/ntfy-matrix-bot"
+ },
+ "branch": "main",
+ "revision": "c4bedb1756c96db3f7d01feedc6587f7b0c3dc0f",
+ "url": null,
+ "hash": "1kq34zk7k6rg9k8frvx51hl1ldqqbfgvhm9f827b5a4c0rx28dah"
+ },
+ "playground": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/playground"
+ },
+ "branch": "master",
+ "revision": "19144f12772063b1c6f00ad186dabbf53ea25985",
+ "url": null,
+ "hash": "1ss0n237f0dmw0akw2q0qp8nvnijcg35f9qgy3i27m4ib3gl4ybk"
+ },
+ "rust-overlay": {
+ "type": "Git",
+ "repository": {
+ "type": "GitHub",
+ "owner": "oxalica",
+ "repo": "rust-overlay"
+ },
+ "branch": "master",
+ "revision": "44f8738f4b9805f7c60118c48f85da835839311a",
+ "url": "https://github.com/oxalica/rust-overlay/archive/44f8738f4b9805f7c60118c48f85da835839311a.tar.gz",
+ "hash": "10nm617bmlw9ialhhc9qix3fij6s5ggpwgcq8sldqqx99dhg9bxj"
+ },
+ "showrt": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/showrt"
+ },
+ "branch": "main",
+ "revision": "7de36af3c6ffcc25832a6ff2303ba6c4c1101de5",
+ "url": null,
+ "hash": "09shk9b3969gmbmh8mavgss6f90zb51rsfby5n1d924agxzl93d6"
+ },
+ "simple-nixos-mailserver": {
+ "type": "Git",
+ "repository": {
+ "type": "GitLab",
+ "repo_path": "simple-nixos-mailserver/nixos-mailserver",
+ "server": "https://gitlab.com/"
+ },
+ "branch": "nixos-23.11",
+ "revision": "e47f3719f1db3e0961a4358d4cb234a0acaa7baf",
+ "url": "https://gitlab.com/api/v4/projects/simple-nixos-mailserver%2Fnixos-mailserver/repository/archive.tar.gz?sha=e47f3719f1db3e0961a4358d4cb234a0acaa7baf",
+ "hash": "122vm4n3gkvlkqmlskiq749bhwfd0r71v6vcmg1bbyg4998brvx8"
+ },
+ "sops-nix": {
+ "type": "Git",
+ "repository": {
+ "type": "GitHub",
+ "owner": "Mic92",
+ "repo": "sops-nix"
+ },
+ "branch": "master",
+ "revision": "f1b0adc27265274e3b0c9b872a8f476a098679bd",
+ "url": "https://github.com/Mic92/sops-nix/archive/f1b0adc27265274e3b0c9b872a8f476a098679bd.tar.gz",
+ "hash": "048rwfxmmrx5z5kika5d7lamdwg1jraighj42kampqvadh1sd0dq"
+ },
+ "tracktrain": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/tracktrain"
+ },
+ "branch": "main",
+ "revision": "d4f4208fe66d3813b65312dac0bf895c4cdc53d6",
+ "url": null,
+ "hash": "0wf5x8pcls7w08kwl24l70bjyp1dmqzbkab71dvmkazs4vxvanvm"
+ },
+ "traveltext": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/traveltext"
+ },
+ "branch": "main",
+ "revision": "b6080abc5661f9323593944f5701d7dd7597afb9",
+ "url": null,
+ "hash": "0rwfkkq46j7yjbkv3ylpsifzlhq7qlc2svzpbwjyqm65d53dyalm"
+ },
+ "uplcg": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/forks/uplcg"
+ },
+ "branch": "main",
+ "revision": "b61c0b191578d6ed39a6038cca7b436764a1f9f1",
+ "url": null,
+ "hash": "0675z5gvw0chx3hrr7bpiqxiwcykxhgw8qws17yazi071i8jgl29"
+ },
+ "walint": {
+ "type": "Git",
+ "repository": {
+ "type": "Git",
+ "url": "https://stuebinm.eu/git/walint"
+ },
+ "branch": "playground",
+ "revision": "6b71528e72458bcb5e0a0089033b9367c887967f",
+ "url": null,
+ "hash": "1lx92iw228x3m35nk11zp3v1jc03rd8yqcymxidk09s8lrrsyynz"
+ }
+ },
+ "version": 3
+} \ No newline at end of file