some work on nixcon 2022

This commit is contained in:
Jade Lovelace 2022-10-23 23:12:36 +02:00 committed by Jade Lovelace
parent 7547f1477e
commit d7bab9d001
4 changed files with 30095 additions and 11 deletions

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 3.4 MiB

View file

@ -0,0 +1,257 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 5.0.0 (0)
-->
<!-- Title: G Pages: 1 -->
<svg width="2483pt" height="331pt"
viewBox="0.00 0.00 2483.10 330.96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 326.96)">
<title>G</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-326.96 2479.1,-326.96 2479.1,4 -4,4"/>
<!-- /nix/store/228cwjfknw95w9nkc5mf7k845bwixa0w&#45;ncurses&#45;6.3&#45;p20220507 -->
<g id="node1" class="node">
<title>/nix/store/228cwjfknw95w9nkc5mf7k845bwixa0w&#45;ncurses&#45;6.3&#45;p20220507</title>
<ellipse fill="none" stroke="black" cx="135.06" cy="-116.61" rx="135.11" ry="26.74"/>
<text text-anchor="middle" x="135.06" y="-120.41" font-family="Times,serif" font-size="14.00">wixa0w&#45;ncurses&#45;6.3&#45;p20220507</text>
<text text-anchor="middle" x="135.06" y="-105.41" font-family="Times,serif" font-size="14.00">3.7 MiB / 3.7 MiB</text>
</g>
<!-- /nix/store/475d0m4ya1x7ma9j4k8krpkzw0w09fvz&#45;libffi&#45;3.4.2 -->
<g id="node2" class="node">
<title>/nix/store/475d0m4ya1x7ma9j4k8krpkzw0w09fvz&#45;libffi&#45;3.4.2</title>
<ellipse fill="none" stroke="black" cx="1307.06" cy="-206.35" rx="100.32" ry="26.74"/>
<text text-anchor="middle" x="1307.06" y="-210.15" font-family="Times,serif" font-size="14.00">w09fvz&#45;libffi&#45;3.4.2</text>
<text text-anchor="middle" x="1307.06" y="-195.15" font-family="Times,serif" font-size="14.00">119.6 KiB / 119.6 KiB</text>
</g>
<!-- /nix/store/5c7xsjvmg53ikqc3v3j48zc4w9gmsp51&#45;bzip2&#45;1.0.8 -->
<g id="node3" class="node">
<title>/nix/store/5c7xsjvmg53ikqc3v3j48zc4w9gmsp51&#45;bzip2&#45;1.0.8</title>
<ellipse fill="none" stroke="black" cx="1526.06" cy="-206.35" rx="100.32" ry="26.74"/>
<text text-anchor="middle" x="1526.06" y="-210.15" font-family="Times,serif" font-size="14.00">gmsp51&#45;bzip2&#45;1.0.8</text>
<text text-anchor="middle" x="1526.06" y="-195.15" font-family="Times,serif" font-size="14.00">119.2 KiB / 119.2 KiB</text>
</g>
<!-- /nix/store/5wvn34995j2wqw7h96a4fx85ysw81gv7&#45;xz&#45;5.2.5 -->
<g id="node4" class="node">
<title>/nix/store/5wvn34995j2wqw7h96a4fx85ysw81gv7&#45;xz&#45;5.2.5</title>
<ellipse fill="none" stroke="black" cx="1745.06" cy="-206.35" rx="100.32" ry="26.74"/>
<text text-anchor="middle" x="1745.06" y="-210.15" font-family="Times,serif" font-size="14.00">w81gv7&#45;xz&#45;5.2.5</text>
<text text-anchor="middle" x="1745.06" y="-195.15" font-family="Times,serif" font-size="14.00">195.2 KiB / 195.2 KiB</text>
</g>
<!-- /nix/store/65qwm1z43rjxm8n7ajq37cp6aw466rcf&#45;mailcap&#45;2.1.53 -->
<g id="node5" class="node">
<title>/nix/store/65qwm1z43rjxm8n7ajq37cp6aw466rcf&#45;mailcap&#45;2.1.53</title>
<ellipse fill="none" stroke="black" cx="1964.06" cy="-206.35" rx="100.32" ry="26.74"/>
<text text-anchor="middle" x="1964.06" y="-210.15" font-family="Times,serif" font-size="14.00">466rcf&#45;mailcap&#45;2.1.53</text>
<text text-anchor="middle" x="1964.06" y="-195.15" font-family="Times,serif" font-size="14.00">109.4 KiB / 109.4 KiB</text>
</g>
<!-- /nix/store/77var6bbpk9w8bx1xvcsr3zzx5zk8nyd&#45;sqlite&#45;3.39.2 -->
<g id="node6" class="node">
<title>/nix/store/77var6bbpk9w8bx1xvcsr3zzx5zk8nyd&#45;sqlite&#45;3.39.2</title>
<ellipse fill="none" stroke="black" cx="1060.06" cy="-206.35" rx="91.43" ry="26.74"/>
<text text-anchor="middle" x="1060.06" y="-210.15" font-family="Times,serif" font-size="14.00">zk8nyd&#45;sqlite&#45;3.39.2</text>
<text text-anchor="middle" x="1060.06" y="-195.15" font-family="Times,serif" font-size="14.00">1.6 MiB / 2.8 MiB</text>
</g>
<!-- /nix/store/ss4w663d9hbwgpzmahjqnlbb4gx4g9ki&#45;zlib&#45;1.2.12 -->
<g id="node7" class="node">
<title>/nix/store/ss4w663d9hbwgpzmahjqnlbb4gx4g9ki&#45;zlib&#45;1.2.12</title>
<ellipse fill="none" stroke="black" cx="1119.06" cy="-116.61" rx="100.32" ry="26.74"/>
<text text-anchor="middle" x="1119.06" y="-120.41" font-family="Times,serif" font-size="14.00">x4g9ki&#45;zlib&#45;1.2.12</text>
<text text-anchor="middle" x="1119.06" y="-105.41" font-family="Times,serif" font-size="14.00">414.8 KiB / 414.8 KiB</text>
</g>
<!-- /nix/store/77var6bbpk9w8bx1xvcsr3zzx5zk8nyd&#45;sqlite&#45;3.39.2&#45;&gt;/nix/store/ss4w663d9hbwgpzmahjqnlbb4gx4g9ki&#45;zlib&#45;1.2.12 -->
<g id="edge1" class="edge">
<title>/nix/store/77var6bbpk9w8bx1xvcsr3zzx5zk8nyd&#45;sqlite&#45;3.39.2&#45;&gt;/nix/store/ss4w663d9hbwgpzmahjqnlbb4gx4g9ki&#45;zlib&#45;1.2.12</title>
<path fill="none" stroke="black" d="M1077.44,-179.5C1083.26,-170.84 1089.85,-161.05 1096.03,-151.86"/>
<polygon fill="black" stroke="black" points="1099.12,-153.53 1101.8,-143.28 1093.31,-149.62 1099.12,-153.53"/>
</g>
<!-- /nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0 -->
<g id="node8" class="node">
<title>/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0</title>
<ellipse fill="none" stroke="black" cx="705.06" cy="-116.61" rx="200.22" ry="26.74"/>
<text text-anchor="middle" x="705.06" y="-120.41" font-family="Times,serif" font-size="14.00">g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0</text>
<text text-anchor="middle" x="705.06" y="-105.41" font-family="Times,serif" font-size="14.00">667.1 KiB / 866.8 KiB</text>
</g>
<!-- /nix/store/77var6bbpk9w8bx1xvcsr3zzx5zk8nyd&#45;sqlite&#45;3.39.2&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0 -->
<g id="edge2" class="edge">
<title>/nix/store/77var6bbpk9w8bx1xvcsr3zzx5zk8nyd&#45;sqlite&#45;3.39.2&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0</title>
<path fill="none" stroke="black" d="M991.61,-188.43C939.31,-175.51 866.4,-157.49 807.21,-142.86"/>
<polygon fill="black" stroke="black" points="808.01,-139.45 797.46,-140.45 806.33,-146.25 808.01,-139.45"/>
</g>
<!-- /nix/store/c8aj6kzv5h7c5vympiy7l1p3aw626yqy&#45;libobjc&#45;11.0.0 -->
<g id="node13" class="node">
<title>/nix/store/c8aj6kzv5h7c5vympiy7l1p3aw626yqy&#45;libobjc&#45;11.0.0</title>
<ellipse fill="none" stroke="black" cx="705.06" cy="-26.87" rx="100.32" ry="26.74"/>
<text text-anchor="middle" x="705.06" y="-30.67" font-family="Times,serif" font-size="14.00">626yqy&#45;libobjc&#45;11.0.0</text>
<text text-anchor="middle" x="705.06" y="-15.67" font-family="Times,serif" font-size="14.00">199.7 KiB / 199.7 KiB</text>
</g>
<!-- /nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0&#45;&gt;/nix/store/c8aj6kzv5h7c5vympiy7l1p3aw626yqy&#45;libobjc&#45;11.0.0 -->
<g id="edge22" class="edge">
<title>/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0&#45;&gt;/nix/store/c8aj6kzv5h7c5vympiy7l1p3aw626yqy&#45;libobjc&#45;11.0.0</title>
<path fill="none" stroke="black" d="M705.06,-89.29C705.06,-81.32 705.06,-72.43 705.06,-63.94"/>
<polygon fill="black" stroke="black" points="708.56,-63.87 705.06,-53.87 701.56,-63.87 708.56,-63.87"/>
</g>
<!-- /nix/store/7k3nqj8bpmpsk5vf8933hvs12q9307vc&#45;bash&#45;5.1&#45;p16 -->
<g id="node9" class="node">
<title>/nix/store/7k3nqj8bpmpsk5vf8933hvs12q9307vc&#45;bash&#45;5.1&#45;p16</title>
<ellipse fill="none" stroke="black" cx="2176.06" cy="-206.35" rx="93.18" ry="26.74"/>
<text text-anchor="middle" x="2176.06" y="-210.15" font-family="Times,serif" font-size="14.00">9307vc&#45;bash&#45;5.1&#45;p16</text>
<text text-anchor="middle" x="2176.06" y="-195.15" font-family="Times,serif" font-size="14.00">2.9 MiB / 2.9 MiB</text>
</g>
<!-- /nix/store/7sag8k917i0zvr566lwvvnf3f9z5w5y1&#45;readline&#45;6.3p08 -->
<g id="node10" class="node">
<title>/nix/store/7sag8k917i0zvr566lwvvnf3f9z5w5y1&#45;readline&#45;6.3p08</title>
<ellipse fill="none" stroke="black" cx="201.06" cy="-206.35" rx="105.22" ry="26.74"/>
<text text-anchor="middle" x="201.06" y="-210.15" font-family="Times,serif" font-size="14.00">z5w5y1&#45;readline&#45;6.3p08</text>
<text text-anchor="middle" x="201.06" y="-195.15" font-family="Times,serif" font-size="14.00">359 KiB / 4.9 MiB</text>
</g>
<!-- /nix/store/7sag8k917i0zvr566lwvvnf3f9z5w5y1&#45;readline&#45;6.3p08&#45;&gt;/nix/store/228cwjfknw95w9nkc5mf7k845bwixa0w&#45;ncurses&#45;6.3&#45;p20220507 -->
<g id="edge3" class="edge">
<title>/nix/store/7sag8k917i0zvr566lwvvnf3f9z5w5y1&#45;readline&#45;6.3p08&#45;&gt;/nix/store/228cwjfknw95w9nkc5mf7k845bwixa0w&#45;ncurses&#45;6.3&#45;p20220507</title>
<path fill="none" stroke="black" d="M181.61,-179.5C174.97,-170.66 167.43,-160.65 160.39,-151.29"/>
<polygon fill="black" stroke="black" points="163.17,-149.16 154.36,-143.28 157.58,-153.37 163.17,-149.16"/>
</g>
<!-- /nix/store/7sag8k917i0zvr566lwvvnf3f9z5w5y1&#45;readline&#45;6.3p08&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0 -->
<g id="edge4" class="edge">
<title>/nix/store/7sag8k917i0zvr566lwvvnf3f9z5w5y1&#45;readline&#45;6.3p08&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0</title>
<path fill="none" stroke="black" d="M276.34,-187.53C289.22,-184.69 302.5,-181.9 315.06,-179.48 396.07,-163.88 487.1,-149.27 560.82,-138.18"/>
<polygon fill="black" stroke="black" points="561.74,-141.58 571.11,-136.63 560.7,-134.66 561.74,-141.58"/>
</g>
<!-- /nix/store/8x3ckifj02ykhyq45in9jv345d09rw25&#45;expat&#45;2.4.8 -->
<g id="node11" class="node">
<title>/nix/store/8x3ckifj02ykhyq45in9jv345d09rw25&#45;expat&#45;2.4.8</title>
<ellipse fill="none" stroke="black" cx="412.06" cy="-206.35" rx="87.86" ry="26.74"/>
<text text-anchor="middle" x="412.06" y="-210.15" font-family="Times,serif" font-size="14.00">09rw25&#45;expat&#45;2.4.8</text>
<text text-anchor="middle" x="412.06" y="-195.15" font-family="Times,serif" font-size="14.00">255 KiB / 1.1 MiB</text>
</g>
<!-- /nix/store/8x3ckifj02ykhyq45in9jv345d09rw25&#45;expat&#45;2.4.8&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0 -->
<g id="edge5" class="edge">
<title>/nix/store/8x3ckifj02ykhyq45in9jv345d09rw25&#45;expat&#45;2.4.8&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0</title>
<path fill="none" stroke="black" d="M473.12,-187.06C514.54,-174.66 569.95,-158.07 616.23,-144.21"/>
<polygon fill="black" stroke="black" points="617.39,-147.52 625.96,-141.3 615.38,-140.81 617.39,-147.52"/>
</g>
<!-- /nix/store/9x8rpsll84x2gahzm17zinrfa8b94s3w&#45;gdbm&#45;1.23 -->
<g id="node12" class="node">
<title>/nix/store/9x8rpsll84x2gahzm17zinrfa8b94s3w&#45;gdbm&#45;1.23</title>
<ellipse fill="none" stroke="black" cx="610.06" cy="-206.35" rx="92.76" ry="26.74"/>
<text text-anchor="middle" x="610.06" y="-210.15" font-family="Times,serif" font-size="14.00">b94s3w&#45;gdbm&#45;1.23</text>
<text text-anchor="middle" x="610.06" y="-195.15" font-family="Times,serif" font-size="14.00">725.3 KiB / 1.6 MiB</text>
</g>
<!-- /nix/store/9x8rpsll84x2gahzm17zinrfa8b94s3w&#45;gdbm&#45;1.23&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0 -->
<g id="edge6" class="edge">
<title>/nix/store/9x8rpsll84x2gahzm17zinrfa8b94s3w&#45;gdbm&#45;1.23&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0</title>
<path fill="none" stroke="black" d="M637.03,-180.44C647.09,-171.15 658.68,-160.45 669.4,-150.54"/>
<polygon fill="black" stroke="black" points="672.06,-152.85 677.03,-143.5 667.31,-147.71 672.06,-152.85"/>
</g>
<!-- /nix/store/f6rqri950vqprx12r5hjaygl2v1rkcfb&#45;openssl&#45;1.1.1q -->
<g id="node14" class="node">
<title>/nix/store/f6rqri950vqprx12r5hjaygl2v1rkcfb&#45;openssl&#45;1.1.1q</title>
<ellipse fill="none" stroke="black" cx="817.06" cy="-206.35" rx="96.33" ry="26.74"/>
<text text-anchor="middle" x="817.06" y="-210.15" font-family="Times,serif" font-size="14.00">1rkcfb&#45;openssl&#45;1.1.1q</text>
<text text-anchor="middle" x="817.06" y="-195.15" font-family="Times,serif" font-size="14.00">2.8 MiB / 3.7 MiB</text>
</g>
<!-- /nix/store/f6rqri950vqprx12r5hjaygl2v1rkcfb&#45;openssl&#45;1.1.1q&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0 -->
<g id="edge7" class="edge">
<title>/nix/store/f6rqri950vqprx12r5hjaygl2v1rkcfb&#45;openssl&#45;1.1.1q&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0</title>
<path fill="none" stroke="black" d="M785.86,-180.91C773.42,-171.17 758.94,-159.82 745.7,-149.45"/>
<polygon fill="black" stroke="black" points="747.68,-146.55 737.65,-143.14 743.36,-152.07 747.68,-146.55"/>
</g>
<!-- /nix/store/fszwqjcjwjpqrb6hc06i3xnzwap1afm6&#45;tzdata&#45;2022a -->
<g id="node15" class="node">
<title>/nix/store/fszwqjcjwjpqrb6hc06i3xnzwap1afm6&#45;tzdata&#45;2022a</title>
<ellipse fill="none" stroke="black" cx="2381.06" cy="-206.35" rx="94.09" ry="26.74"/>
<text text-anchor="middle" x="2381.06" y="-210.15" font-family="Times,serif" font-size="14.00">p1afm6&#45;tzdata&#45;2022a</text>
<text text-anchor="middle" x="2381.06" y="-195.15" font-family="Times,serif" font-size="14.00">2 MiB / 2 MiB</text>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5 -->
<g id="node16" class="node">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5</title>
<ellipse fill="none" stroke="black" cx="1119.06" cy="-296.09" rx="98.99" ry="26.74"/>
<text text-anchor="middle" x="1119.06" y="-299.89" font-family="Times,serif" font-size="14.00">fdd7j4&#45;python3&#45;3.10.5</text>
<text text-anchor="middle" x="1119.06" y="-284.89" font-family="Times,serif" font-size="14.00">63.1 MiB / 79.2 MiB</text>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/228cwjfknw95w9nkc5mf7k845bwixa0w&#45;ncurses&#45;6.3&#45;p20220507 -->
<g id="edge8" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/228cwjfknw95w9nkc5mf7k845bwixa0w&#45;ncurses&#45;6.3&#45;p20220507</title>
<path fill="none" stroke="black" d="M1020.42,-292.79C768.47,-286.45 118.76,-266.89 87.06,-233.22 65.41,-210.24 83.79,-176.11 103.74,-150.88"/>
<polygon fill="black" stroke="black" points="106.55,-152.97 110.22,-143.03 101.16,-148.52 106.55,-152.97"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/475d0m4ya1x7ma9j4k8krpkzw0w09fvz&#45;libffi&#45;3.4.2 -->
<g id="edge9" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/475d0m4ya1x7ma9j4k8krpkzw0w09fvz&#45;libffi&#45;3.4.2</title>
<path fill="none" stroke="black" d="M1167.47,-272.5C1192.48,-260.82 1223.18,-246.5 1249.41,-234.26"/>
<polygon fill="black" stroke="black" points="1250.9,-237.42 1258.48,-230.02 1247.94,-231.08 1250.9,-237.42"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/5c7xsjvmg53ikqc3v3j48zc4w9gmsp51&#45;bzip2&#45;1.0.8 -->
<g id="edge10" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/5c7xsjvmg53ikqc3v3j48zc4w9gmsp51&#45;bzip2&#45;1.0.8</title>
<path fill="none" stroke="black" d="M1197.03,-279.42C1257,-267.22 1341.88,-249.67 1416.06,-233.22 1424.85,-231.27 1434.02,-229.19 1443.16,-227.09"/>
<polygon fill="black" stroke="black" points="1444.09,-230.46 1453.04,-224.8 1442.51,-223.64 1444.09,-230.46"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/5wvn34995j2wqw7h96a4fx85ysw81gv7&#45;xz&#45;5.2.5 -->
<g id="edge11" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/5wvn34995j2wqw7h96a4fx85ysw81gv7&#45;xz&#45;5.2.5</title>
<path fill="none" stroke="black" d="M1212.74,-287.03C1316.48,-277.37 1488.46,-259.16 1635.06,-233.22 1644.38,-231.57 1654.09,-229.62 1663.72,-227.55"/>
<polygon fill="black" stroke="black" points="1664.69,-230.92 1673.7,-225.35 1663.18,-224.09 1664.69,-230.92"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/65qwm1z43rjxm8n7ajq37cp6aw466rcf&#45;mailcap&#45;2.1.53 -->
<g id="edge12" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/65qwm1z43rjxm8n7ajq37cp6aw466rcf&#45;mailcap&#45;2.1.53</title>
<path fill="none" stroke="black" d="M1216.8,-291.44C1358.15,-285.12 1627.52,-269.19 1854.06,-233.22 1863.72,-231.69 1873.79,-229.77 1883.75,-227.67"/>
<polygon fill="black" stroke="black" points="1884.62,-231.07 1893.65,-225.53 1883.13,-224.22 1884.62,-231.07"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/77var6bbpk9w8bx1xvcsr3zzx5zk8nyd&#45;sqlite&#45;3.39.2 -->
<g id="edge13" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/77var6bbpk9w8bx1xvcsr3zzx5zk8nyd&#45;sqlite&#45;3.39.2</title>
<path fill="none" stroke="black" d="M1101.67,-269.24C1095.85,-260.58 1089.27,-250.79 1083.09,-241.6"/>
<polygon fill="black" stroke="black" points="1085.8,-239.36 1077.32,-233.02 1079.99,-243.27 1085.8,-239.36"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/ss4w663d9hbwgpzmahjqnlbb4gx4g9ki&#45;zlib&#45;1.2.12 -->
<g id="edge20" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/ss4w663d9hbwgpzmahjqnlbb4gx4g9ki&#45;zlib&#45;1.2.12</title>
<path fill="none" stroke="black" d="M1140.73,-269.73C1148.41,-259.15 1156.12,-246.3 1160.06,-233.22 1166.95,-210.35 1166.95,-202.35 1160.06,-179.48 1157.1,-169.67 1152.03,-159.99 1146.44,-151.3"/>
<polygon fill="black" stroke="black" points="1149.27,-149.24 1140.73,-142.97 1143.5,-153.2 1149.27,-149.24"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0 -->
<g id="edge21" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d&#45;apple&#45;framework&#45;CoreFoundation&#45;11.0.0</title>
<path fill="none" stroke="black" d="M1047.95,-277.25C1018.7,-267.52 985.73,-253.28 960.06,-233.22 937.01,-215.21 945.92,-196.39 922.06,-179.48 897.58,-162.13 868.32,-149.63 839.34,-140.62"/>
<polygon fill="black" stroke="black" points="840.11,-137.2 829.53,-137.69 838.11,-143.9 840.11,-137.2"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/7k3nqj8bpmpsk5vf8933hvs12q9307vc&#45;bash&#45;5.1&#45;p16 -->
<g id="edge14" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/7k3nqj8bpmpsk5vf8933hvs12q9307vc&#45;bash&#45;5.1&#45;p16</title>
<path fill="none" stroke="black" d="M1217.9,-294.56C1391.84,-292.33 1763.56,-281.71 2073.06,-233.22 2082.09,-231.81 2091.48,-229.97 2100.76,-227.93"/>
<polygon fill="black" stroke="black" points="2101.79,-231.28 2110.76,-225.64 2100.23,-224.46 2101.79,-231.28"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/7sag8k917i0zvr566lwvvnf3f9z5w5y1&#45;readline&#45;6.3p08 -->
<g id="edge15" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/7sag8k917i0zvr566lwvvnf3f9z5w5y1&#45;readline&#45;6.3p08</title>
<path fill="none" stroke="black" d="M1021.07,-292.17C869.13,-286.6 567.86,-271.42 315.06,-233.22 305.1,-231.72 294.71,-229.82 284.44,-227.75"/>
<polygon fill="black" stroke="black" points="285.16,-224.32 274.65,-225.71 283.73,-231.17 285.16,-224.32"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/8x3ckifj02ykhyq45in9jv345d09rw25&#45;expat&#45;2.4.8 -->
<g id="edge16" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/8x3ckifj02ykhyq45in9jv345d09rw25&#45;expat&#45;2.4.8</title>
<path fill="none" stroke="black" d="M1022.34,-290.16C901.3,-282.87 688.02,-266.35 508.06,-233.22 500.09,-231.75 491.82,-229.96 483.63,-228"/>
<polygon fill="black" stroke="black" points="484.24,-224.54 473.69,-225.54 482.56,-231.34 484.24,-224.54"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/9x8rpsll84x2gahzm17zinrfa8b94s3w&#45;gdbm&#45;1.23 -->
<g id="edge17" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/9x8rpsll84x2gahzm17zinrfa8b94s3w&#45;gdbm&#45;1.23</title>
<path fill="none" stroke="black" d="M1030.09,-284.11C947.35,-273.29 820.81,-255.22 712.06,-233.22 703.67,-231.52 694.93,-229.58 686.25,-227.54"/>
<polygon fill="black" stroke="black" points="687.05,-224.13 676.51,-225.2 685.41,-230.94 687.05,-224.13"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/f6rqri950vqprx12r5hjaygl2v1rkcfb&#45;openssl&#45;1.1.1q -->
<g id="edge18" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/f6rqri950vqprx12r5hjaygl2v1rkcfb&#45;openssl&#45;1.1.1q</title>
<path fill="none" stroke="black" d="M1053.16,-275.94C1005.56,-262.12 941.23,-243.42 891.73,-229.05"/>
<polygon fill="black" stroke="black" points="892.62,-225.66 882.04,-226.23 890.67,-232.38 892.62,-225.66"/>
</g>
<!-- /nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/fszwqjcjwjpqrb6hc06i3xnzwap1afm6&#45;tzdata&#45;2022a -->
<g id="edge19" class="edge">
<title>/nix/store/v4iwl6az3wax9nw0wl42kjpq4vfdd7j4&#45;python3&#45;3.10.5&#45;&gt;/nix/store/fszwqjcjwjpqrb6hc06i3xnzwap1afm6&#45;tzdata&#45;2022a</title>
<path fill="none" stroke="black" d="M1217.49,-292.28C1458.76,-284.99 2074.7,-263.89 2278.06,-233.22 2287.09,-231.86 2296.49,-230.05 2305.78,-228.03"/>
<polygon fill="black" stroke="black" points="2306.8,-231.38 2315.78,-225.75 2305.25,-224.56 2306.8,-231.38"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -9,6 +9,7 @@
<link rel="stylesheet" href="dist/reset.css">
<link rel="stylesheet" href="dist/reveal.css">
<link rel="stylesheet" href="dist/theme/black.css">
<link rel="stylesheet" href="styles.css">
<!-- Theme used for syntax highlighted code -->
<link rel="stylesheet" href="plugin/highlight/monokai.css">
@ -16,16 +17,145 @@
<body>
<div class="reveal">
<div class="slides">
<section>Slide 1</section>
<section>Slide 2
<aside class="notes">
<p>Some notes</p>
</aside>
<p>Some slide text</p>
<aside class="notes">
<p>and some more notes</p>
</aside>
</section>
<section class="title-slide">
<h1> Debugging closure sizes graphically </h1>
<div class="meta">
<p>
Jade Lovelace &lt;jadel@mercury.com&gt;
</p>
<p>
NixCon 2022<br>
October 20, 2022<br>
https://jade.fyi
</p>
</div>
</section>
<section data-markdown><textarea data-template>
# who am I?
* Computer Engineering student at UBC in Vancouver, BC, Canada
* Presently interning in backend dev for Mercury, a company offering banking<fnref>1</fnref> designed for the unique needs of startups
* Haskell + TypeScript + Nix stack
* Working on internal tools for risk management
<div class="footnotes">
<ol>
<li>Mercury is a financial technology company, not a bank. Banking services provided by Choice Financial Group and Evolve Bank & Trust, Members FDIC.</li>
</ol>
</div>
</textarea></section>
<section data-markdown><textarea data-template>
# what's closure size?
* Size of some derivation and everything it depends on
* Accidental dependencies are the major contributor
* Other systems don't have this problem: forgetting about runtime dependencies may silently fail (or work if you have them installed!) at runtime
* "Closure" &rightarrow; like a function referencing values outside it
</textarea></section>
<section data-markdown><textarea data-template>
# how do I create a dependency?
* Only what goes in may go out: inputs may become runtime dependencies if they appear in the output
* Follows from Nix's hermetic design: outputs are a strict subset of inputs
* It's easy to cause accidental dependencies
</textarea></section>
<section data-markdown><textarea data-template>
# ok, but what does "appear" mean?
```
grep -r '[0-9abcdfghijklmnpqrsvwxyz]{32}' $out
```
Seriously.
Nix looks for 32 character strings forming the hash part of any of the store paths of the closure of the inputs to the derivation
See Figure 5.12 in the Nix thesis
</textarea></section>
<section data-markdown><textarea data-template>
# digression: "what went in?"
Nix strings are magic: they keep track of the derivations that they've referenced as "string context", and propagate that information into any derivations they land in.
</textarea></section>
<section data-markdown><textarea data-template>
# what does my stuff depend on?
<pre><code class="text"><script type="text/template">~ » nix path-info -rsSh nixpkgs#hello
/nix/store/c8aj6kzv5h7c5vympiy7l1p3aw626yqy-libobjc-11.0.0 199.7K 199.7K
/nix/store/y5cp9q9h6p80mzbsijs00zxpi7g0lc9d-apple-framework-CoreFoundation-11.0.0 667.1K 866.8K
/nix/store/xbqj64vdr3z13nlf8cvl1lf5lxa16mha-hello-2.12.1 126.9K 993.7K
</script></code></pre>
</textarea></section>
<section data-markdown><textarea data-template>
# that's a graph though
Yeah. I can't tell what the relationship is between these.
No tree or graph mode for nix path-info unlike nix-store --query (the latter is not stellar anyway)
</textarea></section>
<section data-markdown><textarea data-template>
# what if..? haha, jk, unless?
There is a JSON output mode, what if we just used that? and then did some stuff to it
Some purely functional programming in jq later:
`nix-closure-graph nixpkgs#python3 &gt; python3Closure.svg`
</textarea></section>
<section data-markdown><textarea data-template>
# cool
<div class="img-container">
<img src="./img/python3Closure.svg" style="object-fit: cover; object-position: center;" width="100%" height="100%" alt="graphviz graph showing nodes for each of the packages Python depends on">
</div>
</textarea></section>
<section data-markdown><textarea data-template>
# what about a nixos image
whoops
<div class="img-container">
<img src="./img/nixosClosure.svg" style="object-fit: cover; object-position: center;" width="100%" height="100%" alt="incomprehensible graphviz graph absolutely covered in lines for a nixos image">
</div>
</textarea></section>
<section data-markdown><textarea data-template>
# well that didn't work
I built this graph viewer prototype at work, I wonder if I could stick a NixOS closure into it
FIXME!!!
</textarea></section>
<section data-markdown><textarea data-template>
# other projects from me
https://docs.jade.fyi - Single page HTML docs for GNU, postgres, and zsh
https://github.com/LF-/nix-doc - Interactive function documentation for Nix
https://github.com/LF-/nix-otel - Trace Nix builds with OpenTelemetry
</textarea></section>
<section data-markdown><textarea data-template>
# Mercury is hiring!
Front-end, back-end, management, design, data
https://mercury.com/jobs
</textarea></section>
</div>
</div>
@ -41,7 +171,9 @@
hash: true,
// Learn about plugins: https://revealjs.com/plugins/
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ],
transitionSpeed: 'fast',
transition: 'none',
});
</script>
</body>

View file

@ -0,0 +1,47 @@
:root {
--r-heading-text-transform: none !important;
--r-background-color: #190022 !important;
--r-heading1-size: 1.5em;
}
.footnotes {
font-size: 0.8rem;
}
fnref {
font-size: 0.9rem;
vertical-align: super;
}
.footnotes li {
list-style: none;
padding: 0;
}
.footnotes li::marker {
content: "[" counter(list-item) "]\a0\a0";
}
.reveal[data-transition-speed="faster"] .slides section {
transition-duration: 100ms;
}
.img-container {
overflow-x: auto;
overflow-y: hidden;
max-width: 100%;
height: 400px;
}
.meta {
padding: 0.1em 0.5em;
background-color: #3c004d;
}
.reveal pre {
margin: 0;
padding: 0.5em;
}
.reveal .code-wrapper code {
white-space: pre-wrap !important;
}
.reveal .slides {
text-align: left !important;
}