haccfiles/services/wink.nix

53 lines
1.4 KiB
Nix
Raw Normal View History

# for documentation on how this container works, have a look at
# https://wiki.infra4future.de/books/voc-infra/page/wink-65b
{ pkgs, config, ...}:
{
containers.wink = {
autoStart = true;
privateNetwork = true;
hostAddress = "192.168.100.10";
localAddress = "192.168.100.11";
# expose the wink database for easier backups / migrations
bindMounts."/var/lib/wink/db" = {
hostPath = "/var/lib/wink-db";
isReadOnly = false;
};
config = {pkgs, config, ...}: {
networking.firewall.allowedTCPPorts = [ 3000 ];
environment.systemPackages = [ pkgs.wink pkgs.v8 ];
systemd.services.wink = {
enable = true;
description = "Wo ist meine Winkekatze?";
wantedBy = [ "multi-user.target" ];
serviceConfig.type = "simple";
environment.HOME = "/var/lib/wink/home";
path = [ pkgs.wink pkgs.v8 ];
script = ''
mkdir -p /var/lib/wink/home
cd /var/lib/wink
cp -r ${pkgs.wink.outPath}/* .
if [ ! -f database.exists ]
then
rails-wrapped db:migrate db:seed RAILS_ENV=development
touch database.exists
fi
rails-wrapped server -b [::] -p 3000
'';
};
};
};
services.nginx.virtualHosts."wink.hacc.space" = {
locations."/".proxyPass = "http://${config.containers.wink.localAddress}:3000";
forceSSL = true;
enableACME = true;
};
}