mirror of
https://github.com/elkowar/dots-of-war.git
synced 2024-11-06 11:22:23 +00:00
92 lines
45 KiB
HTML
92 lines
45 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<!-- saved from url=(0055)https://sitr.us/2018/05/13/build-xmonad-with-stack.html -->
|
|||
|
<html lang="en" data-react-helmet="lang"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><style data-href="/styles.f628065b851287e306e5.css">@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:100;src:local("IBM Plex Sans Thin "),local("IBM Plex Sans-Thin"),url(/static/ibm-plex-sans-latin-100-245539db8ee56425757ef728eda8194e.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-100-9a582f3a304f421eca4027517706843c.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:100;src:local("IBM Plex Sans Thin italic"),local("IBM Plex Sans-Thinitalic"),url(/static/ibm-plex-sans-latin-100italic-3c34cf080b38f5fb1d4c59ffa45b3967.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-100italic-1ea7c5d21b5956b602bdf9656cfb353f.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:200;src:local("IBM Plex Sans Extra Light "),local("IBM Plex Sans-Extra Light"),url(/static/ibm-plex-sans-latin-200-bf72c8412ab06c393f52efc5beb26ea7.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-200-67524c36348a323f78f2845e3aafc2d4.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:200;src:local("IBM Plex Sans Extra Light italic"),local("IBM Plex Sans-Extra Lightitalic"),url(/static/ibm-plex-sans-latin-200italic-bbc2d55223638ce450424a917e1104b2.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-200italic-52df25607ec284ca361ae50ba24b3580.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:300;src:local("IBM Plex Sans Light "),local("IBM Plex Sans-Light"),url(/static/ibm-plex-sans-latin-300-9e1c48af24191f6ea8aede14957c5d01.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-300-10bb6a0ae6dc8000d999ab622a45e281.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:300;src:local("IBM Plex Sans Light italic"),local("IBM Plex Sans-Lightitalic"),url(/static/ibm-plex-sans-latin-300italic-c76f2ab53673e964b6e6734c1c455761.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-300italic-d3566d5bb4f31d86bfb9fda09563b416.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:local("IBM Plex Sans Regular "),local("IBM Plex Sans-Regular"),url(/static/ibm-plex-sans-latin-400-263d6267533501f58c33b12b382e3abb.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-400-a2c56f946488a9a267ba6ba21471a217.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:400;src:local("IBM Plex Sans Regular italic"),local("IBM Plex Sans-Regularitalic"),url(/static/ibm-plex-sans-latin-400italic-89a93a1bdde48c7bb104150de88affce.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-400italic-272f86114c980c52c131dfc3b4ae3276.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:local("IBM Plex Sans Medium "),local("IBM Plex Sans-Medium"),url(/static/ibm-plex-sans-latin-500-0866c24487514ad726738fb24f8e015b.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-500-f6d5c5d5b849796d6a8f5a2953b60753.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:italic;font-display:swap;font-weight:500;src:local("IBM Plex Sans Medium italic"),local("IBM Plex Sans-Mediumitalic"),url(/static/ibm-plex-sans-latin-500italic-ffd12d59339823b8cf53b9f99b47d87c.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-500italic-ccd41bd1a5bfa8bad2cd8d35fdaeb3d1.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:local("IBM Plex Sans SemiBold "),local("IBM Plex Sans-SemiBold"),url(/static/ibm-plex-sans-latin-600-7852d4dc26ef44df58e23dc0b9722d6f.woff2) format("woff2"),url(/static/ibm-plex-sans-latin-600-337b16517a23
|
|||
|
That means that when you want to apply a new configuration you actually build
|
|||
|
xmonad…"><meta data-react-helmet="true" name="image" content="https://sitr.us/banner.jpg"><meta data-react-helmet="true" property="og:title" content="I finally set up XMonad to build with Stack!"><meta data-react-helmet="true" property="og:url" content="https://sitr.us"><meta data-react-helmet="true" property="og:description" content="The XMonad window manager is configured in Haskell.
|
|||
|
That means that when you want to apply a new configuration you actually build
|
|||
|
xmonad…"><meta data-react-helmet="true" property="og:image" content="https://sitr.us/banner.jpg"><meta data-react-helmet="true" property="og:type" content="website"><meta data-react-helmet="true" property="og:image:alt" content="The XMonad window manager is configured in Haskell.
|
|||
|
That means that when you want to apply a new configuration you actually build
|
|||
|
xmonad…"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="twitter:title" content="I finally set up XMonad to build with Stack!"><meta data-react-helmet="true" name="twitter:url" content="https://sitr.us"><meta data-react-helmet="true" name="twitter:description" content="The XMonad window manager is configured in Haskell.
|
|||
|
That means that when you want to apply a new configuration you actually build
|
|||
|
xmonad…"><meta data-react-helmet="true" name="twitter:image" content="https://sitr.us/banner.jpg"><meta data-react-helmet="true" name="twitter:image:alt" content="The XMonad window manager is configured in Haskell.
|
|||
|
That means that when you want to apply a new configuration you actually build
|
|||
|
xmonad…"><meta data-react-helmet="true" name="twitter:creator" content="@hallettj"><meta data-react-helmet="true" name="gatsby-theme" content="@lekoarts/gatsby-theme-minimal-blog"><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com/"><link rel="sitemap" type="application/xml" href="https://sitr.us/sitemap.xml"><link rel="icon" href="https://sitr.us/icons/icon-48x48.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link rel="manifest" href="https://sitr.us/manifest.webmanifest"><meta name="theme-color" content="#cb9d06"><link rel="apple-touch-icon" sizes="48x48" href="https://sitr.us/icons/icon-48x48.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link rel="apple-touch-icon" sizes="72x72" href="https://sitr.us/icons/icon-72x72.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link rel="apple-touch-icon" sizes="96x96" href="https://sitr.us/icons/icon-96x96.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link rel="apple-touch-icon" sizes="144x144" href="https://sitr.us/icons/icon-144x144.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link rel="apple-touch-icon" sizes="192x192" href="https://sitr.us/icons/icon-192x192.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link rel="apple-touch-icon" sizes="256x256" href="https://sitr.us/icons/icon-256x256.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link rel="apple-touch-icon" sizes="384x384" href="https://sitr.us/icons/icon-384x384.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link rel="apple-touch-icon" sizes="512x512" href="https://sitr.us/icons/icon-512x512.png?v=caf57ab8a19cf2e6a923cd405e7b66a9"><link as="script" rel="preload" href="./I finally set up XMonad to build with Stack! _ sitr.us_files/styles-2c3ea41ae3281f2424df.js"><link as="script" rel="preload" href="./I finally set up XMonad to build with Stack! _ sitr.us_files/component---src-lekoarts-gatsby-theme-minimal-blog-core-templates-post-query-tsx-bb65031b5086bc35ab24.js"><link as="script" rel="preload" href="./I finally set up XMonad to build with Stack! _ sitr.us_files/commons-8d1316e99596af343d32.js"><link as="script" rel="preload" href="./I finally set up XMonad to build with Stack! _ sitr.us_files/app-1d89443379b1055b2f94.js"><link as="script" rel="preload" href="./I finally set up XMonad to build with Stack! _ sitr.us_files/webpack-runtime-889e88d4b2c87811c013.js"><link as="fetch" rel="preload" href="https://sitr.us/page-data/2018/05/13/build-xmonad-with-stack.html/page-data.json" crossorigin="anonymous"><style data-emotion="css-global"></style><style data-emotion-css="wuy82p">.css-wuy82p{font-family:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1.625;font-weight:400;color:var(--theme-ui-colors-text,#2d3748);background-color:var(--theme-ui-colors-background,#fff);}</style><style data-emotion="css-global"></style><style data-emotion-css="1g597hz">.css-1g597hz{border:0;-webkit-clip:react(0 0 0 0);clip:react(0 0 0 0);height:1px;width:1px;margin:-1px;padding:0;overflow:hidden;position:absolute;}.css-1g597hz:focus{padding:1rem;position:fixed;top:15px;left:15px;background-color:var(--theme-ui-colors-heading,#000);color:var(--theme-ui-colors-background,#fff);z-index:1;width:auto;height:auto;-webkit-clip:auto;clip:auto;-webkit-text-decoration:none;text-decoration:none;}</style><style data-emotion-css="feqrbk">.css-feqrbk{width:100%;min-width:0;max-width:1024px;margin-left:auto;margin-right:auto;padding:1rem;}@media screen and (min-width:640px){.css-feqrbk{padding:2rem;}}</style><style data-emotion-css="185ihix">.css-185ihix{box-sizing:border-box;min-width:0;width:100%;min-width:0;max-width:1024px;margin-left:auto;margin-right:auto;padding:1rem;}@media screen and (min-width:640px){.css-185ihix{padding:2rem;}}</style><style data-emotion-css="1wt4r56">.css-1wt4r56{margin-bottom:4rem;}@media screen and (min-width:640px){.css-1wt4r56{margin-bottom:8rem;}}</style><style data-emotion-css="1eswzqe">.css-1eswzqe{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-web
|
|||
|
var mode = localStorage.getItem('theme-ui-color-mode');
|
|||
|
if (!mode) return
|
|||
|
document.body.classList.add('theme-ui-' + mode);
|
|||
|
} catch (e) {} })();</script><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><div data-testid="theme-root" class="css-wuy82p"><a href="https://sitr.us/2018/05/13/build-xmonad-with-stack.html#skip-nav" data-skip-link="true" class="css-1g597hz">Skip to content</a><div class="css-185ihix"><header class="css-1wt4r56"><div class="css-190uhut"><a aria-label="sitr.us - Back to home" class="css-dz3ojy" href="https://sitr.us/"><h1 class="css-1kmktz0">sitr.us</h1></a><button type="button" aria-label="Activate Dark Mode" title="Activate Dark Mode" class="css-af3ja4"><div class="css-iiu7h7"></div></button></div><div class="css-1kvspmd"><nav class="css-nrb238"><a class="css-1od09yo" href="https://sitr.us/blog">Blog</a><a class="css-1od09yo" href="https://sitr.us/about">About</a></nav><div class="css-e5k4e3"><a href="https://github.com/hallettj/" class="css-1od09yo">Github</a><a href="https://twitter.com/hallettj/" class="css-1od09yo">Twitter</a><a href="mailto:jesse@sitr.us" class="css-1od09yo">Email</a></div></div></header><main id="skip-nav" class="css-1489aiv"><h2 class="css-1bzbprl">I finally set up XMonad to build with Stack!</h2><p class="css-1fkzbc2"><time datetime="2018-05-13">2018-05-13</time> — <a class="css-1od09yo" href="https://sitr.us/tags/x-monad">XMonad</a> — <span>3<!-- --> min read</span></p><section class="css-f0b8g7"><p class="css-1bkk5q4">The <a href="http://xmonad.org/" class="css-1od09yo">XMonad</a> window manager is configured in Haskell.
|
|||
|
That means that when you want to apply a new configuration you actually build
|
|||
|
xmonad itself incorporating code from your configuration file.
|
|||
|
It sounds more painful than it is -
|
|||
|
when you install xmonad you get an executable called <code class="css-0">xmonad</code> that handles the
|
|||
|
details of bootstrapping your custom build.
|
|||
|
The command <code class="css-0">xmonad --recompile</code> builds <code class="css-0">~/.xmonad/xmonad.hs</code>,
|
|||
|
and subsequent invocations of <code class="css-0">xmonad</code> run the executable that is produced.</p><p class="css-1bkk5q4">When you configure xmonad you are actually writing your own version of the
|
|||
|
program.
|
|||
|
Because you can write arbitrary code the possibilities for customization are
|
|||
|
endless!
|
|||
|
As with any software project,
|
|||
|
you get maximum expressive power when you bring in third-party libraries.
|
|||
|
<code class="css-0">xmonad-contrib</code> is a popular choice -
|
|||
|
but you can import any Haskell library that you want.
|
|||
|
With libraries come the problem of managing library packages.
|
|||
|
In the past I used the <code class="css-0">cabal</code> command to globally install library packages.
|
|||
|
From time to time I would clear out my installed packages,
|
|||
|
or change something while working on another Haskell project,
|
|||
|
and then my window manager would stop working.
|
|||
|
I wanted a better option.</p><p class="css-1bkk5q4"><a href="https://docs.haskellstack.org/en/stable/README/" class="css-1od09yo">Stack</a> is my preferred dependency management and build tool for Haskell
|
|||
|
projects.
|
|||
|
Stack automatically fetches project dependencies,
|
|||
|
and maintains isolated sets of installed packages for each project.
|
|||
|
With stack I declare dependencies in a <a href="https://github.com/hallettj/dot-xmonad/blob/master/home/.xmonad/my-xmonad.cabal" class="css-1od09yo">.cabal file</a>,
|
|||
|
and stack ensures that I have up-to-date copies of all libraries whenever
|
|||
|
xmonad builds itself.</p><p class="css-1bkk5q4">To use stack I needed to hook into xmonad's build process.
|
|||
|
I used this <a href="http://brianbuccola.com/how-to-install-xmonad-and-xmobar-via-stack/" class="css-1od09yo">blog post</a> as a starting point.
|
|||
|
That post provides instructions for using the <code class="css-0">stack ghc</code> command to invoke ghc
|
|||
|
in an environment prepared by stack.
|
|||
|
But I have some custom code modules in <code class="css-0">~/.xmonad/lib/</code>,
|
|||
|
and I had problems getting ghc to find those when running <code class="css-0">stack ghc</code>.
|
|||
|
So I opted to set up a fully-fledged stack project which is built with the
|
|||
|
usual <code class="css-0">stack build</code> command.
|
|||
|
You can take a look at my <a href="https://github.com/hallettj/dot-xmonad/tree/master/home/.xmonad" class="css-1od09yo">~/.xmonad/</a> directory to get the high-level view.</p><p class="css-1bkk5q4">The key is the <a href="https://github.com/hallettj/dot-xmonad/blob/master/home/.xmonad/build" class="css-1od09yo">build</a> script.
|
|||
|
Starting in xmonad v0.13 if there is an executable called <code class="css-0">build</code> in your
|
|||
|
<code class="css-0">~/.xmonad/</code> directory then xmonad will defer to that script.
|
|||
|
<code class="css-0">build</code> gets a path as an argument which is where the compiled xmonad executable
|
|||
|
should be placed.
|
|||
|
My script looks like this:</p><div class="gatsby-highlight" data-language="sh"><pre class="prism-code language-sh" data-linenumber="false" style="color: rgb(214, 222, 235); background-color: rgb(1, 22, 39);"><div class="token-line" style="color: rgb(214, 222, 235);"><span class="token plain">#!/bin/sh</span></div><div class="token-line" style="color: rgb(214, 222, 235);"><span class="token plain" style="display: inline-block;"></span></div><div class="token-line" style="color: rgb(214, 222, 235);"><span class="token plain">set -e</span></div><div class="token-line" style="color: rgb(214, 222, 235);"><span class="token plain" style="display: inline-block;"></span></div><div class="token-line" style="color: rgb(214, 222, 235);"><span class="token plain">stack build :my-xmonad --verbosity error</span></div><div class="token-line" style="color: rgb(214, 222, 235);"><span class="token plain">stack install :my-xmonad --local-bin-path bin/ --verbosity error</span></div><div class="token-line" style="color: rgb(214, 222, 235);"><span class="token plain">mv bin/my-xmonad "$1"</span></div></pre></div><p class="css-1bkk5q4">My <code class="css-0">my-xmonad.cabal</code> file declares an executable named <code class="css-0">my-xmonad</code>
|
|||
|
(which is actually my customized version of xmonad).
|
|||
|
This script builds that executable,
|
|||
|
installs the it to <code class="css-0">~/.xmonad/bin/my-xmonad</code>
|
|||
|
(thanks to the <code class="css-0">--local-bin-path</code> argument to <code class="css-0">stack install</code>),
|
|||
|
and finally moves the executable to the location given by the first argument to
|
|||
|
the <code class="css-0">build</code> script.</p><p class="css-1bkk5q4">You can detailed on working with stack from stack's <a href="https://docs.haskellstack.org/en/stable/GUIDE/" class="css-1od09yo">user guide</a>.
|
|||
|
If you want to get going quickly I created a stack <a href="https://raw.githubusercontent.com/hallettj/dot-xmonad/master/home/.xmonad/xmonad.hsfiles" class="css-1od09yo">project template</a> to set
|
|||
|
up xmonad with stack.
|
|||
|
Here is what you do:</p><ul class="css-15rlv7r"><li class="css-0">Install xmonad and stack using your preferred package manager - you need xmonad v0.13 or later.</li><li class="css-0">Run <code class="css-0">stack new my-xmonad https://raw.githubusercontent.com/hallettj/dot-xmonad/master/home/.xmonad/xmonad.hsfiles</code></li><li class="css-0">If you are setting up a new xmonad configuration then <code class="css-0">mv my-xmonad ~/.xmonad</code>. Otherwise copy files from <code class="css-0">my-xmonad/</code> to <code class="css-0">~/.xmonad/</code> and then delete <code class="css-0">my-xmonad/</code>. The relevant files are:<ul class="css-15rlv7r"><li class="css-0"><code class="css-0">my-xmonad.cabal</code>, your project manifest</li><li class="css-0"><code class="css-0">build</code></li><li class="css-0"><code class="css-0">lib/</code> - this directory must exist or the project will not build!</li><li class="css-0"><code class="css-0">xmonad.hs</code>, in case you do not have your own</li><li class="css-0"><code class="css-0">.gitignore</code>, in case you want to version-control your xmonad config</li></ul></li><li class="css-0"><code class="css-0">chmod a+x ~/.xmonad/build</code> - if the build script is not marked as executable xmonad will not execute it.</li><li class="css-0">In <code class="css-0">~/.xmonad/</code> run <code class="css-0">stack setup</code> to install the version of ghc that stack wants to use. (Stack installs ghc in a sandbox so that it does not conflict with any other ghc installation on your machine.)</li></ul><p class="css-1bkk5q4">Names of any custom modules that you have in <code class="css-0">~/.xmonad/lib</code> need to be listed in the <code class="css-0">other-modules</code> section in <code class="css-0">~/.xmonad/my-xmonad.cabal</code>.
|
|||
|
If you want to add library dependencies beyond <code class="css-0">xmonad</code> and <code class="css-0">xmonad-contrib</code>
|
|||
|
then add them to the <code class="css-0">build-depends</code> section in the same file.
|
|||
|
Stack pulls dependencies from <a href="https://www.stackage.org/" class="css-1od09yo">Stackage</a>,
|
|||
|
which hosts curated sets of packages.
|
|||
|
The <code class="css-0">resolver</code> setting in <code class="css-0">stack.yaml</code> determines the version of each
|
|||
|
dependency that you get,
|
|||
|
and the version of ghc that stack will use to compile xmonad.
|
|||
|
If you want to use libraries that are not hosted on Stackage you will need to
|
|||
|
list package names with exact version numbers in the <code class="css-0">extra-deps</code> section in
|
|||
|
<code class="css-0">stack.yaml</code> according to <a href="https://docs.haskellstack.org/en/stable/GUIDE/#extra-deps" class="css-1od09yo">these instructions</a>.</p><p class="css-1bkk5q4">Test everything by running <code class="css-0">xmonad --recompile</code> from any directory.
|
|||
|
If that works then you are all set!</p><footer></footer></section></main><footer class="css-6x8z6y"><div><p>Copyright © 2007–<!-- -->2020<!-- --> by Jesse Hallett.</p><p>This work is licensed under a<!-- --> <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/" class="css-1od09yo">Creative Commons Attribution-ShareAlike 4.0 International License.<!-- --> <img alt="Creative Commons License" src="./I finally set up XMonad to build with Stack! _ sitr.us_files/80x15.png" class="css-1fk4m44"></a></p></div><div><a aria-label="Link to the theme's GitHub repository" href="https://github.com/LekoArts/gatsby-themes/tree/master/themes/gatsby-theme-minimal-blog" class="css-1od09yo">Theme</a> <!-- -->by<!-- --> <a aria-label="Link to the theme author's website" href="https://www.lekoarts.de/en" class="css-1od09yo">LekoArts</a></div></footer></div></div></div><div id="gatsby-announcer" role="alert" aria-live="assertive" aria-atomic="true" style="position: absolute; width: 1px; height: 1px; padding: 0px; overflow: hidden; clip: rect(0px, 0px, 0px, 0px); white-space: nowrap; border: 0px;"></div></div><script>
|
|||
|
|
|||
|
|
|||
|
if(true) {
|
|||
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|||
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|||
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|||
|
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
|||
|
}
|
|||
|
if (typeof ga === "function") {
|
|||
|
ga('create', 'UA-327628-1', 'auto', {});
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}</script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/2018/05/13/build-xmonad-with-stack.html";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-1d89443379b1055b2f94.js"],"component---src-lekoarts-gatsby-theme-minimal-blog-core-templates-homepage-query-tsx":["/component---src-lekoarts-gatsby-theme-minimal-blog-core-templates-homepage-query-tsx-699cefe8b04da8b3eff9.js"],"component---src-lekoarts-gatsby-theme-minimal-blog-core-templates-blog-query-tsx":["/component---src-lekoarts-gatsby-theme-minimal-blog-core-templates-blog-query-tsx-cff89e6980695b74d021.js"],"component---node-modules-lekoarts-gatsby-theme-minimal-blog-core-src-templates-tags-query-tsx":["/component---node-modules-lekoarts-gatsby-theme-minimal-blog-core-src-templates-tags-query-tsx-561fe71fa12db25c2485.js"],"component---src-lekoarts-gatsby-theme-minimal-blog-core-templates-post-query-tsx":["/component---src-lekoarts-gatsby-theme-minimal-blog-core-templates-post-query-tsx-bb65031b5086bc35ab24.js"],"component---node-modules-lekoarts-gatsby-theme-minimal-blog-core-src-templates-page-query-tsx":["/component---node-modules-lekoarts-gatsby-theme-minimal-blog-core-src-templates-page-query-tsx-b48df875d40e887efb07.js"],"component---node-modules-lekoarts-gatsby-theme-minimal-blog-core-src-templates-tag-query-tsx":["/component---node-modules-lekoarts-gatsby-theme-minimal-blog-core-src-templates-tag-query-tsx-551b07f8097e353b4de7.js"],"component---node-modules-gatsby-plugin-offline-app-shell-js":["/component---node-modules-gatsby-plugin-offline-app-shell-js-cf2fd0f92da7499f18b1.js"]};/*]]>*/</script><script src="./I finally set up XMonad to build with Stack! _ sitr.us_files/webpack-runtime-889e88d4b2c87811c013.js" async=""></script><script src="./I finally set up XMonad to build with Stack! _ sitr.us_files/app-1d89443379b1055b2f94.js" async=""></script><script src="./I finally set up XMonad to build with Stack! _ sitr.us_files/commons-8d1316e99596af343d32.js" async=""></script><script src="./I finally set up XMonad to build with Stack! _ sitr.us_files/component---src-lekoarts-gatsby-theme-minimal-blog-core-templates-post-query-tsx-bb65031b5086bc35ab24.js" async=""></script><script src="./I finally set up XMonad to build with Stack! _ sitr.us_files/styles-2c3ea41ae3281f2424df.js" async=""></script></body></html>
|