1
1
Fork 1
mirror of https://github.com/oddlama/nix-config.git synced 2025-10-10 23:00:39 +02:00

feat(topology): add more services

This commit is contained in:
oddlama 2024-03-19 03:46:45 +01:00
parent c0cccc298d
commit f37c491f8e
No known key found for this signature in database
GPG key ID: 14EFE510775FE39A
18 changed files with 118 additions and 60 deletions

View file

@ -77,4 +77,8 @@
nixpkgs.config.permittedInsecurePackages = lib.trace "please remove insecure nix 2.16.2 very fast ok thx bye" [
"nix-2.16.2"
];
topology.self.icon = "devices.desktop";
#topology.self.interfaces.lan1.connections = [{ id = "dumbswitch"; interface = "lan1"; }];
#topology.nodes.dumbswitch = lib.topology.mkSwitch "Dummer Switch";
}

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100%" viewBox="0 0 16.845 14.205" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M1.143-.807q.021 0 .041.008a.1.1 0 0 1 .033.023.1.1 0 0 1 .031.074v.561a.1.1 0 0 1-.031.075.2.2 0 0 1-.033.023.1.1 0 0 1-.041.008H.976q.012.014.019.032a.1.1 0 0 1 .007.038V.14H.371V.035q0-.019.007-.038a.1.1 0 0 1 .019-.032H.23a.1.1 0 0 1-.041-.008.2.2 0 0 1-.033-.023.107.107 0 0 1-.031-.075v-.561a.098.098 0 0 1 .031-.074.1.1 0 0 1 .033-.023.1.1 0 0 1 .041-.008z" style="fill-rule:nonzero" transform="matrix(15 0 0 15 -1.875 12.105)"/><path d="M.511.02H.476v-.145h.035zm0 0H.476v-.145h.035zm.386 0H.862v-.145h.035zm0 0H.862v-.145h.035z" style="fill:#a6a6a6;fill-rule:nonzero" transform="matrix(15 0 0 15 -1.875 12.105)"/><path d="M1.178-.141q0 .015-.011.025a.03.03 0 0 1-.024.011H.23a.03.03 0 0 1-.024-.011.03.03 0 0 1-.011-.025v-.561q0-.015.011-.025a.03.03 0 0 1 .024-.01h.913q.013 0 .024.01a.03.03 0 0 1 .011.025zM.932.07H.441V.035q0-.015.01-.025A.03.03 0 0 1 .476 0h.421q.015 0 .025.01t.01.025z" style="fill:#ccc;fill-rule:nonzero" transform="matrix(15 0 0 15 -1.875 12.105)"/><path d="M.23-.702h.912v.526H.23z" style="fill:#1f1f1f;fill-rule:nonzero" transform="matrix(15 0 0 15 -1.875 12.105)"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512" xml:space="preserve">
<g>
<g>
<path d="M168,184.036c-6.632,0-12,5.376-12,12v23.752c0,6.628,5.368,12,12,12c6.624,0,12-5.372,12-12v-23.752
C180,189.412,174.624,184.036,168,184.036z"/>
</g>
</g>
<g>
<g>
<path d="M256,184.036c-6.632,0-12,5.376-12,12v23.752c0,6.628,5.368,12,12,12c6.624,0,12-5.372,12-12v-23.752
C268,189.412,262.624,184.036,256,184.036z"/>
</g>
</g>
<g>
<g>
<path d="M212,184.036c-6.632,0-12,5.376-12,12v23.752c0,6.628,5.368,12,12,12c6.624,0,12-5.372,12-12v-23.752
C224,189.412,218.624,184.036,212,184.036z"/>
</g>
</g>
<g>
<g>
<path d="M460,0H52C23.28,0,0,23.28,0,52v408c0,28.72,23.28,52,52,52h408c28.72,0,52-23.28,52-52V52C512,23.28,488.72,0,460,0z
M444,284h-88.024c-2.212,0-3.976,1.64-3.976,3.848V348H160v-60.152c0-2.208-1.616-3.848-3.828-3.848H68V68h44v92.184
c0,6.624,5.368,12,12,12c6.624,0,12-5.376,12-12V68h20v92.184c0,6.624,5.368,12,12,12c6.624,0,12-5.376,12-12V68h20v92.184
c0,6.624,5.368,12,12,12c6.624,0,12-5.376,12-12V68h20v92.184c0,6.624,5.368,12,12,12c6.624,0,12-5.376,12-12V68h20v92.184
c0,6.624,5.368,12,12,12c6.624,0,12-5.376,12-12V68h20v92.184c0,6.624,5.368,12,12,12c6.624,0,12-5.376,12-12V68h20v92.184
c0,6.624,5.368,12,12,12c6.624,0,12-5.376,12-12V68h44V284z"/>
</g>
</g>
<g>
<g>
<path d="M124,184.036c-6.632,0-12,5.376-12,12v23.752c0,6.628,5.368,12,12,12c6.624,0,12-5.372,12-12v-23.752
C136,189.412,130.624,184.036,124,184.036z"/>
</g>
</g>
<g>
<g>
<path d="M388,184.036c-6.632,0-12,5.376-12,12v23.752c0,6.628,5.368,12,12,12c6.624,0,12-5.372,12-12v-23.752
C400,189.412,394.624,184.036,388,184.036z"/>
</g>
</g>
<g>
<g>
<path d="M344,184.036c-6.632,0-12,5.376-12,12v23.752c0,6.628,5.368,12,12,12c6.624,0,12-5.372,12-12v-23.752
C356,189.412,350.624,184.036,344,184.036z"/>
</g>
</g>
<g>
<g>
<path d="M300,184.036c-6.632,0-12,5.376-12,12v23.752c0,6.628,5.368,12,12,12c6.624,0,12-5.372,12-12v-23.752
C312,189.412,306.624,184.036,300,184.036z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100%" viewBox="0 0 16.845 12.63" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="m1.143-.134.077.077a.1.1 0 0 1 .028.067.1.1 0 0 1-.008.037.1.1 0 0 1-.02.03.1.1 0 0 1-.03.02.1.1 0 0 1-.037.008H.22A.1.1 0 0 1 .183.097a.1.1 0 0 1-.03-.02.1.1 0 0 1-.02-.03.1.1 0 0 1-.001-.073.1.1 0 0 1 .021-.031L.23-.134v-.498q0-.021.009-.041a.1.1 0 0 1 .022-.033.097.097 0 0 1 .074-.031h.703a.1.1 0 0 1 .074.031q.014.013.022.033a.1.1 0 0 1 .009.041z" style="fill-rule:nonzero" transform="matrix(15 0 0 15 -1.875 11.055)"/><path d="m1.073-.105.097.098q.008.007.008.017a.03.03 0 0 1-.008.018q-.006.007-.017.007H.22A.02.02 0 0 1 .203.028.03.03 0 0 1 .195.01q0-.01.008-.017L.3-.105v-.527q0-.013.011-.024a.03.03 0 0 1 .024-.011h.703q.013 0 .024.011a.03.03 0 0 1 .011.024z" style="fill:#ccc;fill-rule:nonzero" transform="matrix(15 0 0 15 -1.875 11.055)"/><path d="M.335-.632h.702v.491H.335z" style="fill:#1f1f1f;fill-rule:nonzero" transform="matrix(15 0 0 15 -1.875 11.055)"/><path d="m1.02-.105.059.059.002.004q0 .007-.007.007H.81L.827 0H.546l.017-.035H.299L.294-.037.292-.042q0-.003.009-.012L.32-.073l.02-.02.013-.012z" style="fill:#a6a6a6;fill-rule:nonzero" transform="matrix(15 0 0 15 -1.875 11.055)"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
.st1{fill:url(#SVGID_2_);}
.st2{fill:url(#SVGID_3_);}
.st3{fill:url(#SVGID_4_);}
.st4{fill:url(#SVGID_5_);}
.st5{fill:url(#SVGID_6_);}
</style>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="315.5926" y1="56.3856" x2="382.6675" y2="207.0383">
<stop offset="0" style="stop-color:#51BCFE"/>
<stop offset="1" style="stop-color:#6C69FF"/>
</linearGradient>
<path class="st0" d="M356.53,256.7c0-1.68-125.8-218.04-125.8-218.04h55.35l33.55,57.03l33.55-57.03h28.51l13.42,23.48l-43.61,85.54
l33.55,58.7L356.53,256.7"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="149.5343" y1="214.3758" x2="370.9458" y2="334.1458" gradientTransform="matrix(-0.5036 0.8639 -0.8639 -0.5036 764.5684 155.4585)">
<stop offset="0" style="stop-color:#E4C4FF"/>
<stop offset="1" style="stop-color:#7A5EEF"/>
</linearGradient>
<path class="st1" d="M305.69,341.77c1.46-0.83,126.95-217.38,126.95-217.38l27.45,48.06l-32.88,57.41l66.16,0.85l14.14,24.76
l-13.74,23.3l-95.91,4.56l-34.34,58.24L305.69,341.77z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="297.415" y1="44.5186" x2="380.1422" y2="188.2198" gradientTransform="matrix(-0.4989 0.8666 -0.8666 -0.4989 589.9011 170.0448)">
<stop offset="0" style="stop-color:#51BCFE"/>
<stop offset="1" style="stop-color:#6C69FF"/>
</linearGradient>
<path class="st2" d="M202.2,340.41c1.45,0.84,251.73-0.23,251.73-0.23l-27.62,47.97l-66.16,0.62l32.69,57.52L378.61,471l-27.05-0.09
l-52.38-80.47l-67.61-0.22L202.2,340.41"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="81.5631" y1="127.9986" x2="302.9746" y2="247.7686" gradientTransform="matrix(-0.4982 -0.867 0.867 -0.4982 127.8989 643.4454)">
<stop offset="0" style="stop-color:#E4C4FF"/>
<stop offset="1" style="stop-color:#7A5EEF"/>
</linearGradient>
<path class="st3" d="M153.93,254.72c0,1.68,125.23,218.37,125.23,218.37l-55.35-0.14l-33.4-57.11l-33.69,56.94l-28.51-0.07
l-13.36-23.52l43.83-85.43l-33.39-58.79L153.93,254.72z"/>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="296.6631" y1="166.1278" x2="379.3903" y2="309.829" gradientTransform="matrix(-0.488 -0.8729 0.8729 -0.488 48.9143 645.1781)">
<stop offset="0" style="stop-color:#51BCFE"/>
<stop offset="1" style="stop-color:#6C69FF"/>
</linearGradient>
<path class="st4" d="M208.09,166.3c-1.46,0.82-128.94,216.2-128.94,216.2l-27.01-48.31l33.41-57.11l-66.15-1.45L5.49,250.73
l13.95-23.17l95.94-3.67l34.87-57.93L208.09,166.3"/>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="63.5654" y1="79.0025" x2="284.977" y2="198.7725">
<stop offset="0" style="stop-color:#E4C4FF"/>
<stop offset="1" style="stop-color:#7A5EEF"/>
</linearGradient>
<path class="st5" d="M306.07,167.25c-1.45-0.84-251.73-0.21-251.73-0.21l27.7-47.92l66.16-0.5l-32.58-57.58l14.27-24.69l27.04,0.13
l52.23,80.56l67.61,0.34L306.07,167.25z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="107.047 62.185 94.167 94.168"><path d="M33.6-12C19.4-12 2.2-8.6-12-1.3c0 15.9-.2 55.7 45.6 82.8C79.5 54.4 79.3 14.7 79.3-1.3 65.1-8.6 47.9-12 33.6-12" style="fill:#68bc71" transform="translate(120.48 74.519)"/><path d="M33.6 81.5C-12.2 54.4-12 14.7-12-1.3 2.1-8.6 19.3-12 33.6-12z" style="fill:#67b279" transform="translate(120.48 74.519)"/><path d="m32 50.4 27.6-37.2c-2-1.6-3.8-.5-4.8.4l-23 23.9-8.7-10.4C18.9 22.4 13.3 26 12 27z" style="fill:#fff" transform="translate(120.48 74.519)"/></svg>

After

Width:  |  Height:  |  Size: 544 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 212 212"><style>circle,path{fill:none;stroke:#000;stroke-width:15}path{stroke-width:25}.orange{stroke:#f60}.red{stroke:#d40000}</style><g transform="translate(6 6)"><path d="M58 168V70a50 50 0 0 1 50-50h20" class="orange"/><path d="M58 168v-30a50 50 0 0 1 50-50h20" class="red"/><circle cx="142" cy="20" r="18" class="orange"/><circle cx="142" cy="88" r="18" class="red"/><circle cx="58" cy="180" r="18" class="red"/></g></svg>

After

Width:  |  Height:  |  Size: 480 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="351" height="365"><linearGradient id="a" x1="175.5" x2="175.5" y1="30%" y2="99%" gradientUnits="userSpaceOnUse"><stop offset="0" style="stop-color:#f05a28"/><stop offset="1" style="stop-color:#fbca0a"/></linearGradient><path d="M342 161.2c-.6-6.1-1.6-13.1-3.6-20.9-2-7.7-5-16.2-9.4-25s-10.1-17.9-17.5-26.8c-2.9-3.5-6.1-6.9-9.5-10.2 5.1-20.3-6.2-37.9-6.2-37.9-19.5-1.2-31.9 6.1-36.5 9.4-.8-.3-1.5-.7-2.3-1-3.3-1.3-6.7-2.6-10.3-3.7q-5.25-1.65-10.8-3c-3.7-.9-7.4-1.6-11.2-2.2-.7-.1-1.3-.2-2-.3C214.2 12.4 189.8 1 189.8 1c-27.3 17.3-32.4 41.5-32.4 41.5s-.1.5-.3 1.4c-1.5.4-3 .9-4.5 1.3-2.1.6-4.2 1.4-6.2 2.2-2.1.8-4.1 1.6-6.2 2.5-4.1 1.8-8.2 3.8-12.2 6-3.9 2.2-7.7 4.6-11.4 7.1l-1-.4c-37.8-14.4-71.3 2.9-71.3 2.9-3.1 40.2 15.1 65.5 18.7 70.1-.9 2.5-1.7 5-2.5 7.5-2.8 9.1-4.9 18.4-6.2 28.1-.2 1.4-.4 2.8-.5 4.2C18.8 192.7 8.5 228 8.5 228c29.1 33.5 63.1 35.6 63.1 35.6l.1-.1c4.3 7.7 9.3 15 14.9 21.9 2.4 2.9 4.8 5.6 7.4 8.3-10.6 30.4 1.5 55.6 1.5 55.6 32.4 1.2 53.7-14.2 58.2-17.7 3.2 1.1 6.5 2.1 9.8 2.9 10 2.6 20.2 4.1 30.4 4.5 2.5.1 5.1.2 7.6.1h3.6l1.6-.1v.1c15.3 21.8 42.1 24.9 42.1 24.9 19.1-20.1 20.2-40.1 20.2-44.4v-1.8c4-2.8 7.8-5.8 11.4-9.1 7.6-6.9 14.3-14.8 19.9-23.3l1.5-2.4c21.6 1.2 36.9-13.4 36.9-13.4-3.6-22.5-16.4-33.5-19.1-35.6 0 0-.1-.1-.3-.2s-.2-.2-.2-.2c-.1-.1-.3-.2-.5-.3.1-1.4.2-2.7.3-4.1.2-2.4.2-4.9.2-7.3v-3.8l-.1-1.5-.1-2c0-.7-.1-1.3-.2-1.9s-.1-1.3-.2-1.9l-.2-1.9-.3-1.9c-.4-2.5-.8-4.9-1.4-7.4-2.3-9.7-6.1-18.9-11-27.2-5-8.3-11.2-15.6-18.3-21.8-7-6.2-14.9-11.2-23.1-14.9-8.3-3.7-16.9-6.1-25.5-7.2-4.3-.6-8.6-.8-12.9-.7h-3.2l-1.6.1c-.6 0-1.2.1-1.7.1-2.2.2-4.4.5-6.5.9-8.6 1.6-16.7 4.7-23.8 9s-13.3 9.6-18.3 15.6-8.9 12.7-11.6 19.6-4.2 14.1-4.6 21c-.1 1.7-.1 3.5-.1 5.2v1.3l.1 1.4c.1.8.1 1.7.2 2.5.3 3.5 1 6.9 1.9 10.1 1.9 6.5 4.9 12.4 8.6 17.4s8.2 9.1 12.9 12.4c4.7 3.2 9.8 5.5 14.8 7s10 2.1 14.7 2.1h2.6c.3 0 .6 0 .9-.1.5 0 1-.1 1.5-.1.1 0 .3 0 .4-.1l.5-.1c.3 0 .6-.1.9-.1.6-.1 1.1-.2 1.7-.3s1.1-.2 1.6-.4c1.1-.2 2.1-.6 3.1-.9 2-.7 4-1.5 5.7-2.4 1.8-.9 3.4-2 5-3 .4-.3.9-.6 1.3-1 1.6-1.3 1.9-3.7.6-5.3-1.1-1.4-3.1-1.8-4.7-.9l-1.2.6c-1.4.7-2.8 1.3-4.3 1.8s-3.1.9-4.7 1.2c-.8.1-1.6.2-2.5.3-.4 0-.8.1-1.3.1h-2.4c-.5 0-1 0-1.5-.1h-.6c-.2 0-.5 0-.7-.1-.5-.1-.9-.1-1.4-.2-3.7-.5-7.4-1.6-10.9-3.2-3.6-1.6-7-3.8-10.1-6.6s-5.8-6.1-7.9-9.9-3.6-8-4.3-12.4c-.3-2.2-.5-4.5-.4-6.7 0-.6.1-1.2.1-1.8v-.8c0-.3.1-.6.1-.9.1-1.2.3-2.4.5-3.6 1.7-9.6 6.5-19 13.9-26.1 1.9-1.8 3.9-3.4 6-4.9s4.4-2.8 6.8-3.9 4.8-2 7.4-2.7c2.5-.7 5.1-1.1 7.8-1.4 1.3-.1 2.6-.2 4-.2h3.1l1.1.1c2.9.2 5.7.6 8.5 1.3 5.6 1.2 11.1 3.3 16.2 6.1 10.2 5.7 18.9 14.5 24.2 25.1 2.7 5.3 4.6 11 5.5 16.9.2 1.5.4 3 .5 4.5l.1 1.1.1 1.1v4.3c0 .7-.1 1.9-.1 2.6-.1 1.6-.3 3.3-.5 4.9s-.5 3.2-.8 4.8-.7 3.2-1.1 4.7q-1.2 4.65-3 9.3c-2.4 6-5.6 11.8-9.4 17.1-7.7 10.6-18.2 19.2-30.2 24.7-6 2.7-12.3 4.7-18.8 5.7-3.2.6-6.5.9-9.8 1h-5c-1.8 0-3.5-.1-5.3-.3-7-.5-13.9-1.8-20.7-3.7-6.7-1.9-13.2-4.6-19.4-7.8-12.3-6.6-23.4-15.6-32-26.5-4.3-5.4-8.1-11.3-11.2-17.4s-5.6-12.6-7.4-19.1c-1.8-6.6-2.9-13.3-3.4-20.1l-.1-1.3v-8.9c.1-3.3.4-6.8.8-10.2s1-6.9 1.7-10.3 1.5-6.8 2.5-10.2c1.9-6.7 4.3-13.2 7.1-19.3 5.7-12.2 13.1-23.1 22-31.8 2.2-2.2 4.5-4.2 6.9-6.2q3.6-2.85 7.5-5.4c2.5-1.7 5.2-3.2 7.9-4.6 1.3-.7 2.7-1.4 4.1-2l2.1-.9 2.1-.9c2.8-1.2 5.7-2.2 8.7-3.1.7-.2 1.5-.4 2.2-.7.7-.2 1.5-.4 2.2-.6 1.5-.4 3-.8 4.5-1.1.7-.2 1.5-.3 2.3-.5s1.5-.3 2.3-.5c.8-.1 1.5-.3 2.3-.4l1.1-.2 1.2-.2c.8-.1 1.5-.2 2.3-.3.9-.1 1.7-.2 2.6-.3.7-.1 1.9-.2 2.6-.3.5-.1 1.1-.1 1.6-.2l1.1-.1.5-.1h.6c.9-.1 1.7-.1 2.6-.2l1.3-.1h1c.7 0 1.5-.1 2.2-.1 2.9-.1 5.9-.1 8.8 0 5.8.2 11.5.9 17 1.9 11.1 2.1 21.5 5.6 31 10.3 9.5 4.6 17.9 10.3 25.3 16.5.5.4.9.8 1.4 1.2.4.4.9.8 1.3 1.2.9.8 1.7 1.6 2.6 2.4s1.7 1.6 2.5 2.4 1.6 1.6 2.4 2.5c3.1 3.3 6 6.6 8.6 10 5.2 6.7 9.4 13.5 12.7 19.9l.6 1.2.6 1.2c.4.8.8 1.6 1.1 2.4.4.8.7 1.5 1.1 2.3.3.8.7 1.5 1 2.3 1.2 3 2.4 5.9 3.3 8.6 1.5 4.4 2.6 8.3 3.5 11.7.3 1.4 1.6 2.3 3 2.1 1.5-.1 2.6-1.3 2.6-2.8.1-3.6 0-7.9-.5-12.8" style="fill:url(#a)"/></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="56" fill="none"><path fill="url(#a)" d="m12.048 54.925-.664-4.459-4.459.664.76 4.459z"/><path fill="url(#b)" d="m46.957 42.403-.759-4.363-19.446 3.035.569 4.364z"/><path fill="url(#c)" d="m20.395 46.577 4.459-.759-.665-4.363-4.458.664z"/><path fill="url(#d)" d="m19.067 53.787-.759-4.364-4.363.664.569 4.458z"/><path fill="url(#e)" d="m5.881 44.206.664 4.458L11.004 48l-.664-4.459z"/><path fill="url(#f)" d="m27.7 47.905.759 4.554L48 49.423l-.664-4.459z"/><path fill="url(#g)" d="m21.533 53.407 4.364-.57-.664-4.553-4.459.76z"/><path fill="url(#h)" d="m12.806 43.162.759 4.459 4.364-.664-.664-4.459z"/><path fill="url(#i)" d="M7.4 41.455 1.991 5.976 0 6.261l5.502 35.478z"/><path fill="url(#j)" d="M9.96 41.075 4.08 2.941l-1.897.38L8.063 41.36z"/><path fill="url(#k)" d="M14.325 40.411 8.158 0 6.261.38l6.166 40.22z"/><path fill="url(#l)" d="M16.885 40.032 11.193 3.224l-1.802.285 5.692 36.711z"/><path fill="url(#m)" d="M21.25 39.273 16.22 6.64l-1.897.285 5.028 32.727z"/><path fill="url(#n)" d="M23.81 38.894 18.593 5.028l-1.897.284 5.312 33.866z"/><defs><linearGradient id="a" x1="11.647" x2="1.232" y1="66.877" y2="-.803" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="b" x1="39.992" x2="29.577" y1="62.515" y2="-5.164" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="c" x1="25.506" x2="15.091" y1="64.745" y2="-2.935" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="d" x1="18.579" x2="8.164" y1="65.811" y2="-1.869" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="e" x1="11.639" x2="1.224" y1="66.878" y2="-.801" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="f" x1="39.998" x2="29.583" y1="62.514" y2="-5.165" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="g" x1="25.506" x2="15.091" y1="64.744" y2="-2.935" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="h" x1="18.579" x2="8.164" y1="65.81" y2="-1.869" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="i" x1="10.162" x2=".285" y1="65.76" y2="1.572" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="j" x1="13.013" x2="2.408" y1="67.143" y2="-1.772" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="k" x1="17.634" x2="6.389" y1="68.033" y2="-5.037" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="l" x1="19.831" x2="9.579" y1="65.208" y2="-1.408" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="m" x1="23.735" x2="14.629" y1="61.739" y2="2.562" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient><linearGradient id="n" x1="26.447" x2="16.991" y1="62.197" y2=".752" gradientUnits="userSpaceOnUse"><stop stop-color="#FAED1E"/><stop offset="1" stop-color="#F15B2B"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 63.36 73.44"><path d="M.503 54.721a3.64 3.64 0 0 0 1.366 1.356l27.953 16.138a3.67 3.67 0 0 0 3.716 0l27.954-16.139a3.67 3.67 0 0 0 1.857-3.216V20.583l-.001-.001a3.67 3.67 0 0 0-1.858-3.217L33.536 1.226a3.66 3.66 0 0 0-3.712 0L1.87 17.365a3.67 3.67 0 0 0-1.859 3.217V52.86a3.64 3.64 0 0 0 .49 1.861" style="fill:#009639"/><path d="M22.73 49.008a3.595 3.595 0 0 1-7.19 0h.001l.004-24.676c0-1.912 1.689-3.493 4.082-3.493a6.4 6.4 0 0 1 4.9 2.19l1.086 1.3 15.018 17.974V24.432h-.002a3.595 3.595 0 0 1 7.19 0l-.004 24.676c0 1.911-1.69 3.492-4.082 3.492a6.39 6.39 0 0 1-4.9-2.19L22.728 31.136v17.872Z" style="fill:#fff"/><path d="M59.975 66.034h.46v-1.023h.362a1.04 1.04 0 0 1 .51.085.64.64 0 0 1 .243.595v.21l.01.078.008.033c.002.013.003.016.01.022h.426l-.016-.029a.3.3 0 0 1-.02-.133q-.009-.108-.007-.194v-.194a.74.74 0 0 0-.142-.406.66.66 0 0 0-.453-.254 1.1 1.1 0 0 0 .378-.123.57.57 0 0 0 .254-.515.64.64 0 0 0-.402-.66 2 2 0 0 0-.712-.094h-.91Zm1.306-1.403a1.2 1.2 0 0 1-.437.058h-.41v-.947h.392a1.16 1.16 0 0 1 .552.102.39.39 0 0 1 .172.38.4.4 0 0 1-.269.407m1.334-1.564a2.3 2.3 0 0 0-1.687-.69 2.373 2.373 0 0 0 0 4.747 2.377 2.377 0 0 0 1.687-4.057m-.241.236a1.94 1.94 0 0 1 .596 1.443 2.04 2.04 0 0 1-3.486 1.451 2.01 2.01 0 0 1-.593-1.45 2.046 2.046 0 0 1 2.037-2.05 1.95 1.95 0 0 1 1.446.606" style="fill:#999"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 360 360"><defs><style>.cls-1{fill:#06ed94}</style></defs><path d="M179.002 349.728c-93.695 0-169.921-76.227-169.921-169.922S85.307 9.885 179.002 9.885s169.92 76.226 169.92 169.921-76.226 169.922-169.92 169.922m0-327.816c-87.062 0-157.893 70.831-157.893 157.894S91.939 337.7 179.002 337.7s157.894-70.83 157.894-157.894S266.064 21.912 179.002 21.912" class="cls-1"/><path d="m208.628 90.373-4.904 18.332 39.429 32.359 37.057-4.57z" style="fill:#059b61"/><path d="M304.604 167.593v-34.035l-53.826-45.799-42.15 2.614 51.392 41.277H53.401v38.243z" class="cls-1"/><path d="m149.376 261.504 4.904-18.332-40.596-33.993-35.889 6.203z" style="fill:#1957ba"/><path d="M53.401 184.283v34.036l53.825 45.799 42.15-2.614-51.392-41.278h206.62v-38.242z" style="fill:#6ca8ff"/></svg>

After

Width:  |  Height:  |  Size: 851 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="300"><script data-extension-id="{51e0c76c-7dbc-41ba-a45d-c579be84301b}"/><path fill="#a40000" d="M186 188c-2-90-152-83-139 4 12 87 83 104 83 104s59-19 56-108"/><path fill="#fff" d="M73 238c46 4 67 3 104-16-5 48-46 66-46 66s-43-12-57-50z"/><g fill="none" stroke="#4e9a06" stroke-width="15"><path d="M103 137C77 69 13 62 13 62"/><path d="M105 136c0-50-68-116-68-116"/><path d="M105 135c7-62-22-118-22-118"/></g><script/></svg>

After

Width:  |  Height:  |  Size: 484 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800" viewBox="0 0 64 64"><g fill="none" fill-rule="evenodd"><path fill="#FFF" d="M13 15h38v-1a3 3 0 0 0-3-3H30c-5 0-3-4-8-4H12a3 3 0 0 0-3 3v28a3 3 0 0 0 3 3h1z"/><path fill="#6C6984" fill-opacity=".25" d="M13 15h38v-1a3 3 0 0 0-3-3H30c-5 0-3-4-8-4H12a3 3 0 0 0-3 3v28a3 3 0 0 0 3 3h1z"/><path fill="#FFF" d="M13 41h39a3 3 0 0 0 3-3V15H13zM31 49h4v-8h-4zM39 55h20v-4H39z"/><path fill="#6C6984" fill-opacity=".25" d="M31 44h4v-3h-4zM39 55h3v-4h-3z"/><path fill="#FFF" d="M5 55h22v-4H5z"/><path fill="#CDCCD6" d="M27 57h12v-8H27zM37.148 23.573C36.344 22.047 34.69 21 32.778 21c-2.7 0-4.89 2.09-4.89 4.667-2.7 0-4.888 2.09-4.888 4.666C23 32.911 25.188 35 27.888 35h11C42.263 35 45 32.388 45 29.167s-2.737-5.834-6.112-5.834c-.604 0-1.189.084-1.74.24"/><path fill="#6C6984" fill-opacity=".25" d="M38.889 23.333c-.43 0-.844.057-1.248.137 1.404.794 2.359 2.255 2.359 3.946C40 29.948 37.886 32 35.278 32h-8.5c-1.751 0-3.21-1.162-3.638-2.73-.084.342-.14.696-.14 1.063C23 32.91 25.189 35 27.889 35h11c3.375 0 6.11-2.611 6.11-5.834 0-3.221-2.735-5.833-6.11-5.833"/><path stroke="#676883" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M27 57h12v-8H27zM31 49v-8M35 49v-8M39 51h20M39 55h20M27 51H5M5 55h22M22 7H12a3 3 0 0 0-3 3v28a3 3 0 0 0 3 3h40a3 3 0 0 0 3-3V15H13v26"/><path stroke="#676883" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M30 11h18a3 3 0 0 1 3 3v1M22 7c5 0 3 4 8 4M37.148 23.573C36.344 22.047 34.69 21 32.778 21c-2.7 0-4.89 2.09-4.89 4.667-2.7 0-4.888 2.09-4.888 4.666C23 32.911 25.188 35 27.888 35h11C42.263 35 45 32.388 45 29.167s-2.737-5.834-6.112-5.834c-.604 0-1.189.084-1.74.24z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -11,6 +11,51 @@
;
in {
topology.self.services = {
adguardhome = mkIf config.services.adguardhome.enable {
name = "AdGuard Home";
icon = "services.adguardhome";
};
forgejo = mkIf config.services.forgejo.enable {
name = "Forgejo";
icon = "services.forgejo";
};
grafana = mkIf config.services.grafana.enable {
name = "Grafana";
icon = "services.grafana";
};
kanidm = mkIf config.services.kanidm.enableServer {
name = "Kanidm";
icon = "services.kanidm";
};
loki = mkIf config.services.loki.enable {
name = "Loki";
icon = "services.loki";
};
nginx = mkIf config.services.nginx.enable {
name = "NGINX";
icon = "services.nginx";
};
radicale = mkIf config.services.radicale.enable {
name = "Radicale";
icon = "services.radicale";
};
samba = mkIf config.services.samba.enable {
name = "Samba";
icon = "services.samba";
};
oauth2_proxy = mkIf config.services.oauth2_proxy.enable {
name = "OAuth2 Proxy";
icon = "services.oauth2-proxy";
};
openssh = mkIf config.services.openssh.enable {
hidden = mkDefault true; # Causes a lot of much clutter
name = "OpenSSH";

View file

@ -48,7 +48,6 @@ in
# FIXME: TODO hardware description "Odroid H3"
# FIXME: TODO hardware image
# FIXME: TODO are these good types? how about nixos vs router vs ...
deviceType = mkOption {
description = "TODO";
type = types.enum ["nixos" "microvm" "nixos-container"];
@ -70,7 +69,7 @@ in
config = {
# Set the default icon, if an icon exists with a matching name
deviceIcon = mkIf (config.topology.isMainModule && config.icons.devices ? ${nodeSubmod.config.deviceType}) (
mkDefault ("interfaces." + nodeSubmod.config.deviceType)
mkDefault ("devices." + nodeSubmod.config.deviceType)
);
};
}));
@ -80,6 +79,8 @@ in
assertions = flatten (
flip map (attrValues config.nodes) (
node: [
(config.lib.assertions.iconValid
node.icon "nodes.${node.id}.icon")
(config.lib.assertions.iconValid
node.deviceIcon "nodes.${node.id}.deviceIcon")
]

View file

@ -8,6 +8,7 @@
(lib)
attrValues
concatLines
optionalString
;
netToD2 = net: ''

View file

@ -52,6 +52,8 @@
''
else builtins.throw "Unsupported icon file type: ${file}";
mkImageMaybe = twAttrs: file: optionalString (file != null) (mkImage twAttrs file);
mkSpacer = name:
/*
html
@ -150,10 +152,12 @@
html
*/
''
<div tw="flex flex-row mx-6 my-2">
<div tw="flex flex-row mx-6 mt-2 items-center">
${mkImageMaybe "w-12 h-12 mr-3" (config.lib.icons.get node.icon)}
<h2 tw="grow text-4xl font-bold">${node.name}</h2>
<div tw="flex grow"></div>
<h2 tw="text-4xl">${node.deviceType}</h2>
${mkImageMaybe "w-16 h-16 ml-3" (config.lib.icons.get node.deviceIcon)}
</div>
'';
@ -182,6 +186,7 @@
${optionalString (services != []) (mkSpacer "Services")}
${concatLines (map mkService services)}
${optionalString (services != []) spacingMt2}
<div tw="flex mb-2"></div>
'';