1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
[![biz build status](https://builds.sr.ht/~ben/biz.svg)](https://builds.sr.ht/~ben/biz?)
# Source layout
aero browser apps, compiled with ghcjs
apex server-side api stuff, compiled with ghc
bild temporary storage for build artifacts
chip executable scripts in python, bash
depo for deployment, machine-specific nix code
lore shared libraries, compiled with either ghc/js
mode nixos modules; services and modular config
pack nix packages & external packages that we import
soar s3/spaces assets, like images, via git-annex
Makefile instructions for building the artifacts
default.nix contains all the build stuff, combines everything, builds the entire system
This isn't totally in place yet, but it's something to work toward.
# Development
To get a development shell, for example to work on ibb, you can do:
$ nix-shell pack --attr ibb
$ ghci
GHCi, version 8.4.4: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /home/ben/src/biz/.ghci
λ :load apex/Ibb.hs
[1 of 2] Compiling Influencers ( apex/Influencers.hs, interpreted )
[2 of 2] Compiling Ibb ( apex/Ibb.hs, interpreted )
Ok, two modules loaded.
# Deployment
To build the production server config locally:
make clean result
To push the built closure and switch to the new configuration (will ask for ssh
passphrase 2x):
make copy switch
A quick deploy can be just:
make clean copy switch
When that damn bug gets fixed, we could just do:
nix-deploy --to root@simatime.com \
--path $(nix-build --no-out-path ./nixos.nix)
|