aboutsummaryrefslogtreecommitdiff
path: root/site.nix
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2020-07-16 15:32:30 -0400
committerGitHub <noreply@github.com>2020-07-16 15:32:30 -0400
commit385d25c9f96c0acd5d932488e3bd0ed36ceb4dd7 (patch)
treeaf789f7250519b23038a7e5ea0ae7f4f4c1ffdfc /site.nix
parent449e934246c82d90dd0aac2644d67f928befeeb4 (diff)
downloadxesite-385d25c9f96c0acd5d932488e3bd0ed36ceb4dd7.tar.xz
xesite-385d25c9f96c0acd5d932488e3bd0ed36ceb4dd7.zip
Rewrite site backend in Rust (#178)
* add shell.nix changes for Rust #176 * set up base crate layout * add first set of dependencies * start adding basic app modules * start html templates * serve index page * add contact and feeds pages * add resume rendering support * resume cleanups * get signalboost page working * rewrite config to be in dhall * more work * basic generic post loading * more tests * initial blog index support * fix routing? * render blogposts * X-Clacks-Overhead * split blog handlers into blog.rs * gallery index * gallery posts * fix hashtags * remove instantpage (it messes up the metrics) * talk support + prometheus * Create rust.yml * Update rust.yml * Update codeql-analysis.yml * add jsonfeed library * jsonfeed support * rss/atom * go mod tidy * atom: add posted date * rss: add publishing date * nix: build rust program * rip out go code * rip out go templates * prepare for serving in docker * create kubernetes deployment * create automagic deployment * build docker images on non-master * more fixes * fix timestamps * fix RSS/Atom/JSONFeed validation errors * add go vanity import redirecting * templates/header: remove this * atom feed: fixes * fix? * fix?? * fix rust tests * Update rust.yml * automatically show snow during the winter * fix dates * show commit link in footer * sitemap support * fix compiler warning * start basic patreon client * integrate kankyo * fix patreon client * add patrons page * remove this * handle patron errors better * fix build * clean up deploy * sort envvars for deploy * remove deps.nix * shell.nix: remove go * update README * fix envvars for tests * nice * blog: add rewrite in rust post * blog/site-update: more words
Diffstat (limited to 'site.nix')
-rw-r--r--site.nix53
1 files changed, 38 insertions, 15 deletions
diff --git a/site.nix b/site.nix
index 4dcaa2c..06876b7 100644
--- a/site.nix
+++ b/site.nix
@@ -1,28 +1,51 @@
-{ pkgs ? import (import ./nix/sources.nix).nixpkgs { } }:
+{ sources ? import ./nix/sources.nix, pkgs ? import sources.nixpkgs { } }:
with pkgs;
-assert lib.versionAtLeast go.version "1.13";
+let
+ srcNoTarget = dir:
+ builtins.filterSource
+ (path: type: type != "directory" || builtins.baseNameOf path != "target")
+ dir;
-buildGoPackage rec {
- name = "christinewebsite-HEAD";
- version = "latest";
- goPackagePath = "christine.website";
- src = ./.;
- goDeps = ./nix/deps.nix;
- allowGoReference = false;
+ naersk = pkgs.callPackage sources.naersk { };
+ dhallpkgs = import sources.easy-dhall-nix { inherit pkgs; };
+ src = srcNoTarget ./.;
- preBuild = ''
- export CGO_ENABLED=0
- buildFlagsArray+=(-pkgdir "$TMPDIR")
- '';
+ xesite = naersk.buildPackage {
+ inherit src;
+ buildInputs = [ pkg-config openssl git ];
+ remapPathPrefix = true;
+ };
+
+ config = stdenv.mkDerivation {
+ pname = "xesite-config";
+ version = "HEAD";
+ buildInputs = [ dhallpkgs.dhall-simple ];
+
+ phases = "installPhase";
+
+ installPhase = ''
+ cd ${src}
+ dhall resolve < ${src}/config.dhall >> $out
+ '';
+ };
- postInstall = ''
+in pkgs.stdenv.mkDerivation {
+ inherit (xesite) name;
+ inherit src;
+ phases = "installPhase";
+
+ installPhase = ''
+ mkdir -p $out $out/bin
+
+ cp -rf ${config} $out/config.dhall
cp -rf $src/blog $out/blog
cp -rf $src/css $out/css
cp -rf $src/gallery $out/gallery
cp -rf $src/signalboost.dhall $out/signalboost.dhall
cp -rf $src/static $out/static
cp -rf $src/talks $out/talks
- cp -rf $src/templates $out/templates
+
+ cp -rf ${xesite}/bin/xesite $out/bin/xesite
'';
}