summaryrefslogtreecommitdiff
path: root/default.nix
diff options
context:
space:
mode:
authorBrian Picciano <mediocregopher@gmail.com>2021-08-08 07:57:45 -0600
committerBrian Picciano <mediocregopher@gmail.com>2021-08-08 08:43:17 -0600
commit6feffc568ae790a883b9e0509d755e7d9bd82ee1 (patch)
treef913ce47e9f8204e5cf882f382d10e178e02367f /default.nix
parent0197d9cd493b5785bca05f476856540ec64da64a (diff)
refactor how nix derivations are organized and built
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix170
1 files changed, 86 insertions, 84 deletions
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
+ '';
+}