docs: move pkgs overlays to their own file

This commit is contained in:
Matt Sturgeon 2024-09-12 12:55:33 +01:00
parent 27a0dd435d
commit 6665521525
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
3 changed files with 58 additions and 42 deletions

View file

@ -1,42 +1,13 @@
{ {
pkgs ? import <nixpkgs> { config.allowUnfree = true; }, system,
nixpkgs,
nuschtosSearch, nuschtosSearch,
}: }:
let let
# Extend nixpkg's lib, so that we can handle recursive leaf types such as `either` # We overlay a few tweaks into pkgs, for use in the docs
lib = pkgs.lib.extend ( pkgs = import ./pkgs.nix { inherit system nixpkgs; };
final: prev: { inherit (pkgs) lib;
types = prev.types // { helpers = import ../lib/helpers.nix { inherit lib pkgs; };
either =
t1: t2:
(prev.types.either t1 t2)
// {
getSubOptions = prefix: (t1.getSubOptions prefix) // (t2.getSubOptions prefix);
};
};
}
);
# Extended nixpkgs instance, with patches to nixos-render-docs
pkgsDoc = pkgs.extend (
final: prev: {
inherit lib;
nixos-render-docs = prev.nixos-render-docs.overrideAttrs (old: {
patches = old.patches or [ ] ++ [
# Adds support for GFM-style admonitions in rendered commonmark
./0001-Output-GFM-admonition.patch
# TODO:add support for _parsing_ GFM admonitions too
# https://github.com/nix-community/nixvim/issues/2217
];
});
}
);
helpers = import ../lib/helpers.nix {
inherit lib;
pkgs = pkgsDoc;
};
nixvimPath = toString ./..; nixvimPath = toString ./..;
@ -74,7 +45,7 @@ let
.options [ "_module" ]; .options [ "_module" ];
options-json = options-json =
(pkgsDoc.nixosOptionsDoc { (pkgs.nixosOptionsDoc {
inherit (evaledModules) options; inherit (evaledModules) options;
inherit transformOptions; inherit transformOptions;
warningsAreErrors = false; warningsAreErrors = false;
@ -84,9 +55,9 @@ in
{ {
inherit options-json; inherit options-json;
man-docs = pkgsDoc.callPackage ./man { inherit options-json; }; man-docs = pkgs.callPackage ./man { inherit options-json; };
} }
// lib.optionalAttrs (!pkgsDoc.stdenv.isDarwin) ( // lib.optionalAttrs (!pkgs.stdenv.isDarwin) (
let let
mkSearch = mkSearch =
baseHref: baseHref:
@ -102,7 +73,7 @@ in
# Do not check if documentation builds fine on darwin as it fails: # Do not check if documentation builds fine on darwin as it fails:
# > sandbox-exec: pattern serialization length 69298 exceeds maximum (65535) # > sandbox-exec: pattern serialization length 69298 exceeds maximum (65535)
docs = pkgsDoc.callPackage ./mdbook { docs = pkgs.callPackage ./mdbook {
inherit evaledModules hmOptions transformOptions; inherit evaledModules hmOptions transformOptions;
# TODO: Find how to handle stable when 24.11 lands # TODO: Find how to handle stable when 24.11 lands
search = mkSearch "/nixvim/search/"; search = mkSearch "/nixvim/search/";

44
docs/pkgs.nix Normal file
View file

@ -0,0 +1,44 @@
{
system,
nixpkgs,
}:
let
# FIXME:
# Building the docs evaluates many package-option defaults, some of which are unfree.
# This usually happens when we include the package option value in another option's default without
# using a literalExpression defaultText.
config = {
allowUnfree = true;
};
# Extend nixpkg's lib, so that we can handle recursive leaf types such as `either`
libOverlay = final: prev: {
types = prev.types // {
either =
t1: t2:
prev.types.either t1 t2
// {
getSubOptions = prefix: t1.getSubOptions prefix // t2.getSubOptions prefix;
};
};
};
# Extended nixpkgs instance, with patches to nixos-render-docs
overlay = final: prev: {
lib = prev.lib.extend libOverlay;
nixos-render-docs = prev.nixos-render-docs.overrideAttrs (old: {
patches = old.patches or [ ] ++ [
# Adds support for GFM-style admonitions in rendered commonmark
./0001-Output-GFM-admonition.patch
# TODO:add support for _parsing_ GFM admonitions too
# https://github.com/nix-community/nixvim/issues/2217
];
});
};
in
import nixpkgs {
inherit config system;
overlays = [ overlay ];
}

View file

@ -1,15 +1,16 @@
{ inputs, ... }:
{ {
perSystem = perSystem =
{ {
pkgsUnfree,
config, config,
inputs', inputs',
system,
... ...
}: }:
{ {
packages = import ../docs { packages = import ../docs {
# Building the docs evaluates each plugin's default package, some of which are unfree inherit system;
pkgs = pkgsUnfree; inherit (inputs) nixpkgs;
inherit (inputs') nuschtosSearch; inherit (inputs') nuschtosSearch;
}; };