Technische Universität Braunschweig
  • Study & Teaching
    • Beginning your Studies
      • Prospective Students
      • Degree Programmes
      • Application
      • Fit4TU
      • Why Braunschweig?
    • During your Studies
      • Fresher's Hub
      • Term Dates
      • Courses
      • Practical Information
      • Beratungsnavi
      • Additional Qualifications
      • Financing and Costs
      • Special Circumstances
      • Health and Well-being
      • Campus life
    • At the End of your Studies
      • Discontinuation and Credentials Certification
      • After graduation
      • Alumni*ae
    • For Teaching Staff
      • Strategy, Offers and Information
      • Learning Management System Stud.IP
    • Contact
      • Study Service Centre
      • Academic Advice Service
      • Student Office
      • Career Service
  • Research
    • Research Profile
      • Core Research Areas
      • Clusters of Excellence at TU Braunschweig
      • Research Projects
      • Research Centres
      • Professors‘ Research Profiles
    • Early Career Researchers
      • Support in the early stages of an academic career
      • PhD-Students
      • Postdocs
      • Junior research group leaders
      • Junior Professorship and Tenure-Track
      • Habilitation
      • Service Offers for Scientists
    • Research Data & Transparency
      • Transparency in Research
      • Research Data
      • Open Access Strategy
      • Digital Research Announcement
    • Research Funding
      • Research Funding Network
      • Research funding
    • Contact
      • Research Services
      • Academy for Graduates
  • International
    • International Students
      • Why Braunschweig?
      • Degree seeking students
      • Exchange Studies
      • TU Braunschweig Summer School
      • Refugees
      • International Student Support
    • Going Abroad
      • Studying abroad
      • Internships abroad
      • Teaching and research abroad
      • Working abroad
    • International Researchers
      • Welcome Support
      • PhD Studies
      • Service for host institutes
    • Language and intercultural competence training
      • Learning German
      • Learning Foreign Languages
      • Intercultural Communication
    • International Profile
      • Internationalisation
      • International Cooperations
      • Strategic Partnerships
      • International networks
    • International House
      • About us
      • Contact & Office Hours
      • News and Events
      • International Days
      • 5th Student Conference: Internationalisation of Higher Education
      • Newsletter, Podcast & Videos
      • Job Advertisements
  • TU Braunschweig
    • Our Profile
      • Aims & Values
      • Regulations and Guidelines
      • Alliances & Partners
      • The University Development Initiative 2030
      • Foundation University
      • Facts & Figures
      • Our History
    • Career
      • Working at TU Braunschweig
      • Vacancies
    • Economy & Business
      • Entrepreneurship
      • Friends & Supporters
    • General Public
      • Check-in for Students
      • The Student House
      • Access to the University Library
    • Media Services
      • Communications and Press Service
      • Services for media
      • Film and photo permits
      • Advices for scientists
      • Topics and stories
    • Contact
      • General Contact
      • Getting here
  • Organisation
    • Presidency & Administration
      • Executive Board
      • Designated Offices
      • Administration
      • Committees
    • Faculties
      • Carl-Friedrich-Gauß-Fakultät
      • Faculty of Life Sciences
      • Faculty of Architecture, Civil Engineering and Environmental Sciences
      • Faculty of Mechanical Engineering
      • Faculty of Electrical Engineering, Information Technology, Physics
      • Faculty of Humanities and Education
    • Institutes
      • Institutes from A to Z
    • Facilities
      • University Library
      • Gauß-IT-Zentrum
      • Professional and Personnel Development
      • International House
      • The Project House of the TU Braunschweig
      • Transfer Service
      • University Sports Center
      • Facilities from A to Z
    • Equal Opportunity Office
      • Equal Opportunity Office
      • Family
      • Diversity for Students
  • Search
  • Quicklinks
    • People Search
    • Webmail
    • cloud.TU Braunschweig
    • Messenger
    • Cafeteria
    • Courses
    • Stud.IP
    • Library Catalogue
    • IT Services
    • Information Portal (employees)
    • Link Collection
    • DE
    • EN
    • IBR YouTube
    • Facebook
    • Instagram
    • YouTube
    • LinkedIn
    • Mastodon
Menu
  • Organisation
  • Faculties
  • Carl-Friedrich-Gauß-Fakultät
  • Institutes
  • Institute of Operating Systems and Computer Networks
Logo IBR
IBR Login
  • Institute of Operating Systems and Computer Networks
    • News
    • About us
      • Whole Team
      • Directions
      • Floor Plan
      • Projects
      • Publications
      • Software
      • News Archive
    • Connected and Mobile Systems
      • Team
      • Courses
      • Theses
      • Projects
      • Publications
      • Software
      • Datasets
    • Reliable System Software
      • Overview
      • Team
      • Teaching
      • Theses & Jobs
      • Research
      • Publications
    • Algorithms
      • Team
      • Courses
      • Theses
      • Projects
      • Publications
    • Microprocessor Lab
    • Education
      • Winter 2025/2026
      • Summer 2025
      • Theses
    • Services
      • Library
      • Mailinglists
      • Webmail
      • Knowledge Base
      • Wiki
      • Account Management
      • Services Status
    • Spin-Offs
      • Docoloc
      • bliq (formerly AIPARK)
      • Confidential Technologies
    • Research Cooperations
      • IST.hub

Systematic Minimization of NixOS Installation and Update Sizes

SupervisorNiklas Gollenstede
IBR GroupVSS (Prof. Dietrich)
TypeBachelor Thesis, Master Thesis
Statustentative

Leaning on the package manager Nix and its declarative builds with pinned dependencies, NixOS is a Linux distribution that inherently supports side-by-side installation of package and system versions, deterministic deployment and atomic updates. This in principle makes it an excellent choice for many use cases, including embedded Linux systems, where reliability and reproducibility are crucial. Unfortunately, this currently comes at a cost: Among other things, NixOS installation sizes are large, and updates tend to incur a significant storage overhead, which is especially problematic for embedded Linux systems.

nixpkgs, NixOS'es package collection, is generally aimed at usability. That is, package definitions are written to include optional features and bind optional dependencies, both either by default or always -- depending on packaging quality. Limited (but not negligible) manual effort has shown that removing some of those optional features and dependencies can shrink NixOS'es installation size from about 1.3 GiB to 150MiB.

Considering the sheer size of the nixpkgs collection, the largest among all Linux distributions, however, an automatic approach is preferable. Given the definition of a nixpkgs application or a whole NixOS system and a set of functionality requirements (tests), it should determine which existing package options and new transformations of package definitions can be applied to minimize the number and size of the required packages, while still allowing the system to function as intended.

One of Nix's key strengths, yet in the scope of this project a related problem, is that it forces dependencies between packages to be expressed explicitly. If a software isn't told, by absolute paths, where to find its dependencies, it won't be able discover them. At some level, the declarative system definition has to define precisely which dependencies are to be used. The common way this is done in nixpkgs is that dependencies are passed into the build process, which grabs the paths and embeds them in the build output (e.g., binaries). As a result, updates to those dependencies will cause the package to be rebuilt with a different output. Minimizing package dependencies and output sizes helps with this, but more can be done.

An alternative approach, already sometimes used in nixpkgs, is late binding. Instead of embedding the dependency paths in the heavy output of the actual packages, a lightweight wrapper packages is added that injects the dependencies at runtime (for example, using environment variables). This way, the actual package output remains unchanged between different dependency versions, and only the lightweight wrapper packages need to be rebuilt and updated. Here too, automatic mechanisms should be devised to transform package definitions to use late binding where possible, partially replacing the current mechanisms that automate early binding.

This work may be quite challenging, as the point is not to manually edit individual package definitions, but to find general, generic transformations, which requires a quite deep understanding of how nixpkgs is structured and how software is built and executed. Targeted use of LLMs to improve existing package definitions (finding out which features and dependencies should have been made optional) may be a viable approach to prepare nixpkgs for the actual minimization process -- but this is not a "throw AI at it" project. Where an internal package build can't be convinced to omit dependencies that remain unused at runtime, stubbing may be an option.

It remains to be seen which existing or even new approaches of dependency trimming/debloating (those seem to be search terms) and late binding can be applied in this context.

This project is an extension of this prior work:

LCTES Conference B
reUpNix: Reconfigurable and Updateable Embedded Systems
Niklas Gollenstede, Ulf Kulau, Christian DietrichProceedings of the 24th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded SystemsACM Press2023.
PDF Slides Raw Data 10.1145/3589610.3596273 [BibTex]

BibTex Entry

@inproceedings{gollenstede:23:lctes,
location = {New York, NY, USA},
author = {Gollenstede, Niklas and Kulau, Ulf and Dietrich, Christian},
booktitle = {Proceedings of the 24th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems},
doi = {10.1145/3589610.3596273},
entrysubtype = {Conference},
isbn = {979-8-4007-0174-0/23/06},
month = {June},
publisher = {ACM Press},
title = {{reUpNix}: Reconfigurable and Updateable Embedded Systems},
year = {2023},
}


last changed 2025-10-13, 15:00 by System Account vss-deploy

For All Visitors

Vacancies of TU Braunschweig
Career Service' Job Exchange 
Merchandising

For Students

Term Dates
Courses
Degree Programmes
Information for Freshman
TUCard

Internal Tools

Glossary (GER-EN)
Change your Personal Data

Contact

Technische Universität Braunschweig
Universitätsplatz 2
38106 Braunschweig

P. O. Box: 38092 Braunschweig
GERMANY

Phone: +49 (0) 531 391-0

Getting here

© Technische Universität Braunschweig
Imprint Privacy Accessibility