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
|
[![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
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)
|