diff options
Diffstat (limited to 'nix')
-rw-r--r-- | nix/build.nix | 51 | ||||
-rw-r--r-- | nix/shellHook.sh | 85 |
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 |