ldsalkjdsalkjdsalkj
This commit is contained in:
@@ -1,44 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# TODO: assert correct system
|
||||
|
||||
NSPAWN=nixos-@hostname@
|
||||
|
||||
TARBALL=./"$NSPAWN".tar #"https://github.com/tfc/nspawn-nixos/releases/download/v1.0/nixos-system-x86_64-linux.tar.xz"
|
||||
|
||||
test $(id -u) -eq 0 || {
|
||||
>&2 echo you must run this as root
|
||||
exit 1
|
||||
}
|
||||
|
||||
install_pkg() {
|
||||
# TODO: use bash hashmaps to map from apt to other package managers
|
||||
# * [x] apt
|
||||
# * [ ] apk
|
||||
# * [ ] pacman
|
||||
# * [ ] dnf
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y "$@"
|
||||
}
|
||||
|
||||
|
||||
if ! >/dev/null command -v systemd-nspawn; then
|
||||
# TODO: support more than ubuntu
|
||||
install_pkg systemd-container
|
||||
fi
|
||||
|
||||
machinectl remove "$NSPAWN" || true # TODO: interactive?
|
||||
#machinectl pull-tar "https://github.com/tfc/nspawn-nixos/releases/download/v1.0/nixos-system-x86_64-linux.tar.xz" "$NSPAWN" --verify=no
|
||||
machinectl import-tar "$TARBALL" "$NSPAWN"
|
||||
|
||||
# use host network
|
||||
cat <<"EOF" > /etc/systemd/nspawn/"$NSPAWN".nspawn
|
||||
[Network]
|
||||
VirtualEthernet=no
|
||||
EOF
|
||||
|
||||
machinectl enable "$NSPAWN"
|
||||
machinectl start "$NSPAWN"
|
||||
echo Setting root password...
|
||||
machinectl shell "$NSPAWN" /usr/bin/env passwd
|
||||
|
||||
machinectl status "$NSPAWN"
|
||||
@@ -2,12 +2,13 @@
|
||||
, pkgs
|
||||
}:
|
||||
|
||||
# assumes nspawn-tarball.nix is mixed into it
|
||||
# this assumes github:tfc/nspawn-nixos nspawn-tarball.nix is mixed into it
|
||||
nixosConfiguration:
|
||||
|
||||
let
|
||||
|
||||
hostname = nixosConfiguration.config.networking.hostName;
|
||||
inherit (nixosConfiguration.config.nixpkgs) system;
|
||||
|
||||
setup = pkgs.substituteAll {
|
||||
src = ./setup-nspawn.sh;
|
||||
@@ -23,7 +24,9 @@ pkgs.runCommandNoCC "nspawn-setup-${hostname}.sh" {
|
||||
nativeBuildInputs = with pkgs; [ makeself ];
|
||||
} ''
|
||||
mkdir -p archive/
|
||||
ln -s ${setup} archive/setup.sh
|
||||
ln -s ${tarball}/* archive/nixos-${hostname}.tar
|
||||
makeself --follow archive/ $out setup-nixos-nspawn-${hostname} ./setup.sh
|
||||
ln -s ${setup} archive/setup.sh
|
||||
ln -s ${tarball}/tarball/nixos-system-${system}.tar.xz archive/nixos-${hostname}.tar.xz
|
||||
|
||||
echo tarball: ${tarball}
|
||||
makeself --nocomp --follow archive/ $out "setup-nixos-nspawn-${hostname}" ./setup.sh
|
||||
''
|
||||
45
pkgs/mk-nspawn-setup/setup-nspawn.sh
Normal file
45
pkgs/mk-nspawn-setup/setup-nspawn.sh
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# TODO: assert correct system
|
||||
|
||||
NSPAWN_NAME=nixos-@hostname@
|
||||
TARBALL=./nixos-@hostname@.tar.xz
|
||||
|
||||
test $(id -u) -eq 0 || {
|
||||
>&2 echo you must run this as root
|
||||
exit 1
|
||||
}
|
||||
|
||||
if ! >/dev/null command -v systemd-nspawn; then
|
||||
>&2 echo "systemd-nspawn" not found in PATH
|
||||
>&2 echo consider installing 'systemd-container'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! >/dev/null command -v machinectl; then
|
||||
>&2 echo "machinectl" not found in PATH
|
||||
>&2 echo consider installing 'systemd-container'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -ex
|
||||
|
||||
machinectl remove "$NSPAWN_NAME" || true # TODO: is this interactive?
|
||||
#machinectl pull-tar "https://github.com/tfc/nspawn-nixos/releases/download/v1.0/nixos-system-x86_64-linux.tar.xz" "$NSPAWN_NAME" --verify=no
|
||||
machinectl import-tar "$TARBALL" "$NSPAWN_NAME"
|
||||
|
||||
# use host network
|
||||
mkdir -p /etc/systemd/nspawn
|
||||
tee /etc/systemd/nspawn/"$NSPAWN_NAME".nspawn <<"EOF"
|
||||
[Network]
|
||||
VirtualEthernet=no
|
||||
EOF
|
||||
|
||||
NSPAWN_NAME=nixos-brumlebasse
|
||||
machinectl enable "$NSPAWN_NAME"
|
||||
machinectl start "$NSPAWN_NAME"
|
||||
|
||||
echo Please set a root password
|
||||
machinectl shell "$NSPAWN_NAME" /usr/bin/env passwd
|
||||
|
||||
machinectl status "$NSPAWN_NAME"
|
||||
756
pkgs/pdocs.nix
Normal file
756
pkgs/pdocs.nix
Normal file
@@ -0,0 +1,756 @@
|
||||
{ lib
|
||||
, pkgs
|
||||
}:
|
||||
|
||||
# TODO: pagefind
|
||||
|
||||
let
|
||||
python-builtins = [
|
||||
"builtins"
|
||||
"os"
|
||||
"array"
|
||||
"sys"
|
||||
"time"
|
||||
"traceback"
|
||||
"pathlib"
|
||||
"itertools"
|
||||
"functools"
|
||||
"unittest"
|
||||
"argparse"
|
||||
"asyncio"
|
||||
"textwrap"
|
||||
"collections"
|
||||
"configparser"
|
||||
"concurrent"
|
||||
"contextlib"
|
||||
"operator"
|
||||
"pickle"
|
||||
"copy"
|
||||
"ctypes"
|
||||
"pprint"
|
||||
"shlex"
|
||||
"re"
|
||||
"abc"
|
||||
"ast"
|
||||
"random"
|
||||
"shutil"
|
||||
"sqlite3"
|
||||
"subprocess"
|
||||
"statistics"
|
||||
"string"
|
||||
"tarfile"
|
||||
"typing"
|
||||
"uuid"
|
||||
"warnings"
|
||||
"wave"
|
||||
"dataclasses"
|
||||
"glob"
|
||||
"gzip"
|
||||
"inspect"
|
||||
"json"
|
||||
"base64"
|
||||
"zipfile"
|
||||
];
|
||||
|
||||
|
||||
#python-packages = with pkgs.python3Packages; [ cached-property ];
|
||||
|
||||
#python-packages = lib.pipe pkgs.python3Packages [
|
||||
# builtins.attrValues
|
||||
# (builtins.filter lib.isDerivation)
|
||||
#];
|
||||
/** /
|
||||
python-packages = with pkgs.python3Packages; [
|
||||
more-itertools
|
||||
altair
|
||||
pygal
|
||||
vispy
|
||||
seaborn
|
||||
bokeh
|
||||
plotly
|
||||
tabulate
|
||||
wavefile
|
||||
moderngl
|
||||
pydantic
|
||||
typer
|
||||
ptpython
|
||||
colorama
|
||||
pyjwt
|
||||
zipp
|
||||
aiofiles
|
||||
aafigure
|
||||
urllib3
|
||||
tesserocr
|
||||
trio
|
||||
starlette
|
||||
pyverilog
|
||||
nixpkgs
|
||||
wavedrom
|
||||
httpx
|
||||
pyquery
|
||||
mpv
|
||||
beautifulsoup4
|
||||
hid
|
||||
hidapi
|
||||
#sanic # broken build?
|
||||
paramiko
|
||||
pydub
|
||||
aiohttp
|
||||
papermill
|
||||
rtoml
|
||||
redis
|
||||
numpy
|
||||
#domeneshop
|
||||
munch
|
||||
migen
|
||||
amaranth
|
||||
click
|
||||
attrs
|
||||
graphviz
|
||||
baron
|
||||
redbaron
|
||||
fastapi
|
||||
pytest
|
||||
#pyglet # pyglet.com fails, windows only
|
||||
#pygame # pygame.movie fails on pdoc3, pdoc hangs
|
||||
plotly
|
||||
peewee
|
||||
parsel
|
||||
pandas
|
||||
#mutmut # moved to toplevel from python3Packages
|
||||
mlflow
|
||||
meshio
|
||||
#einops # depends on tensorflow, which is broken ATM
|
||||
aiodns
|
||||
json5
|
||||
seaborn
|
||||
matplotlib
|
||||
dash
|
||||
rarfile
|
||||
pyramid
|
||||
pygtail
|
||||
codecov
|
||||
nbconvert
|
||||
humanfriendly
|
||||
pendulum
|
||||
jsonpickle
|
||||
cachetools
|
||||
wrapt
|
||||
lxml
|
||||
chardet
|
||||
yarl
|
||||
frozenlist
|
||||
itsdangerous
|
||||
xmltodict
|
||||
cached-property
|
||||
toolz
|
||||
aioitertools
|
||||
coconut
|
||||
asyncpg
|
||||
aiopg
|
||||
libsass
|
||||
pytorch
|
||||
pytorch-lightning
|
||||
pillow
|
||||
trio
|
||||
tqdm
|
||||
rich
|
||||
pudb
|
||||
pony
|
||||
mido
|
||||
jedi
|
||||
h5py
|
||||
atom
|
||||
toml
|
||||
pyyaml
|
||||
jinja2
|
||||
requests
|
||||
h5py
|
||||
imageio
|
||||
pygments
|
||||
trimesh
|
||||
shapely
|
||||
#faiss
|
||||
#geomloss
|
||||
#mesh_to_sdf
|
||||
#pyrender
|
||||
];
|
||||
/**/
|
||||
python-packages = with pkgs.python3Packages; [
|
||||
aiocurrencylayer
|
||||
aioitertools
|
||||
aiolifx-connection
|
||||
aiolifx-effects
|
||||
aiomisc
|
||||
aionotify
|
||||
aiorun
|
||||
aioshutil
|
||||
aiozeroconf
|
||||
alembic
|
||||
aliyun-python-sdk-dbfs
|
||||
allure-python-commons-test
|
||||
amply
|
||||
angr
|
||||
aniso8601
|
||||
anonip
|
||||
ansible
|
||||
ansicolor
|
||||
ansiwrap
|
||||
apptools
|
||||
aprslib
|
||||
aqipy-atmotech
|
||||
arc4
|
||||
argcomplete
|
||||
args
|
||||
arpeggio
|
||||
asgi-csrf
|
||||
asn1tools
|
||||
aspectlib
|
||||
astor
|
||||
async-lru
|
||||
asynccmd
|
||||
asyncio-throttle
|
||||
asynctest
|
||||
asysocks
|
||||
atom
|
||||
atomicwrites-homeassistant
|
||||
attrdict
|
||||
autopage
|
||||
autopep8
|
||||
avea
|
||||
avro3k
|
||||
awacs
|
||||
awswrangler
|
||||
azure-mgmt-nspkg
|
||||
b2sdk
|
||||
behave
|
||||
bitarray
|
||||
bitcoinrpc
|
||||
bitlist
|
||||
bluetooth-auto-recovery
|
||||
bnunicodenormalizer
|
||||
boschshcpy
|
||||
bottleneck
|
||||
brelpy
|
||||
bsddb3
|
||||
bson
|
||||
bunch
|
||||
cart
|
||||
casa-formats-io
|
||||
cftime
|
||||
chacha20poly1305
|
||||
cmigemo
|
||||
coapthon3
|
||||
cogapp
|
||||
coinmetrics-api-client
|
||||
commentjson
|
||||
cons
|
||||
contexttimer
|
||||
contourpy
|
||||
coreapi
|
||||
cppheaderparser
|
||||
dash-table
|
||||
dask-jobqueue
|
||||
decli
|
||||
deep-chainmap
|
||||
diceware
|
||||
diff-cover
|
||||
django-bootstrap4
|
||||
django-cache-url
|
||||
django-cacheops
|
||||
django-celery-results
|
||||
django-compressor
|
||||
django-picklefield
|
||||
django-reversion
|
||||
django-tables2
|
||||
djangorestframework-guardian2
|
||||
djmail
|
||||
doit-py
|
||||
dotmap
|
||||
drf-nested-routers
|
||||
dugong
|
||||
dunamai
|
||||
dvc-render
|
||||
entrance-with-router-features
|
||||
ephemeral-port-reserve
|
||||
et_xmlfile
|
||||
eth-hash
|
||||
eth-keys
|
||||
eve
|
||||
exdown
|
||||
exif
|
||||
face
|
||||
fastbencode
|
||||
fastcache
|
||||
fastentrypoints
|
||||
fe25519
|
||||
filetype
|
||||
fingerprints
|
||||
fire
|
||||
fixtures
|
||||
flake8-future-import
|
||||
flask-gravatar
|
||||
flask-swagger
|
||||
flask-swagger-ui
|
||||
fpdf
|
||||
fs
|
||||
ftputil
|
||||
funcparserlib
|
||||
funcy
|
||||
fuzzywuzzy
|
||||
gbinder-python
|
||||
gcovr
|
||||
generic
|
||||
geoip
|
||||
geojson
|
||||
ghrepo-stats
|
||||
gibberish-detector
|
||||
google-cloud-bigquery-logging
|
||||
google-cloud-dns
|
||||
gpaw
|
||||
graphql-server-core
|
||||
greeclimate
|
||||
gunicorn
|
||||
gvm-tools
|
||||
headerparser
|
||||
heapdict
|
||||
hijri-converter
|
||||
hledger-utils
|
||||
htmllaundry
|
||||
httpie
|
||||
httpx
|
||||
hyperlink
|
||||
imageio-ffmpeg
|
||||
imaplib2
|
||||
importlib-resources
|
||||
inotifyrecursive
|
||||
inquirer
|
||||
insteon-frontend-home-assistant
|
||||
intelhex
|
||||
interface-meta
|
||||
ipwhl
|
||||
irctokens
|
||||
isounidecode
|
||||
itemloaders
|
||||
iteration-utilities
|
||||
itsdangerous
|
||||
itypes
|
||||
jaeger-client
|
||||
javaproperties
|
||||
jax
|
||||
joblib
|
||||
json-rpc
|
||||
json-tricks
|
||||
jsonpatch
|
||||
junit-xml
|
||||
jupyter-cache
|
||||
jupyter-packaging
|
||||
jupyterlab-pygments
|
||||
jupyterlab_launcher
|
||||
jxmlease
|
||||
keyrings-cryptfile
|
||||
korean-lunar-calendar
|
||||
kubernetes
|
||||
language-data
|
||||
lazy
|
||||
lcov_cobertura
|
||||
ldap3
|
||||
ledger
|
||||
libais
|
||||
libarchive-c
|
||||
libarcus
|
||||
libgpuarray
|
||||
license-expression
|
||||
lightwave
|
||||
lima
|
||||
lit
|
||||
lockfile
|
||||
log-symbols
|
||||
luhn
|
||||
m3u8
|
||||
magic-wormhole
|
||||
mail-parser
|
||||
manhole
|
||||
markups
|
||||
marshmallow-oneofschema
|
||||
marshmallow-polyfield
|
||||
mastodon-py
|
||||
maxminddb
|
||||
mdurl
|
||||
mdutils
|
||||
meep
|
||||
mergedict
|
||||
merkletools
|
||||
mip
|
||||
mkdocs
|
||||
mkdocs-material-extensions
|
||||
msoffcrypto-tool
|
||||
multimethod
|
||||
multipart
|
||||
multiprocess
|
||||
mypy
|
||||
nanoid
|
||||
napalm
|
||||
napalm-hp-procurve
|
||||
nbdime
|
||||
nbformat
|
||||
nbval
|
||||
ndtypes
|
||||
neo4j
|
||||
nessclient
|
||||
netdata
|
||||
nose-randomly
|
||||
notebook-shim
|
||||
nsz
|
||||
nulltype
|
||||
ome-zarr
|
||||
onetimepass
|
||||
oocsi
|
||||
opsdroid_get_image_size
|
||||
opytimark
|
||||
oracledb
|
||||
pa-ringbuffer
|
||||
pad4pi
|
||||
papermill
|
||||
parsimonious
|
||||
parsley
|
||||
pcapy-ng
|
||||
pdoc
|
||||
phonopy
|
||||
pick
|
||||
picobox
|
||||
pipdate
|
||||
pkce
|
||||
pkgconfig
|
||||
pkginfo
|
||||
plantuml
|
||||
platformdirs
|
||||
plum-py
|
||||
plyer
|
||||
plyvel
|
||||
progressbar33
|
||||
prometheus-client
|
||||
promise
|
||||
prox-tv
|
||||
pulumi-command
|
||||
pure-cdb
|
||||
py-dmidecode
|
||||
py-multiaddr
|
||||
py-multibase
|
||||
py-nextbusnext
|
||||
py-zabbix
|
||||
pyaehw4a1
|
||||
pyatv
|
||||
pybullet
|
||||
pycangjie
|
||||
pycddl
|
||||
pycep-parser
|
||||
pydevccu
|
||||
pyftdi
|
||||
pyfume
|
||||
pygatt
|
||||
pygetwindow
|
||||
pyglet
|
||||
pygmars
|
||||
pyhcl
|
||||
pyheos
|
||||
pyinstrument
|
||||
pykdtree
|
||||
pylint-flask
|
||||
pymeeus
|
||||
pymetar
|
||||
pymodbus
|
||||
pymysensors
|
||||
pypdf
|
||||
pypdf3
|
||||
pyprind
|
||||
pyqtwebengine
|
||||
pyrainbird
|
||||
pyrmvtransport
|
||||
pyro5
|
||||
pyrogram
|
||||
pyrr
|
||||
pyscss
|
||||
pysdl2
|
||||
pysearpc
|
||||
pysensors
|
||||
pyside2
|
||||
pysmf
|
||||
pysmi
|
||||
pysml
|
||||
pysmt
|
||||
pysnmp-pyasn1
|
||||
pyspf
|
||||
pysvg-py3
|
||||
pysychonaut
|
||||
pytest-bdd
|
||||
pytest-catchlog
|
||||
pytest-django
|
||||
pytest-expect
|
||||
pytest-factoryboy
|
||||
pytest-flask
|
||||
pytest-isort
|
||||
pytest-relaxed
|
||||
pytest-snapshot
|
||||
pytest-socket
|
||||
pytest-virtualenv
|
||||
pytestcache
|
||||
python-baseconv
|
||||
python-bidi
|
||||
python-daemon
|
||||
python-decouple
|
||||
python-editor
|
||||
python-ipware
|
||||
python-ldap-test
|
||||
python-packer
|
||||
python-socketio
|
||||
python-status
|
||||
python-u2flib-server
|
||||
pytimeparse
|
||||
pytm
|
||||
pytzdata
|
||||
pyvisa
|
||||
pywemo
|
||||
pyworld
|
||||
pyxl3
|
||||
qtile
|
||||
reactivex
|
||||
rebulk
|
||||
reikna
|
||||
related
|
||||
repath
|
||||
repoze_lru
|
||||
requests-pkcs12
|
||||
requirements-parser
|
||||
result
|
||||
retrying
|
||||
rich-argparse-plus
|
||||
rivet
|
||||
rouge-score
|
||||
rtp
|
||||
rx
|
||||
safe
|
||||
sasmodels
|
||||
scikit-bio
|
||||
scikit-fmm
|
||||
seccomp
|
||||
securetar
|
||||
sendgrid
|
||||
sentence-transformers
|
||||
serialio
|
||||
setuptools-git
|
||||
sexpdata
|
||||
sfrbox-api
|
||||
sh
|
||||
sievelib
|
||||
simber
|
||||
simpleaudio
|
||||
simpleeval
|
||||
snapshottest
|
||||
soapysdr
|
||||
somajo
|
||||
speedtest-cli
|
||||
sphinx_pypi_upload
|
||||
sphinxcontrib-openapi
|
||||
sqlobject
|
||||
starkbank-ecdsa
|
||||
starlette
|
||||
staticjinja
|
||||
stdiomask
|
||||
strategies
|
||||
stravalib
|
||||
strenum
|
||||
strictyaml
|
||||
stringcase
|
||||
stringly
|
||||
sympy
|
||||
syncer
|
||||
sysv_ipc
|
||||
tabview
|
||||
takethetime
|
||||
tblite
|
||||
tcolorpy
|
||||
termstyle
|
||||
testing-common-database
|
||||
textacy
|
||||
textwrap3
|
||||
textx
|
||||
tweepy
|
||||
twilio
|
||||
twitter-common-collections
|
||||
twitter-common-confluence
|
||||
types-futures
|
||||
types-redis
|
||||
types-urllib3
|
||||
typesystem
|
||||
udatetime
|
||||
ukpostcodeparser
|
||||
unicrypto
|
||||
unidecode
|
||||
unidic-lite
|
||||
unpaddedbase64
|
||||
update-copyright
|
||||
ush
|
||||
vdirsyncer
|
||||
vector
|
||||
venusian
|
||||
versioneer
|
||||
veryprettytable
|
||||
videocr
|
||||
voluptuous-stubs
|
||||
volvooncall
|
||||
wakeonlan
|
||||
web
|
||||
webcolors
|
||||
webhelpers
|
||||
wfuzz
|
||||
whichcraft
|
||||
widlparser
|
||||
winacl
|
||||
wordfreq
|
||||
ws4py
|
||||
wsdiscovery
|
||||
wsgi-intercept
|
||||
xdg
|
||||
xhtml2pdf
|
||||
xstatic-jquery-file-upload
|
||||
xstatic-pygments
|
||||
yamllint
|
||||
yaramod
|
||||
yubico
|
||||
zarr
|
||||
zc_lockfile
|
||||
zigpy-zigate
|
||||
zigpy-znp
|
||||
zipstream
|
||||
zipstream-ng
|
||||
zope_proxy
|
||||
zope_schema
|
||||
zopfli
|
||||
];
|
||||
/**/
|
||||
|
||||
mkPdoc = use-pdoc3: drv: let
|
||||
isBuiltin = !lib.isDerivation drv;
|
||||
name = if isBuiltin then drv else drv.pname;
|
||||
desc = if isBuiltin then "builtin" else drv.meta.description;
|
||||
version = if isBuiltin then "-" else drv.version;
|
||||
homepage = if isBuiltin
|
||||
then "https://docs.python.org/3/library/${drv}.html"
|
||||
else drv.meta.homepage or "-";
|
||||
doc = pkgs.runCommand "pdoc${if use-pdoc3 then "3" else ""}-${name}-docs" {
|
||||
nativeBuildInputs = (if use-pdoc3
|
||||
then [pkgs.python3Packages.pdoc3]
|
||||
else [pkgs.python3Packages.pdoc])
|
||||
++ lib.optionals (!isBuiltin) [ drv ]
|
||||
++ lib.optionals (!isBuiltin) (lib.pipe (drv.passthru.optional-dependencies or {}) [
|
||||
builtins.attrValues
|
||||
lib.flatten
|
||||
(builtins.filter (drv':
|
||||
(builtins.tryEval drv'.outPath).success
|
||||
))
|
||||
]);
|
||||
|
||||
env.NAME = lib.toLower name;
|
||||
env.DESC = lib.escapeXML desc;
|
||||
# TODO: license
|
||||
# TODO: build html with something better than bash
|
||||
} ''
|
||||
LITERALS=()
|
||||
${lib.optionalString isBuiltin ''
|
||||
LITERALS+=("${name}")
|
||||
_tmp="$(python -c 'import ${name}; print((getattr(${name}, "__doc__", "") or "builtin").split("\n")[0])')"
|
||||
test "$?" -eq 0 && DESC="$_tmp"
|
||||
''}
|
||||
${lib.optionalString (!isBuiltin) ''
|
||||
LITERALS+=(${lib.escapeShellArgs (
|
||||
(drv.pythonImportsCheck or []) ++
|
||||
(drv.pythonImportsExtraCheck or [])
|
||||
)})
|
||||
|
||||
pushd ${drv}/${pkgs.python3.sitePackages}
|
||||
shopt -s globstar
|
||||
#for fname in **/*; do
|
||||
for fname in *; do
|
||||
if test -f "$fname" && ( test "''${fname##*.}" = "py" || test "''${fname##*.}" = "so" ) ; then
|
||||
[[ "$fname" =~ (^|/)"_"* ]] && continue
|
||||
LITERALS+=("$(echo "''${fname%%.py*}" | tr "/-" "._" )")
|
||||
elif test -d "$fname" && test -f "$fname"/__init__.py; then
|
||||
LITERALS+=("$(echo "$fname" | tr "/-" "._" )")
|
||||
fi
|
||||
done
|
||||
popd
|
||||
|
||||
# make unique
|
||||
LITERALS=( $(printf "%q\n" "''${LITERALS[@]}" | sort -u) )
|
||||
echo "''${LITERALS[0]}"
|
||||
''}
|
||||
|
||||
( timeout 900s ${if !use-pdoc3
|
||||
then ''pdoc --no-search --math --no-browser --output-directory $out "''${LITERALS[@]}"''
|
||||
else ''pdoc3 --skip-errors --output-dir $out --html "''${LITERALS[@]}" --force''
|
||||
} 2>&1 | tee "$NAME".log ) || true
|
||||
mkdir -p $out
|
||||
cp "$NAME".log $out
|
||||
test -f $out/index.html && rm -v $out/index.html
|
||||
|
||||
function write {
|
||||
{ printf "%s" "$@"; echo; } >> $out/index.part-"$NAME".html
|
||||
}
|
||||
|
||||
write "<tr>"
|
||||
if test -f $out/"''${LITERALS[0]}".html; then
|
||||
write "<td><a href=\"''${LITERALS[0]}.html\">${lib.escapeXML name}</a>"
|
||||
elif test -d $out/"''${LITERALS[0]}"; then
|
||||
write "<td><a href=\"''${LITERALS[0]}/\">${lib.escapeXML name}</a>"
|
||||
else
|
||||
write "<td>${lib.escapeXML name}"
|
||||
fi
|
||||
write "<td>${version}"
|
||||
if test -s $out/$NAME.log; then
|
||||
write "<td><a href=\"$NAME.log\">log</a>"
|
||||
else
|
||||
write "<td>-"
|
||||
fi
|
||||
write "<td>$DESC"
|
||||
${if homepage == "-" then ''
|
||||
write "<td>n/a"
|
||||
'' else ''
|
||||
write "<td><a href=\"${homepage}\">${homepage}</a>"
|
||||
''}
|
||||
write "</tr>"
|
||||
'';
|
||||
fallback = pkgs.writeTextDir "index.part-${lib.toLower name}.html" ''
|
||||
<tr>
|
||||
<td>${lib.escapeXML name}
|
||||
<td>${version}
|
||||
<td>⨯
|
||||
<td>${lib.escapeXML desc}
|
||||
<td>${if homepage == "-" then
|
||||
"n/a"
|
||||
else
|
||||
''<a href="${homepage}">${homepage}</a>''
|
||||
}
|
||||
</tr>
|
||||
'';
|
||||
in if (builtins.tryEval doc.outPath).success
|
||||
then doc
|
||||
else fallback;
|
||||
|
||||
mkPdocs = use-pdoc3: with builtins; pkgs.symlinkJoin {
|
||||
name = "pdoc-docs";
|
||||
paths = map (mkPdoc use-pdoc3) (python-builtins ++ python-packages);
|
||||
# note: globs are sorted
|
||||
postBuild = ''
|
||||
shopt -s nocaseglob
|
||||
>>$out/index.html echo "<!DOCTYPE html>"
|
||||
>>$out/index.html echo "<table><tr><th>name<th>version<th>log<th>description<th>homepage</tr>"
|
||||
>>$out/index.html cat $out/index.part-*.html
|
||||
>>$out/index.html echo "</table>"
|
||||
rm $out/index.part-*.html
|
||||
'';
|
||||
};
|
||||
in {
|
||||
pdocs = mkPdocs false;
|
||||
pdocs3 = mkPdocs true;
|
||||
}
|
||||
Reference in New Issue
Block a user