forked from auxolotl/docs
2673 lines
79 KiB
HTML
2673 lines
79 KiB
HTML
|
|
||
|
<!doctype html>
|
||
|
<html lang="en" class="no-js">
|
||
|
<head>
|
||
|
|
||
|
<meta charset="utf-8">
|
||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
|
||
|
<meta name="description" content="Aux Documentation">
|
||
|
|
||
|
|
||
|
<meta name="author" content="Nixpkgs Aux, and Lix Contributors">
|
||
|
|
||
|
|
||
|
<link rel="canonical" href="https://docs.auxolotl.org/Nixpkgs/Build-Helpers/trivial-build-helpers.chapter/">
|
||
|
|
||
|
|
||
|
<link rel="prev" href="../testers.chapter/">
|
||
|
|
||
|
|
||
|
<link rel="next" href="../images/appimagetools.section/">
|
||
|
|
||
|
|
||
|
<link rel="icon" href="../../../assets/aux-logo.svg">
|
||
|
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.29">
|
||
|
|
||
|
|
||
|
|
||
|
<title>Trivial build helpers - Aux Docs</title>
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="../../../assets/stylesheets/main.76a95c52.min.css">
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
|
<link rel="stylesheet" href="https://fonts.bunny.net/css?family=IBM+Plex+Sans:300,300i,400,400i,700,700i%7CIBM+Plex+Mono:400,400i,700,700i&display=fallback">
|
||
|
<style>:root{--md-text-font:"IBM Plex Sans";--md-code-font:"IBM Plex Mono"}</style>
|
||
|
|
||
|
|
||
|
|
||
|
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<meta property="og:type" content="website" >
|
||
|
|
||
|
<meta property="og:title" content="Trivial build helpers {#chap-trivial-builders} - Aux Docs" >
|
||
|
|
||
|
<meta property="og:description" content="Aux Documentation" >
|
||
|
|
||
|
<meta property="og:image" content="https://docs.auxolotl.org/assets/images/social/Nixpkgs/Build-Helpers/trivial-build-helpers.chapter.png" >
|
||
|
|
||
|
<meta property="og:image:type" content="image/png" >
|
||
|
|
||
|
<meta property="og:image:width" content="1200" >
|
||
|
|
||
|
<meta property="og:image:height" content="630" >
|
||
|
|
||
|
<meta property="og:url" content="https://docs.auxolotl.org/Nixpkgs/Build-Helpers/trivial-build-helpers.chapter/" >
|
||
|
|
||
|
<meta name="twitter:card" content="summary_large_image" >
|
||
|
|
||
|
<meta name="twitter:title" content="Trivial build helpers {#chap-trivial-builders} - Aux Docs" >
|
||
|
|
||
|
<meta name="twitter:description" content="Aux Documentation" >
|
||
|
|
||
|
<meta name="twitter:image" content="https://docs.auxolotl.org/assets/images/social/Nixpkgs/Build-Helpers/trivial-build-helpers.chapter.png" >
|
||
|
|
||
|
|
||
|
|
||
|
</head>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue">
|
||
|
|
||
|
|
||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
|
<label class="md-overlay" for="__drawer"></label>
|
||
|
<div data-md-component="skip">
|
||
|
|
||
|
|
||
|
<a href="#chap-trivial-builders" class="md-skip">
|
||
|
Skip to content
|
||
|
</a>
|
||
|
|
||
|
</div>
|
||
|
<div data-md-component="announce">
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<header class="md-header" data-md-component="header">
|
||
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
||
|
<a href="../../.." title="Aux Docs" class="md-header__button md-logo" aria-label="Aux Docs" data-md-component="logo">
|
||
|
|
||
|
<img src="../../../assets/aux-logo.svg" alt="logo">
|
||
|
|
||
|
</a>
|
||
|
<label class="md-header__button md-icon" for="__drawer">
|
||
|
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||
|
</label>
|
||
|
<div class="md-header__title" data-md-component="header-title">
|
||
|
<div class="md-header__ellipsis">
|
||
|
<div class="md-header__topic">
|
||
|
<span class="md-ellipsis">
|
||
|
Aux Docs
|
||
|
</span>
|
||
|
</div>
|
||
|
<div class="md-header__topic" data-md-component="header-topic">
|
||
|
<span class="md-ellipsis">
|
||
|
|
||
|
Trivial build helpers
|
||
|
|
||
|
</span>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<form class="md-header__option" data-md-component="palette">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue" aria-label="Dark Mode" type="radio" name="__palette" id="__palette_0">
|
||
|
|
||
|
<label class="md-header__button md-icon" title="Dark Mode" for="__palette_1" hidden>
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
|
||
|
</label>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="blue" aria-label="Light Mode" type="radio" name="__palette" id="__palette_1">
|
||
|
|
||
|
<label class="md-header__button md-icon" title="Light Mode" for="__palette_0" hidden>
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
|
||
|
</label>
|
||
|
|
||
|
|
||
|
</form>
|
||
|
|
||
|
|
||
|
|
||
|
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||
|
|
||
|
|
||
|
|
||
|
<label class="md-header__button md-icon" for="__search">
|
||
|
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||
|
</label>
|
||
|
<div class="md-search" data-md-component="search" role="dialog">
|
||
|
<label class="md-search__overlay" for="__search"></label>
|
||
|
<div class="md-search__inner" role="search">
|
||
|
<form class="md-search__form" name="search">
|
||
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||
|
<label class="md-search__icon md-icon" for="__search">
|
||
|
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||
|
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||
|
</label>
|
||
|
<nav class="md-search__options" aria-label="Search">
|
||
|
|
||
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||
|
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||
|
</button>
|
||
|
</nav>
|
||
|
|
||
|
</form>
|
||
|
<div class="md-search__output">
|
||
|
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
||
|
<div class="md-search-result" data-md-component="search-result">
|
||
|
<div class="md-search-result__meta">
|
||
|
Initializing search
|
||
|
</div>
|
||
|
<ol class="md-search-result__list" role="presentation"></ol>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<div class="md-header__source">
|
||
|
<a href="https://git.auxolotl.org/auxolotl/docs" title="Go to repository" class="md-source" data-md-component="source">
|
||
|
<div class="md-source__icon md-icon">
|
||
|
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
|
||
|
</div>
|
||
|
<div class="md-source__repository">
|
||
|
auxolotl/docs
|
||
|
</div>
|
||
|
</a>
|
||
|
</div>
|
||
|
|
||
|
</nav>
|
||
|
|
||
|
</header>
|
||
|
|
||
|
<div class="md-container" data-md-component="container">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
|
||
|
<div class="md-grid">
|
||
|
<ul class="md-tabs__list">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-tabs__item">
|
||
|
<a href="../../.." class="md-tabs__link">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Aux Documentation Hub
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-tabs__item">
|
||
|
<a href="../../../TODO/" class="md-tabs__link">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
TODO
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-tabs__item">
|
||
|
<a href="../../../Aux/" class="md-tabs__link">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Aux
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-tabs__item">
|
||
|
<a href="../../../Lix/" class="md-tabs__link">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Lix
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-tabs__item">
|
||
|
<a href="../../../NixOS/appstream/" class="md-tabs__link">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
NixOS
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-tabs__item md-tabs__item--active">
|
||
|
<a href="../../" class="md-tabs__link">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Nixpkgs
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
</div>
|
||
|
</nav>
|
||
|
|
||
|
|
||
|
|
||
|
<main class="md-main" data-md-component="main">
|
||
|
<div class="md-main__inner md-grid">
|
||
|
|
||
|
|
||
|
|
||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||
|
<div class="md-sidebar__scrollwrap">
|
||
|
<div class="md-sidebar__inner">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
||
|
<label class="md-nav__title" for="__drawer">
|
||
|
<a href="../../.." title="Aux Docs" class="md-nav__button md-logo" aria-label="Aux Docs" data-md-component="logo">
|
||
|
|
||
|
<img src="../../../assets/aux-logo.svg" alt="logo">
|
||
|
|
||
|
</a>
|
||
|
Aux Docs
|
||
|
</label>
|
||
|
|
||
|
<div class="md-nav__source">
|
||
|
<a href="https://git.auxolotl.org/auxolotl/docs" title="Go to repository" class="md-source" data-md-component="source">
|
||
|
<div class="md-source__icon md-icon">
|
||
|
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
|
||
|
</div>
|
||
|
<div class="md-source__repository">
|
||
|
auxolotl/docs
|
||
|
</div>
|
||
|
</a>
|
||
|
</div>
|
||
|
|
||
|
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="../../.." class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Aux Documentation Hub
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="../../../TODO/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
TODO
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../../Aux/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Aux
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../../Lix/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Lix
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../../NixOS/appstream/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
NixOS
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" checked>
|
||
|
|
||
|
|
||
|
|
||
|
<div class="md-nav__link md-nav__container">
|
||
|
<a href="../../" class="md-nav__link ">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Nixpkgs
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
<label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
</label>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="true">
|
||
|
<label class="md-nav__title" for="__nav_6">
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
Nixpkgs
|
||
|
</label>
|
||
|
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="../../options/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Options
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_3" checked>
|
||
|
|
||
|
|
||
|
|
||
|
<div class="md-nav__link md-nav__container">
|
||
|
<a href="../" class="md-nav__link ">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Build Helpers
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
<label class="md-nav__link " for="__nav_6_3" id="__nav_6_3_label" tabindex="0">
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
</label>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_3_label" aria-expanded="true">
|
||
|
<label class="md-nav__title" for="__nav_6_3">
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
Build Helpers
|
||
|
</label>
|
||
|
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="../dev-shell-tools.chapter/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Development Shell helpers
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="../fetchers.chapter/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Fetchers
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="../images/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Images
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="../special/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Special build helpers
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="../testers.chapter/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Testers
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--active">
|
||
|
|
||
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Trivial build helpers
|
||
|
</span>
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
</label>
|
||
|
|
||
|
<a href="./" class="md-nav__link md-nav__link--active">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Trivial build helpers
|
||
|
</span>
|
||
|
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<label class="md-nav__title" for="__toc">
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
Table of contents
|
||
|
</label>
|
||
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-runCommand" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
runCommand
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-runCommandCC" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
runCommandCC
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-runCommandLocal" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
runCommandLocal
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-text-writing" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
Writing text files
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
<nav class="md-nav" aria-label="Writing text files">
|
||
|
<ul class="md-nav__list">
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-makeDesktopItem" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
makeDesktopItem
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
<nav class="md-nav" aria-label="makeDesktopItem">
|
||
|
<ul class="md-nav__list">
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-makeDesktopItem-inputs" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
Inputs
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-makeDesktopItem-examples" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
Examples
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
</ul>
|
||
|
</nav>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-writeTextFile" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
writeTextFile
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
</ul>
|
||
|
</nav>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</nav>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../images/appimagetools.section/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Images
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../special/checkpoint-build.section/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Special
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
</nav>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Development/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Development
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Functions/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Functions
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Hooks/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Hooks
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Languages-And-Frameworks/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Languages And Frameworks
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Library-Reference/asserts/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Library Reference
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Module-System/module-system.chapter/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Module System
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Packages/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Packages
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Standard-Environment/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Standard Environment
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="../../Using-Nixpkgs/" class="md-nav__link">
|
||
|
|
||
|
|
||
|
<span class="md-ellipsis">
|
||
|
Using Nixpkgs
|
||
|
</span>
|
||
|
|
||
|
|
||
|
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
</nav>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
|
||
|
|
||
|
</ul>
|
||
|
</nav>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||
|
<div class="md-sidebar__scrollwrap">
|
||
|
<div class="md-sidebar__inner">
|
||
|
|
||
|
|
||
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<label class="md-nav__title" for="__toc">
|
||
|
<span class="md-nav__icon md-icon"></span>
|
||
|
Table of contents
|
||
|
</label>
|
||
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-runCommand" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
runCommand
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-runCommandCC" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
runCommandCC
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-runCommandLocal" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
runCommandLocal
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-text-writing" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
Writing text files
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
<nav class="md-nav" aria-label="Writing text files">
|
||
|
<ul class="md-nav__list">
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-makeDesktopItem" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
makeDesktopItem
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
<nav class="md-nav" aria-label="makeDesktopItem">
|
||
|
<ul class="md-nav__list">
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-makeDesktopItem-inputs" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
Inputs
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-makeDesktopItem-examples" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
Examples
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
</ul>
|
||
|
</nav>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li class="md-nav__item">
|
||
|
<a href="#trivial-builder-writeTextFile" class="md-nav__link">
|
||
|
<span class="md-ellipsis">
|
||
|
writeTextFile
|
||
|
</span>
|
||
|
</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
</ul>
|
||
|
</nav>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
</nav>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
<div class="md-content" data-md-component="content">
|
||
|
<article class="md-content__inner md-typeset">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<h1 id="chap-trivial-builders">Trivial build helpers</h1>
|
||
|
<p>Nixpkgs provides a variety of wrapper functions that help build commonly useful derivations.
|
||
|
Like <a href="#sec-using-stdenv"><code>stdenv.mkDerivation</code></a>, each of these build helpers creates a derivation, but the arguments passed are different (usually simpler) from those required by <code>stdenv.mkDerivation</code>.</p>
|
||
|
<h2 id="trivial-builder-runCommand"><code>runCommand</code></h2>
|
||
|
<p><code>runCommand :: String -> AttrSet -> String -> Derivation</code></p>
|
||
|
<p>The result of <code>runCommand name drvAttrs buildCommand</code> is a derivation that is built by running the specified shell commands.</p>
|
||
|
<p>By default <code>runCommand</code> runs in a stdenv with no compiler environment, whereas <a href="#trivial-builder-runCommandCC"><code>runCommandCC</code></a> uses the default stdenv, <code>pkgs.stdenv</code>.</p>
|
||
|
<p><code>name :: String</code>
|
||
|
: The name that Nix will append to the store path in the same way that <code>stdenv.mkDerivation</code> uses its <code>name</code> attribute.</p>
|
||
|
<p><code>drvAttr :: AttrSet</code>
|
||
|
: Attributes to pass to the underlying call to <a href="#chap-stdenv"><code>stdenv.mkDerivation</code></a>.</p>
|
||
|
<p><code>buildCommand :: String</code>
|
||
|
: Shell commands to run in the derivation builder.</p>
|
||
|
<div class="admonition note">
|
||
|
<p class="admonition-title">Note</p>
|
||
|
<div class="highlight"><pre><span></span><code>You have to create a file or directory `$out` for Nix to be able to run the builder successfully.
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Invocation of `runCommand`
|
||
|
</code></pre></div>
|
||
|
<div class="highlight"><pre><span></span><code><span class="p">(</span><span class="nb">import</span> <span class="l"><nixpkgs></span> <span class="p">{})</span><span class="o">.</span>runCommand <span class="s2">"my-example"</span> <span class="p">{}</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> echo My example command is running</span>
|
||
|
|
||
|
<span class="s s-Multiline"> mkdir $out</span>
|
||
|
|
||
|
<span class="s s-Multiline"> echo I can write data to the Nix store > $out/message</span>
|
||
|
|
||
|
<span class="s s-Multiline"> echo I can also run basic commands like:</span>
|
||
|
|
||
|
<span class="s s-Multiline"> echo ls</span>
|
||
|
<span class="s s-Multiline"> ls</span>
|
||
|
|
||
|
<span class="s s-Multiline"> echo whoami</span>
|
||
|
<span class="s s-Multiline"> whoami</span>
|
||
|
|
||
|
<span class="s s-Multiline"> echo date</span>
|
||
|
<span class="s s-Multiline"> date</span>
|
||
|
<span class="s s-Multiline">''</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<h2 id="trivial-builder-runCommandCC"><code>runCommandCC</code></h2>
|
||
|
<p>This works just like <code>runCommand</code>. The only difference is that it also provides a C compiler in <code>buildCommand</code>'s environment. To minimize your dependencies, you should only use this if you are sure you will need a C compiler as part of running your command.</p>
|
||
|
<h2 id="trivial-builder-runCommandLocal"><code>runCommandLocal</code></h2>
|
||
|
<p>Variant of <code>runCommand</code> that forces the derivation to be built locally, it is not substituted. This is intended for very cheap commands (<1s execution time). It saves on the network round-trip and can speed up a build.</p>
|
||
|
<div class="admonition note">
|
||
|
<p class="admonition-title">Note</p>
|
||
|
<p>This sets <a href="https://nixos.org/nix/manual/#adv-attr-allowSubstitutes"><code>allowSubstitutes</code> to <code>false</code></a>, so only use <code>runCommandLocal</code> if you are certain the user will always have a builder for the <code>system</code> of the derivation. This should be true for most trivial use cases (e.g., just copying some files to a different location or adding symlinks) because there the <code>system</code> is usually the same as <code>builtins.currentSystem</code>.</p>
|
||
|
</div>
|
||
|
<h2 id="trivial-builder-text-writing">Writing text files</h2>
|
||
|
<p>Nixpkgs provides the following functions for producing derivations which write text files or executable scripts into the Nix store.
|
||
|
They are useful for creating files from Nix expression, and are all implemented as convenience wrappers around <code>writeTextFile</code>.</p>
|
||
|
<p>Each of these functions will cause a derivation to be produced.
|
||
|
When you coerce the result of each of these functions to a string with <a href="https://nixos.org/manual/nix/stable/language/string-interpolation">string interpolation</a> or <a href="https://nixos.org/manual/nix/stable/language/builtins#builtins-toString"><code>builtins.toString</code></a>, it will evaluate to the <a href="https://nixos.org/manual/nix/stable/store/store-path">store path</a> of this derivation.</p>
|
||
|
<p>:!!! note
|
||
|
Some of these functions will put the resulting files within a directory inside the <a href="https://nixos.org/manual/nix/stable/language/derivations#attr-outputs">derivation output</a>.
|
||
|
If you need to refer to the resulting files somewhere else in a Nix expression, append their path to the derivation's store path.</p>
|
||
|
<p>For example, if the file destination is a directory:</p>
|
||
|
<div class="highlight"><pre><span></span><code><span class="p">{</span>
|
||
|
<span class="ss">my-file</span> <span class="o">=</span> writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-file"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> Contents of File</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">destination</span> <span class="o">=</span> <span class="s2">"/share/my-file"</span><span class="p">;</span>
|
||
|
<span class="p">};</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<p>Remember to append "/share/my-file" to the resulting store path when using it elsewhere:</p>
|
||
|
<p><div class="highlight"><pre><span></span><code>writeShellScript <span class="s2">"evaluate-my-file.sh"</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> cat </span><span class="si">${</span>my-file<span class="si">}</span><span class="s s-Multiline">/share/my-file</span>
|
||
|
<span class="s s-Multiline">''</span>
|
||
|
</code></pre></div>
|
||
|
:</p>
|
||
|
<h3 id="trivial-builder-makeDesktopItem"><code>makeDesktopItem</code></h3>
|
||
|
<p>Write an <a href="https://specifications.freedesktop.org/desktop-entry-spec/1.4/">XDG desktop file</a> to the Nix store.</p>
|
||
|
<p>This function is usually used to add desktop items to a package through the <code>copyDesktopItems</code> hook.</p>
|
||
|
<p><code>makeDesktopItem</code> adheres to version 1.4 of the specification.</p>
|
||
|
<h4 id="trivial-builder-makeDesktopItem-inputs">Inputs</h4>
|
||
|
<p><code>makeDesktopItem</code> takes an attribute set that accepts most values from the <a href="https://specifications.freedesktop.org/desktop-entry-spec/1.4/ar01s06.html">XDG specification</a>.</p>
|
||
|
<p>All recognised keys from the specification are supported with the exception of the "Hidden" field. The keys are converted into camelCase format, but correspond 1:1 to their equivalent in the specification: <code>genericName</code>, <code>noDisplay</code>, <code>comment</code>, <code>icon</code>, <code>onlyShowIn</code>, <code>notShowIn</code>, <code>dbusActivatable</code>, <code>tryExec</code>, <code>exec</code>, <code>path</code>, <code>terminal</code>, <code>mimeTypes</code>, <code>categories</code>, <code>implements</code>, <code>keywords</code>, <code>startupNotify</code>, <code>startupWMClass</code>, <code>url</code>, <code>prefersNonDefaultGPU</code>.</p>
|
||
|
<p>The "Version" field is hardcoded to the version <code>makeDesktopItem</code> currently adheres to.</p>
|
||
|
<p>The following fields are either required, are of a different type than in the specification, carry specific default values, or are additional fields supported by <code>makeDesktopItem</code>:</p>
|
||
|
<p><code>name</code> (String)</p>
|
||
|
<p>: The name of the desktop file in the Nix store.</p>
|
||
|
<p><code>type</code> (String; <em>optional</em>)</p>
|
||
|
<p>: Default value: <code>"Application"</code></p>
|
||
|
<p><code>desktopName</code> (String)</p>
|
||
|
<p>: Corresponds to the "Name" field of the specification.</p>
|
||
|
<p><code>actions</code> (List of Attribute set; <em>optional</em>)</p>
|
||
|
<p>: A list of attribute sets {name, exec?, icon?}</p>
|
||
|
<p><code>extraConfig</code> (Attribute set; <em>optional</em>)</p>
|
||
|
<p>: Additional key/value pairs to be added verbatim to the desktop file. Attributes need to be prefixed with 'X-'.</p>
|
||
|
<h4 id="trivial-builder-makeDesktopItem-examples">Examples</h4>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage 1 of `makeDesktopItem`
|
||
|
</code></pre></div>
|
||
|
<p>Write a desktop file <code>/nix/store/<store path>/my-program.desktop</code> to the Nix store.</p>
|
||
|
<div class="highlight"><pre><span></span><code><span class="p">{</span>makeDesktopItem<span class="p">}:</span>
|
||
|
makeDesktopItem <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-program"</span><span class="p">;</span>
|
||
|
<span class="ss">desktopName</span> <span class="o">=</span> <span class="s2">"My Program"</span><span class="p">;</span>
|
||
|
<span class="ss">genericName</span> <span class="o">=</span> <span class="s2">"Video Player"</span><span class="p">;</span>
|
||
|
<span class="ss">noDisplay</span> <span class="o">=</span> <span class="no">false</span><span class="p">;</span>
|
||
|
<span class="ss">comment</span> <span class="o">=</span> <span class="s2">"Cool video player"</span><span class="p">;</span>
|
||
|
<span class="ss">icon</span> <span class="o">=</span> <span class="s2">"/path/to/icon"</span><span class="p">;</span>
|
||
|
<span class="ss">onlyShowIn</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">"KDE"</span> <span class="p">];</span>
|
||
|
<span class="ss">dbusActivatable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
|
<span class="ss">tryExec</span> <span class="o">=</span> <span class="s2">"my-program"</span><span class="p">;</span>
|
||
|
<span class="ss">exec</span> <span class="o">=</span> <span class="s2">"my-program --someflag"</span><span class="p">;</span>
|
||
|
<span class="ss">path</span> <span class="o">=</span> <span class="s2">"/some/working/path"</span><span class="p">;</span>
|
||
|
<span class="ss">terminal</span> <span class="o">=</span> <span class="no">false</span><span class="p">;</span>
|
||
|
actions<span class="o">.</span><span class="ss">example</span> <span class="o">=</span> <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"New Window"</span><span class="p">;</span>
|
||
|
<span class="ss">exec</span> <span class="o">=</span> <span class="s2">"my-program --new-window"</span><span class="p">;</span>
|
||
|
<span class="ss">icon</span> <span class="o">=</span> <span class="s2">"/some/icon"</span><span class="p">;</span>
|
||
|
<span class="p">};</span>
|
||
|
<span class="ss">mimeTypes</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">"video/mp4"</span> <span class="p">];</span>
|
||
|
<span class="ss">categories</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">"Utility"</span> <span class="p">];</span>
|
||
|
<span class="ss">implements</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">"org.my-program"</span> <span class="p">];</span>
|
||
|
<span class="ss">keywords</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">"Video"</span> <span class="s2">"Player"</span> <span class="p">];</span>
|
||
|
<span class="ss">startupNotify</span> <span class="o">=</span> <span class="no">false</span><span class="p">;</span>
|
||
|
<span class="ss">startupWMClass</span> <span class="o">=</span> <span class="s2">"MyProgram"</span><span class="p">;</span>
|
||
|
<span class="ss">prefersNonDefaultGPU</span> <span class="o">=</span> <span class="no">false</span><span class="p">;</span>
|
||
|
extraConfig<span class="o">.</span><span class="ss">X-SomeExtension</span> <span class="o">=</span> <span class="s2">"somevalue"</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage 2 of `makeDesktopItem`
|
||
|
</code></pre></div>
|
||
|
<p>Override the <code>hello</code> package to add a desktop item.</p>
|
||
|
<div class="highlight"><pre><span></span><code><span class="p">{</span> copyDesktopItems
|
||
|
<span class="p">,</span> hello
|
||
|
<span class="p">,</span> makeDesktopItem <span class="p">}:</span>
|
||
|
|
||
|
hello<span class="o">.</span>overrideAttrs <span class="p">{</span>
|
||
|
<span class="ss">nativeBuildInputs</span> <span class="o">=</span> <span class="p">[</span> copyDesktopItems <span class="p">];</span>
|
||
|
|
||
|
<span class="ss">desktopItems</span> <span class="o">=</span> <span class="p">[(</span>makeDesktopItem <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"hello"</span><span class="p">;</span>
|
||
|
<span class="ss">desktopName</span> <span class="o">=</span> <span class="s2">"Hello"</span><span class="p">;</span>
|
||
|
<span class="ss">exec</span> <span class="o">=</span> <span class="s2">"hello"</span><span class="p">;</span>
|
||
|
<span class="p">})];</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<h3 id="trivial-builder-writeTextFile"><code>writeTextFile</code></h3>
|
||
|
<p>Write a text file to the Nix store.</p>
|
||
|
<p><code>writeTextFile</code> takes an attribute set with the following possible attributes:</p>
|
||
|
<p><code>name</code> (String)</p>
|
||
|
<p>: Corresponds to the name used in the Nix store path identifier.</p>
|
||
|
<p><code>text</code> (String)</p>
|
||
|
<p>: The contents of the file.</p>
|
||
|
<p><code>executable</code> (Bool, <em>optional</em>)</p>
|
||
|
<p>: Make this file have the executable bit set.</p>
|
||
|
<p>Default: <code>false</code></p>
|
||
|
<p><code>destination</code> (String, <em>optional</em>)</p>
|
||
|
<p>: A subpath under the derivation's output path into which to put the file.
|
||
|
Subdirectories are created automatically when the derivation is realised.</p>
|
||
|
<p>By default, the store path itself will be a file containing the text contents.</p>
|
||
|
<p>Default: <code>""</code></p>
|
||
|
<p><code>checkPhase</code> (String, <em>optional</em>)</p>
|
||
|
<p>: Commands to run after generating the file.</p>
|
||
|
<p>Default: <code>""</code></p>
|
||
|
<p><code>meta</code> (Attribute set, <em>optional</em>)</p>
|
||
|
<p>: Additional metadata for the derivation.</p>
|
||
|
<p>Default: <code>{}</code></p>
|
||
|
<p><code>allowSubstitutes</code> (Bool, <em>optional</em>)</p>
|
||
|
<p>: Whether to allow substituting from a binary cache.
|
||
|
Passed through to <a href="https://nixos.org/manual/nix/stable/language/advanced-attributes#adv-attr-allowSubstitutes"><code>allowSubsitutes</code></a> of the underlying call to <code>builtins.derivation</code>.</p>
|
||
|
<p>It defaults to <code>false</code>, as running the derivation's simple <code>builder</code> executable locally is assumed to be faster than network operations.
|
||
|
Set it to true if the <code>checkPhase</code> step is expensive.</p>
|
||
|
<p>Default: <code>false</code></p>
|
||
|
<p><code>preferLocalBuild</code> (Bool, <em>optional</em>)</p>
|
||
|
<p>: Whether to prefer building locally, even if faster <a href="https://nixos.org/manual/nix/stable/command-ref/conf-file#conf-substituters">remote build machines</a> are available.</p>
|
||
|
<p>Passed through to <a href="https://nixos.org/manual/nix/stable/language/advanced-attributes#adv-attr-preferLocalBuild"><code>preferLocalBuild</code></a> of the underlying call to <code>builtins.derivation</code>.</p>
|
||
|
<p>It defaults to <code>true</code> for the same reason <code>allowSubstitutes</code> defaults to <code>false</code>.</p>
|
||
|
<p>Default: <code>true</code></p>
|
||
|
<p><code>derivationArgs</code> (Attribute set, <em>optional</em>)</p>
|
||
|
<p>: Extra arguments to pass to the underlying call to <code>stdenv.mkDerivation</code>.</p>
|
||
|
<p>Default: <code>{}</code></p>
|
||
|
<p>The resulting store path will include some variation of the name, and it will be a file unless <code>destination</code> is used, in which case it will be a directory.</p>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage 1 of `writeTextFile`
|
||
|
</code></pre></div>
|
||
|
<p>Write <code>my-file</code> to <code>/nix/store/<store path>/some/subpath/my-cool-script</code>, making it executable.
|
||
|
Also run a check on the resulting file in a <code>checkPhase</code>, and supply values for the less-used options.</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-cool-script"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> #!/bin/sh</span>
|
||
|
<span class="s s-Multiline"> echo "This is my cool script!"</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">executable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
|
<span class="ss">destination</span> <span class="o">=</span> <span class="s2">"/some/subpath/my-cool-script"</span><span class="p">;</span>
|
||
|
<span class="ss">checkPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> </span><span class="si">${</span>pkgs<span class="o">.</span>shellcheck<span class="si">}</span><span class="s s-Multiline">/bin/shellcheck $out/some/subpath/my-cool-script</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">meta</span> <span class="o">=</span> <span class="p">{</span>
|
||
|
<span class="ss">license</span> <span class="o">=</span> pkgs<span class="o">.</span>lib<span class="o">.</span>licenses<span class="o">.</span>cc0<span class="p">;</span>
|
||
|
<span class="p">};</span>
|
||
|
<span class="ss">allowSubstitutes</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
|
<span class="ss">preferLocalBuild</span> <span class="o">=</span> <span class="no">false</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<h1 id="usage-2-of-writetextfile">Usage 2 of <code>writeTextFile</code></h1>
|
||
|
</div>
|
||
|
<p>Write the string <code>Contents of File</code> to <code>/nix/store/<store path></code>.
|
||
|
See also the <a href="#trivial-builder-writeText"></a> helper function.</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-file"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> Contents of File</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<h1 id="usage-3-of-writetextfile">Usage 3 of <code>writeTextFile</code></h1>
|
||
|
</div>
|
||
|
<p>Write an executable script <code>my-script</code> to <code>/nix/store/<store path>/bin/my-script</code>.
|
||
|
See also the <a href="#trivial-builder-writeScriptBin"></a> helper function.</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-script"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> echo "hi"</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">executable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
|
<span class="ss">destination</span> <span class="o">=</span> <span class="s2">"/bin/my-script"</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<h3 id="trivial-builder-writeText"><code>writeText</code></h3>
|
||
|
<p>Write a text file to the Nix store</p>
|
||
|
<p><code>writeText</code> takes the following arguments:
|
||
|
a string.</p>
|
||
|
<p><code>name</code> (String)</p>
|
||
|
<p>: The name used in the Nix store path.</p>
|
||
|
<p><code>text</code> (String)</p>
|
||
|
<p>: The contents of the file.</p>
|
||
|
<p>The store path will include the name, and it will be a file.</p>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage of `writeText`
|
||
|
</code></pre></div>
|
||
|
<p>Write the string <code>Contents of File</code> to <code>/nix/store/<store path></code>:</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeText <span class="s2">"my-file"</span>
|
||
|
<span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> Contents of File</span>
|
||
|
<span class="s s-Multiline"> ''</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<p>This is equivalent to:</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-file"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> Contents of File</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<h3 id="trivial-builder-writeTextDir"><code>writeTextDir</code></h3>
|
||
|
<p>Write a text file within a subdirectory of the Nix store.</p>
|
||
|
<p><code>writeTextDir</code> takes the following arguments:</p>
|
||
|
<p><code>path</code> (String)</p>
|
||
|
<p>: The destination within the Nix store path under which to create the file.</p>
|
||
|
<p><code>text</code> (String)</p>
|
||
|
<p>: The contents of the file.</p>
|
||
|
<p>The store path will be a directory.</p>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage of `writeTextDir`
|
||
|
</code></pre></div>
|
||
|
<p>Write the string <code>Contents of File</code> to <code>/nix/store/<store path>/share/my-file</code>:</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextDir <span class="s2">"share/my-file"</span>
|
||
|
<span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> Contents of File</span>
|
||
|
<span class="s s-Multiline"> ''</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<p>This is equivalent to:</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-file"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> Contents of File</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">destination</span> <span class="o">=</span> <span class="s2">"share/my-file"</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<h3 id="trivial-builder-writeScript"><code>writeScript</code></h3>
|
||
|
<p>Write an executable script file to the Nix store.</p>
|
||
|
<p><code>writeScript</code> takes the following arguments:</p>
|
||
|
<p><code>name</code> (String)</p>
|
||
|
<p>: The name used in the Nix store path.</p>
|
||
|
<p><code>text</code> (String)</p>
|
||
|
<p>: The contents of the file.</p>
|
||
|
<p>The created file is marked as executable.
|
||
|
The store path will include the name, and it will be a file.</p>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage of `writeScript`
|
||
|
</code></pre></div>
|
||
|
<p>Write the string <code>Contents of File</code> to <code>/nix/store/<store path></code> and make the file executable.</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeScript <span class="s2">"my-file"</span>
|
||
|
<span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> Contents of File</span>
|
||
|
<span class="s s-Multiline"> ''</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<p>This is equivalent to:</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-file"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> Contents of File</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">executable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<h3 id="trivial-builder-writeScriptBin"><code>writeScriptBin</code></h3>
|
||
|
<p>Write a script within a <code>bin</code> subirectory of a directory in the Nix store.
|
||
|
This is for consistency with the convention of software packages placing executables under <code>bin</code>.</p>
|
||
|
<p><code>writeScriptBin</code> takes the following arguments:</p>
|
||
|
<p><code>name</code> (String)</p>
|
||
|
<p>: The name used in the Nix store path and within the file created under the store path.</p>
|
||
|
<p><code>text</code> (String)</p>
|
||
|
<p>: The contents of the file.</p>
|
||
|
<p>The created file is marked as executable.
|
||
|
The file's contents will be put into <code>/nix/store/<store path>/bin/<name></code>.
|
||
|
The store path will include the name, and it will be a directory.</p>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage of `writeScriptBin`
|
||
|
</code></pre></div>
|
||
|
<div class="highlight"><pre><span></span><code>writeScriptBin <span class="s2">"my-script"</span>
|
||
|
<span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> echo "hi"</span>
|
||
|
<span class="s s-Multiline"> ''</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<p>This is equivalent to:</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-script"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> echo "hi"</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">executable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
|
<span class="ss">destination</span> <span class="o">=</span> <span class="s2">"bin/my-script"</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<h3 id="trivial-builder-writeShellScript"><code>writeShellScript</code></h3>
|
||
|
<p>Write a Bash script to the store.</p>
|
||
|
<p><code>writeShellScript</code> takes the following arguments:</p>
|
||
|
<p><code>name</code> (String)</p>
|
||
|
<p>: The name used in the Nix store path.</p>
|
||
|
<p><code>text</code> (String)</p>
|
||
|
<p>: The contents of the file.</p>
|
||
|
<p>The created file is marked as executable.
|
||
|
The store path will include the name, and it will be a file.</p>
|
||
|
<p>This function is almost exactly like <a href="#trivial-builder-writeScript"></a>, except that it prepends to the file a <a href="https://en.wikipedia.org/wiki/Shebang_%28Unix%29">shebang</a> line that points to the version of Bash used in Nixpkgs.</p>
|
||
|
<!-- this cannot be changed in practice, so there is no point pretending it's somehow generic -->
|
||
|
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage of `writeShellScript`
|
||
|
</code></pre></div>
|
||
|
<div class="highlight"><pre><span></span><code>writeShellScript <span class="s2">"my-script"</span>
|
||
|
<span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> echo "hi"</span>
|
||
|
<span class="s s-Multiline"> ''</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<p>This is equivalent to:</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-script"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> #! </span><span class="si">${</span>pkgs<span class="o">.</span>runtimeShell<span class="si">}</span>
|
||
|
<span class="s s-Multiline"> echo "hi"</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">executable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<h3 id="trivial-builder-writeShellScriptBin"><code>writeShellScriptBin</code></h3>
|
||
|
<p>Write a Bash script to a "bin" subdirectory of a directory in the Nix store.</p>
|
||
|
<p><code>writeShellScriptBin</code> takes the following arguments:</p>
|
||
|
<p><code>name</code> (String)</p>
|
||
|
<p>: The name used in the Nix store path and within the file generated under the store path.</p>
|
||
|
<p><code>text</code> (String)</p>
|
||
|
<p>: The contents of the file.</p>
|
||
|
<p>The file's contents will be put into <code>/nix/store/<store path>/bin/<name></code>.
|
||
|
The store path will include the the name, and it will be a directory.</p>
|
||
|
<p>This function is a combination of <a href="#trivial-builder-writeShellScript"></a> and <a href="#trivial-builder-writeScriptBin"></a>.</p>
|
||
|
<div class="admonition example">
|
||
|
<p class="admonition-title">Example</p>
|
||
|
<div class="highlight"><pre><span></span><code># Usage of `writeShellScriptBin`
|
||
|
</code></pre></div>
|
||
|
<div class="highlight"><pre><span></span><code>writeShellScriptBin <span class="s2">"my-script"</span>
|
||
|
<span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> echo "hi"</span>
|
||
|
<span class="s s-Multiline"> ''</span>
|
||
|
</code></pre></div>
|
||
|
</div>
|
||
|
<p>This is equivalent to:</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeTextFile <span class="p">{</span>
|
||
|
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"my-script"</span><span class="p">;</span>
|
||
|
<span class="ss">text</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
|
<span class="s s-Multiline"> #! </span><span class="si">${</span>pkgs<span class="o">.</span>runtimeShell<span class="si">}</span>
|
||
|
<span class="s s-Multiline"> echo "hi"</span>
|
||
|
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
<span class="ss">executable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
|
<span class="ss">destination</span> <span class="o">=</span> <span class="s2">"bin/my-script"</span><span class="p">;</span>
|
||
|
<span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
<h2 id="trivial-builder-concatText"><code>concatTextFile</code>, <code>concatText</code>, <code>concatScript</code></h2>
|
||
|
<p>These functions concatenate <code>files</code> to the Nix store in a single file. This is useful for configuration files structured in lines of text. <code>concatTextFile</code> takes an attribute set and expects two arguments, <code>name</code> and <code>files</code>. <code>name</code> corresponds to the name used in the Nix store path. <code>files</code> will be the files to be concatenated. You can also set <code>executable</code> to true to make this file have the executable bit set.
|
||
|
<code>concatText</code> and<code>concatScript</code> are simple wrappers over <code>concatTextFile</code>.</p>
|
||
|
<p>Here are a few examples:
|
||
|
```nix "Writes my-file to /nix/store/<store path>
|
||
|
concatTextFile {
|
||
|
name = "my-file";
|
||
|
files = [ drv1 "${drv2}/path/to/file" ];
|
||
|
}</p>
|
||
|
<h1 id="see-also-the-concattext-helper-function-below-writes-executable-my-file-to-nixstorebinmy-file">See also the <code>concatText</code> helper function below. "Writes executable my-file to /nix/store/<store path>/bin/my-file</h1>
|
||
|
<p>concatTextFile {
|
||
|
name = "my-file";
|
||
|
files = [ drv1 "${drv2}/path/to/file" ];
|
||
|
executable = true;
|
||
|
destination = "/bin/my-file";
|
||
|
}</p>
|
||
|
<h1 id="writes-contents-of-files-to-nixstore">Writes contents of files to /nix/store/<store path></h1>
|
||
|
<p>concatText "my-file" [ file1 file2 ] "Writes contents of files to /nix/store/<store path>
|
||
|
concatScript "my-file" [ file1 file2 ]
|
||
|
<div class="highlight"><pre><span></span><code>## `writeShellApplication` {#trivial-builder-writeShellApplication}
|
||
|
|
||
|
`writeShellApplication` is similar to `writeShellScriptBin` and `writeScriptBin` but supports runtime dependencies with `runtimeInputs`.
|
||
|
Writes an executable shell script to `/nix/store/<store path>/bin/<name>` and checks its syntax with [`shellcheck`](https://github.com/koalaman/shellcheck) and the `bash`'s `-n` option.
|
||
|
Some basic Bash options are set by default (`errexit`, `nounset`, and `pipefail`), but can be overridden with `bashOptions`.
|
||
|
|
||
|
Extra arguments may be passed to `stdenv.mkDerivation` by setting `derivationArgs`; note that variables set in this manner will be set when the shell script is _built,_ not when it's run.
|
||
|
Runtime environment variables can be set with the `runtimeEnv` argument.
|
||
|
|
||
|
For example, the following shell application can refer to `curl` directly, rather than needing to write `${curl}/bin/curl`:
|
||
|
|
||
|
```nix
|
||
|
writeShellApplication {
|
||
|
name = "show-nixos-org";
|
||
|
|
||
|
runtimeInputs = [ curl w3m ];
|
||
|
|
||
|
text = ''
|
||
|
curl -s 'https://nixos.org' | w3m -dump -T text/html
|
||
|
'';
|
||
|
}
|
||
|
</code></pre></div></p>
|
||
|
<h2 id="trivial-builder-symlinkJoin"><code>symlinkJoin</code></h2>
|
||
|
<p>This can be used to put many derivations into the same directory structure. It works by creating a new derivation and adding symlinks to each of the paths listed. It expects two arguments, <code>name</code>, and <code>paths</code>. <code>name</code> is the name used in the Nix store path for the created derivation. <code>paths</code> is a list of paths that will be symlinked. These paths can be to Nix store derivations or any other subdirectory contained within.
|
||
|
Here is an example:
|
||
|
<div class="highlight"><pre><span></span><code><span class="c1"># adds symlinks of hello and stack to current build and prints "links added"</span>
|
||
|
symlinkJoin <span class="p">{</span> <span class="ss">name</span> <span class="o">=</span> <span class="s2">"myexample"</span><span class="p">;</span> <span class="ss">paths</span> <span class="o">=</span> <span class="p">[</span> pkgs<span class="o">.</span>hello pkgs<span class="o">.</span>stack <span class="p">];</span> <span class="ss">postBuild</span> <span class="o">=</span> <span class="s2">"echo links added"</span><span class="p">;</span> <span class="p">}</span>
|
||
|
</code></pre></div>
|
||
|
This creates a derivation with a directory structure like the following:
|
||
|
<div class="highlight"><pre><span></span><code>/nix/store/sglsr5g079a5235hy29da3mq3hv8sjmm-myexample
|
||
|
|-- bin
|
||
|
| |-- hello -> /nix/store/qy93dp4a3rqyn2mz63fbxjg228hffwyw-hello-2.10/bin/hello
|
||
|
| `-- stack -> /nix/store/6lzdpxshx78281vy056lbk553ijsdr44-stack-2.1.3.1/bin/stack
|
||
|
`-- share
|
||
|
|-- bash-completion
|
||
|
| `-- completions
|
||
|
| `-- stack -> /nix/store/6lzdpxshx78281vy056lbk553ijsdr44-stack-2.1.3.1/share/bash-completion/completions/stack
|
||
|
|-- fish
|
||
|
| `-- vendor_completions.d
|
||
|
| `-- stack.fish -> /nix/store/6lzdpxshx78281vy056lbk553ijsdr44-stack-2.1.3.1/share/fish/vendor_completions.d/stack.fish
|
||
|
...
|
||
|
</code></pre></div></p>
|
||
|
<h2 id="trivial-builder-writeReferencesToFile"><code>writeReferencesToFile</code></h2>
|
||
|
<p>Deprecated. Use <a href="#trivial-builder-writeClosure"><code>writeClosure</code></a> instead.</p>
|
||
|
<h2 id="trivial-builder-writeClosure"><code>writeClosure</code></h2>
|
||
|
<p>Given a list of <a href="https://nixos.org/manual/nix/stable/glossary#gloss-store-path">store paths</a> (or string-like expressions coercible to store paths), write their collective <a href="https://nixos.org/manual/nix/stable/glossary#gloss-closure">closure</a> to a text file.</p>
|
||
|
<p>The result is equivalent to the output of <code>nix-store -q --requisites</code>.</p>
|
||
|
<p>For example,</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeClosure <span class="p">[</span> <span class="p">(</span>writeScriptBin <span class="s2">"hi"</span> <span class="s s-Multiline">''</span><span class="si">${</span>hello<span class="si">}</span><span class="s s-Multiline">/bin/hello''</span><span class="p">)</span> <span class="p">]</span>
|
||
|
</code></pre></div>
|
||
|
<p>produces an output path <code>/nix/store/<hash>-runtime-deps</code> containing</p>
|
||
|
<div class="highlight"><pre><span></span><code>/nix/store/<hash>-hello-2.10
|
||
|
/nix/store/<hash>-hi
|
||
|
/nix/store/<hash>-libidn2-2.3.0
|
||
|
/nix/store/<hash>-libunistring-0.9.10
|
||
|
/nix/store/<hash>-glibc-2.32-40
|
||
|
</code></pre></div>
|
||
|
<p>You can see that this includes <code>hi</code>, the original input path,
|
||
|
<code>hello</code>, which is a direct reference, but also
|
||
|
the other paths that are indirectly required to run <code>hello</code>.</p>
|
||
|
<h2 id="trivial-builder-writeDirectReferencesToFile"><code>writeDirectReferencesToFile</code></h2>
|
||
|
<p>Writes the set of references to the output file, that is, their immediate dependencies.</p>
|
||
|
<p>This produces the equivalent of <code>nix-store -q --references</code>.</p>
|
||
|
<p>For example,</p>
|
||
|
<div class="highlight"><pre><span></span><code>writeDirectReferencesToFile <span class="p">(</span>writeScriptBin <span class="s2">"hi"</span> <span class="s s-Multiline">''</span><span class="si">${</span>hello<span class="si">}</span><span class="s s-Multiline">/bin/hello''</span><span class="p">)</span>
|
||
|
</code></pre></div>
|
||
|
<p>produces an output path <code>/nix/store/<hash>-runtime-references</code> containing</p>
|
||
|
<div class="highlight"><pre><span></span><code>/nix/store/<hash>-hello-2.10
|
||
|
</code></pre></div>
|
||
|
<p>but none of <code>hello</code>'s dependencies because those are not referenced directly
|
||
|
by <code>hi</code>'s output.</p>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</article>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||
|
</div>
|
||
|
|
||
|
</main>
|
||
|
|
||
|
<footer class="md-footer">
|
||
|
|
||
|
<div class="md-footer-meta md-typeset">
|
||
|
<div class="md-footer-meta__inner md-grid">
|
||
|
<div class="md-copyright">
|
||
|
|
||
|
<div class="md-copyright__highlight">
|
||
|
Licenced MIT
|
||
|
</div>
|
||
|
|
||
|
|
||
|
Made with
|
||
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
|
Material for MkDocs
|
||
|
</a>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<div class="md-social">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="https://git.auxolotl.org/auxolotl/docs" target="_blank" rel="noopener" title="Aux Docs Repo" class="md-social__link">
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="https://forum.aux.computer/" target="_blank" rel="noopener" title="Aux Forum" class="md-social__link">
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563a7.395 7.395 0 0 0-6.337 3.57 7.247 7.247 0 0 0-.148 7.22L4.4 19.61l4.794-1.074a7.424 7.424 0 0 0 8.136-1.39 7.256 7.256 0 0 0 1.737-7.997 7.375 7.375 0 0 0-6.84-4.585h-.008z"/></svg>
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<a href="https://wiki.auxolotl.org/" target="_blank" rel="noopener" title="Aux Wiki" class="md-social__link">
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.801 13.557c.148.098.288.202.417.313 1.854 1.6 3.127 4.656 2.582 7.311-1.091-.255-5.747-1.055-7.638-3.383-.91-1.12-1.366-2.081-1.569-2.885a5.65 5.65 0 0 0 .034-.219c.089.198.197.35.313.466.24.24.521.335.766.372.304.046.594-.006.806-.068l.001.001c.05-.015.433-.116.86-.342.325-.173 2.008-.931 3.428-1.566Zm-7.384 1.435C9.156 16.597 6.6 18.939.614 18.417c.219-1.492 1.31-3.019 2.51-4.11.379-.345.906-.692 1.506-1.009.286.168.598.332.939.486 2.689 1.221 3.903 1.001 4.89.573a1.3 1.3 0 0 0 .054-.025 6.156 6.156 0 0 0-.096.66Zm4.152-.462c.38-.341.877-.916 1.383-1.559-.389-.15-.866-.371-1.319-.591-.598-.29-1.305-.283-2.073-.315a4.685 4.685 0 0 1-.804-.103c.014-.123.027-.246.038-.369.062.104.673.057.871.057.354 0 1.621.034 3.074-.574 1.452-.608 2.55-1.706 3.022-3.225.474-1.52.22-3.091-.168-3.952-.169.709-1.453 2.381-1.926 2.871-.473.489-2.381 2.296-2.972 2.921-.7.74-.688.793-1.332 1.302-.202.19-.499.402-.563.53.027-.338.039-.675.027-.997a7.653 7.653 0 0 0-.032-.523c.322-.059.567-.522.567-.861 0-.224-.106-.247-.271-.229.075-.894.382-3.923 1.254-4.281.218.109.831.068.649-.295-.182-.364-.825-.074-1.081.266-.28.374-.956 2.046-.92 4.324-.113.014-.174.033-.322.033-.171 0-.321-.04-.433-.05.034-2.275-.714-3.772-.84-4.169-.12-.375-.491-.596-.781-.596-.146 0-.272.056-.333.179-.182.363.459.417.677.308.706.321 1.156 3.519 1.254 4.277-.125-.006-.199.035-.199.233 0 .311.17.756.452.843a.442.442 0 0 0-.007.03s-.287.99-.413 2.189a4.665 4.665 0 0 1-.718-.225c-.714-.286-1.355-.583-2.019-.566-.664.018-1.366.023-1.804-.036-.438-.058-.649-.15-.649-.15s-.234.365.257 1.075c.42.607 1.055 1.047 1.644 1.18.589.134 1.972.18 2.785-.377.16-.109.317-.228.459-.34a8.717 8.717 0 0 0-.013.626c-.289.753-.571 1.993-.268 3.338 0-.001.701-.842.787-2.958.006-.144.009-.271.01-.383.052-.248.103-.518.148-.799.072.135.151.277.234.413.511.842 1.791 1.37 2.383 1.49.091.019.187.032.285.038Zm-1.12.745c-.188.055-.445.1-.713.059-.21-.031-.45-.11-.655-.316-.169-.168-.312-.419-.401-.789a9.837 9.837 0 0 0 .039-.82l.049-.243c.563.855 1.865 1.398 2.476 1.522.036.008.072.014.109.02l-.013.009c-.579.415-.76.503-.891.558Zm6.333-2.818c-.257.114-4.111 1.822-5.246 2.363.98-.775 3.017-3.59 3.699-4.774 1.062.661 1.468 1.109 1.623 1.441.101.217.09.38.096.515a.57.57 0 0 1-.172.455Zm-9.213 1.62a1.606 1.606 0 0 1-.19.096c-.954.414-2.126.61-4.728-.571-2.023-.918-3.024-2.157-3.371-2.666.476.161 1.471.473 2.157.524.282.021.703.068 1.167.125.021.209.109.486.345.829l.001.001c.451.651 1.134 1.119 1.765 1.262.622.141 2.083.182 2.942-.407a3.12 3.12 0 0 0 .132-.093l.001.179a6.052 6.052 0 0 0-.221.721Zm5.512-1.271a17.49 17.49 0 0 1-1.326-.589c.437.042 1.054.083 1.692.108-.121.162-.244.323-.366.481Zm.932-1.26c-.12.17-.245.343-.373.517-.241.018-.478.03-.709.038a29.05 29.05 0 0 1-.741-.048c.608-.065 1.228-.252 1.823-.507Zm.22-.315c-.809.382-1.679.648-2.507.648-.472 0-.833.018-1.139.039v.001c-.324-.031-.665-.039-1.019-.054a3.555 3.555 0 0 1-.152-.009c.102-.002.192-.006.249-.006.363 0 1.662.034 3.151-.589 1.508-.632 2.645-1.773 3.136-3.351.37-1.186.31-2.402.086-3.312.458-.336.86-.651 1.147-.91.501-.451.743-.733.848-.869.199.206.714.864.685 2.138-.036 1.611-.606 3.187-1.501 4.154a9.099 9.099 0 0 1-1.321 1.132 11.978 11.978 0 0 0-.644-.422l-.089-.055-.051.091c-.184.332-.5.825-.879 1.374ZM4.763 5.817c-.157 1.144.113 2.323.652 3.099.539.776 2.088 2.29 3.614 2.505.991.14 2.055.134 2.055.134s-.593-.576-1.114-1.66c-.521-1.085-.948-2.104-1.734-2.786-.785-.681-1.601-1.416-2.045-1.945-.444-.53-.59-.86-.59-.86s-.656.175-.838 1.513Zm14.301 4.549a9.162 9.162 0 0 0 1.3-1.12c.326-.352.611-.782.845-1.265 1.315.145 2.399.371 2.791.434 0 0-.679 1.971-3.945 3.022l-.016-.035c-.121-.26-.385-.594-.975-1.036Zm-11.634.859a8.537 8.537 0 0 1-.598-.224c-1.657-.693-2.91-1.944-3.449-3.678-.498-1.601-.292-3.251.091-4.269.225.544.758 1.34 1.262 2.01a3.58 3.58 0 0 0-.172.726c-.163 1.197.123 2.428.687 3.24.416.599 1.417 1.62 2.555 2.193-.128.002-.253.003-.376.002Zm-1.758-.077c-.958-.341-1.901-.787-2.697-1.368C-.07 7.559 0 6.827 0 6.827s1.558-.005 3.088.179c.03.126.065.
|
||
|
</a>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
</footer>
|
||
|
|
||
|
</div>
|
||
|
<div class="md-dialog" data-md-component="dialog">
|
||
|
<div class="md-dialog__inner md-typeset"></div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<script id="__config" type="application/json">{"base": "../../..", "features": ["content.tooltips", "search.highlight", "navigation.tabs", "navigation.indexes", "navigation.prune"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||
|
|
||
|
|
||
|
<script src="../../../assets/javascripts/bundle.fe8b6f2b.min.js"></script>
|
||
|
|
||
|
|
||
|
</body>
|
||
|
</html>
|