{"id":37074743,"url":"https://github.com/texbld/texbld","last_synced_at":"2026-01-14T08:47:47.721Z","repository":{"id":38072476,"uuid":"497167039","full_name":"texbld/texbld","owner":"texbld","description":"A dockerized build tool for paper compilation","archived":false,"fork":false,"pushed_at":"2023-04-22T22:55:26.000Z","size":183,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-25T15:16:28.886Z","etag":null,"topics":["docker","latex","package-manager","reproducibility"],"latest_commit_sha":null,"homepage":"https://texbld.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/texbld.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-27T23:48:10.000Z","updated_at":"2023-11-23T05:07:07.000Z","dependencies_parsed_at":"2024-11-15T10:31:57.297Z","dependency_job_id":"b282cef6-eeef-43ec-b831-098cbd00d80c","html_url":"https://github.com/texbld/texbld","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/texbld/texbld","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texbld%2Ftexbld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texbld%2Ftexbld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texbld%2Ftexbld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texbld%2Ftexbld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/texbld","download_url":"https://codeload.github.com/texbld/texbld/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texbld%2Ftexbld/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","latex","package-manager","reproducibility"],"created_at":"2026-01-14T08:47:47.099Z","updated_at":"2026-01-14T08:47:47.700Z","avatar_url":"https://github.com/texbld.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# texbld\n\nAlthough we expect LaTeX compilation to be a declarative process (source to\nPDF), the compilations for large projects eventually require a large number of\ncustom external programs and dependencies. For example, a compilation step might\nrequire running a script written in haskell, piping that output into pandoc,\nthen putting everything into a LaTeX file for compilation with `pdflatex`. Good\nluck installing all of those programs (ESPECIALLY the pesky ghc dependencies) in\na production system!\n\nFurthermore, different LaTeX distributions will have ever so slightly different\noutputs (especially when working with biblatex), which is an issue for\nreproducibility.\n\nThe first take on these problems was\n[mktex](https://github.com/junikimm717/mktex). Although it solves some\ndependency issues, it suffers from the various fragility and reproducibility\nissues that come with using pre-built docker images. Furthermore, because of its\ndesign, these images were forced to be monolithic, bloated, and ultimately\ninflexible. Each build should have exactly the dependencies that it requires\nand nothing more!\n\n`texbld` aims to solve these problems by providing an environment where build\nimages are fully reproducible and shareable. It uses docker for absolute system\nreproducibility and for usage across all platforms which it supports (MacOS, its\nnative Linux, and Windows (untested)).\n\nImage hashes are used to ensure that any docker image is **completely immutable**,\npreventing dependency modification issues.\n\nUsers can specify their build image in a simple TOML file (along with associated\nfiles) and upload them to github, from which it can be inherited and used by\nother people in their own projects.\n\nImages can be inherited from packages in the local filesystem, GitHub, or Docker.\n\n## Installation\n\nThe project is live on [pypi](https://pypi.org/project/texbld/).\n\nVarious installation methods are described [here](https://texbld.com/docs).\n\n### NixOS\n\nCheck the nix expressions in the release branch and configure accordingly.\n\nIn order to build the master branch, run `nix-build` or `nix build` (to use\nflakes).\n\n## Setting Up This Project\n\n### NixOS\n\nRunning `nix develop` **should** set up everything. Note, however, that the\nresulting poetry virtual environment will be installed in\n`~/.cache/pypoetry/virtualenvs`, so it's not completely nix-based.\n\n### Non-NixOS\n\nThis project uses poetry as its dependency manager. Simply run `poetry install`\nand `poetry shell` inside the project directory, and you should land in a\nvirtual environment with all of your dependencies.\n\n### Testing\n\nIn order to run tests in the virtual environment, run `pytest`.\n\n## The Local Environment\n\nThe project configuration file should be in `(project root)/texbld.toml`, while\nlocal image configurations should be in `$HOME/.config/texbld/packages`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftexbld%2Ftexbld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftexbld%2Ftexbld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftexbld%2Ftexbld/lists"}