# 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; }; }