From 6feffc568ae790a883b9e0509d755e7d9bd82ee1 Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Sun, 8 Aug 2021 07:57:45 -0600 Subject: refactor how nix derivations are organized and built --- default.nix | 170 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 86 insertions(+), 84 deletions(-) (limited to 'default.nix') diff --git a/default.nix b/default.nix index a713f8a..4352e5c 100644 --- a/default.nix +++ b/default.nix @@ -1,84 +1,86 @@ -let - utils = (import ./nix) {}; - pkgs = utils.pkgs; - system = utils.system; -in - {config ? ./config.nix}: rec { - config = (import ./config.nix); - - static = (import ./static).build; - - srv = (import ./srv).build; - srvBin = pkgs.writeScript "mediocregopher-mediocre-blog-srvBin" '' - #!/bin/sh - exec ${srv}/bin/mediocre-blog \ - -pow-secret "${config.powSecret}" \ - -ml-smtp-addr "${config.mlSMTPAddr}" \ - -ml-smtp-auth "${config.mlSMTPAuth}" \ - -data-dir "${config.dataDir}" \ - -public-url "${config.publicURL}" \ - -static-dir "${static}" \ - -listen-proto "${config.listenProto}" \ - -listen-addr "${config.listenAddr}" - ''; - - redisCfg = pkgs.writeText "mediocregopher-mediocre-blog-redisCfg" '' - port 0 - unixsocket ${config.redisListenPath} - daemonize no - loglevel notice - logfile "" - appendonly yes - appendfilename "appendonly.aof" - dir ${config.dataDir}/redis - ''; - - redisBin = pkgs.writeScript "mediocregopher-mediocre-blog-redisBin" '' - #!/bin/sh - mkdir -p ${config.dataDir}/redis - exec ${pkgs.redis}/bin/redis-server ${redisCfg} - ''; - - circusCfg = pkgs.writeText "mediocregopher-mediocre-blog-circusCfg" '' - [circus] - endpoint = tcp://127.0.0.1:0 - pubsub_endpoint = tcp://127.0.0.1:0 - - [watcher:srv] - cmd = ${srvBin} - numprocesses = 1 - - [watcher:redis] - cmd = ${redisBin} - numprocesses = 1 - ''; - - circusBin = pkgs.writeScript "mediocregopher-mediocre-blog-circusBin" '' - exec ${pkgs.circus}/bin/circusd ${circusCfg} - ''; - - service = pkgs.writeText "mediocregopher-mediocre-blog" '' - [Unit] - Description=mediocregopher mediocre blog - Requires=network.target - After=network.target - - [Service] - Restart=always - RestartSec=1s - User=mediocregopher - ExecStart=${circusBin} - - [Install] - WantedBy=multi-user.target - ''; - - install = pkgs.writeScript "mediocregopher-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 - ''; - } +{ + + pkgs ? import (fetchTarball { + name = "nixpkgs-21-05"; + url = "https://github.com/NixOS/nixpkgs/archive/7e9b0dff974c89e070da1ad85713ff3c20b0ca97.tar.gz"; + sha256 = "1ckzhh24mgz6jd1xhfgx0i9mijk6xjqxwsshnvq789xsavrmsc36"; + }) {}, + + baseConfig ? import ./config.nix, + +}: rec { + + config = baseConfig // { + redisListenPath = "${config.runDir}/redis"; + }; + + static = (import ./static) { inherit pkgs; }; + + srv = (import ./srv) { + inherit pkgs config; + staticBuild=static.build; + }; + + redisCfg = pkgs.writeText "mediocre-blog-redisCfg" '' + port 0 + unixsocket ${config.redisListenPath} + daemonize no + loglevel notice + logfile "" + appendonly yes + appendfilename "appendonly.aof" + dir ${config.dataDir}/redis + ''; + + redisBin = pkgs.writeScript "mediocre-blog-redisBin" '' + #!/bin/sh + mkdir -p ${config.dataDir}/redis + exec ${pkgs.redis}/bin/redis-server ${redisCfg} + ''; + + circusCfg = pkgs.writeText "mediocre-blog-circusCfg" '' + [circus] + endpoint = tcp://127.0.0.1:0 + pubsub_endpoint = tcp://127.0.0.1:0 + + [watcher:srv] + cmd = ${srv.bin} + numprocesses = 1 + + [watcher:redis] + cmd = ${redisBin} + numprocesses = 1 + ''; + + entrypoint = pkgs.writeScript "mediocre-blog-entrypoint" '' + #!/bin/sh + mkdir -p ${config.runDir} + mkdir -p ${config.dataDir} + exec ${pkgs.circus}/bin/circusd ${circusCfg} + ''; + + service = pkgs.writeText "mediocre-blog" '' + [Unit] + Description=mediocregopher mediocre blog + Requires=network.target + After=network.target + + [Service] + Restart=always + RestartSec=1s + User=mediocregopher + 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 + ''; +} -- cgit v1.2.3