From e6fa02e7eb4e6eecfaab3d8f1f2396656b5177ad Mon Sep 17 00:00:00 2001 From: randogoth Date: Wed, 14 Oct 2026 14:03:29 +0300 Subject: [PATCH] Add a repo icon option, rasterized from the randogoth.com favicon The F-Droid client decodes repo icons as bitmaps, so the site's SVG icon is shipped as a 512x512 PNG and copied into repo/icons/ on every sync. --- assets/icon.png | Bin 0 -> 13724 bytes module.nix | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 assets/icon.png diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..21c99245a7e87d433749eb1fe7543c488a182aec GIT binary patch literal 13724 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4iHr><-C@Gfq^Z_+ueoXKL{?^yL>VOg93x6 zi(^Q|oVRz&=Y&6<`|aa-10Lu0h000_8ca$|W+4GO7gKzFYOnbk?lwG{qjEIj(d39G zDN{8mUz5nmriGWy)bf&iOv)Sr9T-_%8AU}L6JF$I7=Qj_cz%Pi&+n;jwB=+0 zpUkxf;>QoLKXlw2pcJGc%HY$s-huN>!~KI{uWkHZ^2;||UQk@TznW2}@o8kc&_tIh z2mW4@^qI?ZdBK){``@+LA6gucD|w3Z?gQr!j2hWr`*RykC#JhCbWw3!`hoK`Pnnvz z-EU^u2N4!>VTaUKM_jWyeEi{SgJmE0&zbhGz<$PLSG|uu`Zt)jUNc;hDky&7WPvBQ z`i^-8Y+ssGH`u?9Id<&u|5nbQJ$!s^yc>-6`aD|ruRz(SVS3{BQi)8*HLL|ile7Of zPdV_gz-mqV)tN_)uCo5)wYz<&p#F7VW90_hp8=1S-Yd}k(pXo(rPJPfZQ>HkK(PZ; zrmg?We~Htt%{hVdjj!$WrH>zENrb+L&*xv9(3aN96>^~T!v25z%bG4Hi0?_9;WW!Dtao&dIy7EQ{Pe9l zmEtRMHDN63`{MCy!&3v9w90?_?w_s-ugiS>CVsg{ zU+csT9-Eur91UdHY5(=CE2j)&a>B;#(|4&KcVJ!cAp81^9m+avt8#| z_ljYC=BF7mFK{cYoH#$Nv>|wbOq}QQADI@sdVckyA9l4fZg!e)t=)duG$8Orynf^2 z2P_fG)DN3A={1<$|E3jp*Svy7r=>QtEarUGn@siQ`Aeg z1X-}T9bUabdttH{ACqpwlw*IRFN!WZz!fq5Vf(W@o|wdqKfXuISTDM*`E%Wm?;?6? zzYa-mh<)vqs(ysYqx8;x(bNL1obvaxw#&!x&egHoCE|9NM|Zt!m(UNE8m)!q?6b9+ zA3w;5;Ih8-lOt1M2h)k7C(Bm~&0vs?snWT#vo2Ck`|d*aGuycpJT;rwAF_N|9}qu- zEA(BgH>>&@rVYEk*`EkB5Qr;z&>6-V!==17S%xn=VQMLlrknW=A+?mRg>MsWWSCEH zIhE7Jq{VPM`+u_xTk}KL*PQ3(w_f&PmMP$|S>Ahik15N#X2qHHdGZ#_s~+;Q>n(Q@ z@nWIQ+qVeyiPvPgu8VARj;XRb;3C1S{iV*6 zsYb8i&HZm$Hxyp*>!*B*R6n@f_~(K{C6|N*&slS>Yl*vN7dRGMc4Q}e~^BN{jz1zqgw|r8Yr*fowm13DTbAKO|r-`re%i`Hw1BeJUPCd>BFx# z{8J88R4BGim;QbDso3egqHDCjG*(_ST*C8DRIi2anrByu#vcA%hi6wAOweA>^+05M zdd;&HJjV{6S)yOJpRrlUHi50}fK|n9E4MRjheHeIl=dvy(yaVICWHU<+WUvUH`=p4 zINEbwrnH&Szjs4lhvWq*9;#Sa_(boUYne<*m@3+`k}Il>sCG0bMzY~ zxYhApl50D3<`JI}o8FhKdvTll8n!>MeJyctb;J6D?tAyf>qPL+U~xZebyh6*$Xh0k z{3p*9Y7@nE^uMg%-h6t2(n%LHuLlwpY-Q2voHt$;EIm5u+`ARG)6-0H8oXW`n#5-Q?})KZ8yFTm7PRrC$eM7VzX;_FcZ2Rp7&k z^NzQiSGif8L+`&$!21wQuRg4_rB0`UKm!erU~E&;5Ve*S3=dOmAAtllS~CS{YbV1V=|jAYnT#1vmaokF;C4E> z?>~FrDU-gv8x3|}Fkk8%%Jux9dE$=JNfx08Tr7ll9jdyKId?fn8S8@V|I@y-M4tUy zCB8#t-_BauEiNv}?pN*Ke9id2U7@rk@I##h`_g@OiUwK?vA?%3l0TE3$8@IB;GRO? zUb_IM^-;$SuJh_O)i=+(=J}*S=moRz!-EM;R)1e5|?f_(9HQ zi*K*4b{hNZA{ywa*;O}dYig^8K z-*QQ@hGTy}UlN?R_W$|6593SU^D`&1?@5$ZW`6pi@Q0Mlyd(eLZB9^I)4n{xxaY!M zhc>T=0y9{iA5aY7oyvDM*KTo>bS8S@2_;~o^*?&1FFK%Gi7IEC;s>%)_ zHMR1sU*tDPHbhl$&ub8pShsp(PH97;f#kjT`z+FL-g9o6<#o+F{lCrBLmxj_OgXUf zTH>9Jx-X_K`hC#V^ZeH;>3cbUv_n5wSIF3Ls=q#GR2-Y2<adUnj_CG?jr04PR3f&m_7cmQhekj!Fw7$JHyLLItiWch!i8}<`)c!7<)U8(_ zHHWP_L2wVp=go2TSKczMXp`N*{LNAQ#mqzf?Wf(Gx6A1L|IefPK|fMu(-*!w0xuq% z_xPd2fqY!!(haLV zNv?prraSXpKuR;{!%gyHpre1qLj=YNihV1J!pR?__W0rSG^2Uv6e zI@s}qGW-!?W7`$*Vs$~c{Q9d;(p7w#>oV(({F(FrNnHg;+5z_mZ!XlYSu#)BKW+Qr z{D(mmCeK&zdHbRIhuWTLc_zuR(SPsS@=oKs%e=j9NAoGB9hy5f*WZ1z`~9+-Z_C$y zoWE?_;rfH&4;(iipEOC8ohyN_hF4A}qwILq48HTK@~8MWOMQRJw&Uz+(UnnObnZyq zxxJtHA=?j^U-mWDiJ6Y|h0=e-mL0s`{Cm27?@X}+c{{lCwDWSdOTFuP!+Ozb>xY8L z@in~fOixVeI{xr@;#bK6vl{!=sdJ`_eb3M5zQaC!1)Edacb)|8J9kpriW0LPinnd??JvOlb`khW4O^vMhk zJIyXBdZ7A)ZN&6DjNcFTKWI0!-BY#d>HS^ee64{uQ$26Ie|Y|y3Dp(b3?0}DT4d@)%~;QE%;hsU!(T&@UBetGuc1OS3fk{ z!TBp?x`yP|g8bF9lYV6g)mVOhTAmdgVX|@^n_L_BgDV#IY|k8XtKgc~)Eik}^z1x? z*+E{-Ie%Z<@VvfkxhZ>I=Ifb1!+z|`7q-lLke)dA@9l%jAG{XpUcc7&?bc4OABHj0 z&dUU6o@Cp>uGeTUHRtciT?}Q1zGlu_y!zq6D}3*!q!;}#)_$1&k7x1wX8A*xuNewm zVP4nvxp&=^%W=k~qIa0gpMG03(-nn_G_%zGehPRsaEjv%m zso#@ceW_#j!?cQnR&Gsg2hJKC({oU|tbJ>Xz&_6Xyzg9lx9GNbKa~GgeKaM4p}wK@ zW&NprY^PteXZhJ(|GK}ORWr@g;co52q}LLhQtX#+M;+47&5X~K-5@X5vfllVm0#Sd zhtmrtpKb6Dj(p3$L3{G%`nhZW`8Va~S0jIYe(v{TxGKXm(=;iMoY@dMLkZe*m&=WO_KXP4l@{kPs1KU(Blz^k*d@8S$*Z%37N*M2(o zC!Nt>;dQ_Hw(ReXG0fLlzHn@`jbW1C+83C<_U_^TwjZQt%)8}d?|=2~%U$1d`8P5& zxL#wt6#T*CmeP;fNse8cnAY*Wa9hh=Bdr#F+#;d3v_Z9ibx)4$VZl%X+r!I^esXMK zm=?|MadO`yxoLJUjtPHSYGAvd)qD3r(`CYSvx**i6>Hb<|9f!W<;j#Qhh#sjEA0_u ziDH<|v};$+i?56Bzx_4ytMK*d582e^Jw%pS$2`7g#-k^~5WvlUV6J2S<2%cK&y}0V zw}oMY-Pxs2rY`E=aJ}Sq!%n$<^Y3)Y73lJ8?7Mg+>NNxJ**0mXJ7;yp^AE+ZG2Wte zhsi*m&G+zXPni_uKL;N1PLV9Ab`WoV`eE%AvroD~ahqF=KSD`|C_w%O1S8uQ3EvQ|<|9sZ1m&YePdnne> zEbi#)RZ}`WUe#pTm9D5CrhgQl`k%ZZSu{K)*X%l^GN?$chtolqPx zea?~qhSJ+?OU#X;nZF-!UMYM3h`^6IrES-C#xNX+n!$H_P4bc~ahtTcislc+4(xj{ zjny|f?((-Q%bvbzw|;n1q%UWMaLwVy(z>YU|Gs{e+99}VP4bfGnfcS)dABogWIwz4 z>z&+QKixlvt(?y_={4wtJNrbh zT5oE@|9|qGi>n?S;}Nevdxm93(p*LHI1vT|{(o6>6?wfk-M+ZJLW{wF$=?0P|9(gk zI)0Py^24nvd{3wNePDgfWBF+*L&I;|85%Rq*XPwV>oNGZJuI43#(3pWe|Ox*6yuoL zSK~q?e{cE9roZ!Z;-{1UxAWH}&Q*-OYH;1k*{(^C!93krT&;Pk?y9caW(l$}kKZi{ zceP|Xx9Qvj>wYeV3f(nlpH8ndJE-}Bso=Nj8=IUnSzqUE{jj*{-t}14>px7s%xo9> zvF75jcdZ{+Gki$7{Ypl3e^mIk5C*#wpVmH`{?NSg-&FI5R_oj5eJ(PR$(*aGe^2zl zYerkn07eTJ)_@uN53ZT>|AWvBxjWk8>?IBUQRyeVd*^?C9lwEZLdV{JZ(W2+7+H)@ zTl{W)`;YnFiHH5V4ex(e9y@u_^1^j1=eV+;Key_q%~meole_UmUSX47Lqf{_4R`H! zY+YOKHNQDJG2g9|XUf6KYm%Ry-u>Y}cl%mqm890vhCeGAY7#bWdYQIk?bDed{)gr= z@@_JH?XzOTxe5CI+zIXi-zRFXWq#t%`e0Ai?$9gKw;K5VR@|Y!;OO7kSLM!aKNrB@ z&)uL9cl*l+J2%z`d%i9czvX{exwrl)|A%aQ_F12ej?OpVFZJoW$*bEhDvfRKymMoH zVDowH*>}y;8CJCZe!%$HLb9;(=>IU5KOV;lt8J@U*Yt56sC*VZ`|5$Y8`$dD>bLVv z?p>TPqqObN3WhanzJJ=bV{a)#W;gfusn!p=X87sNi~A>h`M=w`kHxFK?=o7PpJ<-* z*m85ofzE4^Tw>?{`>gv|@P}Qrfn7$kp~C0m&tnm+2}jSrT^_=4E|@VTXH#iI(h7z( zD;QKnZ?0k1Ds4NEculfvA=8FMOcS2Gz0zN@ZO^_x?)Sy4>)zQdVk)>T_L?D3voUy$ zv4|(goYcS&hP>=rOEb@F59{{*y*+{JK-c_yqty&|mRUFG^ls)0u(4-Xa$3MN;mJyd zO(G7AEqk5jpZ@d5d_7aaY%T@kxizp*VZIo;2fA~d$13$PJwc;d|Z zz^p#}``2?4uNgW67(MJl81lFiW~;=r82oFV&K=aHDB5s4gyH532IsZLDo*7LllVm& zZkw=7=@oReVQ^qo_!-E!!?&E_CPy+T0G_zBJ}?t?FzegEH$enq{D!C-xpNhToYyj| zxUwqz3}Cca<2BjJ=pyH@h;)xGE{9JGnF?kctKU>8F$E;BPC`Xqi=llb!zRNcRt+73 zq78??MX-0YT#s((6mevIU|=sk?W)pD*jpw?Jp%A*nUN`3v67>R50TmgV6$Z1|dVyhQlEYk}uL_ z9gg&I9Y~a7I^~f6nn9^7gn{p}&H|p02&j541?IhLm^*F+GFteYXSj5YuPP!PViK1^ zuI(3Lg}}?#?0{YneM{1TlIX*%ieuV7QcNLdQx5l{_tm&KX<| zkCrh_=qTODr;y~usvvk-w&92`68$p%Op5>>r!lY(}{l8PMF&@!&{3p=yMB&8yx{7==k6BHB6a`K?_Ler7w0zIo zyu_1LVdJW8d=uF2f)kO@Y6WfwNNPFa#j0>In9*ZRlMVwfqo-X6gV5@%62^LWH?MzvPLfNfKTb?+wDhS?Al~pKIt>V+EgoalL!z6a7<}VTspB6Ap=wPj6 zzi`;9;fFJ;f*|)MhN?(*fqIZ#j(m)v5m5Fn<_X{^)ne$J&E=r9?XH!BR0zW)W6=he zoXMpPCNCr#p7?<5lXHws1K- z5=&v^*}|tVFM!eGPLmG9T}F?*5C);`knoZgg(QbyMvpsYQS2Vh@*11ZDcFJ4?qSxr zn9Ojplgr`JHojGBjh7^@C}sHA2;$0Li%$1A9Ppaq5wmE6Oa9i<1{0Y)S%;bhOcP$L z-N-kgEioWzuH&5LOcP$PMl#G@IKPywa2}V#BJn2z0tRQS8Z7)-6)tjr;$x7=lXaLQ zUc$)omtVc}rre8b35(Y z?Yezs;w6kFoB0&>t!Ui7#(2p>S)UE(1UT*4=QQgv#Qyep=OoK&b<)Z~#VUeb!(#_) z08{K*V-M%#wai=et}t1IO?EV1$W-9XIwdN7g4NOwu0Lj!_FQYV5?tZ4*kR_29N7g5 z55*kfUo!+P7mndek361n`Ip0eb~e8)d;-n$t}${6B6+sHRzQjx`7E9Va(40)DktQshjwgWyiVg^Sh2- zW4u({_gVOAt-a_^%V%$X@BccDHGo0%8Y9;?#~*4_qK}`reyTv8nWrInt?`y6vN2Cy zbAGA+`l(1MU;*m|Mz*MQjeCM}ekoeb_3h^^>i6DUbL&DrlS~NT{SwpYIIlf2Wqey0 z+*m&PUpu;eYmC-|sPpZ!ne`ez8XU1Y?6~W&X~CY-o+T?7VhoR2IRu^C&NpHA!vbNM zOxeXAjN%TQHJ7ZMotYo7Ssb!*YhsIJKM}uxRp5-)4tHytlG_(je&~JK)EBtt>xOey z&Q-^(i~TL7^1ghUw9|Cm-GrwKN0?r`_+Ogg9AEG|^k3Nr%^A<03U7F(yNPeYDu2rl z70+aLSRL6a70Tc@l~NP#u``TaMa zA8;+0tj^8<ELd6peP?AfLp9UhNfr-;H*h^$`bV?&LAHU>Q~$#D{LB7_ zb}>slzj`T|HG@5VLv%#F)*YFHH|1|I>qn-0MBn}DQnmbuY6OQTjFac+J-a_dP$)u?I3JKkQyuQ_W?-qIUT9$=(g+&F2rN zFRT`1zsYRh=q}WilB7H5x6~n3At$n4pp!vUc_BAJSiBwtTWYGeq z8iuxO{uwuKKk&XPrGSuQHQGz{-t0`XsB2@1@KAT!}kFWXOhKp8ie0y{o{0by{w)Q<-cK88T1S|jH zH`A7Pl{Gw0%yJUf*{b8RI)s5i)D^TA;DdC9MyIpoQ%+HbMOhE!Km7JdGmw^ge>_IP zo_m3PjNmWt{YRyF;+yJQTQ^8dJFK>%iA#d*_#w{=steEGVlF?#%_)0U^K;_nHc8=4 zQgv+JYm-wPSSL*L{P0tte6ok9<(w&>yw}ctAa?)W=Tot!HmTeHxEW+U%>Qtok(Ym4 zp3aoY5B#q~8NW1jGu?8s;?aH}b|XbrIkf-q&v}2>>{u%Ft}T3Ra>`0&nWqO`Ed2Lf zx%{<^EU-RVM z;@f_x*6O$UwS!-;a?R0UxNEa3P3?}z!IJYae>A6*z7yIavaUgVZSszjZ@*8Q6T?@< zdZv*#fT>nScV&kSlYM{MuJqa84(eH)vuaa*CH8Hna%bkhW~L~ykFyb`uTfuKNQbw>wCCN)WGyz_2uvfZV@x@FgovLW+>aS+jq}r z)`A0Z5saG?*xt14JGnMR(>J$OI-#?aCp~vv{2NuLtsfZvn7mAPYHx{VxO=x&`oMf9 ziv)3)_`NXRX|d zZFCx#wG#DgSa&B1lx#UC+-9Cw^l-f6p3x*>V%NndL8u z1J9XOY~KB^ErIvT#ZNOe0a-iJ9dTF%=i1>Tz1&~aP7Qs zrtAm0uO)n0!Wl}<4u3Y_uR5f-s&U&N{y)=qzhAW@PkoJlnGOLt@a1?jpc=8#J*gf@@)f$ zS;X-SohGIgn5PWW^12dPgDfQqg0{(-9r(EKtZg)dd9;3b0C%!;W#6SWLKU+2Huqh0 zSi>5Su5QEb{osRz98buhlI{EI6RV`lsy4{K`Cr9U$5g#Gnc;8ZmeRJ6&|Riqq{+2x)$*@C)!CQM zaCTK2`@`&q=ei;pukZSyR(0YZNB!1w7k1Sau-oLxE?#(Dxq|1xCGW?(m@^h|&1(-W z2#F|enRc*u!(l787BOdWP~&TJ*@5qOZl7Px=5~nHs<8~e1cug|sYv0R|)yF~@&fetbPT=fmT6Zn6 z%TPYA^zp;EGh)now)_#S_glYSGmP5AeQxWy39H^3oVRke6?HhR^-xozU9j#R*O|uK zd*@D;o1waa`q7L}t?lk>jjseVZdoN2*XC*?~z(El<>x$=?!oB>6*d_&Mv`6-}Gh7%y4QB6h&-wL}A#Lip7U0{5CWp3Aqh;eL1N z=KavA2J**J|K+@7{IS(|^55HASpCZLuC}P`<{Kl|$yUCaqg1_^#^iu|Naf+);|~} zG5yw57u`F|{Y#5KY{_lryl~pe%_}Q*CdU#cjVompQdx;pnEl)4x6FV2=KaF*1ic== zMBPJDKUPMcKKEp;tD)o=!dbIt8dY9|}?4p_Px6SO7E4IHg z?Tg`NbL%^@)>e)?OW7RC88}z8NE!(6ZT<1Z{Xw|Z@9K3@aSc}u%sM3(RX=1muy2ex z_U({>M2@Vos`1>2dETrOT51j0%MRYidB0MwIsVlf`L56pIy{iNii83wHe72Wpmhd0)Q3DpYKE!Gx>D+!ZL?=jtGYL5$OSpOBRX6 zHHsS8wa%Nry0mW5Mxl8ve7S4gqs^bEC#G%Ow3YW*`wyoBHlhwU?ls>uFuM5u9e2TQ z_1Bf2O5YB7ZxCqP_Q7>k+wF%(dy-SNPlz+kYc5}Fyn^A8ceX33mj6yL zJkyf*p0iF%Y)Ad;`}SSB;kM)S|EY4HHgT9mr+Z9e zUeCCg>BN<^9eU^I-!6Zkw!%wuLWlaHYDEWDfyK22=6~$ANB((#@awvoK$o7@lHI-Ac;==ge#@zqL(HE)}DKL`&9-oL_|G1%2r$?&?BgOW@H%OXFo+kxKmCyHztIFFUwyx++}dtp9>>=>O%r(vOi2;bTNTeh;A9b${%*M7*mR+zOqQB)>RRyp2u z!vQPjWG#k?A|=hj2{JvcdPikfsefsC$Xl1nzK8L2qUIj4*Sd#p%ZVKbdM;KG&e)-{ zoJZ}Dhy?%Am9<{s7Giy@3FdoviXXI|_{Lj%+sc9QSp<8A6RX0c7QF(#J@Qp4zjw+$ zbg>XzmB9B$dDhaD*je6_CrgQkZwhAY5LvEW!*Z^zZ<(Rh!H^kT>kq~!EX3DvU>l{PTeQ%%N+<&fM$GwN` zVhdNb?vF~(n91d!!oK|Q(ae3fr}pkMkY$TJ?%}nwv?1n9@vph2q75F=eeL>{rjIv> z+CIp7kuIw&xJ^Iq$s)0TDRUQwYB5X<>up;9yZ-I{0R0_YR?){b=KU^bIB!||v!Bah ziRs-3*>!r>cXl}%oc&)db(}jv{?9op=jadyC0&h1eP{jG5}F^sXO_(kdXYDGVJW}k z($cnVD;Qj&3dCg6=PIg(eh}WiZP}@4`R&J_njLPwCRwzANg&fN{YUz1o|iv++q+lF zrZki`T>C4uYK`#|2UdkkbNVgq4+U&k`k|$??a|lmd>6V}_4NMU*AZ>-5Ed<1SK2lu z_%7W9|4%~{FdGRs2w$V~fEx#HTSq;-8;_%2MUz8m{vp{8hqNAl8w zX{Bvb-n9MScy2;Rkwn_ug^|UH%Szj7Rxr3oN%QYrYrN!1{<&PQxCP2{VvZLn|2bpj zJTHVnsn>S{--JoAAIx9#cuJE#=zKQA}Lm#hUUh+iqM(SKe&EwJR8Lz@O z+_7^07s8;#%hR;)n&hPb=KmYcO_<_naK-Ad9*+K5$NL%}-xn+y`hm+SBrB<~>+uq9#W>vV<;6D5Bvpo4d33C-SAIDU& z=BVF!^8JXGXoCmyyE!pJTh8>CW)^)4e9gfArg8Se*w+$A0~tF^9{g51dA91Pl|xWp zNg7jz=^aq_Qp6Wz-tXN!Vh0Yt>^%E>M`?rA)dF^%EqxPNK;}7$9msmk&}kvoxAh#u zl>>M0>3qAX#(safm|@VPZ*t15H<@RzF&0@bvoB#T%)JveZ6p}ZinrHa!siK#tsvK0|h@FPpxGZSu9&~xa#|HtsSaoHrs14Omx#) z%dE0)c4AMPGg-VKuLTBrLOFY(;m;38FV+{)pRm9zPcJlVwz@(rJTnfGv;w^sOG zXn4oqBE^xs|4y?^n(P9G=Lgb#nfGvov)6rdXH~d#Vv|66Q{P6u3F}vWu+-SdZNR?o z`TcKktRQy;u%2FHtdh5=wBgRw1MUx!c5klNwPDy^z2{JI+!r2)B^z1Kt+ALkCDDK< zEaG@Zuw)F+=h0WpEen_y4G3`Kk!rWK}Wi5t@YX8ze1L*~vC7b##hKT=AsuA8L z&3c1(dqREK{2QEp?cWbBSYx*_ za_a|{KT>70j}^3WIV?$CelUEE@sf098xG@zT3h>HupB>BSg?orcJ8|7_?A7Jq8URN zl-B-Q^fLGq&zr_d1AZ~}E!94fJgtHTjBd`6LdSJ3#r@#6kvRQ(@6KSxjxDQfV`T5_ zK6rLj+td$YYZ|t0;4^z>;B`;5%31yed;0+niLAZ#ryZXitbM5eI!ppo*6liAYH-HN z?ORqN`8~oJ_FF2N7V7=uWzTJFIB=i0&GyJnd7?dnuuw6eO@LFQh;6xcYW2@Ekg?;* zOPwEcytB1V)XiZ0epu|a%D#)+BUJqT56u1`YQH^-=Zsi|$h?NN*F66$v1XXqH09v& z2hO`Xj5aaJwcV^b6D=az;33F%Abszx;)~^5H!#Sx9lhq+w17!K^OoU<^UHqEJd(hB zrYUm6K`T#(5C$dAnH=(E)sJ=M-!|Md;GPz(&N-3GK_$@rKxIKw@@d72boo6j#)%8X zK6rw}S#2MhSV;ehRR8GBtJ6O7!<>6hPBn2ksF-0$<-(-UWx&X}=+ z!R69*>178rt4bGae7k`|>;Ti=ec8^e3X>K(CkoAxdXzSKXSMjV!%7j44!k>37|hra zVZr3rz-e&9%F|5ip=pI^T+`WWiA&~jIUEUzmtap$+`~LuO)cAa4_|kp;hN2S%4Y)^ zJ9aFTal88eet~&e(3$II6|4XKpZ418KC>2s;P)v9IV5=94+X5)aPIONsTD0(ze;=V zTUuW7cQKPdVI02%)8PaTo;F4?X~Vq6-VJPF*Z=?DTIG7WT8lxD|7**?3;e$v>tFEQ zU0_|(?)OuEtytM1zZ-%7<+mMByTKxzpqz7Ur=3sKsjwr?(Fxo-x$m~0S|B~eQ9Xk_ z^#Wsq&36O>gf<87ckyIZ5SmuI;iOe_#iF^T41$6i7mjYUq17g%|NQ&dr)aI_ ToHBudfq}u()z4*}Q$iB}+^~r! literal 0 HcmV?d00001 diff --git a/module.nix b/module.nix index c4dce6a..14359c4 100644 --- a/module.nix +++ b/module.nix @@ -34,6 +34,11 @@ let repo_name: ${cfg.repoName} repo_description: ${cfg.repoDescription} repo_keyalias: ${cfg.keyAlias} + # fdroidserver checks this path for existence relative to the cwd `fdroid + # update` runs in (stateDir), then copies it into repo/icons/ under its + # own basename — so this is deliberately already that destination path, + # which the sync script keeps populated before every run. + repo_icon: repo/icons/icon.png keystore: ${cfg.keystoreFile} keystorepass: {env: FDROID_KEYSTORE_PASS} keypass: {env: FDROID_KEY_PASS} @@ -69,6 +74,9 @@ let # every run. There is nothing secret in ours, but a warning that is always # printed is a warning nobody reads when it finally matters. install -m 0600 ${repoConfig} ${cfg.stateDir}/config.yml + # Kept populated every run rather than once, so an icon change here + # propagates on the next sync without anyone having to touch the server. + install -D -m 0644 ${cfg.repoIcon} ${cfg.stateDir}/repo/icons/icon.png exec ${pythonEnv}/bin/python3 ${./fdroid-sync.py} ${syncConfig} "$@" ''; @@ -211,6 +219,16 @@ in description = "Repo description shown in the F-Droid client."; }; + repoIcon = lib.mkOption { + type = lib.types.path; + default = ./assets/icon.png; + description = '' + Icon shown next to the repo in the F-Droid client. Must be a raster + image (PNG) — the client decodes it as a bitmap, so an SVG renders as + a broken icon rather than falling back to anything. + ''; + }; + keyAlias = lib.mkOption { type = lib.types.str; default = "nanuqsaurus";