<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  
  <title>Thinking of thoughts</title>
  <subtitle>Writing about whatever crosses my mind at the moment.</subtitle>
  <link href="https://mkf.dev/thoughts/feed.xml" rel="self" />
  <link href="https://mkf.dev/" />
  <updated>2026-05-28T22:48:44Z</updated>
  <id>https://mkf.dev/</id>
  <author>
    <name>MorganF</name>
    <email>morgan@mkf.dev</email>
  </author>
  <entry>
    <title>Nixifying the Homelab</title>
    <link href="https://mkf.dev/thoughts/nixifying-the-homelab/" />
    <updated>2026-05-28T22:48:44Z</updated>
    <id>https://mkf.dev/thoughts/nixifying-the-homelab/</id>
    <content type="html">&lt;p&gt;Over the past few years, I have been running a homelab and trying to host my own local software, much like many others in the self-hosted community.&lt;/p&gt;
&lt;p&gt;I started by running a Docker instance on my local computer. I then moved on to upcycling some old hardware into an always-online server, and finally arrived where I am today: running multiple dedicated units hosting dozens of services (&lt;em&gt;like this website&lt;/em&gt;) that I and many others use regularly.&lt;/p&gt;
&lt;p&gt;I have to say, it has been a rewarding experience, yet simultaneously a miserable time of debugging and configuring when you just want to get on about your day and use your local services. Over these last few months, though, I think I have finally landed on something that is (for the most part) set and forget.&lt;/p&gt;
&lt;h2 id=&quot;the-past&quot; tabindex=&quot;-1&quot;&gt;The Past&lt;/h2&gt;
&lt;p&gt;Originally, I kept everything in a large &lt;code&gt;docker-compose&lt;/code&gt; file like anyone starting out. However, after the first few services, that approach becomes unwieldy and a real pain to run on the same system you want to use for other demanding tasks.&lt;/p&gt;
&lt;p&gt;The next step was moving to Proxmox and managing a Docker VM with other containers floating around as needed. This, in its own right, was much better than before. Never needing to stop services to free up resources, having everything always online and ready to go, and having any OS available to spin up at any time provided massive benefits. However, new problems started to creep in. Keeping VMs up to date, managing system software, maintaining configuration files, and doing it all remotely presented a new challenge. Luckily for me, this was the perfect excuse to finally pick up &lt;a href=&quot;https://www.ansiblefordevops.com/&quot;&gt;Ansible for DevOps&lt;/a&gt; and tackle learning some automation outside of rolling my own shell scripts.&lt;/p&gt;
&lt;p&gt;Over the course of refactoring and moving everything into simple Ansible automations, I thought I had finally hit a nice balance. Jinja templates are excellent for managing all the service configuration files, especially those that rely on the same data. Managing the bootstrapping of a new system and keeping it up to date became a simple task that could be run at any time. Even Docker containers could be maintained through the Docker community task. But one thing was still bothering me, and it cropped up a few times: the system could get out of sync. Dependencies would update and require manual debugging, or I would even have to rebuild the system just to bootstrap it again through a fragile process, hoping to end up in the system state I originally planned for.&lt;/p&gt;
&lt;h2 id=&quot;the-present&quot; tabindex=&quot;-1&quot;&gt;The Present&lt;/h2&gt;
&lt;p&gt;Since starting my homelab, I was tangentially progressing down my Nix journey (&lt;a href=&quot;https://github.com/MorganKF/config.nix&quot;&gt;config.nix&lt;/a&gt;). I started by running a WSL instance of NixOS and slowly branched out to configuring my MacBook and other computers using Nix. The ease of maintaining a single source of truth and having all your devices contain the exact environment you expect is nothing short of magic. Eventually, I realized it would be amazing to get all the benefits of NixOS (idempotent system configuration, system rollback, Nix packages) without the pitfalls of running simple Ansible tasks on Debian. Even better: what if everything was Nix, using one language to run the whole thing?&lt;/p&gt;
&lt;h3 id=&quot;terraform&quot; tabindex=&quot;-1&quot;&gt;Terraform&lt;/h3&gt;
&lt;p&gt;The first thing I wanted to tackle was the blasted provisioning. I had looked into Terraform before, but learning another DSL and toolchain was just too much at the time; it was easier to just throw up a new Debian instance and call it a day. While searching around, however, I found the &lt;a href=&quot;https://terranix.org/&quot;&gt;terranix&lt;/a&gt; project. Configuring the infrastructure directly in Nix was possible, so I gave it a shot.&lt;/p&gt;
&lt;p&gt;As it turns out, getting up and running isn&#39;t too difficult. You can simply export your configuration with &lt;code&gt;terranix.lib.terranixConfiguration&lt;/code&gt; and pass in a Nix configuration to generate a Terraform JSON file. With the added benefit of using the Nix language, we can run functions or loops to generate multiple configs from the same base configuration. Since I decided to run Nomad with the intent of eventually scaling a cluster, I ended up generating a simple server configuration:&lt;/p&gt;
&lt;div class=&quot;code-header&quot;&gt;nomad_server.nix&lt;/div&gt;
&lt;pre class=&quot;language-nix&quot;&gt;&lt;code class=&quot;language-nix&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  cores &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  memory &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4096&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  onboot &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  agent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  startup &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;order=1,up=30&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  scsihw &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;virtio-scsi-pci&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  os_type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cloud-init&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  tags &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;homelab.nix&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    serial &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    id &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;socket&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  boot &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;order=scsi0&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;# Extra disk setup...&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From there, you can simply extend that into the client configuration:&lt;/p&gt;
&lt;div class=&quot;code-header&quot;&gt;nomad_client.nix&lt;/div&gt;
&lt;pre class=&quot;language-nix&quot;&gt;&lt;code class=&quot;language-nix&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; lib &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt;
  nomadServer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token url&quot;&gt;./nomad-server.nix&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt;
lib&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;recursiveUpdate nomadServer &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  cores &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  memory &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16384&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wrap that up with a few other required properties like your provider and target, and bam! We get a &lt;code&gt;config.tf.json&lt;/code&gt; built that we can execute.&lt;/p&gt;
&lt;h3 id=&quot;nixos&quot; tabindex=&quot;-1&quot;&gt;NixOS&lt;/h3&gt;
&lt;p&gt;The next required piece is the actual OS. I couldn&#39;t quite get NixOS to build a proper &lt;code&gt;cloud-init&lt;/code&gt; image, so for now, Terraform clones a Debian template with &lt;code&gt;cloud-init&lt;/code&gt; enabled. Once that returns successfully, we continue by running &lt;a href=&quot;https://nix-community.github.io/nixos-anywhere/&quot;&gt;nixos-anywhere&lt;/a&gt;, which allows us to reboot the server with &lt;code&gt;kexec&lt;/code&gt; into the NixOS installer and set up the OS along with our configuration.&lt;/p&gt;
&lt;p&gt;Now that we have NixOS running, setting up the rest of the required software is quite trivial. I can forgo traditional software management tasks and simply enable any services I need. For example, I need SSH enabled on each server, so that is as simple as placing &lt;code&gt;programs.ssh.startAgent = true;&lt;/code&gt; into a shared configuration file and then importing it on the desired system with &lt;code&gt;imports = [ ./shared-config.nix ];&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;How about enabling Consul? That can be turned on via &lt;code&gt;services.consul.enable = true;&lt;/code&gt;. As for the configuration, that is also fully available inside Nix. We can throw any config settings inside &lt;code&gt;services.consul.extraConfig&lt;/code&gt;, and it will generate the appropriate output file and place it in the correct directory for us. How convenient!&lt;/p&gt;
&lt;p&gt;Along with the ease of setting up the default system state, we also get massive benefits from the fact that our system is locked to its current packages via the &lt;code&gt;flake.lock&lt;/code&gt; file. Looking to do a system update? It is now as simple as running &lt;code&gt;nix flake update&lt;/code&gt; and &lt;code&gt;nix run .#deploy&lt;/code&gt;. Something broke and services are down? Just revert the lock file and deploy it again. Even better, if something is really out of whack, we can just tear down the whole thing and build it again from scratch, leaving us with the exact system we started with. No more worrying about system state drifting.&lt;/p&gt;
&lt;h3 id=&quot;nomad&quot; tabindex=&quot;-1&quot;&gt;Nomad&lt;/h3&gt;
&lt;p&gt;The next challenge was Nomad. I wanted something a little more powerful than Docker and wanted to completely skip over Docker Swarm, but I wasn&#39;t quite ready to dive into Kubernetes. I needed to get my setup back in order to start adding a few new services I had been eyeing. That led me to try out Nomad.&lt;/p&gt;
&lt;p&gt;System configuration was quite simple: just &lt;code&gt;services.nomad.enable = true;&lt;/code&gt; on the server and client with a few extra knobs to flick, and both could find each other. The harder part was how to actually configure the jobs. There seemed to be a few projects floating around (similar to terranix) attempting to bridge Nomad job configuration and the Nix language, but for the most part, they seemed abandoned. I didn&#39;t want to give up on writing everything in Nix, so I went with a workaround.&lt;/p&gt;
&lt;p&gt;Nomad supports JSON configuration just like Terraform, so we can easily write our config in the Nix language and convert it to JSON files using &lt;code&gt;builtins.toJSON&lt;/code&gt;. It may not be as elegant as terranix&#39;s wrappers, but it means I don&#39;t have to split the codebase. Now we can throw up a job fairly trivially:&lt;/p&gt;
&lt;div class=&quot;code-header&quot;&gt;web.nix&lt;/div&gt;
&lt;pre class=&quot;language-nix&quot;&gt;&lt;code class=&quot;language-nix&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; helpers&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  job&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;web &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    datacenters &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;dc1&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;service&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    group&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;web &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      network &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; port&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;http &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; to &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      service &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;web&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        port &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;http&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        tags &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          helpers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;traefik&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;https &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;web-mkf&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            host &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;mkf.dev&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      task&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;web &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        driver &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;docker&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        config &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          image &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;nginx:stable&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          ports &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;http&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          volumes &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            &lt;span class=&quot;token string&quot;&gt;&quot;/mnt/nas/services/web:/usr/share/nginx/html:ro&quot;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        resources &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          cpu &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          memory &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can even bring in Nix functions like &lt;code&gt;helpers.traefik.https&lt;/code&gt; to generate all the tags we need for Traefik to discover the new service.&lt;/p&gt;
&lt;h2 id=&quot;the-future&quot; tabindex=&quot;-1&quot;&gt;The Future&lt;/h2&gt;
&lt;p&gt;Hopefully soon I can get this project cleaned up enough that I can actually share the full source. I have a few keys hard-coded that ideally stays secure and not available for every crawler, AI, and curious individual looking for secrets.&lt;/p&gt;
&lt;p&gt;This setup could be interesting for anyone looking to take the next step with Nix in their homelab, even if they don&#39;t want to manage &lt;em&gt;everything&lt;/em&gt; with it. At the very least, it might spark some ideas.&lt;/p&gt;
&lt;p&gt;In the meantime, I have a few other improvements in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Investigating the removal of HashiCorp Vault in favor of moving entirely to SOPS, potentially using &lt;a href=&quot;https://github.com/mic92/sops-nix&quot;&gt;sops-nix&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Replacing some deployment glue scripts with a dedicated tool like &lt;a href=&quot;https://github.com/zhaofengli/colmena&quot;&gt;Colmena&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Getting NixOS &lt;code&gt;cloud-init&lt;/code&gt; building directly to remove the installation step, moving to a purely local build and publish workflow.&lt;/li&gt;
&lt;li&gt;Investigating replacing the HashiCorp stack with k3s&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But for now, if you&#39;re seeing this, it&#39;s working.&lt;/p&gt;
</content>
  </entry>
</feed>