git.iko.soy/typeable/octopod
on master help sign in
typeable/octopod/nix/default.nix
99 lines 2.6 kB history raw
1{ sources ? import ./sources.nix
2, octopod-css ? import ../octopod-css { inherit pkgsSrc system; }
3, migrations ? ../migrations
4, system ? builtins.currentSystem
5, hsPkgs ? import ./.. { inherit system prod; }
6, pkgs ? hsPkgs.pkgs
7, pkgsSrc ? hsPkgs.pkgsSrc
8, prod ? true
9}:
10let
11 octo-cli = hsPkgs.octo-cli.components.exes.octo;
12 octopod-backend = hsPkgs.octopod-backend.components.exes.octopod-exe;
14 closurecompiler = (import sources.nixpkgs { inherit system; }).closurecompiler;
16 octopod-frontend-ugly =
17 let frontend = hsPkgs.octopod-frontend-pretty;
18 in
19 pkgs.runCommand "octopod-frontend-ugly"
20 { } ''
21 shopt -s globstar
22 mkdir $out
23 cp -av ${frontend}/* $out
24 rm $out/all.js
26 chmod +w -R $out
28 ${closurecompiler}/bin/closure-compiler --compilation_level ADVANCED --jscomp_off=checkVars --warning_level QUIET --js ${frontend}/all.js --externs ${frontend}/all.js.externs --js_output_file $out/all.js
29 ${pkgs.zopfli}/bin/zopfli $out/**/*.{js,css,json,html}
30 '';
32 octopod-server-container = pkgs.dockerTools.buildImage {
33 name = "octopod-server-container-slim";
34 contents = with pkgs; [
35 git
36 coreutils
37 bash
38 openssh
39 gnugrep
40 cacert
41 shadow
42 findutils
43 ];
45 runAsRoot = ''
46 mkdir /tmp
47 chmod 777 /tmp
49 mkdir -p /home/octopod
50 useradd octopod -d /home/octopod
51 chown octopod.octopod /home/octopod
53 mkdir -p /migrations/{deploy,revert,verify}
54 cp -av ${migrations}/* /migrations/
56 mkdir /www
57 cp -av ${octopod-frontend-ugly}/* /www
58 '';
60 config =
61 let entrypoint = "${octopod-backend}/bin/octopod-exe"; in
62 {
63 Entrypoint = [ entrypoint ];
64 Cmd = [
65 "--port"
66 "4443"
67 "--ui-port"
68 "4000"
69 "--ws-port"
70 "4020"
71 "--db"
72 "host='127.0.0.1' port=5432 user='octopod' password='octopod'"
73 "--db-pool-size"
74 "10"
75 ];
76 Env = [
77 "PATH=/utils:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
78 "USER=octopod"
79 "ENTRYPOINT=${entrypoint}"
80 ];
81 };
82 };
84 octo-cli-container = pkgs.dockerTools.buildImage {
85 name = "octo-cli-container-slim";
86 contents = with pkgs; [ cacert ];
88 config = let entrypoint = "${octo-cli}/bin/octo"; in
89 {
90 Entrypoint = [ entrypoint ];
91 Env = [
92 "ENTRYPOINT=${entrypoint}"
93 ];
94 };
95 };
96in
98 inherit octo-cli-container octopod-server-container octopod-frontend-ugly;