1
0
Fork 0
mirror of https://github.com/NixOS/nixos-artwork synced 2024-10-18 00:06:24 -04:00

Precise Nix logo rework (aka genix7000) (#84)

* logo-ng: initial

* fixed exporting script for newer inkscape, fixed export configs

* Applying some of the nits
This commit is contained in:
Cabia Rangris 2024-02-15 20:03:16 +04:00 committed by GitHub
parent 63975a86a4
commit d1aaad6b53
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 911 additions and 0 deletions

180
ng/doc/diff.svg Normal file
View file

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="82.701698mm"
height="82.701698mm"
viewBox="0 0 82.701699 82.701699"
version="1.1"
id="svg5"
xml:space="preserve"
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
sodipodi:docname="diff.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview7"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.69755822"
inkscape:cx="-365.56088"
inkscape:cy="412.15198"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs2" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-79.752151,-175.00336)"><rect
style="opacity:1;fill:#00ff00;stroke-width:1.9;stroke-linejoin:round;paint-order:stroke markers fill"
id="rect2248"
width="82.701698"
height="82.701698"
x="79.752151"
y="175.00336" /><g
id="layer7"
inkscape:label="bg"
style="display:none"
transform="matrix(0.28222222,0,0,0.28222222,-162.51066,-17.460386)"><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
id="layer5"
inkscape:label="guide"
style="display:none;opacity:0.516"
transform="matrix(0.28222222,0,0,0.28222222,-199.9283,252.91985)"><rect
y="-957.77832"
x="132.5822"
height="483.7439"
width="1543.4283"
id="rect5350"
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:#d4d4d4;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" /><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:#9b9b9b;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="rect5346"
width="1496.443"
height="435.68069"
x="155.77646"
y="-933.38721"
inkscape:export-xdpi="17.971878"
inkscape:export-ydpi="17.971878" /><rect
y="-851.65918"
x="159.02695"
height="272.58423"
width="1492.5731"
id="rect5348"
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:#848484;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" /></g><g
id="layer6"
inkscape:label="logo-guide"
style="display:none"
transform="matrix(0.28222222,0,0,0.28222222,-199.9283,252.91985)"><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><text
xml:space="preserve"
style="font-size:7.5px;line-height:1;font-family:'Fira Code';-inkscape-font-specification:'Fira Code';letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:3.25;stroke-width:1.74648"
x="421.24753"
y="257.76456"
id="text448"
transform="matrix(0.15149492,0,0,0.15149492,-31.138838,90.844161)"><tspan
x="421.24753"
y="257.76456"
id="tspan347">1</tspan></text><g
id="g778"
style="opacity:0.499514;stroke-width:1.86292"
transform="matrix(0.53679304,0,0,0.53679304,56.095754,100.21678)"><g
id="g711"
transform="matrix(0.28222222,0,0,0.28222222,-139.83023,-12.739373)"
style="fill:#d40000;stroke-width:1.86292"><g
id="g591"
transform="matrix(1.0073666,1.7448101,-1.7448101,1.0073666,984.06944,512.56153)"
style="opacity:1;fill:#d40000;stroke-width:0.866861"><path
d="M 120.95451,37.5 H 92.087 L 70.4364,0 H 57.1573 l -6.6395,11.5 15.0111,26 H 35.5067 l -13.279,23 h 112.0059 z m 57.73509,73 H 221.991 L 228.63,99 221.991,87.5 h -30.0224 l 15.0111,-26 -13.279,-23 -56.003,97 h 26.5581 z m -93.2421,61.5 15.0111,26 h 26.5581 l -56.003,-97 -13.279,23 14.4337,25 -21.6506,37.5 6.6395,11.5 h 13.2791 z"
fill="#5277c3"
id="path4"
style="fill:#d40000;stroke-width:1.16915" /><path
d="M 170.8953,74 156.4616,49 178.1122,11.5 171.4727,0 H 158.1936 L 143.1825,26 128.1714,0 h -26.5581 l 56.003,97 z M 90.9323,62.5 H 64.3742 l -14.4338,25 H 6.639 L 0,99 6.639,110.5 h 30.0224 l -15.0111,26 13.279,23 z m 87.1799,124 -15.0111,-26 h 30.0222 l 13.279,-23 H 94.3964 l 13.27909,23 H 136.543 l 21.6506,37.5 h 13.2791 z"
fill="#7caedc"
id="path6"
style="fill:#d40000;stroke-width:1.16915" /></g></g></g><g
id="g790"
transform="matrix(0.53679304,0,0,0.53679304,288.02546,69.098383)"
style="opacity:0.5;fill:#0000ff;fill-opacity:1;stroke-width:1.86292"><g
id="g722"
transform="matrix(0.28222222,0,0,0.28222222,-571.92705,45.297209)"
style="opacity:1;fill:#0000ff;fill-opacity:1;stroke-width:1.86292"><g
id="layer3"
inkscape:label="gradient-logo"
style="display:inline;opacity:1;fill:#0000ff;fill-opacity:1;stroke-width:2.02858"
transform="matrix(0.91833531,0,0,0.91833531,552.58214,1469.1641)"><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:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.08573;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="use3439-6"
d="m 353.65459,-797.57947 -122.21762,211.66312 -28.53475,-48.37004 32.93837,-56.68747 -65.41521,-0.17187 -13.94166,-24.16966 14.23639,-24.72105 93.11171,0.29401 33.4638,-57.69041 z"
style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.08573;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="use3445-0"
d="m 363.03058,-628.3791 244.41444,0.012 -27.6223,48.89684 -65.56198,-0.18174 32.55877,56.73717 -13.96072,24.15867 -28.52725,0.0314 -46.30123,-80.7841 -66.69326,-0.1353 z"
style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.08573;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="use3449-5"
d="m 505.28844,-721.12473 -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="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.08573;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><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:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.08573;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" /><path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.08573;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 451.30201,-803.62004 -244.41444,-0.012 27.62231,-48.89684 65.56197,0.18174 -32.55876,-56.73718 13.96071,-24.15866 28.52725,-0.0314 46.30123,80.7841 66.69317,0.13525 z"
id="use4354-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" /><path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.08573;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 460.90516,-633.96606 122.21762,-211.66312 28.53475,48.37004 -32.93837,56.68746 65.41521,0.17187 13.94166,24.16966 -14.23639,24.72105 -93.11171,-0.294 -33.46371,57.69035 z"
id="use4362-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" /></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 14 KiB

BIN
ng/doc/fadeout.mp4 Normal file

Binary file not shown.

BIN
ng/doc/grid.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

45
ng/doc/header.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 59 KiB

BIN
ng/doc/module.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

138
ng/doc/weights.svg Normal file
View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="857.08398"
height="354"
version="1.1"
id="svg2546"
sodipodi:docname="weights.svg"
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2550" />
<sodipodi:namedview
id="namedview2548"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="2.0426131"
inkscape:cx="230.58699"
inkscape:cy="156.41729"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2546" />
<title
id="title2540">nix-gapless</title>
<path
d="m 84.2935,327 15.5884,27 h 24.2487 L 69.8597,260.00002 57.7354,281 72.1691,306 50.5185,343.5 56.5807,354 H 68.705 Z"
id="path2794" />
<path
d="m 176.9582,266.5 h 43.3008 l 6.063,-10.5 -6.063,-10.5 h -31.1764 l 15.5884,-27 -12.1243,-20.9999 -54.271,93.9999 h 24.2487 z"
id="path2792" />
<path
d="M 119.22318,195.5 H 90.3557 L 68.705,158 H 56.5807 l -6.0622,10.5 15.5885,27 H 34.9301 l -12.1244,21 h 108.5418 z"
id="path2790" />
<path
d="m 244.293,163 16.744,29 h 19.63 l -50.807,-88 -9.815,17 14.434,25 -21.6511,37.5 4.9071,8.5 h 9.815 z"
id="path2788" />
<path
d="m 335.804,104.5 h 43.301 l 4.907,-8.5 -4.907,-8.5 h -33.487 l 16.744,-29 -9.815,-17 -50.807,88 h 19.63 z"
id="path2786" />
<path
d="M 278.068,37.5 H 249.201 L 227.55,0 h -9.815 l -4.9071,8.5 16.7431,29 h -33.4862 l -9.815,17 H 287.883 Z"
id="path2784" />
<path
d="m 404.293,318.49995 17.898,31 h 15.011 l -47.342,-82 -7.506,13 14.434,25 -21.651,37.5 3.753,6.5 h 7.506 z"
id="path2782" />
<path
d="m 494.649,261.99995 h 43.301 l 3.753,-6.5 -3.753,-6.5 h -35.796 l 17.898,-31 -7.505,-13 -47.343,82 h 15.011 z"
id="path2780" />
<path
d="m 436.914,198.99995 h -28.868 l -21.65,-37.5 h -7.506 l -3.753,6.5 17.898,31 h -35.796 l -7.505,13 h 94.685 z"
id="path2778" />
<path
d="m 564.293,154.49995 19.053,33 h 10.392 l -43.878,-76 -5.196,9 14.433,25 -21.65,37.5 2.598,4.5 h 5.196 z"
id="path2776" />
<path
d="m 653.494,99.99995 h 43.301 l 2.598,-4.5 -2.598,-4.5 H 658.69 l 19.053,-33 -5.196,-9 -43.879,76 h 10.392 z"
id="path2774" />
<path
d="m 595.759,40.99995 h -28.867 l -21.651,-37.5 h -5.196 l -2.598,4.5 19.052,33 h -38.105 l -5.196,9 h 87.757 z"
id="path2772" />
<path
d="m 724.293,307.50002 20.208,35 h 5.773 l -40.414,-70 -2.887,5 14.434,25 -21.651,37.5 1.443,2.5 h 2.887 z"
id="path2770" />
<path
d="m 812.339,255.00002 h 43.302 l 1.443,-2.5 -1.443,-2.5 h -40.415 l 20.207,-35 -2.886,-5 -40.415,70 h 5.774 z"
id="path2768" />
<path
d="m 754.604,200.00002 h -28.867 l -21.651,-37.5 h -2.887 l -1.443,2.5 20.207,35 h -40.414 l -2.887,5 h 80.829 z"
id="path2542" />
<path
d="m 175.8035,343.5 -15.5885,-27 h 31.1769 l 12.1244,-21 H 94.9745 l 12.12432,21 H 135.9663 L 157.617,354 h 12.1243 z"
id="path2764" />
<path
d="M 88.0463,220.5 H 63.7976 l -14.4338,25 H 6.063 L 0,256 6.063,266.5 h 31.1764 l -15.5884,27 12.1243,20.9999 z"
id="path2762" />
<path
d="M 168.5866,231 154.1529,206 175.8035,168.5 169.7413,158 H 157.617 l -15.5885,27 -15.5884,-27 h -24.2487 l 54.2709,93.99998 z"
id="path2760" />
<path
d="m 328.587,192 4.907,-8.5 -16.743,-29 h 33.486 l 9.815,-17 H 258.439 l 9.815,17 h 28.867 l 21.651,37.5 z"
id="path2758" />
<path
d="m 244.582,62.5 h -19.63 l -14.4335,25 h -43.3013 l -4.9074,8.5 4.9075,8.5 h 33.4863 l -16.7432,29 9.8149,17 z"
id="path2756" />
<path
d="M 326.277,71 311.843,46 333.494,8.5 328.587,0 h -9.815 L 302.029,29 285.285,0 h -19.63 l 50.807,88 z"
id="path2754" />
<path
d="m 491.185,342.99995 -17.898,-31 h 35.796 l 7.505,-13 h -94.685 l 7.505,13 h 28.868 l 21.65,37.5 h 7.506 z"
id="path2752" />
<path
d="m 401.118,223.99995 h -15.011 l -14.434,25 h -43.301 l -3.753,6.5 3.753,6.5 h 35.796 l -17.898,31 7.505,13 z"
id="path2750" />
<path
d="m 483.968,230.49995 -14.434,-25 21.651,-37.5 -3.753,-6.5 h -7.506 l -17.897,31 -17.898,-31 H 429.12 l 47.342,82 z"
id="path2748" />
<path
d="m 648.875,182.99995 -19.052,-33 h 38.105 l 5.196,-9 h -87.757 l 5.196,9 h 28.867 l 21.651,37.5 h 5.196 z"
id="path2746" />
<path
d="m 557.654,65.99995 h -10.392 l -14.434,25 h -43.301 l -2.598,4.5 2.598,4.5 h 38.105 l -19.053,33 5.196,9 z"
id="path2744" />
<path
d="m 641.658,70.49995 -14.433,-25 21.65,-37.5 -2.598,-4.5 h -5.196 l -19.052,33 -19.053,-33 h -10.392 l 43.878,76 z"
id="path2742" />
<path
d="m 806.566,340.00002 -20.207,-35 h 40.414 l 2.887,-5 h -80.829 l 2.887,5 h 28.867 l 21.651,37.5 h 2.887 z"
id="path2740" />
<path
d="m 714.19,225.00002 h -5.774 l -14.433,25 h -43.302 l -1.443,2.5 1.443,2.5 h 40.415 l -20.207,35 2.886,5 z"
id="path2738" />
<path
d="m 799.349,227.50002 -14.434,-25 21.651,-37.5 -1.443,-2.5 h -2.887 l -20.207,35 -20.208,-35 h -5.773 l 40.414,70 z"
id="path2544" />
<metadata
id="metadata2932">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>nix-gapless</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

43
ng/export-color-svgs.sh Executable file
View file

@ -0,0 +1,43 @@
TEMPDIR=$(mktemp -d)
INPUT_CSG='nix.scad'
PARAMFILE='nix.json'
function export_svg() {
COLORS=$(
openscad -p "${PARAMFILE}" -P "${PROFILE}" "$INPUT_CSG" -o "${TEMPDIR}/no_color.svg" -D "module color(c) {echo(mowmow = str(c));}" 2>&1 |
grep -Po '(?<=(mowmow = \"))(#[0-9a-fA-F]{6}|[0-9a-fA-F]{8})' |
sort -u
);
SVGFILE=out/${PROFILE}.svg
{
cat <<EOF
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="0mm" height="0mm" xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>${PROFILE}</title>
EOF
for color in $COLORS; do
openscad -p "${PARAMFILE}" -P "${PROFILE}" "$INPUT_CSG" --export-format svg -o - -D "module color(c) {if (c == \"${color}\") children();}" 2>/dev/null|
sed "s/stroke=\"black\"//g" |
sed "s/stroke-width=\"0.5\"//g" |
sed "s/lightgray/${color}/g" |
grep -Pzo '<path(\n|\N)*/>' |
# drop the Null
head -c-1
echo
done
cat <<EOF
</svg>
EOF
} > ${SVGFILE}
inkscape --actions="file-open:${SVGFILE};select-all;fit-canvas-to-selection;export-filename:${SVGFILE};export-do;file-close"
}
for profile in nix nix-megagrid nix-white; do
export PROFILE=$profile
export_svg
done

138
ng/nix.json Normal file
View file

@ -0,0 +1,138 @@
{
"fileFormatVersion": "1",
"parameterSets": {
"nix": {
"$aperture": "2",
"$clipr": "8",
"$gaps": "1",
"$length": "4",
"$unit": "25",
"circle_h": "6",
"circle_r": "55",
"circle_t": "6",
"colors": "[\"#5277c3\", \"#7EBAE4\"]",
"hole_ratio": "1.07",
"invclip": "false",
"num": "6",
"pin_r": "3",
"printed_h": "30",
"printed_version": "none",
"show_full": "true",
"show_hexgrid": "false"
},
"nix-gapless (unofficial)": {
"$aperture": "2",
"$clipr": "8",
"$gaps": "0",
"$length": "4",
"$unit": "25",
"circle_h": "6",
"circle_r": "55",
"circle_t": "6",
"colors": "[\"#5277c3\", \"#7EBAE4\"]",
"hole_ratio": "1.07",
"invclip": "false",
"num": "6",
"pin_r": "3",
"printed_h": "30",
"printed_version": "none",
"show_full": "true",
"show_hexgrid": "false"
},
"nix-grid (unofficial)": {
"$aperture": "2",
"$clipr": "8",
"$gaps": "1",
"$length": "4",
"$unit": "25",
"circle_h": "6",
"circle_r": "55",
"circle_t": "6",
"colors": "[\"#5277c3\", \"#7EBAE4\"]",
"hole_ratio": "1.07",
"invclip": "false",
"num": "6",
"pin_r": "3",
"printed_h": "30",
"printed_version": "none",
"show_full": "true",
"show_hexgrid": "true"
},
"nix-megagrid": {
"$aperture": "2",
"$clipr": "8",
"$gaps": "1",
"$length": "4",
"$unit": "25",
"circle_h": "6",
"circle_r": "55",
"circle_t": "6",
"colors": "[\"#5277c3\", \"#7EBAE4\"]",
"hole_ratio": "1.07",
"invclip": "false",
"num": "6",
"pin_r": "3",
"printed_h": "30",
"printed_version": "grid",
"show_full": "true",
"show_hexgrid": "false"
},
"nix-printing-module": {
"$aperture": "2",
"$clipr": "8",
"$gaps": "1",
"$length": "4",
"$unit": "25",
"circle_h": "6",
"circle_r": "55",
"circle_t": "6",
"colors": "[\"#5277c3\", \"#7EBAE4\"]",
"hole_ratio": "1.07",
"invclip": "false",
"num": "6",
"pin_r": "3",
"printed_h": "30",
"printed_version": "module",
"show_full": "false",
"show_hexgrid": "false"
},
"nix-printing-one-piece": {
"$aperture": "2",
"$clipr": "8",
"$gaps": "1",
"$length": "4",
"$unit": "25",
"circle_h": "6",
"circle_r": "55",
"circle_t": "6",
"colors": "[\"#5277c3\", \"#7EBAE4\"]",
"hole_ratio": "1.07",
"invclip": "false",
"num": "6",
"pin_r": "3",
"printed_h": "30",
"printed_version": "one piece",
"show_full": "false",
"show_hexgrid": "false"
},
"nix-white": {
"$aperture": "2",
"$clipr": "8",
"$gaps": "1",
"$length": "4",
"$unit": "25",
"circle_h": "6",
"circle_r": "55",
"circle_t": "6",
"colors": "[\"#FFFFFF\"]",
"hole_ratio": "1.07",
"invclip": "false",
"num": "6",
"pin_r": "3",
"printed_h": "30",
"printed_version": "none",
"show_full": "true",
"show_hexgrid": "false"
}
}
}

229
ng/nix.scad Normal file
View file

@ -0,0 +1,229 @@
// SPDX-License-Identifier: GPL-3.0-or-later
// === Nix logo specification
// Central aperture diameter, in units. It does produce nice effects if animated.
$aperture = 2;
// lambda height in units. fun to play with
$length = 4;
// Clipping polygon diameter, in units
$clipr = 8;
// === Some calculated core stuff
// number of lambdas. doesn't really work if changed in this model.
num = 6;
// The angle
th = 360 / num / 2;
// Unit value of Y when mapped to coordinate space with angle between axes of "th"
function tunit() = tan(th)*$unit;
// === Rendering props
// Lambda thickness, also a segment size. Should affect nothing except size and gaps.
$unit = 25;
// Shrinkage for each of lambdas. Basically control inverse "font weight"
$gaps = 1;
// colors to use
colors = ["#5277C3", "#7EBAE4"];
// inverse clipping order
invclip = false;
show_hexgrid = false;
show_full = true;
printed_version = "none"; // ["none", "grid", "one piece", "module", "weights"]
printed_h = 20;
circle_r = 55;
circle_t = 6;
circle_h = 6;
pin_l = 4*tunit();
pin_r = 3;
// Pin/hole size ratio, to account for plastic heat deformation
hole_ratio = 1.07;
// copied from <MCAD/regular_shapes.scad> so customizer will work on thingiverse
module regular_polygon(sides, radius)
{
function dia(r) = sqrt(pow(r*2,2)/2); //sqrt((r*2^2)/2) if only we had an exponention op
angles=[ for (i = [0:sides-1]) i*(360/sides) ];
coords=[ for (th=angles) [radius*cos(th), radius*sin(th)] ];
polygon(coords);
}
function minsym(x) = (x <= 3 || x % 2 > 0) ? x : minsym(x/2);
module hexgrid(thickness=1.5) union() {
// Yes you can go lower for hexagonal grids.
s = minsym(num);
th_l = 180 / s;
for (i=[0:s-1]) {
rotate((i+0.5)*th_l)
for (i=[-$clipr:$clipr]) union() {
translate([i*$unit/2,0])
square([thickness, $clipr * $unit * 2],center=true);
};
};
}
// draw a ~perfect~ 2D lambda
module lambda() {
intersection(){
union() {
// Lambda arm
rotate(-th)
translate([0,-tunit()*$length])
square([$unit,$length*tunit()*2], center=true);
// Lambda bar
rotate(th)
square([$unit,tunit()*($length*2 + 2)], center=true);
}
// Cutting top and bottom of squares to be left with a perfect lambda
// Lambda *almost* scales uniformly.
// We just need to account for corner triangles, making it + 2 wider.
square([tunit()*($length + 2), $unit*$length], center=true);
}
}
// Subtracts a rotated child from itself
module diff(nextangle, debug=false) {
difference() {
children();
rotate(invclip ? nextangle : -nextangle) children();
}
}
module clipper(){
// that's not as easy to autotune as it would seem
intersection() {
regular_polygon(num, $clipr * tunit());
children();
}
}
module placed_lambda() {
offset(delta = -$gaps)
clipper()
// cutting it up with the same lambda at the next place
diff(360/num)
// translation to endpoint
translate([tunit() * -$aperture, $unit * -$aperture])
// initial in-place rotation
lambda();
}
module render_logo(segments=[0:num-1]) {
for (r=segments)
// color it with next color in array
color(colors[r % len(colors)])
rotate(th*2*r)
placed_lambda();
}
module make_pin(scl = 1, r = pin_r) {
// Only rescale crossection, so length doesn't change
scale([1,scl,scl])
translate([tunit() * -$aperture, $unit * -$aperture])
rotate(th)
// extrude pin from the center to the side of a limbda
translate([0,pin_l/2,0])
rotate([90,45])
cube([r * 2, r * 2, pin_l], center=true);
//cylinder(50, r, r, center=true);
}
module render_module() {
render()
difference() {
union() {
make_pin(1);
linear_extrude(printed_h, center=true)
clipper()
placed_lambda();
}
// ensuring that hole is slightly larger
rotate((invclip ? -1 : 1) * 360/num) make_pin(hole_ratio);
// usually not needed, but you
// can actually thread stuff thru two next lambdas
rotate((invclip ? -2 : 2) * 360/num) make_pin(hole_ratio);
}
}
// Actual rendering
if (printed_version == "grid") {
for (x=[0:4], y=[0:4]) {
translate([tunit()*(-4.5*y+12*x), -$unit*(-6.5*y+1*x)]) difference() {
render_logo();
if (show_hexgrid)
hexgrid();
}
}
}
if (printed_version == "none") {
difference() {
render_logo();
if (show_hexgrid)
hexgrid();
};
}
if (printed_version == "module") {
difference() {
render_module();
if (show_hexgrid)
translate([0,0,printed_h/2-1])
linear_extrude(2)
hexgrid();
}
if (show_full)
translate([0,0, printed_h / -2])
color("#ff000033")
render_logo();
}
if (printed_version == "one piece")
union() {
linear_extrude(circle_h, center=true)
difference() {
circle(circle_r);
circle(circle_r - circle_t);
}
difference() {
linear_extrude(printed_h, center=true)
render_logo();
if (show_hexgrid)
translate([0,0,printed_h/2-1])
linear_extrude(1)
hexgrid();
}
};
if (printed_version == "weights")
for (gap=[1:5]) {
$gaps = 1;
$aperture = 2 * gap;
$length = 4 * gap;
$clipr = 8 * gap;
$unit = 25 / gap;
translate([(gap - 1) * 160,((gap - 1) % 2) * 160])
render_logo();
};

33
ng/out/nix-megagrid.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

29
ng/out/nix-white.svg Normal file
View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="228.63"
height="198"
version="1.1"
id="svg13"
sodipodi:docname="nix-white.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs17" />
<sodipodi:namedview
id="namedview15"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050" />
<title
id="title9">nix-white</title>
<path
d="M 170.8953,74 156.4616,49 178.1122,11.5 171.4727,0 H 158.1936 L 143.1825,26 128.1714,0 h -26.5581 l 56.003,97 z M 120.95453,37.5 H 92.087 L 70.4364,0 H 57.1573 l -6.6395,11.5 15.0111,26 H 35.5067 l -13.279,23 h 112.0059 z m 57.73507,73 H 221.991 L 228.63,99 221.991,87.5 h -30.0224 l 15.0111,-26 -13.279,-22.9999 -56.003,96.9999 h 26.5581 z M 90.9323,62.5 H 64.3742 l -14.4338,25 H 6.639 L 0,99 6.639,110.5 h 30.0224 l -15.0111,26 13.279,22.9999 z m -5.4848,109.5 15.0111,26 h 26.5581 l -56.003,-97 -13.279,23 14.4337,25 -21.6506,37.5 6.6395,11.5 h 13.2791 z m 92.6647,14.5 -15.0111,-26 h 30.0222 l 13.279,-23 H 94.3964 l 13.27907,23 H 136.543 l 21.6506,37.5 h 13.2791 z"
fill="#ffffff"
id="path11" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

33
ng/out/nix.svg Normal file
View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="228.63"
height="198"
version="1.1"
id="svg15"
sodipodi:docname="nix.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs19" />
<sodipodi:namedview
id="namedview17"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050" />
<title
id="title9">nix</title>
<path
d="M 120.95453,37.5 H 92.087 L 70.4364,0 H 57.1573 l -6.6395,11.5 15.0111,26 H 35.5067 l -13.279,23 h 112.0059 z m 57.73507,73 H 221.991 L 228.63,99 221.991,87.5 h -30.0224 l 15.0111,-26 -13.279,-22.9999 -56.003,96.9999 h 26.5581 z m -93.2421,61.5 15.0111,26 h 26.5581 l -56.003,-97 -13.279,23 14.4337,25 -21.6506,37.5 6.6395,11.5 h 13.2791 z"
fill="#5277c3"
id="path11" />
<path
d="M 170.8953,74 156.4616,49 178.1122,11.5 171.4727,0 H 158.1936 L 143.1825,26 128.1714,0 h -26.5581 l 56.003,97 z M 90.9323,62.5 H 64.3742 l -14.4338,25 H 6.639 L 0,99 6.639,110.5 h 30.0224 l -15.0111,26 13.279,22.9999 z m 87.1799,124 -15.0111,-26 h 30.0222 l 13.279,-23 H 94.3964 l 13.27907,23 H 136.543 l 21.6506,37.5 h 13.2791 z"
fill="#7ebae4"
id="path13" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

43
ng/readme.md Normal file
View file

@ -0,0 +1,43 @@
![](./doc/header.svg)
# Precise Nix logo rework (aka genix7000)
Logo versions for use are in ["out" folder](./out)
This is a Nix logo version, generated in OpenSCAD and pinned to a hex grid. Differences between generated and original versions are neglidgible:
![Old and new logos, overlayed](./doc/diff.svg)
*Blue is a newer version, red is an older version*
Here's a "hexgrid" version, which shows the proportions better:
![Nix logo with different weights](./doc/grid.png)
## Why OpenSCAD?
Having most of the logo parametrized allows to generate logos with different weights with ease
```openscad
for (gap=[1:5]) {
$gaps = gap * 2;
translate([(gap - 1) * 160,((gap - 1) % 2) * 160])
difference()
render_logo();
};
```
![Nix logo with different weights](./doc/weights.svg)
It also allows to easily animate the logo — [here's an example](./doc/fadeout.mp4) — e.g if you want to have minimalistic plymouth animation.
## 3D Printing
nix.scad can also export several 3D printing models — single-module smaller versions, and separate, composable lambdas — if you wish to build yourself a huge Nix logo.
![Nix logo module](./doc/module.png)
## Hacking on it
Run `nix-shell -p openscad` if you don't have an OpenSCAD yet, and then open nix.scad in it.
If you wish to export colored logos, modify and use `./export-color-svgs.sh` in this folder.
3D printing models