{ pkgs ? import (fetchTarball { name = "nixpkgs-21-05"; url = "https://github.com/NixOS/nixpkgs/archive/7e9b0dff974c89e070da1ad85713ff3c20b0ca97.tar.gz"; sha256 = "1ckzhh24mgz6jd1xhfgx0i9mijk6xjqxwsshnvq789xsavrmsc36"; }) {}, config ? import ./config.nix, }: rec { inherit pkgs; init = pkgs.writeText "mediocre-blog-init" '' export MEDIOCRE_BLOG_DATA_DIR="${config.dataDir}" # mailing list export MEDIOCRE_BLOG_ML_SMTP_ADDR="${config.mlSMTPAddr}" export MEDIOCRE_BLOG_ML_SMTP_AUTH="${config.mlSMTPAuth}" export MEDIOCRE_BLOG_ML_PUBLIC_URL="${config.publicURL}" # pow export MEDIOCRE_BLOG_POW_SECRET="${config.powSecret}" # http export MEDIOCRE_BLOG_HTTP_PUBLIC_URL="${config.publicURL}" export MEDIOCRE_BLOG_HTTP_LISTEN_PROTO="${config.httpListenProto}" export MEDIOCRE_BLOG_HTTP_LISTEN_ADDR="${config.httpListenAddr}" export MEDIOCRE_BLOG_HTTP_AUTH_USERS='${builtins.toJSON config.httpAuthUsers}' export MEDIOCRE_BLOG_HTTP_AUTH_RATELIMIT='${config.httpAuthRatelimit}' ''; bin = pkgs.buildGoModule { pname = "mediocre-blog"; version = "dev"; src = ./src; vendorSha256 = "sha256:1vazrrg8rs9n8x40c9r53h9qnyxw59xkp0aq7jl15fliigk6q0cr"; subPackages = [ "cmd/mediocre-blog" ]; # disable tests checkPhase = ''''; }; entrypoint = pkgs.writeScript "mediocre-blog-entrypoint" '' #!${pkgs.bash}/bin/bash set -e source ${init} mkdir -p ${config.runDir} mkdir -p ${config.dataDir} exec ${bin}/bin/mediocre-blog "$@" ''; shell = pkgs.stdenv.mkDerivation { name = "mediocre-blog-shell"; buildInputs = [ pkgs.go pkgs.sqlite ]; shellHook = '' source ${init} ''; }; service = pkgs.writeText "mediocre-blog" '' [Unit] Description=mediocregopher mediocre blog Requires=network.target After=network.target [Service] Restart=always RestartSec=1s User=mediocregopher Group=mediocregopher RuntimeDirectory=mediocre-blog ExecStart=${entrypoint} [Install] WantedBy=multi-user.target ''; install = pkgs.writeScript "mediocre-blog" '' set -e -x sudo cp ${service} /etc/systemd/system/mediocregopher-mediocre-blog.service sudo systemctl daemon-reload sudo systemctl enable mediocregopher-mediocre-blog.service sudo systemctl restart mediocregopher-mediocre-blog.service ''; }