<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="369265" data-post-id="369265">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="venkatd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/venkatd/120/9419_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  venkatd
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve been using nix for the past year for my dev environment and our server setup.<br>
Does anyone here have first hand experience with what benefit devenv offers on top of nix?</p>
<p>Project looks neat!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369265" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/devenv-new-mix-task-wrapper-to-create-projects-in-a-new-devenv-sh-nix-environment/71671/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-369265" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369265"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="369266" data-post-id="369266">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="olivermt" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/olivermt/120/2354_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  olivermt
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Have any of you tried making flakes with claude code? The combination of verbose syntax with what seems to be a bit trial and error as a learning path seems to be a nice fit for letting an agent loose on the docs and a template as prior art, let it spin a while and see what comes out the other end.</p>
<p>I have had good success making oci stuff with CC at least. It made me a nice test psql container for github that had both postgis and pgvector in it. It took a few unattended iterations, but it worked well.</p>
<p>Been meaning to look at nix more closely, but it seems so big to dip toe in.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369266" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/devenv-new-mix-task-wrapper-to-create-projects-in-a-new-devenv-sh-nix-environment/71671/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-369266" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369266"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="369315" data-post-id="369315">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jozuas" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jozuas/120/35355_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jozuas
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>devenv provides community-driven abstractions for developer environments—much like NixOS does for system configuration, and home-manager does for user configuration of the home directory.</p>
<p>You could just take a Nix shell, and define your PostgreSQL configuration with various ENV vars (PGDATA, …) to make a PostgreSQL installation “local”, but with devenv as a minimum you just need to declare:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  services.postgres = {
    enable = true;
  }
</code></pre>
<p>In addition to the above, <code>devenv</code> also provides abstractions for:</p>
<ul>
<li>background process management</li>
<li>composable tasks (kind of <code>make</code> replacement)</li>
<li>building OCI containers</li>
<li>… and more</li>
</ul>
<p>In my company we have been using <code>devenv</code> for developer environments for around 2 years now. We have employees on Linux, Windows WSL and MacOS. Each time a new OS came up, there were some env specifics that had to be resolved / improved, but the problems were not <code>devenv</code> related per se. Overall the experience has been overwhelmingly positive, with new employees being able to go from 0 to running a monolith with a large number of binary dependencies and source modified PostgreSQL plugins in minutes.</p>
<p>This is how the setup instructions roughly look like for a new MacOS user with a brand-new laptop:</p>
<ul>
<li>Install <code>direnv</code> and setup shell hooks</li>
<li>Clone repo</li>
<li>Run a few first time setup scripts to get Nix installed and setup</li>
<li><code>direnv allow</code> to allow automatic env var loading / unloading in the directory of the repo</li>
<li><code>devenv up</code> to start background processes</li>
<li><code>make ci</code> to confirm the application passes various static analyses and tests</li>
<li>Install Zed (as Zed requires no plugin setup - Zed supports elixir-ls and direnv out of the box. We install elixir-ls via devenv so that all devs have identical version of the language server)</li>
<li>Write prod code</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369315" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/devenv-new-mix-task-wrapper-to-create-projects-in-a-new-devenv-sh-nix-environment/71671/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-369315" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369315"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="369317" data-post-id="369317">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jozuas" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jozuas/120/35355_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jozuas
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Nix is fantastic for Docker image building, see:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=l17oRkhgqHE&amp;t=1507s" rel="noopener nofollow ugc">https://www.youtube.com/watch?v=l17oRkhgqHE&amp;t=1507s</a></li>
<li><a href="https://youtu.be/gXHG3-CZ7CU" rel="noopener nofollow ugc">https://youtu.be/gXHG3-CZ7CU</a></li>
</ul>
<p>With nix, you can generate Docker containers that:</p>
<ul>
<li>are built deterministically</li>
<li>can be smaller</li>
<li>can build faster</li>
<li>are more composable (well, the source code written in nix is more composable, which allows you to be more flexible in how you generate Docker containers. No Dockerfile can merge multiple base images into a single layer, but you can achieve this with nix.)</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369317" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/devenv-new-mix-task-wrapper-to-create-projects-in-a-new-devenv-sh-nix-environment/71671/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-369317" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369317"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="369320" data-post-id="369320">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="olivermt" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/olivermt/120/2354_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  olivermt
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Getting to this level sounds like several hundred hours of work tho <img src="https://forum.elixirforum.com/images/emoji/apple/sweat_smile.png?v=15" title=":sweat_smile:" class="emoji" alt=":sweat_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369320" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/devenv-new-mix-task-wrapper-to-create-projects-in-a-new-devenv-sh-nix-environment/71671/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-369320" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369320"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="369322" data-post-id="369322">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jozuas" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jozuas/120/35355_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jozuas
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It might feel like a lot of work, but in general, the amount of time spent is dependent on:</p>
<ul>
<li>prior knowledge.</li>
<li>environment complexity. For a greenfield project, it could be 2 mins of LLM generated devenv config.</li>
</ul>
<p>Purely on <code>devenv</code> configuration itself, I’ve spent at most a few full-time work days in the last two years, as lot of the time gets spent on things you’d have to do anyway, regardless of <code>devenv</code>:</p>
<ul>
<li>PostgreSQL config shows up in <code>devenv</code>, and it’s a big chunk by size, but you’d need that setup no matter how you manage your dev environments.</li>
<li>If I spend time packaging something with nix, that time would still have to be spent even if there was no nix - trying to get everyone on the same package.</li>
<li>…</li>
</ul>
<p>Nix is one of those technologies that have a large learning curve. But that’s the same with many other technologies that are worth learning - you are not going to become proficient in Haskell, Clojure, Prolog, … in a weekend. What I can say, having learned a bunch of Nix/NixOS before the advent of LLMs, is that LLMs make it way faster to develop the fundamental understanding of the Nix ecosystem. But one has to be careful with prompting as the purpose of prompting should be building understanding as opposed to hoping that LLMs can generate some black-box that works.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369322" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/devenv-new-mix-task-wrapper-to-create-projects-in-a-new-devenv-sh-nix-environment/71671/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-369322" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369322"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="369448" data-post-id="369448">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="venkatd" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/venkatd/120/9419_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  venkatd
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks I will give it a try!</p>
<p>At work we are using Nix both for our dev environment and setting up our infrastructure for our server. It has been great but also a lot of manual setup for the development environment.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369448" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/devenv-new-mix-task-wrapper-to-create-projects-in-a-new-devenv-sh-nix-environment/71671/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-369448" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369448"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>