summaryrefslogtreecommitdiff
path: root/README.md
blob: f9e3771890d228c322a0d4f841c741e74b2f86ba (plain)
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)