about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--third_party/cgit/Makefile2
-rw-r--r--third_party/cgit/cgit.c2
-rw-r--r--third_party/cgit/cgit.h26
-rw-r--r--third_party/cgit/parsing.c2
-rw-r--r--third_party/cgit/shared.c17
-rw-r--r--third_party/cgit/ui-atom.c2
-rw-r--r--third_party/cgit/ui-blame.c12
-rw-r--r--third_party/cgit/ui-blob.c10
-rw-r--r--third_party/cgit/ui-commit.c2
-rw-r--r--third_party/cgit/ui-diff.c14
-rw-r--r--third_party/cgit/ui-log.c6
-rw-r--r--third_party/cgit/ui-patch.c6
-rw-r--r--third_party/cgit/ui-plain.c6
-rw-r--r--third_party/cgit/ui-shared.c10
-rw-r--r--third_party/cgit/ui-snapshot.c14
-rw-r--r--third_party/cgit/ui-stats.c2
-rw-r--r--third_party/cgit/ui-tag.c2
-rw-r--r--third_party/cgit/ui-tree.c8
-rw-r--r--third_party/sources/sources.json38
-rw-r--r--users/grfn/system/home/modules/emacs.nix2
-rw-r--r--users/grfn/system/system/machines/ogopogo.nix2
-rw-r--r--users/grfn/system/system/machines/yeren.nix2
-rw-r--r--users/tazjin/emacs/default.nix2
-rw-r--r--users/tazjin/nixos/modules/physical.nix2
24 files changed, 100 insertions, 91 deletions
diff --git a/third_party/cgit/Makefile b/third_party/cgit/Makefile
index 5967a327bb..1a7f1f6381 100644
--- a/third_party/cgit/Makefile
+++ b/third_party/cgit/Makefile
@@ -14,7 +14,7 @@ htmldir = $(docdir)
 pdfdir = $(docdir)
 mandir = $(prefix)/share/man
 SHA1_HEADER = <openssl/sha.h>
-GIT_VER = 2.36.1
+GIT_VER = 2.41.0
 GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz
 INSTALL = install
 COPYTREE = cp -r
diff --git a/third_party/cgit/cgit.c b/third_party/cgit/cgit.c
index dd28a79315..40202ead67 100644
--- a/third_party/cgit/cgit.c
+++ b/third_party/cgit/cgit.c
@@ -628,7 +628,7 @@ static int prepare_repo_cmd(int nongit)
 		return 1;
 	}
 
-	if (get_oid(ctx.qry.head, &oid)) {
+	if (repo_get_oid(the_repository, ctx.qry.head, &oid)) {
 		char *old_head = ctx.qry.head;
 		ctx.qry.head = xstrdup(ctx.repo->defbranch);
 		cgit_print_error_page(404, "Not found",
diff --git a/third_party/cgit/cgit.h b/third_party/cgit/cgit.h
index 72fcd8498a..a284af9aed 100644
--- a/third_party/cgit/cgit.h
+++ b/third_party/cgit/cgit.h
@@ -1,25 +1,33 @@
 #ifndef CGIT_H
 #define CGIT_H
 
+#include <stdbool.h>
 
 #include <git-compat-util.h>
-#include <stdbool.h>
 
+#include <archive.h>
 #include <cache.h>
+#include <commit.h>
+#include <diffcore.h>
+#include <diff.h>
+#include <environment.h>
+#include <graph.h>
 #include <grep.h>
+#include <hex.h>
+#include <log-tree.h>
+#include <notes.h>
 #include <object.h>
+#include <object-name.h>
 #include <object-store.h>
-#include <tree.h>
-#include <commit.h>
-#include <tag.h>
-#include <diff.h>
-#include <diffcore.h>
-#include <strvec.h>
 #include <refs.h>
 #include <revision.h>
-#include <log-tree.h>
-#include <archive.h>
+#include <setup.h>
 #include <string-list.h>
+#include <strvec.h>
+#include <tag.h>
+#include <tree.h>
+#include <utf8.h>
+#include <wrapper.h>
 #include <xdiff-interface.h>
 #include <xdiff/xdiff.h>
 #include <utf8.h>
diff --git a/third_party/cgit/parsing.c b/third_party/cgit/parsing.c
index e093aaf701..83d3521e89 100644
--- a/third_party/cgit/parsing.c
+++ b/third_party/cgit/parsing.c
@@ -198,7 +198,7 @@ struct taginfo *cgit_parse_tag(struct tag *tag)
 	const char *p;
 	struct taginfo *ret = NULL;
 
-	data = read_object_file(&tag->object.oid, &type, &size);
+	data = repo_read_object_file(the_repository, &tag->object.oid, &type, &size);
 	if (!data || type != OBJ_TAG)
 		goto cleanup;
 
diff --git a/third_party/cgit/shared.c b/third_party/cgit/shared.c
index 0bceb98912..26b6ddb329 100644
--- a/third_party/cgit/shared.c
+++ b/third_party/cgit/shared.c
@@ -241,7 +241,7 @@ static int load_mmfile(mmfile_t *file, const struct object_id *oid)
 		file->ptr = (char *)"";
 		file->size = 0;
 	} else {
-		file->ptr = read_object_file(oid, &type,
+		file->ptr = repo_read_object_file(the_repository, oid, &type,
 		                           (unsigned long *)&file->size);
 	}
 	return 1;
@@ -343,7 +343,7 @@ void cgit_diff_tree(const struct object_id *old_oid,
 	struct diff_options opt;
 	struct pathspec_item *item;
 
-	diff_setup(&opt);
+	repo_diff_setup(the_repository, &opt);
 	opt.output_format = DIFF_FORMAT_CALLBACK;
 	opt.detect_rename = 1;
 	opt.rename_limit = ctx.cfg.renamelimit;
@@ -539,7 +539,9 @@ char *expand_macros(const char *txt)
 
 char *get_mimetype_for_filename(const char *filename)
 {
-	char *ext, *mimetype, *token, line[1024], *saveptr;
+	char *ext, *mimetype, line[1024];
+	struct string_list list = STRING_LIST_INIT_NODUP;
+	int i;
 	FILE *file;
 	struct string_list_item *mime;
 
@@ -564,13 +566,16 @@ char *get_mimetype_for_filename(const char *filename)
 	while (fgets(line, sizeof(line), file)) {
 		if (!line[0] || line[0] == '#')
 			continue;
-		mimetype = strtok_r(line, " \t\r\n", &saveptr);
-		while ((token = strtok_r(NULL, " \t\r\n", &saveptr))) {
-			if (!strcasecmp(ext, token)) {
+		string_list_split_in_place(&list, line, " \t\r\n", -1);
+		string_list_remove_empty_items(&list, 0);
+		mimetype = list.items[0].string;
+		for (i = 1; i < list.nr; i++) {
+			if (!strcasecmp(ext, list.items[i].string)) {
 				fclose(file);
 				return xstrdup(mimetype);
 			}
 		}
+		string_list_clear(&list, 0);
 	}
 	fclose(file);
 	return NULL;
diff --git a/third_party/cgit/ui-atom.c b/third_party/cgit/ui-atom.c
index 0cf8441d46..fefbc79809 100644
--- a/third_party/cgit/ui-atom.c
+++ b/third_party/cgit/ui-atom.c
@@ -97,7 +97,7 @@ void cgit_print_atom(char *tip, const char *path, int max_count)
 		argv[argc++] = path;
 	}
 
-	init_revisions(&rev, NULL);
+	repo_init_revisions(the_repository, &rev, NULL);
 	rev.abbrev = DEFAULT_ABBREV;
 	rev.commit_format = CMIT_FMT_DEFAULT;
 	rev.verbose_header = 1;
diff --git a/third_party/cgit/ui-blame.c b/third_party/cgit/ui-blame.c
index ca770994a6..6418b24221 100644
--- a/third_party/cgit/ui-blame.c
+++ b/third_party/cgit/ui-blame.c
@@ -49,12 +49,12 @@ static void emit_blame_entry_hash(struct blame_entry *ent)
 
 	char *detail = emit_suspect_detail(suspect);
 	html("<span class='oid'>");
-	cgit_commit_link(find_unique_abbrev(oid, DEFAULT_ABBREV), detail,
+	cgit_commit_link(repo_find_unique_abbrev(the_repository, oid, DEFAULT_ABBREV), detail,
 			 NULL, ctx.qry.head, oid_to_hex(oid), suspect->path);
 	html("</span>");
 	free(detail);
 
-	if (!parse_commit(suspect->commit) && suspect->commit->parents) {
+	if (!repo_parse_commit(the_repository, suspect->commit) && suspect->commit->parents) {
 		struct commit *parent = suspect->commit->parents->item;
 
 		html(" ");
@@ -126,7 +126,7 @@ static void print_object(const struct object_id *oid, const char *path,
 		return;
 	}
 
-	buf = read_object_file(oid, &type, &size);
+	buf = repo_read_object_file(the_repository, oid, &type, &size);
 	if (!buf) {
 		cgit_print_error_page(500, "Internal server error",
 			"Error reading object %s", oid_to_hex(oid));
@@ -135,7 +135,7 @@ static void print_object(const struct object_id *oid, const char *path,
 
 	strvec_push(&rev_argv, "blame");
 	strvec_push(&rev_argv, rev);
-	init_revisions(&revs, NULL);
+	repo_init_revisions(the_repository, &revs, NULL);
 	revs.diffopt.flags.allow_textconv = 1;
 	setup_revisions(rev_argv.nr, rev_argv.v, &revs, NULL);
 	init_scoreboard(&sb);
@@ -287,13 +287,13 @@ void cgit_print_blame(void)
 	if (!rev)
 		rev = ctx.qry.head;
 
-	if (get_oid(rev, &oid)) {
+	if (repo_get_oid(the_repository, rev, &oid)) {
 		cgit_print_error_page(404, "Not found",
 			"Invalid revision name: %s", rev);
 		return;
 	}
 	commit = lookup_commit_reference(the_repository, &oid);
-	if (!commit || parse_commit(commit)) {
+	if (!commit || repo_parse_commit(the_repository, commit)) {
 		cgit_print_error_page(404, "Not found",
 			"Invalid commit reference: %s", rev);
 		return;
diff --git a/third_party/cgit/ui-blob.c b/third_party/cgit/ui-blob.c
index c10ae42ebd..08f94ee97e 100644
--- a/third_party/cgit/ui-blob.c
+++ b/third_party/cgit/ui-blob.c
@@ -52,7 +52,7 @@ int cgit_ref_path_exists(const char *path, const char *ref, int file_only)
 		.file_only = file_only
 	};
 
-	if (get_oid(ref, &oid))
+	if (repo_get_oid(the_repository, ref, &oid))
 		goto done;
 	if (oid_object_info(the_repository, &oid, &size) != OBJ_COMMIT)
 		goto done;
@@ -87,7 +87,7 @@ int cgit_print_file(char *path, const char *head, int file_only)
 		.file_only = file_only
 	};
 
-	if (get_oid(head, &oid))
+	if (repo_get_oid(the_repository, head, &oid))
 		return -1;
 	type = oid_object_info(the_repository, &oid, &size);
 	if (type == OBJ_COMMIT) {
@@ -100,7 +100,7 @@ int cgit_print_file(char *path, const char *head, int file_only)
 	}
 	if (type == OBJ_BAD)
 		return -1;
-	buf = read_object_file(&oid, &type, &size);
+	buf = repo_read_object_file(the_repository, &oid, &type, &size);
 	if (!buf)
 		return -1;
 	buf[size] = '\0';
@@ -138,7 +138,7 @@ void cgit_print_blob(const char *hex, char *path, const char *head, int file_onl
 			return;
 		}
 	} else {
-		if (get_oid(head, &oid)) {
+		if (repo_get_oid(the_repository, head, &oid)) {
 			cgit_print_error_page(404, "Not found",
 					"Bad ref: %s", head);
 			return;
@@ -160,7 +160,7 @@ void cgit_print_blob(const char *hex, char *path, const char *head, int file_onl
 		return;
 	}
 
-	buf = read_object_file(&oid, &type, &size);
+	buf = repo_read_object_file(the_repository, &oid, &type, &size);
 	if (!buf) {
 		cgit_print_error_page(500, "Internal server error",
 				"Error reading object %s", hex);
diff --git a/third_party/cgit/ui-commit.c b/third_party/cgit/ui-commit.c
index 72cb98b72a..6517e50cc6 100644
--- a/third_party/cgit/ui-commit.c
+++ b/third_party/cgit/ui-commit.c
@@ -26,7 +26,7 @@ void cgit_print_commit(char *hex, const char *prefix)
 	if (!hex)
 		hex = ctx.qry.head;
 
-	if (get_oid(hex, &oid)) {
+	if (repo_get_oid(the_repository, hex, &oid)) {
 		cgit_print_error_page(400, "Bad request",
 				"Bad object id: %s", hex);
 		return;
diff --git a/third_party/cgit/ui-diff.c b/third_party/cgit/ui-diff.c
index 2a64ae8f14..a82313fc64 100644
--- a/third_party/cgit/ui-diff.c
+++ b/third_party/cgit/ui-diff.c
@@ -259,8 +259,8 @@ static void header(const struct object_id *oid1, char *path1, int mode1,
 		htmlf("deleted file mode %.6o\n", mode1);
 
 	if (!subproject) {
-		abbrev1 = xstrdup(find_unique_abbrev(oid1, DEFAULT_ABBREV));
-		abbrev2 = xstrdup(find_unique_abbrev(oid2, DEFAULT_ABBREV));
+		abbrev1 = xstrdup(repo_find_unique_abbrev(the_repository, oid1, DEFAULT_ABBREV));
+		abbrev2 = xstrdup(repo_find_unique_abbrev(the_repository, oid2, DEFAULT_ABBREV));
 		htmlf("index %s..%s", abbrev1, abbrev2);
 		free(abbrev1);
 		free(abbrev2);
@@ -406,13 +406,13 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
 
 	if (!new_rev)
 		new_rev = ctx.qry.head;
-	if (get_oid(new_rev, new_rev_oid)) {
+	if (repo_get_oid(the_repository, new_rev, new_rev_oid)) {
 		cgit_print_error_page(404, "Not found",
 			"Bad object name: %s", new_rev);
 		return;
 	}
 	commit = lookup_commit_reference(the_repository, new_rev_oid);
-	if (!commit || parse_commit(commit)) {
+	if (!commit || repo_parse_commit(the_repository, commit)) {
 		cgit_print_error_page(404, "Not found",
 			"Bad commit: %s", oid_to_hex(new_rev_oid));
 		return;
@@ -420,7 +420,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
 	new_tree_oid = get_commit_tree_oid(commit);
 
 	if (old_rev) {
-		if (get_oid(old_rev, old_rev_oid)) {
+		if (repo_get_oid(the_repository, old_rev, old_rev_oid)) {
 			cgit_print_error_page(404, "Not found",
 				"Bad object name: %s", old_rev);
 			return;
@@ -433,7 +433,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
 
 	if (!is_null_oid(old_rev_oid)) {
 		commit2 = lookup_commit_reference(the_repository, old_rev_oid);
-		if (!commit2 || parse_commit(commit2)) {
+		if (!commit2 || repo_parse_commit(the_repository, commit2)) {
 			cgit_print_error_page(404, "Not found",
 				"Bad commit: %s", oid_to_hex(old_rev_oid));
 			return;
@@ -446,7 +446,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
 	if (raw) {
 		struct diff_options diffopt;
 
-		diff_setup(&diffopt);
+		repo_diff_setup(the_repository, &diffopt);
 		diffopt.output_format = DIFF_FORMAT_PATCH;
 		diffopt.flags.recursive = 1;
 		diff_setup_done(&diffopt);
diff --git a/third_party/cgit/ui-log.c b/third_party/cgit/ui-log.c
index 520a7496a8..358cdec4e7 100644
--- a/third_party/cgit/ui-log.c
+++ b/third_party/cgit/ui-log.c
@@ -160,7 +160,7 @@ static int show_commit(struct commit *commit, struct rev_info *revs)
 	/* When we get here we have precisely one parent. */
 	parent = parents->item;
 	/* If we can't parse the commit, let print_commit() report an error. */
-	if (parse_commit(parent))
+	if (repo_parse_commit(the_repository, parent))
 		return 1;
 
 	files = 0;
@@ -345,7 +345,7 @@ static const char *disambiguate_ref(const char *ref, int *must_free_result)
 	struct strbuf longref = STRBUF_INIT;
 
 	strbuf_addf(&longref, "refs/heads/%s", ref);
-	if (get_oid(longref.buf, &oid) == 0) {
+	if (repo_get_oid(the_repository, longref.buf, &oid) == 0) {
 		*must_free_result = 1;
 		return strbuf_detach(&longref, NULL);
 	}
@@ -445,7 +445,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
 	if (path)
 		strvec_push(&rev_argv, path);
 
-	init_revisions(&rev, NULL);
+	repo_init_revisions(the_repository, &rev, NULL);
 	rev.abbrev = DEFAULT_ABBREV;
 	rev.commit_format = CMIT_FMT_DEFAULT;
 	rev.verbose_header = 1;
diff --git a/third_party/cgit/ui-patch.c b/third_party/cgit/ui-patch.c
index 4ac03cbef1..3819a8152a 100644
--- a/third_party/cgit/ui-patch.c
+++ b/third_party/cgit/ui-patch.c
@@ -31,7 +31,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,
 	if (!new_rev)
 		new_rev = ctx.qry.head;
 
-	if (get_oid(new_rev, &new_rev_oid)) {
+	if (repo_get_oid(the_repository, new_rev, &new_rev_oid)) {
 		cgit_print_error_page(404, "Not found",
 				"Bad object id: %s", new_rev);
 		return;
@@ -44,7 +44,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,
 	}
 
 	if (old_rev) {
-		if (get_oid(old_rev, &old_rev_oid)) {
+		if (repo_get_oid(the_repository, old_rev, &old_rev_oid)) {
 			cgit_print_error_page(404, "Not found",
 					"Bad object id: %s", old_rev);
 			return;
@@ -78,7 +78,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,
 			      "%s%n%n%w(0)%b";
 	}
 
-	init_revisions(&rev, NULL);
+	repo_init_revisions(the_repository, &rev, NULL);
 	rev.abbrev = DEFAULT_ABBREV;
 	rev.verbose_header = 1;
 	rev.diff = 1;
diff --git a/third_party/cgit/ui-plain.c b/third_party/cgit/ui-plain.c
index 65a205fad7..a66c5a1de0 100644
--- a/third_party/cgit/ui-plain.c
+++ b/third_party/cgit/ui-plain.c
@@ -28,7 +28,7 @@ static int print_object(const struct object_id *oid, const char *path)
 		return 0;
 	}
 
-	buf = read_object_file(oid, &type, &size);
+	buf = repo_read_object_file(the_repository, oid, &type, &size);
 	if (!buf) {
 		cgit_print_error_page(404, "Not found", "Not found");
 		return 0;
@@ -181,12 +181,12 @@ void cgit_print_plain(void)
 	if (!rev)
 		rev = ctx.qry.head;
 
-	if (get_oid(rev, &oid)) {
+	if (repo_get_oid(the_repository, rev, &oid)) {
 		cgit_print_error_page(404, "Not found", "Not found");
 		return;
 	}
 	commit = lookup_commit_reference(the_repository, &oid);
-	if (!commit || parse_commit(commit)) {
+	if (!commit || repo_parse_commit(the_repository, commit)) {
 		cgit_print_error_page(404, "Not found", "Not found");
 		return;
 	}
diff --git a/third_party/cgit/ui-shared.c b/third_party/cgit/ui-shared.c
index 2e8896c982..d047f9a131 100644
--- a/third_party/cgit/ui-shared.c
+++ b/third_party/cgit/ui-shared.c
@@ -898,7 +898,7 @@ void cgit_add_clone_urls(void (*fn)(const char *))
 static int print_this_commit_option(void)
 {
 	struct object_id oid;
-	if (!ctx.qry.head || get_oid(ctx.qry.head, &oid))
+	if (!ctx.qry.head || repo_get_oid(the_repository, ctx.qry.head, &oid))
 		return 1;
 	html_option(oid_to_hex(&oid), "this commit", ctx.qry.head);
 	return 0;
@@ -1167,11 +1167,11 @@ void cgit_compose_snapshot_prefix(struct strbuf *filename, const char *base,
 	 * name starts with {v,V}[0-9] and the prettify mapping is injective,
 	 * i.e. each stripped tag can be inverted without ambiguities.
 	 */
-	if (get_oid(fmt("refs/tags/%s", ref), &oid) == 0 &&
+	if (repo_get_oid(the_repository, fmt("refs/tags/%s", ref), &oid) == 0 &&
 	    (ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1]) &&
-	    ((get_oid(fmt("refs/tags/%s", ref + 1), &oid) == 0) +
-	     (get_oid(fmt("refs/tags/v%s", ref + 1), &oid) == 0) +
-	     (get_oid(fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1))
+	    ((repo_get_oid(the_repository, fmt("refs/tags/%s", ref + 1), &oid) == 0) +
+	     (repo_get_oid(the_repository, fmt("refs/tags/v%s", ref + 1), &oid) == 0) +
+	     (repo_get_oid(the_repository, fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1))
 		ref++;
 
 	strbuf_addf(filename, "%s-%s", base, ref);
diff --git a/third_party/cgit/ui-snapshot.c b/third_party/cgit/ui-snapshot.c
index 280139355a..992853bcd7 100644
--- a/third_party/cgit/ui-snapshot.c
+++ b/third_party/cgit/ui-snapshot.c
@@ -120,7 +120,7 @@ const struct object_id *cgit_snapshot_get_sig(const char *ref,
 	struct notes_tree *tree;
 	struct object_id oid;
 
-	if (get_oid(ref, &oid))
+	if (repo_get_oid(the_repository, ref, &oid))
 		return NULL;
 
 	tree = &snapshot_sig_notes[f - &cgit_snapshot_formats[0]];
@@ -159,7 +159,7 @@ static int make_snapshot(const struct cgit_snapshot_format *format,
 {
 	struct object_id oid;
 
-	if (get_oid(hex, &oid)) {
+	if (repo_get_oid(the_repository, hex, &oid)) {
 		cgit_print_error_page(404, "Not found",
 				"Bad object id: %s", hex);
 		return 1;
@@ -193,7 +193,7 @@ static int write_sig(const struct cgit_snapshot_format *format,
 		return 0;
 	}
 
-	buf = read_object_file(note, &type, &size);
+	buf = repo_read_object_file(the_repository, note, &type, &size);
 	if (!buf) {
 		cgit_print_error_page(404, "Not found", "Not found");
 		return 0;
@@ -233,7 +233,7 @@ static const char *get_ref_from_filename(const struct cgit_repo *repo,
 	strbuf_addstr(&snapshot, filename);
 	strbuf_setlen(&snapshot, snapshot.len - strlen(format->suffix));
 
-	if (get_oid(snapshot.buf, &oid) == 0)
+	if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)
 		goto out;
 
 	reponame = cgit_snapshot_prefix(repo);
@@ -245,15 +245,15 @@ static const char *get_ref_from_filename(const struct cgit_repo *repo,
 		strbuf_splice(&snapshot, 0, new_start - snapshot.buf, "", 0);
 	}
 
-	if (get_oid(snapshot.buf, &oid) == 0)
+	if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)
 		goto out;
 
 	strbuf_insert(&snapshot, 0, "v", 1);
-	if (get_oid(snapshot.buf, &oid) == 0)
+	if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)
 		goto out;
 
 	strbuf_splice(&snapshot, 0, 1, "V", 1);
-	if (get_oid(snapshot.buf, &oid) == 0)
+	if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)
 		goto out;
 
 	result = 0;
diff --git a/third_party/cgit/ui-stats.c b/third_party/cgit/ui-stats.c
index 40ed6c21df..9aed4ac3bf 100644
--- a/third_party/cgit/ui-stats.c
+++ b/third_party/cgit/ui-stats.c
@@ -230,7 +230,7 @@ static struct string_list collect_stats(const struct cgit_period *period)
 		argv[4] = ctx.qry.path;
 		argc += 2;
 	}
-	init_revisions(&rev, NULL);
+	repo_init_revisions(the_repository, &rev, NULL);
 	rev.abbrev = DEFAULT_ABBREV;
 	rev.commit_format = CMIT_FMT_DEFAULT;
 	rev.max_parents = 1;
diff --git a/third_party/cgit/ui-tag.c b/third_party/cgit/ui-tag.c
index 7be2808149..be1122b905 100644
--- a/third_party/cgit/ui-tag.c
+++ b/third_party/cgit/ui-tag.c
@@ -48,7 +48,7 @@ void cgit_print_tag(char *revname)
 		revname = ctx.qry.head;
 
 	strbuf_addf(&fullref, "refs/tags/%s", revname);
-	if (get_oid(fullref.buf, &oid)) {
+	if (repo_get_oid(the_repository, fullref.buf, &oid)) {
 		cgit_print_error_page(404, "Not found",
 			"Bad tag reference: %s", revname);
 		goto cleanup;
diff --git a/third_party/cgit/ui-tree.c b/third_party/cgit/ui-tree.c
index 21e0b88448..436b333809 100644
--- a/third_party/cgit/ui-tree.c
+++ b/third_party/cgit/ui-tree.c
@@ -98,7 +98,7 @@ static void print_object(const struct object_id *oid, const char *path, const ch
 		return;
 	}
 
-	buf = read_object_file(oid, &type, &size);
+	buf = repo_read_object_file(the_repository, oid, &type, &size);
 	if (!buf) {
 		cgit_print_error_page(500, "Internal server error",
 			"Error reading object %s", oid_to_hex(oid));
@@ -242,7 +242,7 @@ static int ls_item(const struct object_id *oid, struct strbuf *base,
 	}
 	if (S_ISLNK(mode)) {
 		html(" -> ");
-		buf = read_object_file(oid, &type, &size);
+		buf = repo_read_object_file(the_repository, oid, &type, &size);
 		if (!buf) {
 			htmlf("Error reading object: %s", oid_to_hex(oid));
 			goto cleanup;
@@ -378,13 +378,13 @@ void cgit_print_tree(const char *rev, char *path)
 	if (!rev)
 		rev = ctx.qry.head;
 
-	if (get_oid(rev, &oid)) {
+	if (repo_get_oid(the_repository, rev, &oid)) {
 		cgit_print_error_page(404, "Not found",
 			"Invalid revision name: %s", rev);
 		return;
 	}
 	commit = lookup_commit_reference(the_repository, &oid);
-	if (!commit || parse_commit(commit)) {
+	if (!commit || repo_parse_commit(the_repository, commit)) {
 		cgit_print_error_page(404, "Not found",
 			"Invalid commit reference: %s", rev);
 		return;
diff --git a/third_party/sources/sources.json b/third_party/sources/sources.json
index 898aa5c469..49541783f4 100644
--- a/third_party/sources/sources.json
+++ b/third_party/sources/sources.json
@@ -17,10 +17,10 @@
         "homepage": "",
         "owner": "nix-community",
         "repo": "emacs-overlay",
-        "rev": "d67534316f2307e133cfc4017e65c240af74fbb7",
-        "sha256": "1v0mpwl3rjnvlrd03rxlx41agi3dsrdl6lwzg6mdbajdh2smdw9v",
+        "rev": "29ad7704a8191bd9170ee7e50ae222f88fb675f9",
+        "sha256": "07wdhqypl1dgnk6gky183fllp7nw943qalnsfqzjbn0z6zh1g27j",
         "type": "tarball",
-        "url": "https://github.com/nix-community/emacs-overlay/archive/d67534316f2307e133cfc4017e65c240af74fbb7.tar.gz",
+        "url": "https://github.com/nix-community/emacs-overlay/archive/29ad7704a8191bd9170ee7e50ae222f88fb675f9.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "home-manager": {
@@ -29,10 +29,10 @@
         "homepage": "https://nix-community.github.io/home-manager/",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "e0034971f9def16bbc32124147787bc0f09f0e59",
-        "sha256": "0s9a0ym7yd67glvxyfpmz3rsxgjhsaac1q3jvzqfm7bkjww6v86y",
+        "rev": "d2b6f2d154bf6b27a93ed895392f80c503df7cfa",
+        "sha256": "02xcckv5g5jr28bx9db6z33da15csgbsdhhqapb1zxn6dbv2wah9",
         "type": "tarball",
-        "url": "https://github.com/nix-community/home-manager/archive/e0034971f9def16bbc32124147787bc0f09f0e59.tar.gz",
+        "url": "https://github.com/nix-community/home-manager/archive/d2b6f2d154bf6b27a93ed895392f80c503df7cfa.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "impermanence": {
@@ -77,22 +77,22 @@
         "homepage": "",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "0eeebd64de89e4163f4d3cf34ffe925a5cf67a05",
-        "sha256": "1k3qlcbf5y15l4x2sn5i47n2chacn321kl6s7if751cnszrs08df",
+        "rev": "e603dc5f061ca1d8a19b3ede6a8cf9c9fcba6cdc",
+        "sha256": "1jxxg0cd00n0v4ygsi2i1mflbzxsm8nn3av792k2zw7snb0k9y37",
         "type": "tarball",
-        "url": "https://github.com/NixOS/nixpkgs/archive/0eeebd64de89e4163f4d3cf34ffe925a5cf67a05.tar.gz",
+        "url": "https://github.com/NixOS/nixpkgs/archive/e603dc5f061ca1d8a19b3ede6a8cf9c9fcba6cdc.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "nixpkgs-stable": {
-        "branch": "nixos-21.11",
+        "branch": "nixos-23.05",
         "description": "Nix Packages collection",
         "homepage": "",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d",
-        "sha256": "04ffwp2gzq0hhz7siskw6qh9ys8ragp7285vi1zh8xjksxn1msc5",
+        "rev": "ef0bc3976340dab9a4e087a0bcff661a8b2e87f3",
+        "sha256": "122sn6zn50hykryajj9fc6rg5d5w817r349hmdrfazcq59zb0avi",
         "type": "tarball",
-        "url": "https://github.com/NixOS/nixpkgs/archive/eabc38219184cc3e04a974fe31857d8e0eac098d.tar.gz",
+        "url": "https://github.com/NixOS/nixpkgs/archive/ef0bc3976340dab9a4e087a0bcff661a8b2e87f3.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "rust-overlay": {
@@ -101,10 +101,10 @@
         "homepage": "",
         "owner": "oxalica",
         "repo": "rust-overlay",
-        "rev": "5c2b97c0a9bc5217fc3dfb1555aae0fb756d99f9",
-        "sha256": "0dsqvy0jcdj29ljri74b7fzrpq7sbybk2i7zni869l2rlk9bhdlc",
+        "rev": "fc0a266e836c079a9131108f4334e5af219dbb93",
+        "sha256": "0icpy1533g37gad6zblvrp619v5993a5r6azlcy033595f4hsldd",
         "type": "tarball",
-        "url": "https://github.com/oxalica/rust-overlay/archive/5c2b97c0a9bc5217fc3dfb1555aae0fb756d99f9.tar.gz",
+        "url": "https://github.com/oxalica/rust-overlay/archive/fc0a266e836c079a9131108f4334e5af219dbb93.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "rustsec-advisory-db": {
@@ -113,10 +113,10 @@
         "homepage": "https://rustsec.org",
         "owner": "RustSec",
         "repo": "advisory-db",
-        "rev": "13b9455e9f7d2927f81088db3cffaafd6a6bbe16",
-        "sha256": "0dklw6795kgz3abpn345296z55cfjlh48sk8wqx2dyhfykdgiscm",
+        "rev": "9cf72357c8c52629d22edd8b4b8d7f7cdeea2504",
+        "sha256": "0bb3rfmbklj3b4ylyiwn15ys894kcq6jczdzc0d5di9vxb4xq366",
         "type": "tarball",
-        "url": "https://github.com/RustSec/advisory-db/archive/13b9455e9f7d2927f81088db3cffaafd6a6bbe16.tar.gz",
+        "url": "https://github.com/RustSec/advisory-db/archive/9cf72357c8c52629d22edd8b4b8d7f7cdeea2504.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     }
 }
diff --git a/users/grfn/system/home/modules/emacs.nix b/users/grfn/system/home/modules/emacs.nix
index b84b368437..4130379c3d 100644
--- a/users/grfn/system/home/modules/emacs.nix
+++ b/users/grfn/system/home/modules/emacs.nix
@@ -65,7 +65,7 @@ in
 
       programs.emacs = {
         enable = true;
-        package = pkgs.emacsUnstable;
+        package = pkgs.emacs-unstable;
         extraPackages = (epkgs:
           (with epkgs; [
             tvlPackages.dottime
diff --git a/users/grfn/system/system/machines/ogopogo.nix b/users/grfn/system/system/machines/ogopogo.nix
index eb799621c3..82c0163bc8 100644
--- a/users/grfn/system/system/machines/ogopogo.nix
+++ b/users/grfn/system/system/machines/ogopogo.nix
@@ -23,8 +23,6 @@
       kernelModules = [ ];
     };
 
-    kernelPackages = pkgs.linuxPackages_5_15;
-
     kernelModules = [ "kvm-amd" ];
     blacklistedKernelModules = [ ];
     extraModulePackages = [ ];
diff --git a/users/grfn/system/system/machines/yeren.nix b/users/grfn/system/system/machines/yeren.nix
index f104debfc8..de1734e039 100644
--- a/users/grfn/system/system/machines/yeren.nix
+++ b/users/grfn/system/system/machines/yeren.nix
@@ -34,8 +34,6 @@
       };
     };
 
-    kernelPackages = pkgs.linuxPackages_5_15;
-
     kernelModules = [ "kvm-intel" ];
     blacklistedKernelModules = [ "psmouse" ];
     extraModulePackages = [
diff --git a/users/tazjin/emacs/default.nix b/users/tazjin/emacs/default.nix
index 23a0f2bed1..fb8128dc97 100644
--- a/users/tazjin/emacs/default.nix
+++ b/users/tazjin/emacs/default.nix
@@ -3,7 +3,7 @@
 { lib, pkgs, ... }:
 
 pkgs.makeOverridable
-  ({ emacs ? pkgs.emacsUnstable }:
+  ({ emacs ? pkgs.emacs-unstable }:
   let
     emacsWithPackages = (pkgs.emacsPackagesFor emacs).emacsWithPackages;
 
diff --git a/users/tazjin/nixos/modules/physical.nix b/users/tazjin/nixos/modules/physical.nix
index 0105d9f3a2..b9e06c3cd7 100644
--- a/users/tazjin/nixos/modules/physical.nix
+++ b/users/tazjin/nixos/modules/physical.nix
@@ -24,7 +24,7 @@ in
       direnv
       dnsutils
       electrum
-      emacsUnstable # emacsclient
+      emacs-unstable # emacsclient
       exa
       fd
       file