docs/Lix/Command-Reference/New-CLI/nix3-flake/index.html

5181 lines
114 KiB
HTML
Raw 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/Lix/Command-Reference/New-CLI/nix3-flake/">
<link rel="prev" href="../nix3-flake-update/">
<link rel="next" href="../nix3-fmt/">
<link rel="icon" href="../../../../assets/aux-logo.svg">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.29">
<title>nix flake - 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="`nix flake` - Aux Docs" >
<meta property="og:description" content="Aux Documentation" >
<meta property="og:image" content="https://docs.auxolotl.org/assets/images/social/Lix/Command-Reference/New-CLI/nix3-flake.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/Lix/Command-Reference/New-CLI/nix3-flake/" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="`nix flake` - Aux Docs" >
<meta name="twitter:description" content="Aux Documentation" >
<meta name="twitter:image" content="https://docs.auxolotl.org/assets/images/social/Lix/Command-Reference/New-CLI/nix3-flake.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="#nix-flake" 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">
nix flake
</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 md-tabs__item--active">
<a href="../../../" 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">
<a href="../../../../Nixpkgs/" 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--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<div class="md-nav__link md-nav__container">
<a href="../../../" class="md-nav__link ">
<span class="md-ellipsis">
Lix
</span>
</a>
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Lix
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../glossary/" class="md-nav__link">
<span class="md-ellipsis">
Glossary
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../quick-start/" class="md-nav__link">
<span class="md-ellipsis">
Quick Start
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../Advanced-Topics/" class="md-nav__link">
<span class="md-ellipsis">
Advanced Topics
</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_4_5" checked>
<div class="md-nav__link md-nav__container">
<a href="../../" class="md-nav__link ">
<span class="md-ellipsis">
Command Reference
</span>
</a>
<label class="md-nav__link " for="__nav_4_5" id="__nav_4_5_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_5_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4_5">
<span class="md-nav__icon md-icon"></span>
Command Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../conf-file/" class="md-nav__link">
<span class="md-ellipsis">
nix.conf
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../env-common/" class="md-nav__link">
<span class="md-ellipsis">
Common Environment Variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../experimental-commands/" class="md-nav__link">
<span class="md-ellipsis">
Experimental Commands
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../main-commands/" class="md-nav__link">
<span class="md-ellipsis">
Main Commands
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-build/" class="md-nav__link">
<span class="md-ellipsis">
nix-build
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-channel/" class="md-nav__link">
<span class="md-ellipsis">
nix-channel
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-collect-garbage/" class="md-nav__link">
<span class="md-ellipsis">
nix-collect-garbage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-copy-closure/" class="md-nav__link">
<span class="md-ellipsis">
nix-copy-closure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-daemon/" class="md-nav__link">
<span class="md-ellipsis">
nix-daemon
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-hash/" class="md-nav__link">
<span class="md-ellipsis">
nix-hash
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-instantiate/" class="md-nav__link">
<span class="md-ellipsis">
nix-instantiate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-prefetch-url/" class="md-nav__link">
<span class="md-ellipsis">
nix-prefetch-url
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nix-shell/" class="md-nav__link">
<span class="md-ellipsis">
nix-shell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../opt-common/" class="md-nav__link">
<span class="md-ellipsis">
Common Options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../utilities/" class="md-nav__link">
<span class="md-ellipsis">
Utilities
</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_4_5_17" checked>
<label class="md-nav__link" for="__nav_4_5_17" id="__nav_4_5_17_label" tabindex="0">
<span class="md-ellipsis">
New CLI
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_5_17_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4_5_17">
<span class="md-nav__icon md-icon"></span>
New CLI
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../nix/" class="md-nav__link">
<span class="md-ellipsis">
nix
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-build/" class="md-nav__link">
<span class="md-ellipsis">
nix build
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-bundle/" class="md-nav__link">
<span class="md-ellipsis">
nix bundle
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-config-show/" class="md-nav__link">
<span class="md-ellipsis">
nix config show
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-config/" class="md-nav__link">
<span class="md-ellipsis">
nix config
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-copy/" class="md-nav__link">
<span class="md-ellipsis">
nix copy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-daemon/" class="md-nav__link">
<span class="md-ellipsis">
nix daemon
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-derivation-add/" class="md-nav__link">
<span class="md-ellipsis">
nix derivation add
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-derivation-show/" class="md-nav__link">
<span class="md-ellipsis">
nix derivation show
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-derivation/" class="md-nav__link">
<span class="md-ellipsis">
nix derivation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-develop/" class="md-nav__link">
<span class="md-ellipsis">
nix develop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-doctor/" class="md-nav__link">
<span class="md-ellipsis">
nix doctor
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-edit/" class="md-nav__link">
<span class="md-ellipsis">
nix edit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-eval/" class="md-nav__link">
<span class="md-ellipsis">
nix eval
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-archive/" class="md-nav__link">
<span class="md-ellipsis">
nix flake archive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-check/" class="md-nav__link">
<span class="md-ellipsis">
nix flake check
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-clone/" class="md-nav__link">
<span class="md-ellipsis">
nix flake clone
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-info/" class="md-nav__link">
<span class="md-ellipsis">
nix flake info
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-init/" class="md-nav__link">
<span class="md-ellipsis">
nix flake init
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-lock/" class="md-nav__link">
<span class="md-ellipsis">
nix flake lock
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-metadata/" class="md-nav__link">
<span class="md-ellipsis">
nix flake metadata
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-new/" class="md-nav__link">
<span class="md-ellipsis">
nix flake new
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-prefetch/" class="md-nav__link">
<span class="md-ellipsis">
nix flake prefetch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-show/" class="md-nav__link">
<span class="md-ellipsis">
nix flake show
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-flake-update/" class="md-nav__link">
<span class="md-ellipsis">
nix flake update
</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">
nix flake
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
nix flake
</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="#synopsis" class="md-nav__link">
<span class="md-ellipsis">
Synopsis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#description" class="md-nav__link">
<span class="md-ellipsis">
Description
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#flake-references" class="md-nav__link">
<span class="md-ellipsis">
Flake references
</span>
</a>
<nav class="md-nav" aria-label="Flake references">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#attribute-set-representation" class="md-nav__link">
<span class="md-ellipsis">
Attribute set representation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#url-like-syntax" class="md-nav__link">
<span class="md-ellipsis">
URL-like syntax
</span>
</a>
<nav class="md-nav" aria-label="URL-like syntax">
<ul class="md-nav__list">
<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="#path-like-syntax" class="md-nav__link">
<span class="md-ellipsis">
Path-like syntax
</span>
</a>
<nav class="md-nav" aria-label="Path-like syntax">
<ul class="md-nav__list">
<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="#flake-reference-attributes" class="md-nav__link">
<span class="md-ellipsis">
Flake reference attributes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#types" class="md-nav__link">
<span class="md-ellipsis">
Types
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#flake-format" class="md-nav__link">
<span class="md-ellipsis">
Flake format
</span>
</a>
<nav class="md-nav" aria-label="Flake format">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#flake-inputs" class="md-nav__link">
<span class="md-ellipsis">
Flake inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#lock-files" class="md-nav__link">
<span class="md-ellipsis">
Lock files
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../nix3-fmt/" class="md-nav__link">
<span class="md-ellipsis">
nix fmt
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-hash-file/" class="md-nav__link">
<span class="md-ellipsis">
nix hash file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-hash-path/" class="md-nav__link">
<span class="md-ellipsis">
nix hash path
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-hash-to-base16/" class="md-nav__link">
<span class="md-ellipsis">
nix hash to-base16
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-hash-to-base32/" class="md-nav__link">
<span class="md-ellipsis">
nix hash to-base32
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-hash-to-base64/" class="md-nav__link">
<span class="md-ellipsis">
nix hash to-base64
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-hash-to-sri/" class="md-nav__link">
<span class="md-ellipsis">
nix hash to-sri
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-hash/" class="md-nav__link">
<span class="md-ellipsis">
nix hash
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-help-stores/" class="md-nav__link">
<span class="md-ellipsis">
nix help-stores
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-help/" class="md-nav__link">
<span class="md-ellipsis">
nix help
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-key-convert-secret-to-public/" class="md-nav__link">
<span class="md-ellipsis">
nix key convert-secret-to-public
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-key-generate-secret/" class="md-nav__link">
<span class="md-ellipsis">
nix key generate-secret
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-key/" class="md-nav__link">
<span class="md-ellipsis">
nix key
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-log/" class="md-nav__link">
<span class="md-ellipsis">
nix log
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-nar-cat/" class="md-nav__link">
<span class="md-ellipsis">
nix nar cat
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-nar-dump-path/" class="md-nav__link">
<span class="md-ellipsis">
nix nar dump-path
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-nar-ls/" class="md-nav__link">
<span class="md-ellipsis">
nix nar ls
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-nar/" class="md-nav__link">
<span class="md-ellipsis">
nix nar
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-path-info/" class="md-nav__link">
<span class="md-ellipsis">
nix path-info
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-print-dev-env/" class="md-nav__link">
<span class="md-ellipsis">
nix print-dev-env
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile-diff-closures/" class="md-nav__link">
<span class="md-ellipsis">
nix profile diff-closures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile-history/" class="md-nav__link">
<span class="md-ellipsis">
nix profile history
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile-install/" class="md-nav__link">
<span class="md-ellipsis">
nix profile install
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile-list/" class="md-nav__link">
<span class="md-ellipsis">
nix profile list
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile-remove/" class="md-nav__link">
<span class="md-ellipsis">
nix profile remove
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile-rollback/" class="md-nav__link">
<span class="md-ellipsis">
nix profile rollback
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile-upgrade/" class="md-nav__link">
<span class="md-ellipsis">
nix profile upgrade
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile-wipe-history/" class="md-nav__link">
<span class="md-ellipsis">
nix profile wipe-history
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-profile/" class="md-nav__link">
<span class="md-ellipsis">
nix profile
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-realisation-info/" class="md-nav__link">
<span class="md-ellipsis">
nix realisation info
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-realisation/" class="md-nav__link">
<span class="md-ellipsis">
nix realisation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-registry-add/" class="md-nav__link">
<span class="md-ellipsis">
nix registry add
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-registry-list/" class="md-nav__link">
<span class="md-ellipsis">
nix registry list
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-registry-pin/" class="md-nav__link">
<span class="md-ellipsis">
nix registry pin
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-registry-remove/" class="md-nav__link">
<span class="md-ellipsis">
nix registry remove
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-registry/" class="md-nav__link">
<span class="md-ellipsis">
nix registry
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-repl/" class="md-nav__link">
<span class="md-ellipsis">
nix repl
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-run/" class="md-nav__link">
<span class="md-ellipsis">
nix run
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-search/" class="md-nav__link">
<span class="md-ellipsis">
nix search
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-shell/" class="md-nav__link">
<span class="md-ellipsis">
nix shell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-add-file/" class="md-nav__link">
<span class="md-ellipsis">
nix store add-file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-add-path/" class="md-nav__link">
<span class="md-ellipsis">
nix store add-path
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-cat/" class="md-nav__link">
<span class="md-ellipsis">
nix store cat
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-copy-log/" class="md-nav__link">
<span class="md-ellipsis">
nix store copy-log
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-copy-sigs/" class="md-nav__link">
<span class="md-ellipsis">
nix store copy-sigs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-delete/" class="md-nav__link">
<span class="md-ellipsis">
nix store delete
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-diff-closures/" class="md-nav__link">
<span class="md-ellipsis">
nix store diff-closures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-dump-path/" class="md-nav__link">
<span class="md-ellipsis">
nix store dump-path
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-gc/" class="md-nav__link">
<span class="md-ellipsis">
nix store gc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-ls/" class="md-nav__link">
<span class="md-ellipsis">
nix store ls
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-make-content-addressed/" class="md-nav__link">
<span class="md-ellipsis">
nix store make-content-addressed
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-optimise/" class="md-nav__link">
<span class="md-ellipsis">
nix store optimise
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-path-from-hash-part/" class="md-nav__link">
<span class="md-ellipsis">
nix store path-from-hash-part
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-ping/" class="md-nav__link">
<span class="md-ellipsis">
nix store ping
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-prefetch-file/" class="md-nav__link">
<span class="md-ellipsis">
nix store prefetch-file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-repair/" class="md-nav__link">
<span class="md-ellipsis">
nix store repair
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-sign/" class="md-nav__link">
<span class="md-ellipsis">
nix store sign
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store-verify/" class="md-nav__link">
<span class="md-ellipsis">
nix store verify
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-store/" class="md-nav__link">
<span class="md-ellipsis">
nix store
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-upgrade-nix/" class="md-nav__link">
<span class="md-ellipsis">
nix upgrade-nix
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nix3-why-depends/" class="md-nav__link">
<span class="md-ellipsis">
nix why-depends
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../files/" class="md-nav__link">
<span class="md-ellipsis">
Files
</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="../../nix-env/" class="md-nav__link">
<span class="md-ellipsis">
Nix env
</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="../../nix-store/" class="md-nav__link">
<span class="md-ellipsis">
Nix store
</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="../../../Package-Management/" class="md-nav__link">
<span class="md-ellipsis">
Package Management
</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="../../../architecture/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</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="../../../contributing/" class="md-nav__link">
<span class="md-ellipsis">
Contributing
</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="../../../installation/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</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="../../../language/" class="md-nav__link">
<span class="md-ellipsis">
Language
</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="../../../protocols/" class="md-nav__link">
<span class="md-ellipsis">
Protocols
</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="../../../release-notes/" class="md-nav__link">
<span class="md-ellipsis">
Release notes
</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="../../../../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--pruned md-nav__item--nested">
<a href="../../../../Nixpkgs/" class="md-nav__link">
<span class="md-ellipsis">
Nixpkgs
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</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="#synopsis" class="md-nav__link">
<span class="md-ellipsis">
Synopsis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#description" class="md-nav__link">
<span class="md-ellipsis">
Description
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#flake-references" class="md-nav__link">
<span class="md-ellipsis">
Flake references
</span>
</a>
<nav class="md-nav" aria-label="Flake references">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#attribute-set-representation" class="md-nav__link">
<span class="md-ellipsis">
Attribute set representation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#url-like-syntax" class="md-nav__link">
<span class="md-ellipsis">
URL-like syntax
</span>
</a>
<nav class="md-nav" aria-label="URL-like syntax">
<ul class="md-nav__list">
<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="#path-like-syntax" class="md-nav__link">
<span class="md-ellipsis">
Path-like syntax
</span>
</a>
<nav class="md-nav" aria-label="Path-like syntax">
<ul class="md-nav__list">
<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="#flake-reference-attributes" class="md-nav__link">
<span class="md-ellipsis">
Flake reference attributes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#types" class="md-nav__link">
<span class="md-ellipsis">
Types
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#flake-format" class="md-nav__link">
<span class="md-ellipsis">
Flake format
</span>
</a>
<nav class="md-nav" aria-label="Flake format">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#flake-inputs" class="md-nav__link">
<span class="md-ellipsis">
Flake inputs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#lock-files" class="md-nav__link">
<span class="md-ellipsis">
Lock files
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="nix-flake"><code>nix flake</code></h1>
<p>Manage Nix flakes.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
</div>
<blockquote>
<p>This program is
<a href="../../../contributing/experimental-features/#xp-feature-nix-command"><strong>experimental</strong></a>
and its interface is subject to change.</p>
</blockquote>
<h2 id="synopsis">Synopsis</h2>
<p><code>nix flake</code> [<em>option</em>...] <em>subcommand</em></p>
<p>where <em>subcommand</em> is one of the following:</p>
<ul>
<li><a href="../nix3-flake-archive/"><code>nix flake archive</code></a> - copy a flake and all its inputs to a store</li>
<li><a href="../nix3-flake-check/"><code>nix flake check</code></a> - check whether the flake evaluates and run its tests</li>
<li><a href="../nix3-flake-clone/"><code>nix flake clone</code></a> - clone flake repository</li>
<li><a href="../nix3-flake-info/"><code>nix flake info</code></a> - show flake metadata</li>
<li><a href="../nix3-flake-init/"><code>nix flake init</code></a> - create a flake in the current directory from a template</li>
<li><a href="../nix3-flake-lock/"><code>nix flake lock</code></a> - create missing lock file entries</li>
<li><a href="../nix3-flake-metadata/"><code>nix flake metadata</code></a> - show flake metadata</li>
<li><a href="../nix3-flake-new/"><code>nix flake new</code></a> - create a flake in the specified directory from a template</li>
<li><a href="../nix3-flake-prefetch/"><code>nix flake prefetch</code></a> - download the source tree denoted by a flake reference into the Nix store</li>
<li><a href="../nix3-flake-show/"><code>nix flake show</code></a> - show the outputs provided by a flake</li>
<li><a href="../nix3-flake-update/"><code>nix flake update</code></a> - update flake lock file</li>
</ul>
<h2 id="description">Description</h2>
<p><code>nix flake</code> provides subcommands for creating, modifying and querying
<em>Nix flakes</em>. Flakes are the unit for packaging Nix code in a
reproducible and discoverable way. They can have dependencies on other
flakes, making it possible to have multi-repository Nix projects.</p>
<p>A flake is a filesystem tree (typically fetched from a Git repository
or a tarball) that contains a file named <code>flake.nix</code> in the root
directory. <code>flake.nix</code> specifies some metadata about the flake such as
dependencies (called <em>inputs</em>), as well as its <em>outputs</em> (the Nix
values such as packages or NixOS modules provided by the flake).</p>
<h2 id="flake-references">Flake references</h2>
<p>Flake references (<em>flakerefs</em>) are a way to specify the location of a
flake. These have two different forms:</p>
<h3 id="attribute-set-representation">Attribute set representation</h3>
<p>Example:</p>
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="ss">type</span> <span class="o">=</span> <span class="s2">&quot;github&quot;</span><span class="p">;</span>
<span class="ss">owner</span> <span class="o">=</span> <span class="s2">&quot;NixOS&quot;</span><span class="p">;</span>
<span class="ss">repo</span> <span class="o">=</span> <span class="s2">&quot;nixpkgs&quot;</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<p>The only required attribute is <code>type</code>. The supported types are
listed below.</p>
<h3 id="url-like-syntax">URL-like syntax</h3>
<p>Example:</p>
<div class="highlight"><pre><span></span><code>github:NixOS/nixpkgs
</code></pre></div>
<p>These are used on the command line as a more convenient alternative
to the attribute set representation. For instance, in the command</p>
<div class="highlight"><pre><span></span><code><span class="gp">#</span><span class="c1"># nix build github:NixOS/nixpkgs#hello</span>
</code></pre></div>
<p><code>github:NixOS/nixpkgs</code> is a flake reference (while <code>hello</code> is an
output attribute). They are also allowed in the <code>inputs</code> attribute
of a flake, e.g.</p>
<div class="highlight"><pre><span></span><code>inputs<span class="o">.</span>nixpkgs<span class="o">.</span><span class="ss">url</span> <span class="o">=</span> <span class="s2">&quot;github:NixOS/nixpkgs&quot;</span><span class="p">;</span>
</code></pre></div>
<p>is equivalent to</p>
<div class="highlight"><pre><span></span><code>inputs<span class="o">.</span><span class="ss">nixpkgs</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">type</span> <span class="o">=</span> <span class="s2">&quot;github&quot;</span><span class="p">;</span>
<span class="ss">owner</span> <span class="o">=</span> <span class="s2">&quot;NixOS&quot;</span><span class="p">;</span>
<span class="ss">repo</span> <span class="o">=</span> <span class="s2">&quot;nixpkgs&quot;</span><span class="p">;</span>
<span class="p">};</span>
</code></pre></div>
<h4 id="examples">Examples</h4>
<p>Here are some examples of flake references in their URL-like representation:</p>
<ul>
<li><code>nixpkgs</code>: The <code>nixpkgs</code> entry in the flake registry.</li>
<li><code>nixpkgs/a3a3dda3bacf61e8a39258a0ed9c924eeca8e293</code>: The <code>nixpkgs</code>
entry in the flake registry, with its Git revision overridden to a
specific value.</li>
<li><code>github:NixOS/nixpkgs</code>: The <code>master</code> branch of the <code>NixOS/nixpkgs</code>
repository on GitHub.</li>
<li><code>github:NixOS/nixpkgs/nixos-20.09</code>: The <code>nixos-20.09</code> branch of the
<code>nixpkgs</code> repository.</li>
<li><code>github:NixOS/nixpkgs/a3a3dda3bacf61e8a39258a0ed9c924eeca8e293</code>: A
specific revision of the <code>nixpkgs</code> repository.</li>
<li><code>github:edolstra/nix-warez?dir=blender</code>: A flake in a subdirectory
of a GitHub repository.</li>
<li><code>git+https://github.com/NixOS/patchelf</code>: A Git repository.</li>
<li><code>git+https://github.com/NixOS/patchelf?ref=master</code>: A specific
branch of a Git repository.</li>
<li><code>git+https://github.com/NixOS/patchelf?ref=master&amp;rev=f34751b88bd07d7f44f5cd3200fb4122bf916c7e</code>:
A specific branch <em>and</em> revision of a Git repository.</li>
<li><code>https://github.com/NixOS/patchelf/archive/master.tar.gz</code>: A tarball
flake.</li>
</ul>
<h3 id="path-like-syntax">Path-like syntax</h3>
<p>Flakes corresponding to a local path can also be referred to by a direct path reference, either <code>/absolute/path/to/the/flake</code> or <code>./relative/path/to/the/flake</code> (note that the leading <code>./</code> is mandatory for relative paths to avoid any ambiguity).</p>
<p>The semantic of such a path is as follows:</p>
<ul>
<li>If the directory is part of a Git repository, then the input will be treated as a <code>git+file:</code> URL, otherwise it will be treated as a <code>path:</code> url;</li>
<li>If the directory doesn't contain a <code>flake.nix</code> file, then Lix will search for such a file upwards in the file system hierarchy until it finds any of:<ol>
<li>The Git repository root, or</li>
<li>The filesystem root (/), or</li>
<li>A folder on a different mount point.</li>
</ol>
</li>
</ul>
<h4 id="examples_1">Examples</h4>
<ul>
<li><code>.</code>: The flake to which the current directory belongs to.</li>
<li><code>/home/alice/src/patchelf</code>: A flake in some other directory.</li>
</ul>
<h3 id="flake-reference-attributes">Flake reference attributes</h3>
<p>The following generic flake reference attributes are supported:</p>
<ul>
<li>
<p><code>dir</code>: The subdirectory of the flake in which <code>flake.nix</code> is
located. This parameter enables having multiple flakes in a
repository or tarball. The default is the root directory of the
flake.</p>
</li>
<li>
<p><code>narHash</code>: The hash of the NAR serialisation (in SRI format) of the
contents of the flake. This is useful for flake types such as
tarballs that lack a unique content identifier such as a Git commit
hash.</p>
</li>
</ul>
<p>In addition, the following attributes are common to several flake
reference types:</p>
<ul>
<li>
<p><code>rev</code>: A Git or Mercurial commit hash.</p>
</li>
<li>
<p><code>ref</code>: A Git or Mercurial branch or tag name.</p>
</li>
</ul>
<p>Finally, some attribute are typically not specified by the user, but
can occur in <em>locked</em> flake references and are available to Nix code:</p>
<ul>
<li>
<p><code>revCount</code>: The number of ancestors of the commit <code>rev</code>.</p>
</li>
<li>
<p><code>lastModified</code>: The timestamp (in seconds since the Unix epoch) of
the last modification of this version of the flake. For
Git/Mercurial flakes, this is the commit time of commit <em>rev</em>, while
for tarball flakes, it's the most recent timestamp of any file
inside the tarball.</p>
</li>
</ul>
<h3 id="types">Types</h3>
<p>Currently the <code>type</code> attribute can be one of the following:</p>
<ul>
<li><code>path</code>: arbitrary local directories, or local Git trees. The
required attribute <code>path</code> specifies the path of the flake. The URL
form is</li>
</ul>
<div class="highlight"><pre><span></span><code>[path:]&lt;path&gt;(?&lt;params)?
</code></pre></div>
<p>where <em>path</em> is an absolute path.</p>
<p><em>path</em> must be a directory in the file system containing a file
named <code>flake.nix</code>.</p>
<p><em>path</em> generally must be an absolute path. However, on the command
line, it can be a relative path (e.g. <code>.</code> or <code>./foo</code>) which is
interpreted as relative to the current directory. In this case, it
must start with <code>.</code> to avoid ambiguity with registry lookups
(e.g. <code>nixpkgs</code> is a registry lookup; <code>./nixpkgs</code> is a relative
path).</p>
<ul>
<li><code>git</code>: Git repositories. The location of the repository is specified
by the attribute <code>url</code>.</li>
</ul>
<p>They have the URL form</p>
<div class="highlight"><pre><span></span><code>git(+http|+https|+ssh|+git|+file|):(//&lt;server&gt;)?&lt;path&gt;(?&lt;params&gt;)?
</code></pre></div>
<p>The <code>ref</code> attribute defaults to resolving the <code>HEAD</code> reference.</p>
<p>The <code>rev</code> attribute must denote a commit that exists in the branch
or tag specified by the <code>ref</code> attribute, since Lix doesn't do a full
clone of the remote repository by default (and the Git protocol
doesn't allow fetching a <code>rev</code> without a known <code>ref</code>). The default
is the commit currently pointed to by <code>ref</code>.</p>
<p>When <code>git+file</code> is used without specifying <code>ref</code> or <code>rev</code>, files are
fetched directly from the local <code>path</code> as long as they have been added
to the Git repository. If there are uncommitted changes, the reference
is treated as dirty and a warning is printed.</p>
<p>For example, the following are valid Git flake references:</p>
<ul>
<li><code>git+https://example.org/my/repo</code></li>
<li><code>git+https://example.org/my/repo?dir=flake1</code></li>
<li><code>git+ssh://git@github.com/NixOS/nix?ref=v1.2.3</code></li>
<li><code>git://github.com/edolstra/dwarffs?ref=unstable&amp;rev=e486d8d40e626a20e06d792db8cc5ac5aba9a5b4</code></li>
<li>
<p><code>git+file:///home/my-user/some-repo/some-repo</code></p>
</li>
<li>
<p><code>mercurial</code>: Mercurial repositories. The URL form is similar to the
<code>git</code> type, except that the URL schema must be one of <code>hg+http</code>,
<code>hg+https</code>, <code>hg+ssh</code> or <code>hg+file</code>.</p>
</li>
<li>
<p><code>tarball</code>: Tarballs. The location of the tarball is specified by the
attribute <code>url</code>.</p>
</li>
</ul>
<p>In URL form, the schema must be <code>tarball+http://</code>, <code>tarball+https://</code> or <code>tarball+file://</code>.
If the extension corresponds to a known archive format (<code>.zip</code>, <code>.tar</code>,
<code>.tgz</code>, <code>.tar.gz</code>, <code>.tar.xz</code>, <code>.tar.bz2</code> or <code>.tar.zst</code>), then the <code>tarball+</code>
can be dropped.</p>
<ul>
<li><code>file</code>: Plain files or directory tarballs, either over http(s) or from the local
disk.</li>
</ul>
<p>In URL form, the schema must be <code>file+http://</code>, <code>file+https://</code> or <code>file+file://</code>.
If the extension doesnt correspond to a known archive format (as defined by the
<code>tarball</code> fetcher), then the <code>file+</code> prefix can be dropped.</p>
<ul>
<li>
<p><code>github</code>: A more efficient way to fetch repositories from
GitHub. The following attributes are required:</p>
</li>
<li>
<p><code>owner</code>: The owner of the repository.</p>
</li>
<li>
<p><code>repo</code>: The name of the repository.</p>
</li>
</ul>
<p>These are downloaded as tarball archives, rather than
through Git. This is often much faster and uses less disk space
since it doesn't require fetching the entire history of the
repository. On the other hand, it doesn't allow incremental fetching
(but full downloads are often faster than incremental fetches!).</p>
<p>The URL syntax for <code>github</code> flakes is:</p>
<div class="highlight"><pre><span></span><code>github:&lt;owner&gt;/&lt;repo&gt;(/&lt;rev-or-ref&gt;)?(?&lt;params&gt;)?
</code></pre></div>
<p><code>&lt;rev-or-ref&gt;</code> specifies the name of a branch or tag (<code>ref</code>), or a
commit hash (<code>rev</code>). Note that unlike Git, GitHub allows fetching by
commit hash without specifying a branch or tag.</p>
<p>You can also specify <code>host</code> as a parameter, to point to a custom GitHub
Enterprise server.</p>
<p>Some examples:</p>
<ul>
<li><code>github:edolstra/dwarffs</code></li>
<li><code>github:edolstra/dwarffs/unstable</code></li>
<li><code>github:edolstra/dwarffs/d3f2baba8f425779026c6ec04021b2e927f61e31</code></li>
<li>
<p><code>github:internal/project?host=company-github.example.org</code></p>
</li>
<li>
<p><code>gitlab</code>: Similar to <code>github</code>, is a more efficient way to fetch
GitLab repositories. The following attributes are required:</p>
</li>
<li>
<p><code>owner</code>: The owner of the repository.</p>
</li>
<li>
<p><code>repo</code>: The name of the repository.</p>
</li>
</ul>
<p>Like <code>github</code>, these are downloaded as tarball archives.</p>
<p>The URL syntax for <code>gitlab</code> flakes is:</p>
<p><code>gitlab:&lt;owner&gt;/&lt;repo&gt;(/&lt;rev-or-ref&gt;)?(?&lt;params&gt;)?</code></p>
<p><code>&lt;rev-or-ref&gt;</code> works the same as <code>github</code>. Either a branch or tag name
(<code>ref</code>), or a commit hash (<code>rev</code>) can be specified.</p>
<p>Since GitLab allows for self-hosting, you can specify <code>host</code> as
a parameter, to point to any instances other than <code>gitlab.com</code>.</p>
<p>Some examples:</p>
<ul>
<li><code>gitlab:veloren/veloren</code></li>
<li><code>gitlab:veloren/veloren/master</code></li>
<li><code>gitlab:veloren/veloren/80a4d7f13492d916e47d6195be23acae8001985a</code></li>
<li><code>gitlab:openldap/openldap?host=git.openldap.org</code></li>
</ul>
<p>When accessing a project in a (nested) subgroup, make sure to URL-encode any
slashes, i.e. replace <code>/</code> with <code>%2F</code>:</p>
<ul>
<li>
<p><code>gitlab:veloren%2Fdev/rfcs</code></p>
</li>
<li>
<p><code>sourcehut</code>: Similar to <code>github</code>, is a more efficient way to fetch
SourceHut repositories. The following attributes are required:</p>
</li>
<li>
<p><code>owner</code>: The owner of the repository (including leading <code>~</code>).</p>
</li>
<li>
<p><code>repo</code>: The name of the repository.</p>
</li>
</ul>
<p>Like <code>github</code>, these are downloaded as tarball archives.</p>
<p>The URL syntax for <code>sourcehut</code> flakes is:</p>
<p><code>sourcehut:&lt;owner&gt;/&lt;repo&gt;(/&lt;rev-or-ref&gt;)?(?&lt;params&gt;)?</code></p>
<p><code>&lt;rev-or-ref&gt;</code> works the same as <code>github</code>. Either a branch or tag name
(<code>ref</code>), or a commit hash (<code>rev</code>) can be specified.</p>
<p>Since SourceHut allows for self-hosting, you can specify <code>host</code> as
a parameter, to point to any instances other than <code>git.sr.ht</code>.</p>
<p>Currently, <code>ref</code> name resolution only works for Git repositories.
You can refer to Mercurial repositories by simply changing <code>host</code> to
<code>hg.sr.ht</code> (or any other Mercurial instance). With the caveat
that you must explicitly specify a commit hash (<code>rev</code>).</p>
<p>Some examples:</p>
<ul>
<li><code>sourcehut:~misterio/nix-colors</code></li>
<li><code>sourcehut:~misterio/nix-colors/main</code></li>
<li><code>sourcehut:~misterio/nix-colors?host=git.example.org</code></li>
<li><code>sourcehut:~misterio/nix-colors/182b4b8709b8ffe4e9774a4c5d6877bf6bb9a21c</code></li>
<li>
<p><code>sourcehut:~misterio/nix-colors/21c1a380a6915d890d408e9f22203436a35bb2de?host=hg.sr.ht</code></p>
</li>
<li>
<p><code>indirect</code>: Indirections through the flake registry. These have the
form</p>
</li>
</ul>
<div class="highlight"><pre><span></span><code>[flake:]&lt;flake-id&gt;(/&lt;rev-or-ref&gt;(/rev)?)?
</code></pre></div>
<p>These perform a lookup of <code>&lt;flake-id&gt;</code> in the flake registry. For
example, <code>nixpkgs</code> and <code>nixpkgs/release-20.09</code> are indirect flake
references. The specified <code>rev</code> and/or <code>ref</code> are merged with the
entry in the registry; see <a href="../nix3-registry/">nix registry</a> for
details.</p>
<h2 id="flake-format">Flake format</h2>
<p>As an example, here is a simple <code>flake.nix</code> that depends on the
Nixpkgs flake and provides a single package (i.e. an
<a href="../nix/#installables">installable</a> derivation):</p>
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="ss">description</span> <span class="o">=</span> <span class="s2">&quot;A flake for building Hello World&quot;</span><span class="p">;</span>
inputs<span class="o">.</span>nixpkgs<span class="o">.</span><span class="ss">url</span> <span class="o">=</span> <span class="s2">&quot;github:NixOS/nixpkgs/nixos-20.03&quot;</span><span class="p">;</span>
<span class="ss">outputs</span> <span class="o">=</span> <span class="p">{</span> self<span class="p">,</span> nixpkgs <span class="p">}:</span> <span class="p">{</span>
packages<span class="o">.</span>x86_64-linux<span class="o">.</span><span class="ss">default</span> <span class="o">=</span>
<span class="c1">## Notice the reference to nixpkgs here.</span>
<span class="k">with</span> <span class="nb">import</span> nixpkgs <span class="p">{</span> <span class="ss">system</span> <span class="o">=</span> <span class="s2">&quot;x86_64-linux&quot;</span><span class="p">;</span> <span class="p">};</span>
stdenv<span class="o">.</span>mkDerivation <span class="p">{</span>
<span class="ss">name</span> <span class="o">=</span> <span class="s2">&quot;hello&quot;</span><span class="p">;</span>
<span class="ss">src</span> <span class="o">=</span> self<span class="p">;</span>
<span class="ss">buildPhase</span> <span class="o">=</span> <span class="s2">&quot;gcc -o hello ./hello.c&quot;</span><span class="p">;</span>
<span class="ss">installPhase</span> <span class="o">=</span> <span class="s2">&quot;mkdir -p $out/bin; install -t $out/bin hello&quot;</span><span class="p">;</span>
<span class="p">};</span>
<span class="p">};</span>
<span class="p">}</span>
</code></pre></div>
<p>The following attributes are supported in <code>flake.nix</code>:</p>
<ul>
<li>
<p><code>description</code>: A short, one-line description of the flake.</p>
</li>
<li>
<p><code>inputs</code>: An attrset specifying the dependencies of the flake
(described below).</p>
</li>
<li>
<p><code>outputs</code>: A function that, given an attribute set containing the
outputs of each of the input flakes keyed by their identifier,
yields the Nix values provided by this flake. Thus, in the example
above, <code>inputs.nixpkgs</code> contains the result of the call to the
<code>outputs</code> function of the <code>nixpkgs</code> flake.</p>
</li>
</ul>
<p>In addition to the outputs of each input, each input in <code>inputs</code>
also contains some metadata about the inputs. These are:</p>
<ul>
<li>
<p><code>outPath</code>: The path in the Nix store of the flake's source tree.
This way, the attribute set can be passed to <code>import</code> as if it was a path,
as in the example above (<code>import nixpkgs</code>).</p>
</li>
<li>
<p><code>rev</code>: The commit hash of the flake's repository, if applicable.</p>
</li>
<li>
<p><code>revCount</code>: The number of ancestors of the revision <code>rev</code>. This is
not available for <code>github</code> repositories, since they're fetched as
tarballs rather than as Git repositories.</p>
</li>
<li>
<p><code>lastModifiedDate</code>: The commit time of the revision <code>rev</code>, in the
format <code>%Y%m%d%H%M%S</code> (e.g. <code>20181231100934</code>). Unlike <code>revCount</code>,
this is available for both Git and GitHub repositories, so it's
useful for generating (hopefully) monotonically increasing version
strings.</p>
</li>
<li>
<p><code>lastModified</code>: The commit time of the revision <code>rev</code> as an integer
denoting the number of seconds since 1970.</p>
</li>
<li>
<p><code>narHash</code>: The SHA-256 (in SRI format) of the NAR serialization of
the flake's source tree.</p>
</li>
</ul>
<p>The value returned by the <code>outputs</code> function must be an attribute
set. The attributes can have arbitrary values; however, various
<code>nix</code> subcommands require specific attributes to have a specific
value (e.g. <code>packages.x86_64-linux</code> must be an attribute set of
derivations built for the <code>x86_64-linux</code> platform).</p>
<ul>
<li><code>nixConfig</code>: a set of <code>nix.conf</code> options to be set when evaluating any part of a flake.
This attribute is only considered if the flake is at top-level (i.e. if it is passed directly to <code>nix build</code>, <code>nix run</code>, etc, rather than as an input of another flake).
In the interests of security, only a small set of set of options is allowed to be set without confirmation so long as <a href="../../conf-file/#conf-accept-flake-config"><code>accept-flake-config</code></a> is not enabled in the global configuration:</li>
<li><a href="../../conf-file/#conf-bash-prompt"><code>bash-prompt</code></a></li>
<li><a href="../../conf-file/#conf-bash-prompt-prefix"><code>bash-prompt-prefix</code></a></li>
<li><a href="../../conf-file/#conf-bash-prompt-suffix"><code>bash-prompt-suffix</code></a></li>
<li><a href="../../conf-file/#conf-flake-registry"><code>flake-registry</code></a></li>
<li><a href="../../conf-file/#conf-commit-lockfile-summary"><code>commit-lockfile-summary</code></a></li>
</ul>
<p>For the avoidance of doubt, setting <code>accept-flake-config</code> in <code>nix.conf</code> or passing <code>--accept-flake-config</code> <em>allows root access to your machine</em> if you are running as a trusted user and don't read <code>nixConfig</code> in every flake you build.</p>
<h3 id="flake-inputs">Flake inputs</h3>
<p>The attribute <code>inputs</code> specifies the dependencies of a flake, as an
attrset mapping input names to flake references. For example, the
following specifies a dependency on the <code>nixpkgs</code> and <code>import-cargo</code>
repositories:</p>
<div class="highlight"><pre><span></span><code><span class="c1">## A GitHub repository.</span>
inputs<span class="o">.</span><span class="nb">import</span><span class="o">-</span><span class="ss">cargo</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">type</span> <span class="o">=</span> <span class="s2">&quot;github&quot;</span><span class="p">;</span>
<span class="ss">owner</span> <span class="o">=</span> <span class="s2">&quot;edolstra&quot;</span><span class="p">;</span>
<span class="ss">repo</span> <span class="o">=</span> <span class="s2">&quot;import-cargo&quot;</span><span class="p">;</span>
<span class="p">};</span>
<span class="c1">## An indirection through the flake registry.</span>
inputs<span class="o">.</span><span class="ss">nixpkgs</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">type</span> <span class="o">=</span> <span class="s2">&quot;indirect&quot;</span><span class="p">;</span>
<span class="ss">id</span> <span class="o">=</span> <span class="s2">&quot;nixpkgs&quot;</span><span class="p">;</span>
<span class="p">};</span>
</code></pre></div>
<p>Alternatively, you can use the URL-like syntax:</p>
<div class="highlight"><pre><span></span><code>inputs<span class="o">.</span><span class="nb">import</span><span class="o">-</span>cargo<span class="o">.</span><span class="ss">url</span> <span class="o">=</span> <span class="s2">&quot;github:edolstra/import-cargo&quot;</span><span class="p">;</span>
inputs<span class="o">.</span>nixpkgs<span class="o">.</span><span class="ss">url</span> <span class="o">=</span> <span class="s2">&quot;nixpkgs&quot;</span><span class="p">;</span>
</code></pre></div>
<p>Each input is fetched, evaluated and passed to the <code>outputs</code> function
as a set of attributes with the same name as the corresponding
input. The special input named <code>self</code> refers to the outputs and source
tree of <em>this</em> flake. Thus, a typical <code>outputs</code> function looks like
this:</p>
<div class="highlight"><pre><span></span><code><span class="ss">outputs</span> <span class="o">=</span> <span class="p">{</span> self<span class="p">,</span> nixpkgs<span class="p">,</span> <span class="nb">import</span><span class="o">-</span>cargo <span class="p">}:</span> <span class="p">{</span>
<span class="o">...</span> outputs <span class="o">...</span>
<span class="p">};</span>
</code></pre></div>
<p>It is also possible to omit an input entirely and <em>only</em> list it as
expected function argument to <code>outputs</code>. Thus,</p>
<div class="highlight"><pre><span></span><code><span class="ss">outputs</span> <span class="o">=</span> <span class="p">{</span> self<span class="p">,</span> nixpkgs <span class="p">}:</span> <span class="o">...</span><span class="p">;</span>
</code></pre></div>
<p>without an <code>inputs.nixpkgs</code> attribute is equivalent to</p>
<div class="highlight"><pre><span></span><code>inputs<span class="o">.</span><span class="ss">nixpkgs</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">type</span> <span class="o">=</span> <span class="s2">&quot;indirect&quot;</span><span class="p">;</span>
<span class="ss">id</span> <span class="o">=</span> <span class="s2">&quot;nixpkgs&quot;</span><span class="p">;</span>
<span class="p">};</span>
</code></pre></div>
<p>Repositories that don't contain a <code>flake.nix</code> can also be used as
inputs, by setting the input's <code>flake</code> attribute to <code>false</code>:</p>
<div class="highlight"><pre><span></span><code>inputs<span class="o">.</span><span class="ss">grcov</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">type</span> <span class="o">=</span> <span class="s2">&quot;github&quot;</span><span class="p">;</span>
<span class="ss">owner</span> <span class="o">=</span> <span class="s2">&quot;mozilla&quot;</span><span class="p">;</span>
<span class="ss">repo</span> <span class="o">=</span> <span class="s2">&quot;grcov&quot;</span><span class="p">;</span>
<span class="ss">flake</span> <span class="o">=</span> <span class="no">false</span><span class="p">;</span>
<span class="p">};</span>
<span class="ss">outputs</span> <span class="o">=</span> <span class="p">{</span> self<span class="p">,</span> nixpkgs<span class="p">,</span> grcov <span class="p">}:</span> <span class="p">{</span>
packages<span class="o">.</span>x86_64-linux<span class="o">.</span><span class="ss">grcov</span> <span class="o">=</span> stdenv<span class="o">.</span>mkDerivation <span class="p">{</span>
<span class="ss">src</span> <span class="o">=</span> grcov<span class="p">;</span>
<span class="o">...</span>
<span class="p">};</span>
<span class="p">};</span>
</code></pre></div>
<p>Transitive inputs can be overridden from a <code>flake.nix</code> file. For
example, the following overrides the <code>nixpkgs</code> input of the <code>nixops</code>
input:</p>
<div class="highlight"><pre><span></span><code>inputs<span class="o">.</span>nixops<span class="o">.</span>inputs<span class="o">.</span><span class="ss">nixpkgs</span> <span class="o">=</span> <span class="p">{</span>
<span class="ss">type</span> <span class="o">=</span> <span class="s2">&quot;github&quot;</span><span class="p">;</span>
<span class="ss">owner</span> <span class="o">=</span> <span class="s2">&quot;my-org&quot;</span><span class="p">;</span>
<span class="ss">repo</span> <span class="o">=</span> <span class="s2">&quot;nixpkgs&quot;</span><span class="p">;</span>
<span class="p">};</span>
</code></pre></div>
<p>It is also possible to "inherit" an input from another input. This is
useful to minimize flake dependencies. For example, the following sets
the <code>nixpkgs</code> input of the top-level flake to be equal to the
<code>nixpkgs</code> input of the <code>dwarffs</code> input of the top-level flake:</p>
<div class="highlight"><pre><span></span><code>inputs<span class="o">.</span>nixpkgs<span class="o">.</span><span class="ss">follows</span> <span class="o">=</span> <span class="s2">&quot;dwarffs/nixpkgs&quot;</span><span class="p">;</span>
</code></pre></div>
<p>The value of the <code>follows</code> attribute is a <code>/</code>-separated sequence of
input names denoting the path of inputs to be followed from the root
flake.</p>
<p>Overrides and <code>follows</code> can be combined, e.g.</p>
<div class="highlight"><pre><span></span><code>inputs<span class="o">.</span>nixops<span class="o">.</span>inputs<span class="o">.</span>nixpkgs<span class="o">.</span><span class="ss">follows</span> <span class="o">=</span> <span class="s2">&quot;dwarffs/nixpkgs&quot;</span><span class="p">;</span>
</code></pre></div>
<p>sets the <code>nixpkgs</code> input of <code>nixops</code> to be the same as the <code>nixpkgs</code>
input of <code>dwarffs</code>. It is worth noting, however, that it is generally
not useful to eliminate transitive <code>nixpkgs</code> flake inputs in this
way. Most flakes provide their functionality through Nixpkgs overlays
or NixOS modules, which are composed into the top-level flake's
<code>nixpkgs</code> input; so their own <code>nixpkgs</code> input is usually irrelevant.</p>
<h2 id="lock-files">Lock files</h2>
<p>Inputs specified in <code>flake.nix</code> are typically "unlocked" in the sense
that they don't specify an exact revision. To ensure reproducibility,
Nix will automatically generate and use a <em>lock file</em> called
<code>flake.lock</code> in the flake's directory. The lock file contains a graph
structure isomorphic to the graph of dependencies of the root
flake. Each node in the graph (except the root node) maps the
(usually) unlocked input specifications in <code>flake.nix</code> to locked input
specifications. Each node also contains some metadata, such as the
dependencies (outgoing edges) of the node.</p>
<p>For example, if <code>flake.nix</code> has the inputs in the example above, then
the resulting lock file might be:</p>
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;version&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;root&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;n1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;nodes&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;n1&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;inputs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;nixpkgs&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;n2&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;import-cargo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;n3&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;grcov&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;n4&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;n2&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;inputs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
<span class="w"> </span><span class="nt">&quot;locked&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;owner&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;edolstra&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;repo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;nixpkgs&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;rev&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;7f8d4b088e2df7fdb6b513bc2d6941f1d422a013&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;github&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lastModified&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1580555482</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;narHash&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;sha256-OnpEWzNxF/AU4KlqBXM2s5PWvfI5/BS6xQrPvkF5tO8=&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;original&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;nixpkgs&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;indirect&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;n3&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;inputs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
<span class="w"> </span><span class="nt">&quot;locked&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;owner&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;edolstra&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;repo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;import-cargo&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;rev&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;8abf7b3a8cbe1c8a885391f826357a74d382a422&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;github&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lastModified&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1567183309</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;narHash&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;sha256-wIXWOpX9rRjK5NDsL6WzuuBJl2R0kUCnlpZUrASykSc=&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;original&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;owner&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;edolstra&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;repo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;import-cargo&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;github&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;n4&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;inputs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
<span class="w"> </span><span class="nt">&quot;locked&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;owner&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;mozilla&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;repo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;grcov&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;rev&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;989a84bb29e95e392589c4e73c29189fd69a1d4e&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;github&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;lastModified&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1580729070</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;narHash&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;sha256-235uMxYlHxJ5y92EXZWAYEsEb6mm+b069GAd+BOIOxI=&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;original&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;owner&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;mozilla&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;repo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;grcov&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;github&quot;</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="nt">&quot;flake&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<p>This graph has 4 nodes: the root flake, and its 3 dependencies. The
nodes have arbitrary labels (e.g. <code>n1</code>). The label of the root node of
the graph is specified by the <code>root</code> attribute. Nodes contain the
following fields:</p>
<ul>
<li>
<p><code>inputs</code>: The dependencies of this node, as a mapping from input
names (e.g. <code>nixpkgs</code>) to node labels (e.g. <code>n2</code>).</p>
</li>
<li>
<p><code>original</code>: The original input specification from <code>flake.lock</code>, as a
set of <code>builtins.fetchTree</code> arguments.</p>
</li>
<li>
<p><code>locked</code>: The locked input specification, as a set of
<code>builtins.fetchTree</code> arguments. Thus, in the example above, when we
build this flake, the input <code>nixpkgs</code> is mapped to revision
<code>7f8d4b088e2df7fdb6b513bc2d6941f1d422a013</code> of the <code>edolstra/nixpkgs</code>
repository on GitHub.</p>
</li>
</ul>
<p>It also includes the attribute <code>narHash</code>, specifying the expected
contents of the tree in the Nix store (as computed by <code>nix
hash-path</code>), and may include input-type-specific attributes such as
the <code>lastModified</code> or <code>revCount</code>. The main reason for these
attributes is to allow flake inputs to be substituted from a binary
cache: <code>narHash</code> allows the store path to be computed, while the
other attributes are necessary because they provide information not
stored in the store path.</p>
<ul>
<li><code>flake</code>: A Boolean denoting whether this is a flake or non-flake
dependency. Corresponds to the <code>flake</code> attribute in the <code>inputs</code>
attribute in <code>flake.nix</code>.</li>
</ul>
<p>The <code>original</code> and <code>locked</code> attributes are omitted for the root
node. This is because we cannot record the commit hash or content hash
of the root flake, since modifying <code>flake.lock</code> will invalidate these.</p>
<p>The graph representation of lock files allows circular dependencies
between flakes. For example, here are two flakes that reference each
other:</p>
<div class="highlight"><pre><span></span><code><span class="p">{</span>
inputs<span class="o">.</span><span class="ss">b</span> <span class="o">=</span> <span class="o">...</span> location of flake B <span class="o">...</span><span class="p">;</span>
<span class="c1">## Tell the &#39;b&#39; flake not to fetch &#39;a&#39; again, to ensure its &#39;a&#39; is</span>
<span class="c1">## *this* &#39;a&#39;.</span>
inputs<span class="o">.</span>b<span class="o">.</span>inputs<span class="o">.</span>a<span class="o">.</span><span class="ss">follows</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">;</span>
<span class="ss">outputs</span> <span class="o">=</span> <span class="p">{</span> self<span class="p">,</span> b <span class="p">}:</span> <span class="p">{</span>
<span class="ss">foo</span> <span class="o">=</span> <span class="mi">123</span> <span class="o">+</span> b<span class="o">.</span>bar<span class="p">;</span>
<span class="ss">xyzzy</span> <span class="o">=</span> <span class="mi">1000</span><span class="p">;</span>
<span class="p">};</span>
<span class="p">}</span>
</code></pre></div>
<p>and</p>
<div class="highlight"><pre><span></span><code><span class="p">{</span>
inputs<span class="o">.</span><span class="ss">a</span> <span class="o">=</span> <span class="o">...</span> location of flake A <span class="o">...</span><span class="p">;</span>
inputs<span class="o">.</span>a<span class="o">.</span>inputs<span class="o">.</span>b<span class="o">.</span><span class="ss">follows</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">;</span>
<span class="ss">outputs</span> <span class="o">=</span> <span class="p">{</span> self<span class="p">,</span> a <span class="p">}:</span> <span class="p">{</span>
<span class="ss">bar</span> <span class="o">=</span> <span class="mi">456</span> <span class="o">+</span> a<span class="o">.</span>xyzzy<span class="p">;</span>
<span class="p">};</span>
<span class="p">}</span>
</code></pre></div>
<p>Lock files transitively lock direct as well as indirect
dependencies. That is, if a lock file exists and is up to date, Nix
will not look at the lock files of dependencies. However, lock file
generation itself <em>does</em> use the lock files of dependencies by
default.</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>