Commit graph

1585 commits

Author SHA1 Message Date
Vincent Ambo
1747df418e chore(tazblog): Format source files with ormolu
Ormolu's formatting is quite annoying (it uses a lot of unnecessary
vertical space and doesn't align elements), but I can't be bothered to
do manual formatting - especially because whatever formatting
haskell-mode in Emacs produces seems to depend on an opaque state
machine or something.
2019-08-25 20:15:53 +01:00
Vincent Ambo
2fdc872228 feat(build): Add Terraform from unstable channel 2019-08-25 17:55:08 +01:00
Vincent Ambo
155f17173b chore(gcp): Enable Cloud DNS service 2019-08-25 17:47:34 +01:00
Vincent Ambo
d3f8dd15f3 fix(gemma): Almost fix Gemma build by porting an old Elm
This pulls in an old version of Elm from NixOS 17.09 which can still
build the Elm code in Gemma.

However, the Common Lisp build is now broken in some other way.
2019-08-23 15:28:23 +01:00
Vincent Ambo
31e83b33cc chore(k8s): More tazblog replicas 2019-08-23 14:13:13 +01:00
Vincent Ambo
be074c6085 refactor(tazblog): Move blog configuration to envvars
The port and resource directory are now specified via environment
variables and a wrapper script is created by Nix that sets the
resource path and so on correctly.
2019-08-23 12:03:17 +01:00
Vincent Ambo
fb930e4db7 fix(tazblog): Remove debug trace 2019-08-23 11:42:23 +01:00
Vincent Ambo
4f88851971 fix(blog_cli): Quote JSON output for post dates 2019-08-23 11:24:03 +01:00
Vincent Ambo
57059fec2b feat(blog_cli): Add flag to set post date and serialise as date only 2019-08-23 10:57:15 +01:00
Vincent Ambo
bd47122afb chore(blog): Minor changes to integrate DNS based backend 2019-08-22 18:58:11 +01:00
Vincent Ambo
c5ef3e01b2 feat(tazblog): Implement entry fetching from DNS
Not all error cases are properly handled yet, stay tuned.
2019-08-22 18:57:49 +01:00
Vincent Ambo
f298bdd183 feat(tazblog): Add a Nix shell expression that includes GHC with deps 2019-08-21 12:17:03 +01:00
Vincent Ambo
008be5c2e1 refactor(tazblog): Directly instantiate Resolver when launching
Caching behaviour is tied to the resolver.
2019-08-21 11:07:25 +01:00
Vincent Ambo
bf2efeba2d chore(tazblog): Introduce dependency on 'dns' 2019-08-21 11:07:09 +01:00
Vincent Ambo
13b0204c03 chore(tazblog): Introduce dependency on 'cache' 2019-08-20 07:09:16 +01:00
Vincent Ambo
b856648127 feat(tools): Introduce ormolu for formatting Haskell code 2019-08-20 00:26:54 +01:00
Vincent Ambo
11fcf62297 chore(tazblog): Replace BlogDB with stubs for DNS-based storage
Removes acid-state specific code and the former BlogDB module, in its
stead the new BlogStorage module contains stubs for the functions that
will be filled in with DNS-based storage.

This code is unformatted and will not currently serve a working blog.
2019-08-20 00:17:23 +01:00
Vincent Ambo
1d5b53abf8 chore(tools/blog_cli): Shorten metadata key names
Every character counts because I want to keep metadata below 255
bytes.
2019-08-19 19:11:32 +01:00
Vincent Ambo
d5710db900 refactor(tools/blog_cli): More sensible chunk encoding as records
Instead of many rrdatas in one record, make many records!
2019-08-19 17:51:29 +01:00
Vincent Ambo
2a16740445 feat(tools): Add a horrifying tool to write blog posts into DNS 2019-08-19 16:59:55 +01:00
Vincent Ambo
28a9c01d36 feat(infra/k8s): Add in-cluster tazblog deployment via Nixery
First deployment actually using a Nixery image and `gitHEAD`.

This does not actually serve a working blog for various reasons. The
current storage mechanism (acid-state) isn't really appropriate
anymore and I'll need to change that soon.
2019-08-19 03:10:53 +01:00
Vincent Ambo
a4ef595fef chore(infra/k8s): Bump Nixery image to Cachix-enabled one 2019-08-19 02:43:42 +01:00
Vincent Ambo
2e688c18a5 feat(third_party): Add nixery with Cachix configuration 2019-08-19 02:40:14 +01:00
Vincent Ambo
cb810687d5 fix(infra/k8s): Always pull a Nixery image 2019-08-16 19:57:10 +01:00
Vincent Ambo
dd35be7add feat(infra/k8s): Deploy Nixery instance to cluster 2019-08-16 18:20:20 +01:00
Vincent Ambo
ba06317836 feat(infra/gcp): Add Terraform configuration for GKE & friends
Sets up Terraform itself, a GKE cluster, a storage bucket and all the
other little things required to get the basics running.
2019-08-16 16:52:06 +01:00
Vincent Ambo
27036e18f5 feat(tools): Add kontemplate 2019-08-16 16:50:50 +01:00
Vincent Ambo
b652ea2f03 feat(tools): Add Terraform 0.12 to local tools
This is pre-configured with the GCP provider.
2019-08-15 16:28:42 +01:00
Vincent Ambo
38493b83ea chore(tools): Remove bazel & ghc 2019-08-15 16:15:59 +01:00
Vincent Ambo
128875b501 chore: Remove remaining Bazel-related files 2019-08-15 16:11:30 +01:00
Vincent Ambo
a20daf8726 chore(nix): Remove overridden GHC
We're not going down the Bazel route here, so this is not going to be
necessary.
2019-08-15 16:07:28 +01:00
Vincent Ambo
77f0b5021d chore(services/gemma): Mark package as broken 2019-08-15 16:07:11 +01:00
Vincent Ambo
f217564a2d chore: Add very basic .gitignore 2019-07-04 16:10:13 +01:00
Vincent Ambo
e039a95de6 feat(tazblog): Add Bazel build configuration
Adds a build configuration using rules_haskell and rules_nixpkgs with
all dependencies coming from the centrally configured GHC in the
project root.
2019-07-04 16:07:59 +01:00
Vincent Ambo
fe243d32fe feat(direnv): Add REPO_ROOT variable in workspace
Makes it quick & easy to do things from the root.
2019-07-04 16:05:32 +01:00
Vincent Ambo
407a65b9ba refactor(tazblog): Move required GHC extensions into source
Necessary because Cabal is going away.
2019-07-04 16:05:14 +01:00
Vincent Ambo
d26cf3d806 fix(build): Work around rules_nixpkgs repository setup
Specifying a local repository from a Nix file is expected to be
referencing an external nixpkgs source.

However, in this monorepo setup the root of the repository itself is
the Nix package set and a workaround in the `external` folder is
required to import it into Bazel.
2019-07-04 15:59:42 +01:00
Vincent Ambo
81a0a96225 fix(bazel): Always use Haskell toolchain from Nix 2019-07-04 15:57:29 +01:00
Vincent Ambo
27c3e77d2f feat(tools): Add custom GHC with dependencies to env 2019-07-04 15:57:12 +01:00
Vincent Ambo
6fbdf41b05 feat(build): Introduce pre-packaged GHC with dependencies via Nix
This uses the Nix infrastructure's Haskell setup to create a GHC
derivation that comes with all required Haskell packages, fetched &
built via Nix.

Downstream packages that want to make use of Haskell dependencies need
them to be added to this list.
2019-07-04 15:55:13 +01:00
Vincent Ambo
ca549e4edc fix(bazel): Ensure that CC toolchain from Nix is used 2019-07-04 15:54:53 +01:00
Vincent Ambo
0bc731ee1b feat(build): Add WORKSPACE configuration for Bazel
This sets up Haskell & Nix rules in the workspace.
2019-07-04 11:19:40 +01:00
Vincent Ambo
64275e446e feat(third_party/bazel): Check in rules_nixpkgs from Tweag 2019-07-04 11:18:37 +01:00
Vincent Ambo
f723b8b878 feat(third_party/bazel): Check in rules_haskell from Tweag 2019-07-04 11:18:12 +01:00
Vincent Ambo
2eb1dc26e4 feat(tools): Add symlinks for bazel & stylish-haskell 2019-07-04 11:17:34 +01:00
Vincent Ambo
2b31921c3e fix(nix): Ensure package set is callable with/without args
When instantiating a Nix package via Bazel, the package set is called
with an empty map as the argument. From the Nix REPL or the dispatch
script, however, the package set is called without arguments.

This change adds a catch-all optional argument in the package set
which ensures that both use-cases are supported (similar to what
nixpkgs itself does).
2019-07-04 11:15:59 +01:00
Vincent Ambo
af7cbf64e5 feat(dotenv): Set NIX_PATH for entire workspace 2019-07-04 11:15:31 +01:00
Vincent Ambo
b2f40b6ed8 fix(tools): Ensure dispatch script passes arguments correctly 2019-07-04 11:15:15 +01:00
Vincent Ambo
892493a478 feat(tools): Add dispatcher script to transparently access tools
Initial version of tool provider via Nix. This requires two separate
steps for adding a new tool:

1. New symlink in tools/bin to point at the dispatch script.
2. Mapping of tool to Nix package set attribute in dispatch script.
2019-07-02 16:40:51 +01:00
Vincent Ambo
c31a0b552b feat(git-appraise): Add Nix build configuration 2019-07-02 14:39:49 +01:00