<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Alper Çelik&#39;s blog</title>
    <link>https://blog.alper-celik.dev/</link>
    <description>Recent content on Alper Çelik&#39;s blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>dev.alpercelik@gmail.com (Alper Çelik)</managingEditor>
    <webMaster>dev.alpercelik@gmail.com (Alper Çelik)</webMaster>
    <copyright>This work by Alper Çelik is licensed under Attribution 4.0 International. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/</copyright>
    <lastBuildDate>Tue, 15 Oct 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.alper-celik.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Self Hosting Vaultwarden and Setting up SSL Certificates under Tailscale in Nixos</title>
      <link>https://blog.alper-celik.dev/posts/self-hosting-vaultwarden-and-setting-up-ssl-certificates-under-tailscale-in-nixos/</link>
      <pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate>
      <author>dev.alpercelik@gmail.com (Alper Çelik)</author>
      <guid>https://blog.alper-celik.dev/posts/self-hosting-vaultwarden-and-setting-up-ssl-certificates-under-tailscale-in-nixos/</guid>
      <description>&lt;p&gt;I have been using &lt;a href=&#34;https://www.passwordstore.org/&#34;&gt;pass&lt;/a&gt; but since i am experimenting with selfhosting and
wanted to store passkeys inside my password manager i wanted to selfhost &lt;a href=&#34;https://github.com/dani-garcia/vaultwarden&#34;&gt;Vaultwarden&lt;/a&gt;
(a &lt;a href=&#34;https://bitwarden.com/&#34;&gt;Bitwarden&lt;/a&gt; server implementation) server but i didn&amp;rsquo;t wanted to expose it to internet
so i wanted to use my &lt;a href=&#34;https://bitwarden.com/&#34;&gt;Tailscale&lt;/a&gt; network.&lt;/p&gt;
&lt;p&gt;so i added required config to my &lt;a href=&#34;https://www.raspberrypi.com/products/raspberry-pi-5/&#34;&gt;Raspberry 5&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://nixos.org/&#34;&gt;Nixos&lt;/a&gt; config&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;services&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vaultwarden &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   enable &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and now i needed an easier way to access it then with ip and port so i needed to setup a reverse proxy like nginx,
since i am using &lt;a href=&#34;https://bitwarden.com/&#34;&gt;Tailscale&lt;/a&gt; i wanted to use &lt;a href=&#34;https://tailscale.com/kb/1081/magicdns&#34;&gt;MagicDNS&lt;/a&gt; feature of it but after looking at it
i noticed i can&amp;rsquo;t use subdomains in it to host multiple services insede one machine since i want to try to selfhost
things like nextcloud too on that machine i decided to not use &lt;a href=&#34;https://tailscale.com/kb/1081/magicdns&#34;&gt;MagicDNS&lt;/a&gt; to access my services.&lt;/p&gt;
&lt;p&gt;Since i have a domain i decided to use that and point to static &lt;a href=&#34;https://bitwarden.com/&#34;&gt;Tailscale&lt;/a&gt; ip of &lt;a href=&#34;https://github.com/dani-garcia/vaultwarden&#34;&gt;Vaultwarden&lt;/a&gt; server
but my domain uses &lt;a href=&#34;https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security&#34;&gt;HSTS&lt;/a&gt; and HTTPS needded for &lt;a href=&#34;https://github.com/dani-garcia/vaultwarden?tab=readme-ov-file#installation&#34;&gt;some feutures of Bitwarden&lt;/a&gt; so i needed SSL Certificates for my &lt;a href=&#34;https://github.com/dani-garcia/vaultwarden&#34;&gt;Vaultwarden&lt;/a&gt; instance.&lt;/p&gt;
&lt;p&gt;It would have been easy if it were a service exposed to the internet since &lt;a href=&#34;https://nixos.org/&#34;&gt;Nixos&lt;/a&gt; has support for automatically getting certificate from &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt;
and automatically renewing them but it uses &lt;a href=&#34;https://letsencrypt.org/docs/challenge-types/&#34;&gt;HTTP-01 challenge&lt;/a&gt; by default to prove ownership of the domain so i needed a better solution since the IP of the domain wasn&amp;rsquo;t exposed to the internet.
Solution was using &lt;a href=&#34;https://letsencrypt.org/docs/challenge-types/&#34;&gt;DNS-01 challenge&lt;/a&gt; since it uses dns records to prove ownership it doesn&amp;rsquo;t need the domain to be accessible from the internet and the best part is Nixos supported using &lt;a href=&#34;https://letsencrypt.org/docs/challenge-types/&#34;&gt;DNS-01 challenge&lt;/a&gt;
when configured with dns api key etc.&lt;/p&gt;
&lt;p&gt;I added my cloudflare api key to my &lt;a href=&#34;https://github.com/Mic92/sops-nix&#34;&gt;sops-nix&lt;/a&gt; repo and added them to my rpi5 secrets definitions:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sops &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  secrets &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    CLOUDFLARE_API_KEY &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; { };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    CLOUDFLARE_EMAIL &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; { };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and then configured acme settings to use &lt;a href=&#34;https://letsencrypt.org/docs/challenge-types/&#34;&gt;DNS-01 challenge&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;security&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;acme &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  acceptTerms &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  defaults &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    email &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alper@alper-celik.dev&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dnsProvider &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cloudflare&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    credentialFiles &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sops&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;secrets;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        CLOUDFLARE_API_KEY_FILE &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; s&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;CLOUDFLARE_API_KEY&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;path;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        CLOUDFLARE_EMAIL_FILE &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; s&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;CLOUDFLARE_EMAIL&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;path;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dnsResolver &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1.1.1.1:53&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and lastly i added &lt;a href=&#34;https://nginx.org/en/&#34;&gt;Nginx&lt;/a&gt; reverse proxy config:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;services&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;nginx&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;enable &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;services&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;nginx&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;virtualHosts&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bitwarden.lab.alper-celik.dev&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  enableACME &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  forceSSL &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  locations&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    proxyPass &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://localhost:&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;toString config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;services&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vaultwarden&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ROCKET_PORT&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then i deployed my changes and it didn&amp;rsquo;t used &lt;a href=&#34;https://letsencrypt.org/docs/challenge-types/&#34;&gt;DNS-01 challenge&lt;/a&gt; and failed,
after a bit of digging i found out i needed to set &lt;code&gt;acmeRoot&lt;/code&gt; to &lt;code&gt;null&lt;/code&gt; so i added that:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;services&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;nginx&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;virtualHosts&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bitwarden.lab.alper-celik.dev&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;acmeRoot &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After deploying again i had access to it inside my &lt;a href=&#34;https://bitwarden.com/&#34;&gt;Tailscale&lt;/a&gt; network.&lt;/p&gt;
&lt;p&gt;But i wasn&amp;rsquo;t over yet, i still needed to migrate 30 or so passwords from &lt;a href=&#34;https://www.passwordstore.org/&#34;&gt;pass&lt;/a&gt;, after searching a bit i came across this python script: &lt;a href=&#34;https://github.com/quulah/pass2bitwarden&#34;&gt;pass2bitwarden&lt;/a&gt; after
reviewing its code i converted my password store to bitwarden format and it migrated almost everything including 2fa codes but it didn&amp;rsquo;t migrated custom fields so i manually migrated them.&lt;/p&gt;
&lt;p&gt;and that was it. I now had a bit more polished password manager that i hosted. It was fun to setup.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Using Free Tier Noip Dynamic Dns with Your Own Domain Name</title>
      <link>https://blog.alper-celik.dev/posts/using-free-tier-noip-dynamic-dns-with-your-own-domain-name/</link>
      <pubDate>Thu, 09 May 2024 00:00:00 +0000</pubDate>
      <author>dev.alpercelik@gmail.com (Alper Çelik)</author>
      <guid>https://blog.alper-celik.dev/posts/using-free-tier-noip-dynamic-dns-with-your-own-domain-name/</guid>
      <description>&lt;p&gt;Since getting myself a raspbery pi 5 and getting a proper internet infrastructure
at home i wanted to get into some form of selfhosting.
but not having static ip prevented me from having an easy way to access raspbery pi
from internet.&lt;/p&gt;
&lt;p&gt;i did try to not care at first but ip address changes every several
days and that forces me to update it regularly.&lt;/p&gt;
&lt;p&gt;as a solution i looked at the dynamic dns services and no-ip had
free tier option but in free tier you have to use a domain name under their domain
like &lt;code&gt;example.ddns.net&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t wanted to use their domain name so i didn&amp;rsquo;t manualy updated my ip address when
things broke for a while&lt;/p&gt;
&lt;p&gt;after some thinking i remembered i needed to set &lt;code&gt;CNAME&lt;/code&gt;
records for setting up github pages on my domain name so i looked at what exactly is
&lt;code&gt;CNAME&lt;/code&gt; records are and read the &lt;a href=&#34;https://www.cloudflare.com/learning/dns/dns-records/dns-cname-record/&#34;&gt;awesome blogpost&lt;/a&gt; by Cloudflare explaining what they are.&lt;/p&gt;
&lt;p&gt;so &lt;code&gt;CNAME&lt;/code&gt; records allows you to point that domain to ip address of another domain name so my
&lt;code&gt;CNAME&lt;/code&gt; record pointing at &lt;code&gt;alper-celik.github.io&lt;/code&gt; will resove ip of &lt;code&gt;alper-celik.github.io&lt;/code&gt;
and use that ip address to acces my domain.&lt;/p&gt;
&lt;p&gt;also good thing is since webservers get the domain you&amp;rsquo;r coming from they can serve different
content to different domains from same ip address.&lt;/p&gt;
&lt;p&gt;so i created free tier no-ip account and set it up according to the &lt;a href=&#34;https://www.noip.com/support/knowledgebase/free-dynamic-dns-getting-started-guide-ip-version&#34;&gt;getting started guide&lt;/a&gt; and then
i added &lt;code&gt;CNAME&lt;/code&gt; record pointing my domain to their dynamic domain so by doing that i have dynamic dns under
my domain name using no-ip&amp;rsquo;s free tier&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My First Contributions to nixpkgs and open source</title>
      <link>https://blog.alper-celik.dev/posts/my-first-contributions-to-nixpkgs-and-open-source/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <author>dev.alpercelik@gmail.com (Alper Çelik)</author>
      <guid>https://blog.alper-celik.dev/posts/my-first-contributions-to-nixpkgs-and-open-source/</guid>
      <description>&lt;p&gt;in this blogpost i hope to explain my experience of contributing to nixpkgs until this moment&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; i am not a native english speaker please let me know my mistakes and help me improve my english&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;creating-my-first-package-derivition&#34;&gt;Creating my first package (derivition)&lt;/h1&gt;
&lt;p&gt;i was working on my &lt;a href=&#34;https://github.com/Alper-Celik/SoundsOfGuis&#34;&gt;experimental accessibility program&lt;/a&gt; when working on accessibility abstraction of it
i wanted to reflect over enums on c++ for looping over enums, doing map lookups, and for printing in program names
of atspi enums for doing theses i wanted to use &lt;a href=&#34;https://github.com/Neargye/magic_enum&#34;&gt;magic enum library&lt;/a&gt; for doing these but this wasn&amp;rsquo;t packaged
in nixpkgs unlike my other dependencies so i went ahead and created a simple derivation(package) in my &lt;code&gt;flake.nix&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;inputs &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     magic-enum-repo &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       url &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;github:Neargye/magic_enum/v0.8.2&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       flake &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;firstly i added magic enum as a flake input and then&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;outputs &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pkgs &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; nixpkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;legacyPackages&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;system&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;magic-enum &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; pkgs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stdenv&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mkDerivation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pname &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;magic-enum&amp;#34;&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;#1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    version &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.8.2&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    src &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; magic-enum-repo; &lt;span style=&#34;color:#75715e&#34;&gt;#2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nativeBuildInputs &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;with&lt;/span&gt; pkgs; [ cmake ]; &lt;span style=&#34;color:#75715e&#34;&gt;#3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    doCheck &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;#4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;i created a simple derivition:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;wrote the name and version&lt;/li&gt;
&lt;li&gt;added source from flake input&lt;/li&gt;
&lt;li&gt;i added cmake build system as build time dependency&lt;/li&gt;
&lt;li&gt;enabled tests to be sure library works properly&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;it was pretty easy to be fair magic enum is pretty trivial to package library it had
cmake install scripts so nix automatically installed it to $out and it didn&amp;rsquo;t had any dependency except c++ compiler
lastly it didn&amp;rsquo;t had any &lt;code&gt;fetch_content()&lt;/code&gt; calls in cmake so no network sandbox complexity too&lt;/p&gt;
&lt;p&gt;since it was easy to package i wanted to upstream it so i looked up how to &lt;a href=&#34;https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md&#34;&gt;contributing guide of nixpkgs&lt;/a&gt;
and &lt;a href=&#34;https://nixos.org/manual/nixpkgs/stable/#id-1.6&#34;&gt;contributing section of nixpkgs manual&lt;/a&gt; then i forked and shallow cloned nixpkgs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;added myself as maintainer as maintainer and commited to my fork with commit message format required for changes&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Alper-Celik &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    email &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dev.alpercelik@gmail.com&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Alper Çelik&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    github &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Alper-Celik&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    githubId &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;110625473&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    keys &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      fingerprint &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;6B69 19DD CEE0 FAF3 5C9F  2984 FA90 C0AB 738A B873&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;modified derivition to use fetchFromGitHub instead of simpler flake input&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  src &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; fetchFromGitHub {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    owner &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Neargye&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    repo &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;magic_enum&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;v&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;version&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sha256 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sha256-...&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;added meta data about package&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;meta &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;with&lt;/span&gt; lib;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    description &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Static reflection for enums (to string, from string, iteration) for modern C++&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    homepage &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://github.com/Neargye/magic_enum&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    license &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; licenses&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mit;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    maintainers &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;with&lt;/span&gt; maintainers; [ Alper-Celik ];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;lastly navigated (it at least had some organization) &lt;code&gt;pkgs/top-level/all-packages.nix&lt;/code&gt; for finding correctish spot for package and i found it about at 22.000 th line&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# about 22.000 lines&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  magic-enum &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; callPackage &lt;span style=&#34;color:#e6db74&#34;&gt;../development/libraries/magic-enum&lt;/span&gt; { };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# who knows how many lines at the bottom of file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and i was ready to create pr for it
i created and waited about a week and @NickCao
pointed out i forget to format package commit message and [recommended formatting package dependencies with &lt;a href=&#34;https://github.com/nix-community/nixpkgs-fmt&#34;&gt;&lt;code&gt;nixpkgs-fmt&lt;/code&gt;&lt;/a&gt;.
i was actually using &lt;a href=&#34;https://github.com/nix-community/nixpkgs-fmt&#34;&gt;&lt;code&gt;nixpkgs-fmt&lt;/code&gt;&lt;/a&gt; with &lt;a href=&#34;https://github.com/jose-elias-alvarez/null-ls.nvim&#34;&gt;&lt;code&gt;nul-ls.nvim&lt;/code&gt;&lt;/a&gt;, it was actually formatted but when i put one dependency to
other line it expanded and this fixed formatting.
to be fair i was put the formatted the pr message like that and forget to actually format commit message i fixed that.&lt;/p&gt;
&lt;p&gt;after fixing problems with pr i thanked @NickCao for reviewing my pr with my &lt;em&gt;&lt;code&gt;perfect&lt;/code&gt;&lt;/em&gt; english.&lt;/p&gt;
&lt;p&gt;after about a day later @NickCao merged my pr and i was officially a nixpkgs package maintainer&lt;/p&gt;
&lt;p&gt;after a while i backported to 22.11 release because i was using stable release on my &lt;code&gt;flake.nix&lt;/code&gt; and it got quickly merged by @superherointj too&lt;/p&gt;
&lt;p&gt;after some more time i switched to using unstable release system wide instead of having stable and unstable nixos side by side this broked running Qt
info gui when developing because Qt program wasn&amp;rsquo;t wrapped while developing so i updated my &lt;code&gt;flake.nix&lt;/code&gt; to nixos-unstable too
but then it started to build &lt;code&gt;magic-enum&lt;/code&gt; instead of fetching from binary cache and failed i guess binary cache failed too and because of that nix tried to build it.
after looking to logs it was about some wide characters (emojis) while building unit tests, after looking into issues tacker of &lt;code&gt;magic-enum&lt;/code&gt; i saw it was a problem with building on
gcc 12 and unstable releases updating to gcc 12 broked the package, i submitted a pr disabling building of the tests&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# last shape of the pr:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# disable tests until upstream fixes build issues with gcc 12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# see https://github.com/Neargye/magic_enum/issues/235&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;doCheck &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cmakeFlags &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;=&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-DMAGIC_ENUM_OPT_BUILD_TESTS=OFF&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;after @wegank helped me with grammar, layout of the sentences and misspellings (he fixed them) he merged the pr.
i will probably enable tests on next version of the library if building tests on the latest compilers gets fixed by then
lastly there was no need to backport this pr since stable(22.11) was still using gcc 11&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
