Quick save

This commit is contained in:
2025-10-15 13:42:06 -04:00
parent 49afd15ab7
commit fe54552369
49 changed files with 729 additions and 9 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

BIN
public/home-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/hyprland-wiki.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB

BIN
public/hyprland.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

BIN
public/kde-desktop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

BIN
public/nix-darwin-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

87
public/nix.svg Normal file
View File

@@ -0,0 +1,87 @@
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="141.5919mm" height="122.80626mm" viewBox="0 0 501.70361 435.14028" id="svg2" version="1.1" inkscape:version="0.92.0 r15299" sodipodi:docname="nix-snowflake.svg">
<defs id="defs4">
<linearGradient inkscape:collect="always" id="linearGradient5562">
<stop style="stop-color:#699ad7;stop-opacity:1" offset="0" id="stop5564"/>
<stop id="stop5566" offset="0.24345198" style="stop-color:#7eb1dd;stop-opacity:1"/>
<stop style="stop-color:#7ebae4;stop-opacity:1" offset="1" id="stop5568"/>
</linearGradient>
<linearGradient inkscape:collect="always" id="linearGradient5053">
<stop style="stop-color:#415e9a;stop-opacity:1" offset="0" id="stop5055"/>
<stop id="stop5057" offset="0.23168644" style="stop-color:#4a6baf;stop-opacity:1"/>
<stop style="stop-color:#5277c3;stop-opacity:1" offset="1" id="stop5059"/>
</linearGradient>
<linearGradient id="linearGradient5960" inkscape:collect="always">
<stop id="stop5962" offset="0" style="stop-color:#637ddf;stop-opacity:1"/>
<stop style="stop-color:#649afa;stop-opacity:1" offset="0.23168644" id="stop5964"/>
<stop id="stop5966" offset="1" style="stop-color:#719efa;stop-opacity:1"/>
</linearGradient>
<linearGradient inkscape:collect="always" id="linearGradient5867">
<stop style="stop-color:#7363df;stop-opacity:1" offset="0" id="stop5869"/>
<stop id="stop5871" offset="0.23168644" style="stop-color:#6478fa;stop-opacity:1"/>
<stop style="stop-color:#719efa;stop-opacity:1" offset="1" id="stop5873"/>
</linearGradient>
<linearGradient y2="515.97058" x2="282.26105" y1="338.62445" x1="213.95642" gradientTransform="translate(983.36076,601.38885)" gradientUnits="userSpaceOnUse" id="linearGradient5855" xlink:href="#linearGradient5960" inkscape:collect="always"/>
<linearGradient y2="515.97058" x2="282.26105" y1="338.62445" x1="213.95642" gradientTransform="translate(-197.75174,-337.1451)" gradientUnits="userSpaceOnUse" id="linearGradient5855-8" xlink:href="#linearGradient5867" inkscape:collect="always"/>
<linearGradient y2="247.58188" x2="-702.75317" y1="102.74675" x1="-775.20807" gradientTransform="translate(983.36076,601.38885)" gradientUnits="userSpaceOnUse" id="linearGradient4544" xlink:href="#linearGradient5960" inkscape:collect="always"/>
<clipPath id="clipPath4501" clipPathUnits="userSpaceOnUse">
<circle r="241.06563" cy="686.09473" cx="335.13995" id="circle4503" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#adadad;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
</clipPath>
<clipPath id="clipPath5410" clipPathUnits="userSpaceOnUse">
<circle r="241.13741" cy="340.98975" cx="335.98114" id="circle5412" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
</clipPath>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5053" id="linearGradient5137" gradientUnits="userSpaceOnUse" gradientTransform="translate(864.55062,-2197.497)" x1="-584.19934" y1="782.33563" x2="-496.29703" y2="937.71399"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5053" id="linearGradient5147" gradientUnits="userSpaceOnUse" gradientTransform="translate(864.55062,-2197.497)" x1="-584.19934" y1="782.33563" x2="-496.29703" y2="937.71399"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5562" id="linearGradient5162" gradientUnits="userSpaceOnUse" gradientTransform="translate(70.505061,-1761.3076)" x1="200.59668" y1="351.41116" x2="290.08701" y2="506.18814"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5562" id="linearGradient5172" gradientUnits="userSpaceOnUse" gradientTransform="translate(70.505061,-1761.3076)" x1="200.59668" y1="351.41116" x2="290.08701" y2="506.18814"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5562" id="linearGradient5182" gradientUnits="userSpaceOnUse" gradientTransform="translate(70.505061,-1761.3076)" x1="200.59668" y1="351.41116" x2="290.08701" y2="506.18814"/>
<linearGradient y2="506.18814" x2="290.08701" y1="351.41116" x1="200.59668" gradientTransform="translate(70.505061,-1761.3076)" gradientUnits="userSpaceOnUse" id="linearGradient5201" xlink:href="#linearGradient5562" inkscape:collect="always"/>
<linearGradient y2="937.71399" x2="-496.29703" y1="782.33563" x1="-584.19934" gradientTransform="translate(864.55062,-2197.497)" gradientUnits="userSpaceOnUse" id="linearGradient5205" xlink:href="#linearGradient5053" inkscape:collect="always"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5562" id="linearGradient4328" gradientUnits="userSpaceOnUse" gradientTransform="translate(70.650339,-1055.1511)" x1="200.59668" y1="351.41116" x2="290.08701" y2="506.18814"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5053" id="linearGradient4330" gradientUnits="userSpaceOnUse" gradientTransform="translate(864.69589,-1491.3405)" x1="-584.19934" y1="782.33563" x2="-496.29703" y2="937.71399"/>
</defs>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.98318225" inkscape:cx="113.58176" inkscape:cy="-45.193301" inkscape:document-units="px" inkscape:current-layer="layer3" showgrid="false" inkscape:window-width="2560" inkscape:window-height="1577" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:snap-global="true" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0"/>
<metadata id="metadata7">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:groupmode="layer" id="layer7" inkscape:label="bg" style="display:none" transform="translate(-23.75651,-24.84972)">
<rect transform="translate(-132.5822,958.04022)" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect5389" width="1543.4283" height="483.7439" x="132.5822" y="-957.77832"/>
</g>
<g inkscape:groupmode="layer" id="layer6" inkscape:label="logo-guide" style="display:none" transform="translate(-156.33871,933.1905)">
<rect y="-958.02759" x="132.65129" height="484.30399" width="550.41602" id="rect5379" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5c201e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" inkscape:export-filename="/home/tim/dev/nix/homepage/logo/nix-wiki.png" inkscape:export-xdpi="22.07" inkscape:export-ydpi="22.07"/>
<rect style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c24a46;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect5372" width="501.94415" height="434.30405" x="156.12303" y="-933.02759" inkscape:export-filename="/home/tim/dev/nix/homepage/logo/nixos-logo-only-hires-print.png" inkscape:export-xdpi="212.2" inkscape:export-ydpi="212.2"/>
<rect style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#d98d8a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect5381" width="24.939611" height="24.939611" x="658.02826" y="-958.04022"/>
</g>
<g inkscape:label="print-logo" inkscape:groupmode="layer" id="layer1" style="display:inline" transform="translate(-156.33871,933.1905)" sodipodi:insensitive="true">
<path style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z" id="path4861" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccc"/>
<path style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 353.50926,-797.4433 -122.21756,211.6631 -28.53477,-48.37 32.93839,-56.6875 -65.41521,-0.1719 -13.9414,-24.1698 14.23637,-24.721 93.11177,0.2939 33.46371,-57.6903 z" id="use4863" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccc"/>
<path style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 362.88537,-628.243 244.41439,0.012 -27.62229,48.8968 -65.56199,-0.1817 32.55876,56.7371 -13.96098,24.1585 -28.52722,0.032 -46.3013,-80.7841 -66.69317,-0.1353 z" id="use4865" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccc"/>
<path style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 505.14318,-720.9886 -122.19683,-211.6751 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4902 33.22946,57.8256 z" id="use4867" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccc"/>
<path sodipodi:nodetypes="cccccccccc" inkscape:connector-curvature="0" id="path4873" d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
<path sodipodi:nodetypes="cccccccccc" inkscape:connector-curvature="0" id="use4875" d="m 451.3364,-803.53264 -244.4144,-0.012 27.62229,-48.89685 65.56199,0.18175 -32.55875,-56.73717 13.96097,-24.15851 28.52722,-0.0315 46.3013,80.78414 66.69317,0.13524 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
<path sodipodi:nodetypes="cccccccccc" inkscape:connector-curvature="0" id="use4877" d="m 460.87178,-633.8425 122.21757,-211.66304 28.53477,48.37003 -32.93839,56.68751 65.4152,0.1718 13.9414,24.1698 -14.23636,24.7211 -93.11177,-0.294 -33.46371,57.6904 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
<g id="layer2" inkscape:label="guides" style="display:none" transform="translate(72.039038,-1799.4476)">
<path d="M 460.60629,594.72881 209.74183,594.7288 84.309616,377.4738 209.74185,160.21882 l 250.86446,1e-5 125.43222,217.255 z" inkscape:randomized="0" inkscape:rounded="0" inkscape:flatsided="true" sodipodi:arg2="1.5707963" sodipodi:arg1="1.0471976" sodipodi:r2="217.25499" sodipodi:r1="250.86446" sodipodi:cy="377.47382" sodipodi:cx="335.17407" sodipodi:sides="6" id="path6032" style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.23600003;fill:#4e4d52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" sodipodi:type="star"/>
<path transform="translate(0,-308.26772)" sodipodi:type="star" style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#4e4d52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" id="path5875" sodipodi:sides="6" sodipodi:cx="335.17407" sodipodi:cy="685.74158" sodipodi:r1="100.83495" sodipodi:r2="87.32563" sodipodi:arg1="1.0471976" sodipodi:arg2="1.5707963" inkscape:flatsided="true" inkscape:rounded="0" inkscape:randomized="0" d="m 385.59154,773.06721 -100.83495,0 -50.41747,-87.32564 50.41748,-87.32563 100.83495,10e-6 50.41748,87.32563 z"/>
<path transform="translate(0,-308.26772)" sodipodi:nodetypes="ccccccccc" inkscape:connector-curvature="0" id="path5851" d="m 1216.5591,938.53395 123.0545,228.14035 -42.6807,-1.2616 -43.4823,-79.7725 -39.6506,80.3267 -32.6875,-19.7984 53.4737,-100.2848 -37.1157,-73.88955 z" style="fill:url(#linearGradient5855);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<rect style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.41499999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c53a3a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect5884" width="48.834862" height="226.22897" x="-34.74221" y="446.17056" transform="rotate(-30)"/>
<path transform="translate(0,-308.26772)" sodipodi:type="star" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.50899999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="path3428" sodipodi:sides="6" sodipodi:cx="223.93674" sodipodi:cy="878.63831" sodipodi:r1="28.048939" sodipodi:r2="24.291094" sodipodi:arg1="0" sodipodi:arg2="0.52359878" inkscape:flatsided="true" inkscape:rounded="0" inkscape:randomized="0" d="m 251.98568,878.63831 -14.02447,24.29109 h -28.04894 l -14.02447,-24.29109 14.02447,-24.2911 h 28.04894 z"/>
<use x="0" y="0" xlink:href="#rect5884" id="use4252" transform="rotate(60,268.29786,489.4515)" width="100%" height="100%"/>
<rect style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.6507937;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" id="rect4254" width="5.3947482" height="115.12564" x="545.71014" y="467.07007" transform="rotate(30,575.23539,-154.13386)"/>
</g>
</g>
<g inkscape:groupmode="layer" id="layer3" inkscape:label="gradient-logo" style="display:inline;opacity:1" sodipodi:insensitive="true" transform="translate(-156.33871,933.1905)">
<path sodipodi:nodetypes="cccccccccc" inkscape:connector-curvature="0" id="path3336-6" d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z" style="opacity:1;fill:url(#linearGradient4328);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<use height="100%" width="100%" transform="rotate(60,407.11155,-715.78724)" id="use3439-6" inkscape:transform-center-y="151.59082" inkscape:transform-center-x="124.43045" xlink:href="#path3336-6" y="0" x="0"/>
<use height="100%" width="100%" transform="rotate(-60,407.31177,-715.70016)" id="use3445-0" inkscape:transform-center-y="75.573958" inkscape:transform-center-x="-168.20651" xlink:href="#path3336-6" y="0" x="0"/>
<use height="100%" width="100%" transform="rotate(180,407.41868,-715.7565)" id="use3449-5" inkscape:transform-center-y="-139.94592" inkscape:transform-center-x="59.669705" xlink:href="#path3336-6" y="0" x="0"/>
<path style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4330);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z" id="path4260-0" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccc"/>
<use height="100%" width="100%" transform="rotate(120,407.33916,-716.08356)" id="use4354-5" xlink:href="#path4260-0" y="0" x="0" style="display:inline"/>
<use height="100%" width="100%" transform="rotate(-120,407.28823,-715.86995)" id="use4362-2" xlink:href="#path4260-0" y="0" x="0" style="display:inline"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

BIN
public/plasma-manager.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

1
public/python.svg Normal file
View File

@@ -0,0 +1 @@
<svg version="1.1" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="110px" height="110px" viewBox="0.21 -0.077 110 110" enable-background="new 0.21 -0.077 110 110" xml:space="preserve"><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="63.8159" y1="56.6829" x2="118.4934" y2="1.8225" gradientTransform="matrix(1 0 0 -1 -53.2974 66.4321)"> <stop offset="0" style="stop-color:#387EB8"/> <stop offset="1" style="stop-color:#366994"/></linearGradient><path fill="url(#SVGID_1_)" d="M55.023-0.077c-25.971,0-26.25,10.081-26.25,12.156c0,3.148,0,12.594,0,12.594h26.75v3.781 c0,0-27.852,0-37.375,0c-7.949,0-17.938,4.833-17.938,26.25c0,19.673,7.792,27.281,15.656,27.281c2.335,0,9.344,0,9.344,0 s0-9.765,0-13.125c0-5.491,2.721-15.656,15.406-15.656c15.91,0,19.971,0,26.531,0c3.902,0,14.906-1.696,14.906-14.406 c0-13.452,0-17.89,0-24.219C82.054,11.426,81.515-0.077,55.023-0.077z M40.273,8.392c2.662,0,4.813,2.15,4.813,4.813 c0,2.661-2.151,4.813-4.813,4.813s-4.813-2.151-4.813-4.813C35.46,10.542,37.611,8.392,40.273,8.392z"/><linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="97.0444" y1="21.6321" x2="155.6665" y2="-34.5308" gradientTransform="matrix(1 0 0 -1 -53.2974 66.4321)"> <stop offset="0" style="stop-color:#FFE052"/> <stop offset="1" style="stop-color:#FFC331"/></linearGradient><path fill="url(#SVGID_2_)" d="M55.397,109.923c25.959,0,26.282-10.271,26.282-12.156c0-3.148,0-12.594,0-12.594H54.897v-3.781 c0,0,28.032,0,37.375,0c8.009,0,17.938-4.954,17.938-26.25c0-23.322-10.538-27.281-15.656-27.281c-2.336,0-9.344,0-9.344,0 s0,10.216,0,13.125c0,5.491-2.631,15.656-15.406,15.656c-15.91,0-19.476,0-26.532,0c-3.892,0-14.906,1.896-14.906,14.406 c0,14.475,0,18.265,0,24.219C28.366,100.497,31.562,109.923,55.397,109.923z M70.148,101.454c-2.662,0-4.813-2.151-4.813-4.813 s2.15-4.813,4.813-4.813c2.661,0,4.813,2.151,4.813,4.813S72.809,101.454,70.148,101.454z"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
public/umbra-screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

View File

@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import 'reveal.js/dist/reveal.css' import 'reveal.js/dist/reveal.css'
import 'reveal.js/dist/theme/black.css' import 'reveal.js/dist/theme/black.css'
import 'reveal.js/plugin/highlight/monokai.css' import './github-dark-dimmed.css'
import Reveal from 'reveal.js' import Reveal from 'reveal.js'
import Markdown from 'reveal.js/plugin/markdown/markdown.esm.js' import Markdown from 'reveal.js/plugin/markdown/markdown.esm.js'
@@ -16,6 +16,17 @@
import History from './slides/History.svelte' import History from './slides/History.svelte'
import CoreIdea from './slides/CoreIdea.svelte' import CoreIdea from './slides/CoreIdea.svelte'
import TheProblem from './slides/TheProblem.svelte' import TheProblem from './slides/TheProblem.svelte'
import Flake from './slides/Flake.svelte'
import Channels from './slides/Channels.svelte'
import TitleNixOS from './slides/TitleNixOS.svelte'
import NixOSInstall from './slides/NixOSInstall.svelte'
import TitleNixpkgs from './slides/TitleNixpkgs.svelte'
import TitleNixLanguage from './slides/TitleNixLanguage.svelte'
import NixLanguage from './slides/NixLanguage.svelte'
import TitleCommunityProjects from './slides/TitleCommunityProjects.svelte'
import NixDarwin from './slides/NixDarwin.svelte'
import HomeManager from './slides/HomeManager.svelte'
import DesktopManagement from './slides/DesktopManagement.svelte'
onMount(async () => { onMount(async () => {
await tick() await tick()
@@ -38,6 +49,17 @@
<TheProblem /> <TheProblem />
<CoreIdea /> <CoreIdea />
<History /> <History />
<TitleNixLanguage />
<NixLanguage />
<TitleNixpkgs />
<PackageGraph /> <PackageGraph />
<Channels />
<TitleNixOS />
<NixOSInstall />
<Flake />
<TitleCommunityProjects />
<HomeManager />
<DesktopManagement />
<NixDarwin />
</div> </div>
</div> </div>

9
src/code/Flake/1.nix Normal file
View File

@@ -0,0 +1,9 @@
{
description = "System configuration flake";
inputs = {
};
outputs = { ... }@inputs: {
};
}

10
src/code/Flake/2.nix Normal file
View File

@@ -0,0 +1,10 @@
{
description = "System configuration flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { nixpkgs, ... }@inputs: {
};
}

16
src/code/Flake/3.nix Normal file
View File

@@ -0,0 +1,16 @@
{
description = "System configuration flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { nixpkgs, ... }@inputs: {
nixosConfigurations.${host} = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# Import your modules here
];
};
};
}

View File

@@ -0,0 +1 @@
_: _

View File

@@ -0,0 +1 @@
a: a + 1

View File

@@ -0,0 +1 @@
a: b: a + b

View File

@@ -0,0 +1 @@
(a: b: a + b) 3 4

View File

@@ -0,0 +1,2 @@
(a: b: a + b) 3 4
(b: 3 + b) 4

View File

@@ -0,0 +1,3 @@
(a: b: a + b) 3 4
(b: 3 + b) 4
3 + 4

View File

@@ -0,0 +1,4 @@
(a: b: a + b) 3 4
(b: 3 + b) 4
3 + 4
7

View File

@@ -0,0 +1,3 @@
let
x = a: b: a + b;
in

View File

@@ -0,0 +1,3 @@
let
x = a: b: a + b;
in x 3 4

View File

@@ -0,0 +1,4 @@
let
x = a: b: a + b;
in x 3 4
# >>> 7

View File

@@ -0,0 +1 @@
{ ... }

14
src/code/Language/aal.nix Normal file
View File

@@ -0,0 +1,14 @@
{
string = "hello";
integer = 1;
float = 3.141;
bool = true;
null = null;
list = [ 1 "two" false ];
attribute-set = {
a = "hello";
b = 2;
c = 2.718;
d = false;
}; # comments are supported
}

16
src/code/Language/aam.nix Normal file
View File

@@ -0,0 +1,16 @@
let
x = {
string = "hello";
integer = 1;
float = 3.141;
bool = true;
null = null;
list = [ 1 "two" false ];
attribute-set = {
a = "hello";
b = 2;
c = 2.718;
d = false;
}; # comments are supported
};
in

16
src/code/Language/aan.nix Normal file
View File

@@ -0,0 +1,16 @@
let
x = {
string = "hello";
integer = 1;
float = 3.141;
bool = true;
null = null;
list = [ 1 "two" false ];
attribute-set = {
a = "hello";
b = 2;
c = 2.718;
d = false;
}; # comments are supported
};
in (a: a.string) x

17
src/code/Language/aao.nix Normal file
View File

@@ -0,0 +1,17 @@
let
x = {
string = "hello";
integer = 1;
float = 3.141;
bool = true;
null = null;
list = [ 1 "two" false ];
attribute-set = {
a = "hello";
b = 2;
c = 2.718;
d = false;
}; # comments are supported
};
in (a: a.string) x
# >>> hello

17
src/code/Language/aap.nix Normal file
View File

@@ -0,0 +1,17 @@
let
x = {
string = "hello";
integer = 1;
float = 3.141;
bool = true;
null = null;
list = [ 1 "two" false ];
attribute-set = {
a = "hello";
b = 2;
c = 2.718;
d = false;
}; # comments are supported
};
in ({ string, ... }: string) x
# >>> hello

View File

@@ -0,0 +1,6 @@
{
...
}:
{
}

View File

@@ -0,0 +1,8 @@
{
pkgs,
config,
...
}:
{
}

18
src/code/Language/aas.nix Normal file
View File

@@ -0,0 +1,18 @@
{
pkgs,
config,
...
}:
{
users.users.ripley = {
isNormalUser = true;
uid = 1000;
description = "Benevolent dictator for life";
extraGroups = [
"networkmanager"
"uug"
];
hashedPasswordFile = config.age.secrets.ripley-password;
shell = pkgs.zsh;
};
}

117
src/github-dark-dimmed.css Normal file
View File

@@ -0,0 +1,117 @@
pre code.hljs {
display: block;
overflow-x: auto;
padding: 1em
}
code.hljs {
padding: 3px 5px
}
/*!
Theme: GitHub Dark Dimmed
Description: Dark dimmed theme as seen on github.com
Author: github.com
Maintainer: @Hirse
Updated: 2021-05-15
Colors taken from GitHub's CSS
*/
.hljs {
color: #adbac7;
background: #22272e
}
.hljs-doctag,
.hljs-keyword,
.hljs-meta .hljs-keyword,
.hljs-template-tag,
.hljs-template-variable,
.hljs-type,
.hljs-variable.language_ {
/* prettylights-syntax-keyword */
color: #f47067
}
.hljs-title,
.hljs-title.class_,
.hljs-title.class_.inherited__,
.hljs-title.function_ {
/* prettylights-syntax-entity */
color: #dcbdfb
}
.hljs-attr,
.hljs-attribute,
.hljs-literal,
.hljs-meta,
.hljs-number,
.hljs-operator,
.hljs-variable,
.hljs-selector-attr,
.hljs-selector-class,
.hljs-selector-id {
/* prettylights-syntax-constant */
color: #6cb6ff
}
.hljs-regexp,
.hljs-string,
.hljs-meta .hljs-string {
/* prettylights-syntax-string */
color: #96d0ff
}
.hljs-built_in,
.hljs-symbol {
/* prettylights-syntax-variable */
color: #f69d50
}
.hljs-comment,
.hljs-code,
.hljs-formula {
/* prettylights-syntax-comment */
color: #768390
}
.hljs-name,
.hljs-quote,
.hljs-selector-tag,
.hljs-selector-pseudo {
/* prettylights-syntax-entity-tag */
color: #8ddb8c
}
.hljs-subst {
/* prettylights-syntax-storage-modifier-import */
color: #adbac7
}
.hljs-section {
/* prettylights-syntax-markup-heading */
color: #316dca;
font-weight: bold
}
.hljs-bullet {
/* prettylights-syntax-markup-list */
color: #eac55f
}
.hljs-emphasis {
/* prettylights-syntax-markup-italic */
color: #adbac7;
font-style: italic
}
.hljs-strong {
/* prettylights-syntax-markup-bold */
color: #adbac7;
font-weight: bold
}
.hljs-addition {
/* prettylights-syntax-markup-inserted */
color: #b4f1b4;
background-color: #1b4721
}
.hljs-deletion {
/* prettylights-syntax-markup-deleted */
color: #ffd8d3;
background-color: #78191b
}
.hljs-char.escape_,
.hljs-link,
.hljs-params,
.hljs-property,
.hljs-punctuation,
.hljs-tag {
/* purposely ignored */
}

View File

@@ -0,0 +1,58 @@
<section>
<section style="text-align: left;">
<h3>Channels?</h3>
<ul style="font-size: 20pt;">
<li>
The nix package repository, <a
href="https://github.com/NixOS/nixpkgs"
target="_blank">nixpkgs</a
>, is a simple GitHub repository
</li>
<li>
A "channel" refers to a specific, "verified" commit of nixpkgs. Simply put, its a
version of the repository
</li>
<li>
There are two general categories of channels, <strong>stable</strong> and
<strong>unstable</strong>
</li>
</ul>
</section>
<section id="stable-vs-unstable">
<div style="text-align: left;">
<h4 style="color: var(--nix-dark-blue);">Stable</h4>
<ul style="font-size: 16pt;">
<li>Bi-yearly release (e.g. nixos-24.11, nixos-25.05)</li>
<li>Largely focused on bug fixes and security vulnerabilities</li>
<li>Similar to Ubuntu releases like Ubuntu 25.04, Ubuntu 25.10, etc.</li>
</ul>
</div>
<strong>VS</strong>
<div id="unstable" dir="rtl">
<h4 style="color: var(--nix-light-blue);">Unstable</h4>
<ul style="font-size: 16pt;">
<li>Rolling release</li>
<li>Provides latest tested packages</li>
<li>Similar to the AUR</li>
<li>Single continuously update channel (e.g. nixos-unstable, nixpkgs-unstable)</li>
</ul>
</div>
</section>
</section>
<style>
#stable-vs-unstable {
display: grid !important;
grid-template-rows: 1fr;
grid-template-columns: 1fr min-content 1fr;
gap: 3rem;
align-items: center;
}
li {
margin-bottom: 8px;
}
#unstable,
#unstable ul {
text-align: right !important;
}
</style>

View File

View File

@@ -18,9 +18,13 @@
</section> </section>
<section> <section>
<div id="reproducible"> <div id="reproducible">
<p style="text-align: left;"> <div style="text-align: left;">
Nix is <strong>Purely Functional</strong> <span>Nix is <strong>Purely Functional</strong></span>
<p class="description">
Given the same inputs, Nix will always produce the same output, regardless of
the state of the rest of the system.
</p> </p>
</div>
<div> <div>
<img src={Reproducible} alt="Reproducible" /> <img src={Reproducible} alt="Reproducible" />
<strong>Reproducible</strong> <strong>Reproducible</strong>
@@ -33,14 +37,24 @@
<img src={Declartive} alt="Declartive" /> <img src={Declartive} alt="Declartive" />
<strong>Declartive</strong> <strong>Declartive</strong>
</div> </div>
<p style="text-align: right;">Packages & Systems are <strong>Declared</strong></p> <div style="text-align: right;">
<span>Packages & Systems are <strong>Declared</strong></span>
<p class="description">
Declare exact dependencies and let nix take care of the build step. Allows for
easy sharing of developer environments.
</p>
</div>
</div> </div>
</section> </section>
<section> <section>
<div id="reliable"> <div id="reliable">
<p style="text-align: left;"> <div style="text-align: left;">
<strong>Safe Upgrades</strong> and <strong>Rollbacks</strong> <span><strong>Safe Upgrades</strong> and <strong>Rollbacks</strong></span>
<p class="description">
Nix ensures that upgrading a package will never break other packages and allows
you to rollback to previous versions.
</p> </p>
</div>
<div> <div>
<img src={Reliable} alt="Reliable" /> <img src={Reliable} alt="Reliable" />
<strong>Reliable</strong> <strong>Reliable</strong>
@@ -62,6 +76,7 @@
display: grid; display: grid;
grid-template-rows: 1fr; grid-template-rows: 1fr;
grid-template-columns: 2fr 1fr; grid-template-columns: 2fr 1fr;
align-items: center;
gap: 40px; gap: 40px;
} }
@@ -69,6 +84,12 @@
display: grid; display: grid;
grid-template-rows: 1fr; grid-template-rows: 1fr;
grid-template-columns: 1fr 2fr; grid-template-columns: 1fr 2fr;
align-items: center;
gap: 40px; gap: 40px;
} }
.description {
color: #aaaaaa;
font-size: 24pt;
}
</style> </style>

View File

@@ -0,0 +1,72 @@
<script lang="ts">
import NixLogo from '/nix.svg'
import Plasma from '/kde-desktop.png'
import PlasmaManager from '/plasma-manager.png'
import Hyprland from '/hyprland.png'
import HyprlandWiki from '/hyprland-wiki.png'
</script>
<section>
<section>
<div id="desktop-management">
<div style="text-align: left;">
<strong>Desktop Management</strong>
<p class="description">
Configure everything about your desktop environment in a deterministic,
reproducible way using Nix.
</p>
</div>
<img src={NixLogo} alt="nix-logo" />
</div>
</section>
<section>
<div id="plasma">
<div>
<img src={Plasma} alt="plasma" />
<strong>KDE Plasma</strong>
</div>
<span>+</span>
<div>
<img src={PlasmaManager} alt="plasma-manager" />
<strong>Plasma Manager</strong>
</div>
</div>
</section>
<section>
<div id="hyprland">
<div>
<img src={Hyprland} alt="hyprland" />
<strong>Hyprland</strong>
</div>
<span>+</span>
<div>
<img src={HyprlandWiki} alt="hyprland-wiki" />
<strong>Home Manager Module</strong>
</div>
</div>
</section>
</section>
<style>
#desktop-management {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 2fr 1fr;
align-items: center;
gap: 40px;
}
#plasma,
#hyprland {
display: grid;
grid-template-columns: 1fr min-content 1fr;
grid-template-rows: 1fr;
gap: 40px;
align-items: center;
}
.description {
color: #aaaaaa;
font-size: 24pt;
}
</style>

13
src/slides/Flake.svelte Normal file
View File

@@ -0,0 +1,13 @@
<script>
const Code = import.meta.glob('../code/Flake/*.nix', { as: 'raw', eager: true })
</script>
<section style="font-size: 20pt;">
{#each Object.values(Code) as code}
<section data-auto-animate>
<pre data-id="flake-animation"><code data-trim data-line-numbers class="language-nix">
{code}
</code></pre>
</section>
{/each}
</section>

View File

@@ -0,0 +1,29 @@
<script lang="ts">
import HomeIcon from '/home-icon.png'
</script>
<section>
<div id="intro">
<div style="text-align: left;">
<h3>Home Manager</h3>
<p class="description">
Nix module that extends user configuraiton capabilities. Allows for easy management
of per-user packages and dotfiles.
</p>
</div>
<img src={HomeIcon} alt="nix-darwin-logo" />
</div>
</section>
<style>
#intro {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 2fr 1fr;
gap: 40px;
}
.description {
color: #aaaaaa;
font-size: 24pt;
}
</style>

View File

@@ -0,0 +1,35 @@
<script lang="ts">
import NixDarwinLogo from '/nix-darwin-logo.png'
import UmbraScreenshot from '/umbra-screenshot.png'
</script>
<section>
<section>
<div id="intro">
<div style="text-align: left;">
<h3>Nix Darwin</h3>
<p class="description">
Nix Darwin allows you to use Nix's declarative system to manage your MacOS.
Built around nixpkgs, similar to NixOS.
</p>
</div>
<img src={NixDarwinLogo} alt="nix-darwin-logo" />
</div>
</section>
<section>
<img src={UmbraScreenshot} alt="umbra-screenshot" />
</section>
</section>
<style>
#intro {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 2fr 1fr;
gap: 40px;
}
.description {
color: #aaaaaa;
font-size: 24pt;
}
</style>

View File

@@ -0,0 +1,13 @@
<script>
const Code = import.meta.glob('../code/Language/*.nix', { as: 'raw', eager: true })
</script>
<section style="font-size: 26pt;">
{#each Object.values(Code) as code}
<section data-auto-animate>
<pre data-id="example-animation"><code data-trim class="language-nix">
{code}
</code></pre>
</section>
{/each}
</section>

View File

@@ -0,0 +1,13 @@
<script lang="ts">
import GraphicalInstaller1 from '/graphical-installer1.png'
import GraphicalInstaller2 from '/graphical-installer2.png'
</script>
<section>
<section data-transition="fade">
<img src={GraphicalInstaller1} alt="Graphical Installer 1" />
</section>
<section data-transition="fade">
<img src={GraphicalInstaller2} alt="Graphical Installer 2" />
</section>
</section>

View File

@@ -1,3 +1,59 @@
<script>
import PythonLogo from '/python.svg'
</script>
<section> <section>
<h3 style="text-align: left;">The Problem</h3> <section style="text-align: left;">
<h3>The Problem</h3>
<p style="font-size: 20pt;">
<strong>"It works on my machine."</strong> Nix aims to end 'dependency hell' by ensuring
every build is isolated and reproducible.
</p>
</section> </section>
<section data-auto-animate>
<div class="venv">
<img class="python-logo" src={PythonLogo} alt="Python Logo" />
<pre><code data-trim class="language-python">
# my_awesome_program.py
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
col_means = np.mean(a, axis=0)
print("Array:\n", a)
print("Column means:", col_means)
</code></pre>
</div>
</section>
<section data-auto-animate>
<div class="venv">
<img class="python-logo" src={PythonLogo} alt="Python Logo" />
<pre data-id="venv-animation"><code data-trim>
$ python -m venv .venv
$ source .venv/bin/activate
</code></pre>
</div>
</section>
<section data-auto-animate>
<div class="venv">
<img class="python-logo" src={PythonLogo} alt="Python Logo" />
<pre data-id="venv-animation"><code data-trim>
$ python -m venv .venv
$ source .venv/bin/activate
(.venv) $ pip install numpy
</code></pre>
</div>
</section>
</section>
<style>
.venv {
display: grid;
min-height: 200px;
grid-template-rows: 1fr;
grid-template-columns: 1fr 2fr;
justify-items: center;
align-items: center;
}
</style>

View File

@@ -0,0 +1,3 @@
<section>
<h1>Community Projects</h1>
</section>

View File

@@ -0,0 +1,3 @@
<section>
<h1>Nix Expression Language</h1>
</section>

View File

@@ -0,0 +1,3 @@
<section>
<h1>NixOS</h1>
</section>

View File

@@ -0,0 +1,3 @@
<section>
<h1>Nixpkgs</h1>
</section>