diff --git a/flake.lock b/flake.lock index 4e86656..bb041e1 100644 --- a/flake.lock +++ b/flake.lock @@ -25,11 +25,11 @@ }, "catppuccin": { "locked": { - "lastModified": 1732703064, - "narHash": "sha256-n8XOmn0WGtQhAMJKTnhL/3ttV2ZahPRf6gtlqZ6R4QE=", + "lastModified": 1731232837, + "narHash": "sha256-0aIwr/RC/oe7rYkfJb47xjdEQDSNcqpFGsEa+EPlDEs=", "owner": "catppuccin", "repo": "nix", - "rev": "2e2bdecf0bae287d74947cd5cf967c5c499c23c1", + "rev": "32359bf226fe874d3b7a0a5753d291a4da9616fe", "type": "github" }, "original": { @@ -182,11 +182,11 @@ ] }, "locked": { - "lastModified": 1732482255, - "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=", + "lastModified": 1732453510, + "narHash": "sha256-mAOaLu++YRwOxCJ135Bhgf78WYhIKWHL2aGWCAoXoBg=", "owner": "nix-community", "repo": "home-manager", - "rev": "a9953635d7f34e7358d5189751110f87e3ac17da", + "rev": "bd58a1132e9b7f121f65313bc662ad6c8a05f878", "type": "github" }, "original": { @@ -224,11 +224,11 @@ ] }, "locked": { - "lastModified": 1732739177, - "narHash": "sha256-iL32+TA/8geCzcL1r3uthrH/GPvbUak5QE++WJUkaiI=", + "lastModified": 1732432618, + "narHash": "sha256-7MzATSBJcR9JUkaDgIJ3jEkQLXIbOjt0lqbmlGkcLDg=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "8d7b2149e618696d5100c2683af1ffa893f02a75", + "rev": "98a61cf0708885abddebc6938ca7282928981d5e", "type": "github" }, "original": { @@ -263,11 +263,11 @@ ] }, "locked": { - "lastModified": 1732603698, - "narHash": "sha256-Jw2MhzgCCrKV2MJytehG0cCLIAosBX71p8qmQ6XQlR4=", - "rev": "15b999f9c958c475f71fb8c543b9fc2f36ae8730", + "lastModified": 1731967274, + "narHash": "sha256-n6dPGRlMGdL8X5gviA6ZuRfUdbdD5KiNN/BpABA5YT0=", + "rev": "aa2846680fa9a2032939d720487942567fd9eb63", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/15b999f9c958c475f71fb8c543b9fc2f36ae8730.tar.gz?rev=15b999f9c958c475f71fb8c543b9fc2f36ae8730" + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/aa2846680fa9a2032939d720487942567fd9eb63.tar.gz?rev=aa2846680fa9a2032939d720487942567fd9eb63" }, "original": { "type": "tarball", @@ -286,11 +286,11 @@ ] }, "locked": { - "lastModified": 1732603698, - "narHash": "sha256-Jw2MhzgCCrKV2MJytehG0cCLIAosBX71p8qmQ6XQlR4=", - "rev": "15b999f9c958c475f71fb8c543b9fc2f36ae8730", + "lastModified": 1731967274, + "narHash": "sha256-n6dPGRlMGdL8X5gviA6ZuRfUdbdD5KiNN/BpABA5YT0=", + "rev": "aa2846680fa9a2032939d720487942567fd9eb63", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/15b999f9c958c475f71fb8c543b9fc2f36ae8730.tar.gz?rev=15b999f9c958c475f71fb8c543b9fc2f36ae8730" + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/aa2846680fa9a2032939d720487942567fd9eb63.tar.gz?rev=aa2846680fa9a2032939d720487942567fd9eb63" }, "original": { "type": "tarball", @@ -357,11 +357,11 @@ ] }, "locked": { - "lastModified": 1732519917, - "narHash": "sha256-AGXhwHdJV0q/WNgqwrR2zriubLr785b02FphaBtyt1Q=", + "lastModified": 1732458224, + "narHash": "sha256-6CHj+ce0yGOEuKbM0gERuNkLAOrkmcmw5kLYHaW8eMw=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "f4a5ca5771ba9ca31ad24a62c8d511a405303436", + "rev": "e5105f148c36e423377c6be187186b5bf706c268", "type": "github" }, "original": { @@ -377,11 +377,11 @@ ] }, "locked": { - "lastModified": 1732519917, - "narHash": "sha256-AGXhwHdJV0q/WNgqwrR2zriubLr785b02FphaBtyt1Q=", + "lastModified": 1732458224, + "narHash": "sha256-6CHj+ce0yGOEuKbM0gERuNkLAOrkmcmw5kLYHaW8eMw=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "f4a5ca5771ba9ca31ad24a62c8d511a405303436", + "rev": "e5105f148c36e423377c6be187186b5bf706c268", "type": "github" }, "original": { @@ -399,11 +399,11 @@ ] }, "locked": { - "lastModified": 1732758830, - "narHash": "sha256-bmMRjp4U3RDvLuwOWXMTHitMBMrmmpzP4x0dckJMZD4=", + "lastModified": 1732413484, + "narHash": "sha256-KZYNKQVAf53MvT4zs8ybtswyJUw5f1HzshZWgCDJQm4=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "09c3d43938e7b535ecada974759e9ed84ee91235", + "rev": "a950aa08f1868355d8b5fe89613f17468d2ae697", "type": "github" }, "original": { @@ -414,11 +414,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1732483221, - "narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=", + "lastModified": 1731797098, + "narHash": "sha256-UhWmEZhwJZmVZ1jfHZFzCg+ZLO9Tb/v3Y6LC0UNyeTo=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405", + "rev": "672ac2ac86f7dff2f6f3406405bddecf960e0db6", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgs-raw": { "locked": { - "lastModified": 1732632634, - "narHash": "sha256-+G7n/ZD635aN0sEXQLynU7pWMd3PKDM7yBIXvYmjABQ=", + "lastModified": 1731797254, + "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6f6076c37180ea3a916f84928cf3a714c5207a30", + "rev": "e8c38b73aeb218e27163376a2d617e61a2ad9b59", "type": "github" }, "original": { @@ -445,11 +445,11 @@ }, "nixpkgs-unstable-raw": { "locked": { - "lastModified": 1732521221, - "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", "type": "github" }, "original": { @@ -460,11 +460,11 @@ }, "nur": { "locked": { - "lastModified": 1732784817, - "narHash": "sha256-I37vvlS+qk4TMzMouw9kJCilahl8+fOjnCWsBJmPv+U=", + "lastModified": 1732461014, + "narHash": "sha256-4KMZSCldwLImqrGxj8o5VpW5ej0L+EmxrlJzG2na8t4=", "owner": "nix-community", "repo": "NUR", - "rev": "7c412613e5ed3d49f2e198c0b0187add6b897b3d", + "rev": "5951bcd835d728eb0db62425dba44a79d83c75d0", "type": "github" }, "original": { @@ -483,11 +483,11 @@ ] }, "locked": { - "lastModified": 1732639391, - "narHash": "sha256-kFtXjoCIqx9xe0ZryPXpqS6l/HVg71aNcuL8Y5e8+pI=", + "lastModified": 1732450735, + "narHash": "sha256-QWNkWawDjoVWZx8bFUYxaCynK/r3+JyttzQ3TBoXaDg=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "06e3209d11797d9c741e25df06ab61048746bf93", + "rev": "8e75ad96bfcc1a4da33b51c8a82adc146b2be011", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 41b14d0..8482899 100644 --- a/flake.nix +++ b/flake.nix @@ -99,6 +99,7 @@ name = "patched-nixpkgs-unstable"; src = nixpkgs-unstable-raw; patches = [ + ./nixpkgs-patches/pr357897.patch ./nixpkgs-patches/pr359282.patch ]; }; diff --git a/nixpkgs-patches/pr357897.patch b/nixpkgs-patches/pr357897.patch new file mode 100644 index 0000000..117fdf0 --- /dev/null +++ b/nixpkgs-patches/pr357897.patch @@ -0,0 +1,145 @@ +From 91c18e48e58517b176e8b87959293de71789c715 Mon Sep 17 00:00:00 2001 +From: GetPsyched +Date: Thu, 21 Nov 2024 17:03:57 +0400 +Subject: [PATCH] nixos-render-docs: don't validate redirects if none were + given + +--- + .../src/nixos_render_docs/manual.py | 40 ++++++++++--------- + .../src/tests/test_auto_id_prefix.py | 6 +-- + 2 files changed, 25 insertions(+), 21 deletions(-) + +diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual.py +index 64b3740c83522..52b51f63f4d85 100644 +--- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual.py ++++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual.py +@@ -217,11 +217,11 @@ class ManualHTMLRenderer(RendererMixin, HTMLRenderer): + _base_path: Path + _in_dir: Path + _html_params: HTMLParameters +- _redirects: Redirects ++ _redirects: Redirects | None + + def __init__(self, toplevel_tag: str, revision: str, html_params: HTMLParameters, + manpage_urls: Mapping[str, str], xref_targets: dict[str, XrefTarget], +- redirects: Redirects, in_dir: Path, base_path: Path): ++ redirects: Redirects | None, in_dir: Path, base_path: Path): + super().__init__(toplevel_tag, revision, manpage_urls, xref_targets) + self._in_dir = in_dir + self._base_path = base_path.absolute() +@@ -310,9 +310,12 @@ def _file_header(self, toc: TocEntry) -> str: + ' ', + ]) + +- redirects_path = f'{self._base_path}/{toc.target.path.split('.html')[0]}-redirects.js' +- with open(redirects_path, 'w') as file: +- file.write(self._redirects.get_redirect_script(toc.target.path)) ++ scripts = self._html_params.scripts ++ if self._redirects: ++ redirects_path = f'{self._base_path}/{toc.target.path.split('.html')[0]}-redirects.js' ++ with open(redirects_path, 'w') as file: ++ file.write(self._redirects.get_redirect_script(toc.target.path)) ++ scripts.append(redirects_path) + + return "\n".join([ + '', +@@ -325,7 +328,7 @@ def _file_header(self, toc: TocEntry) -> str: + "".join((f'' + for style in self._html_params.stylesheets)), + "".join((f'' +- for script in [*self._html_params.scripts, redirects_path])), ++ for script in scripts)), + f' ', + f' ' if home.target.href() else "", + f' {up_link}{prev_link}{next_link}', +@@ -509,7 +512,7 @@ class HTMLConverter(BaseConverter[ManualHTMLRenderer]): + _revision: str + _html_params: HTMLParameters + _manpage_urls: Mapping[str, str] +- _redirects: Redirects ++ _redirects: Redirects | None + _xref_targets: dict[str, XrefTarget] + _redirection_targets: set[str] + _appendix_count: int = 0 +@@ -518,7 +521,7 @@ def _next_appendix_id(self) -> str: + self._appendix_count += 1 + return _to_base26(self._appendix_count - 1) + +- def __init__(self, revision: str, html_params: HTMLParameters, manpage_urls: Mapping[str, str], redirects: Redirects): ++ def __init__(self, revision: str, html_params: HTMLParameters, manpage_urls: Mapping[str, str], redirects: Redirects | None = None): + super().__init__() + self._revision, self._html_params, self._manpage_urls, self._redirects = revision, html_params, manpage_urls, redirects + self._xref_targets = {} +@@ -679,13 +682,14 @@ def _postprocess(self, infile: Path, outfile: Path, tokens: Sequence[Token]) -> + ) + + TocEntry.collect_and_link(self._xref_targets, tokens) +- self._redirects.validate(self._xref_targets) +- server_redirects = self._redirects.get_server_redirects() +- with open(outfile.parent / '_redirects', 'w') as server_redirects_file: +- formatted_server_redirects = [] +- for from_path, to_path in server_redirects.items(): +- formatted_server_redirects.append(f"{from_path} {to_path} 301") +- server_redirects_file.write("\n".join(formatted_server_redirects)) ++ if self._redirects: ++ self._redirects.validate(self._xref_targets) ++ server_redirects = self._redirects.get_server_redirects() ++ with open(outfile.parent / '_redirects', 'w') as server_redirects_file: ++ formatted_server_redirects = [] ++ for from_path, to_path in server_redirects.items(): ++ formatted_server_redirects.append(f"{from_path} {to_path} 301") ++ server_redirects_file.write("\n".join(formatted_server_redirects)) + + + def _build_cli_html(p: argparse.ArgumentParser) -> None: +@@ -704,16 +708,16 @@ def _build_cli_html(p: argparse.ArgumentParser) -> None: + + def _run_cli_html(args: argparse.Namespace) -> None: + with open(args.manpage_urls) as manpage_urls, open(Path(__file__).parent / "redirects.js") as redirects_script: +- redirects = {} ++ redirects = None + if args.redirects: + with open(args.redirects) as raw_redirects: +- redirects = json.load(raw_redirects) ++ redirects = Redirects(json.load(raw_redirects), redirects_script.read()) + + md = HTMLConverter( + args.revision, + HTMLParameters(args.generator, args.stylesheet, args.script, args.toc_depth, + args.chunk_toc_depth, args.section_toc_depth, args.media_dir), +- json.load(manpage_urls), Redirects(redirects, redirects_script.read())) ++ json.load(manpage_urls), redirects) + md.convert(args.infile, args.outfile) + + def build_cli(p: argparse.ArgumentParser) -> None: +diff --git a/pkgs/by-name/ni/nixos-render-docs/src/tests/test_auto_id_prefix.py b/pkgs/by-name/ni/nixos-render-docs/src/tests/test_auto_id_prefix.py +index a3d33930b3035..ae847de6b8a8d 100644 +--- a/pkgs/by-name/ni/nixos-render-docs/src/tests/test_auto_id_prefix.py ++++ b/pkgs/by-name/ni/nixos-render-docs/src/tests/test_auto_id_prefix.py +@@ -11,7 +11,7 @@ def set_prefix(token: Token, ident: str) -> None: + + + def test_auto_id_prefix_simple() -> None: +- md = HTMLConverter("1.0.0", HTMLParameters("", [], [], 2, 2, 2, Path("")), {}, Redirects({}, '')) ++ md = HTMLConverter("1.0.0", HTMLParameters("", [], [], 2, 2, 2, Path("")), {}) + + src = f""" + # title +@@ -32,7 +32,7 @@ def test_auto_id_prefix_simple() -> None: + + + def test_auto_id_prefix_repeated() -> None: +- md = HTMLConverter("1.0.0", HTMLParameters("", [], [], 2, 2, 2, Path("")), {}, Redirects({}, '')) ++ md = HTMLConverter("1.0.0", HTMLParameters("", [], [], 2, 2, 2, Path("")), {}) + + src = f""" + # title +@@ -58,7 +58,7 @@ def test_auto_id_prefix_repeated() -> None: + ] + + def test_auto_id_prefix_maximum_nested() -> None: +- md = HTMLConverter("1.0.0", HTMLParameters("", [], [], 2, 2, 2, Path("")), {}, Redirects({}, '')) ++ md = HTMLConverter("1.0.0", HTMLParameters("", [], [], 2, 2, 2, Path("")), {}) + + src = f""" + # h1