summaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix')
-rw-r--r--nix/build.nix51
-rw-r--r--nix/shellHook.sh85
2 files changed, 89 insertions, 47 deletions
diff --git a/nix/build.nix b/nix/build.nix
index 6a12cf5..fa7dcc8 100644
--- a/nix/build.nix
+++ b/nix/build.nix
@@ -100,59 +100,16 @@ in {
# this says something about missing haskelline?
#(ghcjs_ allDeps)
- nixpkgs.niv.niv
+ nixpkgs.figlet
nixpkgs.hlint
+ nixpkgs.lolcat
+ nixpkgs.niv.niv
nixpkgs.ormolu
nixpkgs.python37Packages.black
nixpkgs.python37Packages.pylint
nixpkgs.wemux
];
- EXAMPLE = "hi";
- shellHook = ''
- function help() {
- echo ""
- echo "bizdev" | ${nixpkgs.figlet}/bin/figlet | ${nixpkgs.lolcat}/bin/lolcat
- echo ""
- echo " bild compile code"
- echo " deps manage dependencies with niv"
- echo " ghci start ghci with correct options"
- echo " help show this message"
- echo " hero compile and start a dev server for herocomics.app"
- echo " lint auto-lint all changed files"
- echo " ./push TODO: convert to haskell"
- echo " ./ship TODO: convert to haskell"
- }
-
- function bild() {
- runghc Biz.Bild $@
- }
-
- function deps() {
- niv --sources-file $BIZ_ROOT/nix/sources.json $@
- }
-
- function ghci() {
- ghci -i$BIZ_ROOT -ghci-script "$BIZ_ROOT/.ghci"
- }
-
- function hero() {
- out="_bild/nix"
- export HERO_PORT=3000
- export HERO_NODE=$BIZ_ROOT/$out/Hero.Node/static
- export HERO_KEEP=$BIZ_ROOT/_keep
- export HERO_SKEY=$BIZ_ROOT/_skey
- b="runghc Biz.Bild"
- rg --files \
- | entr -rcs \
- "$b Hero.Host && $b Hero.Node && $out/Hero.Host/bin/mmc"
- }
-
- function lint() {
- alias lint=$BIZ_ROOT/Biz/lint.py
- }
-
- help
- '';
+ shellHook = ". ${./shellHook.sh}";
};
os = cfg: (nixos (args: lib.attrsets.recursiveUpdate cfg {
diff --git a/nix/shellHook.sh b/nix/shellHook.sh
new file mode 100644
index 0000000..035c450
--- /dev/null
+++ b/nix/shellHook.sh
@@ -0,0 +1,85 @@
+function help() {
+ echo ""
+ echo "bizdev" | figlet | lolcat
+ echo ""
+ echo " bild compile code"
+ echo " deps manage dependencies with niv"
+ echo " ghci start ghci with correct options"
+ echo " help show this message"
+ echo " hero compile and start a dev server for herocomics.app"
+ echo " lint auto-lint all changed files"
+ echo " push send a namespace to the cloud"
+ echo " ship lint, bild, and push one (or all) namespace(s)"
+}
+
+function bild() {
+ runghc Biz.Bild $@
+}
+
+function deps() {
+ niv --sources-file $BIZ_ROOT/nix/sources.json $@
+}
+
+function ghci() {
+ ghci -i$BIZ_ROOT -ghci-script "$BIZ_ROOT/.ghci"
+}
+
+function hero() {
+ out="_bild/nix"
+ export HERO_PORT=3000
+ export HERO_NODE=$BIZ_ROOT/$out/Hero.Node/static
+ export HERO_KEEP=$BIZ_ROOT/_keep
+ export HERO_SKEY=$BIZ_ROOT/_skey
+ b="runghc Biz.Bild"
+ rg --files \
+ | entr -rcs \
+ "$b Hero.Host && $b Hero.Node && $out/Hero.Host/bin/mmc"
+}
+
+function lint() {
+ alias lint=$BIZ_ROOT/Biz/lint.py
+}
+
+# TODO: convert to haskell
+function push() {
+ prefix=$(echo $PWD | sed -e "s|^$BIZ_ROOT/*||g" -e "s|/|.|g")
+ if [[ "$prefix" == "" ]]
+ then
+ target="$1"
+ else
+ target="$prefix.$1"
+ fi
+ what=$(realpath "$BIZ_ROOT/_bild/$target")
+ # hack: get the domain from the activation script. there does not seem
+ # to be a way to get it from nix-instantiate
+ where=$(rg -r '$2' -e '(domainname ")(.*)(")' "$what/activate")
+ nix copy --to ssh://root@$where $what
+ ssh root@$where $what/bin/switch-to-configuration switch
+ ssh root@$where nix-env --profile /nix/var/nix/profiles/system --set $what
+}
+
+# TODO: convert to haskell
+function ship() {
+ set -ex
+ $BIZ_ROOT/Biz/lint.py
+ stuff=(${1})
+ if [[ ${#stuff[@]} -eq 0 ]]
+ then
+ stuff=(
+ Biz.Cloud
+ Biz.Dev
+ Que.Prod
+ Hero.Prod
+ )
+ fi
+ for thing in ${stuff[@]}
+ do
+ bild $thing
+ done
+ for thing in ${stuff[@]}
+ do
+ push $thing
+ done
+}
+
+help