Dear All During this week I have been repeatedly hitting a wall of incompetence until I figured out how to automate deployment of a Jekyll website with a customized theme. I want to share my experience with the future users of Jekyll in Guix, so below I paste the English translation of my journal entry on this topic.
In return I would like to ask, how should I go about making the `#!/bin/bash` line of the bash script dynamic and responsive to the updates of Bash in Guix? # The Journal Entry The main complication of deploying *Jekyll* in *Guix* is the isolation of dependencies. This leads to situations where, despite theoretical installation of the required libraries, the deployment program reports that they are missing. After days of experimentation, I discovered that these dependencies cannot be installed **alongside** *Jekyll* — they must be specified as *Jekyll* **dependencies**. This means that if a *Jekyll* theme is used, the *Jekyll* package must be modified and this modified variant must be used by *Guix* shells and by systems that automate deployment of website changes. ## The result After understanding the above problem, I was able to prepare an initial version of the *post-receive* hook in *git*. In addition to the hook itself, I also need to develop a proper structure linking the accounts of the users involved in building and hosting the website, the storage location of the hosted website and their mutual authorisations. ### The *post-receive* hook ```bash #!/gnu/store/cdwviyfnsfv7k57qrwmym0mrynjixc1i-bash-5.1.16/bin/bash export JEKYLL_ENV=production export JEKYLL_NO_BUNDLER_REQUIRE=true export PUBLIC_WWW=/home/marek/Publiczne/www export TMP_GIT_CLONE=$HOME/tmp/marekpasnikowski-jekyll git clone $GIT_DIR $TMP_GIT_CLONE jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW rm -Rf $TMP_GIT_CLONE exit ``` ### Problems of this implementation: 1. Hard-coded path value to the bash shell executable. 2. Uncertainty whether all necessary environment variables are included. ----- Guix Community Member Marek Pasnikowski