summaryrefslogtreecommitdiff
path: root/README.md
blob: a7a38e9dfe88df2179fd279ba7bc75c270b8e78e (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
[![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)