docs/Nixpkgs/Library-Reference/generators/index.html

3137 lines
73 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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/Library-Reference/generators/">
<link rel="prev" href="../fixedPoints/">
<link rel="next" href="../gvariant/">
<link rel="icon" href="../../../assets/aux-logo.svg">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.29">
<title>lib.generators: functions that create file formats from nix data structures - 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="lib.generators: functions that create file formats from nix data structures {#sec-functions-library-generators} - Aux Docs" >
<meta property="og:description" content="Aux Documentation" >
<meta property="og:image" content="https://docs.auxolotl.org/assets/images/social/Nixpkgs/Library-Reference/generators.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/Library-Reference/generators/" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="lib.generators: functions that create file formats from nix data structures {#sec-functions-library-generators} - Aux Docs" >
<meta name="twitter:description" content="Aux Documentation" >
<meta name="twitter:image" content="https://docs.auxolotl.org/assets/images/social/Nixpkgs/Library-Reference/generators.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="#sec-functions-library-generators" 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">
lib.generators: functions that create file formats from nix data structures
</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--pruned md-nav__item--nested">
<a href="../../Build-Helpers/" class="md-nav__link">
<span class="md-ellipsis">
Build Helpers
</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="../../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--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_8" checked>
<label class="md-nav__link" for="__nav_6_8" id="__nav_6_8_label" tabindex="0">
<span class="md-ellipsis">
Library Reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_8_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_6_8">
<span class="md-nav__icon md-icon"></span>
Library Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../asserts/" class="md-nav__link">
<span class="md-ellipsis">
lib.asserts: assertion functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../attrsets/" class="md-nav__link">
<span class="md-ellipsis">
lib.attrsets: attribute set functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli/" class="md-nav__link">
<span class="md-ellipsis">
lib.cli: command-line serialization functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../customisation/" class="md-nav__link">
<span class="md-ellipsis">
lib.customisation: Functions to customise (derivation-related) functions, derivatons, or attribute sets
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../debug/" class="md-nav__link">
<span class="md-ellipsis">
lib.debug: debugging functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../derivations/" class="md-nav__link">
<span class="md-ellipsis">
lib.derivations: miscellaneous derivation-specific functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../fileset/" class="md-nav__link">
<span class="md-ellipsis">
lib.fileset: file set functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../filesystem/" class="md-nav__link">
<span class="md-ellipsis">
lib.filesystem: filesystem functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../fixedPoints/" class="md-nav__link">
<span class="md-ellipsis">
lib.fixedPoints: explicit recursion functions
</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">
lib.generators: functions that create file formats from nix data structures
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
lib.generators: functions that create file formats from nix data structures
</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="#function-library-lib.generators.mkValueStringDefault" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.mkValueStringDefault
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.mkValueStringDefault">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.mkKeyValueDefault" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.mkKeyValueDefault
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.mkKeyValueDefault">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_1" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toKeyValue" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toKeyValue
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toKeyValue">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_2" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toINI" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toINI
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toINI">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_3" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toINIWithGlobalSection" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toINIWithGlobalSection
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toINIWithGlobalSection">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_4" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_1" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toGitINI" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toGitINI
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toGitINI">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#examples_2" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#inputs_5" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.mkDconfKeyValue" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.mkDconfKeyValue
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toDconfINI" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toDconfINI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.withRecursion" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.withRecursion
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.withRecursion">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_6" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toPretty" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toPretty
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toPretty">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_7" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toPlist" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toPlist
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toPlist">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_8" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toDhall" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toDhall
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toDhall">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_9" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toLua" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toLua
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toLua">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_10" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_3" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.mkLuaInline" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.mkLuaInline
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.mkLuaInline">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_11" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_1" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../gvariant/" class="md-nav__link">
<span class="md-ellipsis">
lib.gvariant: GVariant formatted string serialization functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lists/" class="md-nav__link">
<span class="md-ellipsis">
lib.lists: list manipulation functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../meta/" class="md-nav__link">
<span class="md-ellipsis">
lib.meta: functions for derivation metadata
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../options/" class="md-nav__link">
<span class="md-ellipsis">
lib.options: NixOS / nixpkgs option handling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../path/" class="md-nav__link">
<span class="md-ellipsis">
lib.path: path functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sources/" class="md-nav__link">
<span class="md-ellipsis">
lib.sources: source filtering functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../strings/" class="md-nav__link">
<span class="md-ellipsis">
lib.strings: string manipulation functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../trivial/" class="md-nav__link">
<span class="md-ellipsis">
lib.trivial: miscellaneous functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../versions/" class="md-nav__link">
<span class="md-ellipsis">
lib.versions: version string functions
</span>
</a>
</li>
</ul>
</nav>
</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="#function-library-lib.generators.mkValueStringDefault" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.mkValueStringDefault
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.mkValueStringDefault">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.mkKeyValueDefault" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.mkKeyValueDefault
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.mkKeyValueDefault">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_1" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toKeyValue" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toKeyValue
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toKeyValue">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_2" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toINI" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toINI
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toINI">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_3" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toINIWithGlobalSection" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toINIWithGlobalSection
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toINIWithGlobalSection">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_4" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_1" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toGitINI" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toGitINI
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toGitINI">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#examples_2" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#inputs_5" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.mkDconfKeyValue" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.mkDconfKeyValue
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toDconfINI" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toDconfINI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.withRecursion" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.withRecursion
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.withRecursion">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_6" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toPretty" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toPretty
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toPretty">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_7" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toPlist" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toPlist
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toPlist">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_8" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toDhall" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toDhall
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toDhall">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_9" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.toLua" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.toLua
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.toLua">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_10" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type" class="md-nav__link">
<span class="md-ellipsis">
Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_3" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#function-library-lib.generators.mkLuaInline" class="md-nav__link">
<span class="md-ellipsis">
lib.generators.mkLuaInline
</span>
</a>
<nav class="md-nav" aria-label="lib.generators.mkLuaInline">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#inputs_11" class="md-nav__link">
<span class="md-ellipsis">
Inputs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type_1" class="md-nav__link">
<span class="md-ellipsis">
Type
</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="sec-functions-library-generators">lib.generators: functions that create file formats from nix data structures</h1>
<p>Functions that generate widespread file
formats from nix data structures.</p>
<p>They all follow a similar interface:</p>
<div class="highlight"><pre><span></span><code>generator <span class="p">{</span> config-attrs <span class="p">}</span> data
</code></pre></div>
<p><code>config-attrs</code> are “holes” in the generators
with sensible default implementations that
can be overwritten. The default implementations
are mostly generators themselves, called with
their respective default values; they can be reused.</p>
<p>Tests can be found in ./tests/misc.nix</p>
<p>Further Documentation can be found <a href="#sec-generators">here</a>.</p>
<h2 id="function-library-lib.generators.mkValueStringDefault"><code>lib.generators.mkValueStringDefault</code></h2>
<p>Convert a value to a sensible default string representation.
The builtin <code>toString</code> function has some strange defaults,
suitable for bash scripts but not much else.</p>
<h3 id="inputs">Inputs</h3>
<p>Options
: Empty set, there may be configuration options in the future</p>
<p><code>v</code>
: 2. Function argument</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L90">lib/generators.nix:90</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.mkKeyValueDefault"><code>lib.generators.mkKeyValueDefault</code></h2>
<p>Generate a line of key k and value v, separated by
character sep. If sep appears in k, it is escaped.
Helper for synaxes with different separators.</p>
<p>mkValueString specifies how values should be formatted.</p>
<div class="highlight"><pre><span></span><code>mkKeyValueDefault <span class="p">{}</span> <span class="s2">&quot;:&quot;</span> <span class="s2">&quot;f:oo&quot;</span> <span class="s2">&quot;bar&quot;</span>
<span class="o">&gt;</span> <span class="s2">&quot;f\:oo:bar&quot;</span>
</code></pre></div>
<h3 id="inputs_1">Inputs</h3>
<p>Structured function argument
: mkValueString (optional, default: <code>mkValueStringDefault {}</code>)
: Function to convert values to strings</p>
<p><code>sep</code></p>
<p>: 2. Function argument</p>
<p><code>k</code></p>
<p>: 3. Function argument</p>
<p><code>v</code></p>
<p>: 4. Function argument</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L147">lib/generators.nix:147</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toKeyValue"><code>lib.generators.toKeyValue</code></h2>
<p>Generate a key-value-style config file from an attrset.</p>
<h3 id="inputs_2">Inputs</h3>
<p>Structured function argument</p>
<p>: mkKeyValue (optional, default: <code>mkKeyValueDefault {} "="</code>)
: format a setting line from key and value</p>
<p>: listsAsDuplicateKeys (optional, default: <code>false</code>)
: allow lists as values for duplicate keys</p>
<p>: indent (optional, default: <code>""</code>)
: Initial indentation level</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L173">lib/generators.nix:173</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toINI"><code>lib.generators.toINI</code></h2>
<p>Generate an INI-style config file from an
attrset of sections to an attrset of key-value pairs.</p>
<h3 id="inputs_3">Inputs</h3>
<p>Structured function argument</p>
<p>: mkSectionName (optional, default: <code>(name: escape [ "[" "]" ] name)</code>)
: apply transformations (e.g. escapes) to section names</p>
<p>: mkKeyValue (optional, default: <code>{} "="</code>)
: format a setting line from key and value</p>
<p>: listsAsDuplicateKeys (optional, default: <code>false</code>)
: allow lists as values for duplicate keys</p>
<h3 id="examples">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.generators.toINI</code> usage example</p>
<div class="highlight"><pre><span></span><code>generators<span class="o">.</span>toINI <span class="p">{}</span> <span class="p">{</span>
<span class="ss">foo</span> <span class="o">=</span> <span class="p">{</span> <span class="ss">hi</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">${</span>pkgs<span class="o">.</span>hello<span class="si">}</span><span class="s2">&quot;</span><span class="p">;</span> <span class="ss">ciao</span> <span class="o">=</span> <span class="s2">&quot;bar&quot;</span><span class="p">;</span> <span class="p">};</span>
<span class="ss">baz</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">&quot;also, integers&quot;</span> <span class="o">=</span> <span class="mi">42</span><span class="p">;</span> <span class="p">};</span>
<span class="p">}</span>
<span class="o">&gt;</span> <span class="p">[</span>baz<span class="p">]</span>
<span class="o">&gt;</span> also<span class="p">,</span> <span class="ss">integers</span><span class="o">=</span><span class="mi">42</span>
<span class="o">&gt;</span>
<span class="o">&gt;</span> <span class="p">[</span>foo<span class="p">]</span>
<span class="o">&gt;</span> <span class="ss">ciao</span><span class="o">=</span>bar
<span class="o">&gt;</span> <span class="ss">hi</span><span class="o">=</span><span class="l">/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10</span>
</code></pre></div>
<p>The mk* configuration attributes can generically change
the way sections and key-value strings are generated.</p>
<p>For more examples see the test cases in ./tests/misc.nix.</p>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L227">lib/generators.nix:227</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toINIWithGlobalSection"><code>lib.generators.toINIWithGlobalSection</code></h2>
<p>Generate an INI-style config file from an attrset
specifying the global section (no header), and an
attrset of sections to an attrset of key-value pairs.</p>
<h3 id="inputs_4">Inputs</h3>
<p>1. Structured function argument</p>
<p>: mkSectionName (optional, default: <code>(name: escape [ "[" "]" ] name)</code>)
: apply transformations (e.g. escapes) to section names</p>
<p>: mkKeyValue (optional, default: <code>{} "="</code>)
: format a setting line from key and value</p>
<p>: listsAsDuplicateKeys (optional, default: <code>false</code>)
: allow lists as values for duplicate keys</p>
<p>2. Structured function argument</p>
<p>: globalSection (required)
: global section key-value pairs</p>
<p>: sections (optional, default: <code>{}</code>)
: attrset of sections to key-value pairs</p>
<h3 id="examples_1">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.generators.toINIWithGlobalSection</code> usage example</p>
<div class="highlight"><pre><span></span><code>generators<span class="o">.</span>toINIWithGlobalSection <span class="p">{}</span> <span class="p">{</span>
<span class="ss">globalSection</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">someGlobalKey</span> <span class="o">=</span> <span class="s2">&quot;hi&quot;</span><span class="p">;</span>
<span class="p">};</span>
<span class="ss">sections</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">foo</span> <span class="o">=</span> <span class="p">{</span> <span class="ss">hi</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">${</span>pkgs<span class="o">.</span>hello<span class="si">}</span><span class="s2">&quot;</span><span class="p">;</span> <span class="ss">ciao</span> <span class="o">=</span> <span class="s2">&quot;bar&quot;</span><span class="p">;</span> <span class="p">};</span>
<span class="ss">baz</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">&quot;also, integers&quot;</span> <span class="o">=</span> <span class="mi">42</span><span class="p">;</span> <span class="p">};</span>
<span class="p">}</span>
<span class="o">&gt;</span> <span class="ss">someGlobalKey</span><span class="o">=</span>hi
<span class="o">&gt;</span>
<span class="o">&gt;</span> <span class="p">[</span>baz<span class="p">]</span>
<span class="o">&gt;</span> also<span class="p">,</span> <span class="ss">integers</span><span class="o">=</span><span class="mi">42</span>
<span class="o">&gt;</span>
<span class="o">&gt;</span> <span class="p">[</span>foo<span class="p">]</span>
<span class="o">&gt;</span> <span class="ss">ciao</span><span class="o">=</span>bar
<span class="o">&gt;</span> <span class="ss">hi</span><span class="o">=</span><span class="l">/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10</span>
</code></pre></div>
<p>The mk* configuration attributes can generically change
the way sections and key-value strings are generated.</p>
<p>For more examples see the test cases in ./tests/misc.nix.</p>
</div>
<p>If you dont need a global section, you can also use
<code>generators.toINI</code> directly, which only takes
the part in <code>sections</code>.</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L305">lib/generators.nix:305</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toGitINI"><code>lib.generators.toGitINI</code></h2>
<p>Generate a git-config file from an attrset.</p>
<p>It has two major differences from the regular INI format:</p>
<ol>
<li>values are indented with tabs</li>
<li>sections can have sub-sections</li>
</ol>
<p>Further: https://git-scm.com/docs/git-config#EXAMPLES</p>
<h3 id="examples_2">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.generators.toGitINI</code> usage example</p>
<div class="highlight"><pre><span></span><code>generators<span class="o">.</span>toGitINI <span class="p">{</span>
url<span class="o">.</span><span class="s2">&quot;ssh://git@github.com/&quot;</span><span class="o">.</span><span class="ss">insteadOf</span> <span class="o">=</span> <span class="s2">&quot;https://github.com&quot;</span><span class="p">;</span>
user<span class="o">.</span><span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;edolstra&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="o">&gt;</span> <span class="p">[</span>url <span class="s2">&quot;ssh://git@github.com/&quot;</span><span class="p">]</span>
<span class="o">&gt;</span> <span class="ss">insteadOf</span> <span class="o">=</span> <span class="s2">&quot;https://github.com&quot;</span>
<span class="o">&gt;</span>
<span class="o">&gt;</span> <span class="p">[</span>user<span class="p">]</span>
<span class="o">&gt;</span> <span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;edolstra&quot;</span>
</code></pre></div>
</div>
<h3 id="inputs_5">Inputs</h3>
<p><code>attrs</code></p>
<p>: Key-value pairs to be converted to a git-config file.
See: https://git-scm.com/docs/git-config#_variables for possible values.</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L353">lib/generators.nix:353</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.mkDconfKeyValue"><code>lib.generators.mkDconfKeyValue</code></h2>
<p>mkKeyValueDefault wrapper that handles dconf INI quirks.
The main differences of the format is that it requires strings to be quoted.</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L400">lib/generators.nix:400</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toDconfINI"><code>lib.generators.toDconfINI</code></h2>
<p>Generates INI in dconf keyfile style. See https://help.gnome.org/admin/system-admin-guide/stable/dconf-keyfiles.html.en
for details.</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L406">lib/generators.nix:406</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.withRecursion"><code>lib.generators.withRecursion</code></h2>
<p>Recurses through a <code>Value</code> limited to a certain depth. (<code>depthLimit</code>)</p>
<p>If the depth is exceeded, an error is thrown, unless <code>throwOnDepthLimit</code> is set to <code>false</code>.</p>
<h3 id="inputs_6">Inputs</h3>
<p>Structured function argument</p>
<p>: depthLimit (required)
: If this option is not null, the given value will stop evaluating at a certain depth</p>
<p>: throwOnDepthLimit (optional, default: <code>true</code>)
: If this option is true, an error will be thrown, if a certain given depth is exceeded</p>
<p>Value
: The value to be evaluated recursively</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L426">lib/generators.nix:426</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toPretty"><code>lib.generators.toPretty</code></h2>
<p>Pretty print a value, akin to <code>builtins.trace</code>.</p>
<p>Should probably be a builtin as well.</p>
<p>The pretty-printed string should be suitable for rendering default values
in the NixOS manual. In particular, it should be as close to a valid Nix expression
as possible.</p>
<h3 id="inputs_7">Inputs</h3>
<p>Structured function argument
: allowPrettyValues
: If this option is true, attrsets like { __pretty = fn; val = …; }
will use fn to convert val to a pretty printed representation.
(This means fn is type Val -&gt; String.)
: multiline
: If this option is true, the output is indented with newlines for attribute sets and lists
: indent
: Initial indentation level</p>
<p>Value
: The value to be pretty printed</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L483">lib/generators.nix:483</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toPlist"><code>lib.generators.toPlist</code></h2>
<p>Translate a simple Nix expression to <a href="https://en.wikipedia.org/wiki/Property_list">Plist notation</a>.</p>
<h3 id="inputs_8">Inputs</h3>
<p>Options
: Empty set, there may be configuration options in the future</p>
<p>Value
: The value to be converted to Plist</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L557">lib/generators.nix:557</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toDhall"><code>lib.generators.toDhall</code></h2>
<p>Translate a simple Nix expression to Dhall notation.</p>
<p>Note that integers are translated to Integer and never
the Natural type.</p>
<h3 id="inputs_9">Inputs</h3>
<p>Options</p>
<p>: Empty set, there may be configuration options in the future</p>
<p>Value</p>
<p>: The value to be converted to Dhall</p>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L622">lib/generators.nix:622</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.toLua"><code>lib.generators.toLua</code></h2>
<p>Translate a simple Nix expression to Lua representation with occasional
Lua-inlines that can be constructed by mkLuaInline function.</p>
<p>Configuration:</p>
<ul>
<li>multiline - by default is true which results in indented block-like view.</li>
<li>indent - initial indent.</li>
<li>asBindings - by default generate single value, but with this use attrset to set global vars.</li>
</ul>
<p>Attention:</p>
<p>Regardless of multiline parameter there is no trailing newline.</p>
<h3 id="inputs_10">Inputs</h3>
<p>Structured function argument</p>
<p>: multiline (optional, default: <code>true</code>)
: If this option is true, the output is indented with newlines for attribute sets and lists
: indent (optional, default: <code>""</code>)
: Initial indentation level
: asBindings (optional, default: <code>false</code>)
: Interpret as variable bindings</p>
<p>Value</p>
<p>: The value to be converted to Lua</p>
<h3 id="type">Type</h3>
<div class="highlight"><pre><span></span><code>toLua :: AttrSet -&gt; Any -&gt; String
</code></pre></div>
<h3 id="examples_3">Examples</h3>
<div class="admonition example">
<p class="admonition-title"><code>lib.generators.toLua</code> usage example</p>
<div class="highlight"><pre><span></span><code>generators<span class="o">.</span>toLua <span class="p">{}</span>
<span class="p">{</span>
<span class="ss">cmd</span> <span class="o">=</span> <span class="p">[</span> <span class="s2">&quot;typescript-language-server&quot;</span> <span class="s2">&quot;--stdio&quot;</span> <span class="p">];</span>
settings<span class="o">.</span>workspace<span class="o">.</span><span class="ss">library</span> <span class="o">=</span> mkLuaInline <span class="s s-Multiline">&#39;&#39;vim.api.nvim_get_runtime_file(&quot;&quot;, true)&#39;&#39;</span><span class="p">;</span>
<span class="p">}</span>
<span class="o">-&gt;</span>
<span class="p">{</span>
<span class="p">[</span><span class="s2">&quot;cmd&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">&quot;typescript-language-server&quot;</span><span class="p">,</span>
<span class="s2">&quot;--stdio&quot;</span>
<span class="p">},</span>
<span class="p">[</span><span class="s2">&quot;settings&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
<span class="p">[</span><span class="s2">&quot;workspace&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
<span class="p">[</span><span class="s2">&quot;library&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>vim<span class="o">.</span>api<span class="o">.</span>nvim_get_runtime_file<span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="no">true</span><span class="p">))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
</div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L704">lib/generators.nix:704</a> in <code>&lt;nixpkgs&gt;</code>.</p>
<h2 id="function-library-lib.generators.mkLuaInline"><code>lib.generators.mkLuaInline</code></h2>
<p>Mark string as Lua expression to be inlined when processed by toLua.</p>
<h3 id="inputs_11">Inputs</h3>
<p><code>expr</code></p>
<p>: 1. Function argument</p>
<h3 id="type_1">Type</h3>
<div class="highlight"><pre><span></span><code>mkLuaInline :: String -&gt; AttrSet
</code></pre></div>
<p>Located at <a href="https://github.com/NixOS/nixpkgs/blob/master/lib/generators.nix#L771">lib/generators.nix:771</a> in <code>&lt;nixpkgs&gt;</code>.</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.251.104.377.557 1.791 1.851 3.086 3.562 3.803l.047.019a4.254 4.254 0 0 1-.267-.026h-.001c-.401-.053-.595-.135-.595-.135l-.157-.069-.092.144-.017.029Zm6.807-1.59c.086.017.136.058.136.145 0 .197-.242.5-.597.597l-.01-.161a.887.887 0 0 0 .283-.243c.078-.099.142-.217.188-.338Zm-1.591.006c.033.1.076.197.129.282.061.097.134.18.217.24l-.021.083c-.276-.093-.424-.293-.424-.466 0-.078.035-.119.099-.139Zm-.025-.664c-.275-.816-.795-2.022-1.505-2.179-.296.072-.938.096-.691-.145.246-.24 1.085-.048 1.283.217.145.194.744.806 1.011 1.737l.032.227a.324.324 0 0 0-.13.143Zm1.454-.266c.251-.99.889-1.639 1.039-1.841.197-.265 1.036-.457 1.283-.217.247.241-.395.217-.691.145-.69.152-1.2 1.296-1.481 2.109a.364.364 0 0 0-.067-.059.37.37 0 0 0-.092-.043l.009-.094Zm4.802-2.708a9.875 9.875 0 0 1-.596.705c-.304.315-1.203 1.176-1.963 1.916.647-.955 1.303-1.806 2.184-2.376.123-.08.249-.161.375-.245Z"/></svg>
</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>