let nixpkgsOptions = {}; pkgs = (import (fetchTarball "https://github.com/NixOS/nixpkgs-channels/archive/nixos-19.03.tar.gz") nixpkgsOptions); pkgs1803 = (import (fetchTarball "https://github.com/NixOS/nixpkgs-channels/archive/nixos-18.03.tar.gz") nixpkgsOptions); presets = { base = (import ./presets/base.nix); kvm = (import ./presets/kvm.nix); }; nginxPresets = { php = (import ./presets/nginx/php.nix); cphpApplication = (import ./presets/nginx/cphp-application.nix); }; in { network = { inherit pkgs; description = "Cryto"; }; "machine-haless-03.cryto.net" = { pkgs, lib, config, ... }@args: { system.stateVersion = "19.03"; imports = [ presets.base presets.kvm ./hardware-configurations/machine-haless-03.nix ]; deployment.healthChecks.http = [ { scheme = "http"; port = 80; path = "/"; host = "todo.cryto.net"; description = "todo.cryto.net is up"; } { scheme = "http"; port = 80; path = "/"; host = "books.cryto.net"; description = "books.cryto.net is up"; } { scheme = "http"; port = 80; path = "/"; host = "learn.cryto.net"; description = "learn.cryto.net is up"; } { scheme = "http"; port = 80; path = "/"; host = "vps-list.cryto.net"; description = "vps-list.cryto.net is up"; } ]; networking.firewall.allowedTCPPorts = [ 80 ]; services.nginx = { enable = true; virtualHosts = { "haless.cryto.net" = { locations."/shadow" = { alias = ./sources/shadow-generator; }; locations."/knex-mirror" = { alias = ./sources/knex-mirror; }; }; "books.cryto.net" = lib.mkMerge [ (nginxPresets.php args) /* Temporary hack until I can figure out the mkMerge evaluation order issue */ { root = pkgs.stdenv.mkDerivation { name = "cryto-books"; src = ./sources/cryto-books; installPhase = '' mkdir -p $out/ cp -r $src/* $out/ cp ${../private/cryto-books/credentials.php} $out/credentials.php ''; }; } ]; "todo.cryto.net" = lib.mkMerge [ (nginxPresets.php args) /* Temporary hack until I can figure out the mkMerge evaluation order issue */ (nginxPresets.cphpApplication (pkgs.stdenv.mkDerivation { name = "cryto-todo"; src = ./sources/cryto-todo; installPhase = '' mkdir -p $out/public_html cp -r $src/* $out/public_html cp ${../private/cryto-todo/config.json} $out/config.json ''; })) ]; "learn.cryto.net" = lib.mkMerge [ (nginxPresets.php args) /* Temporary hack until I can figure out the mkMerge evaluation order issue */ (nginxPresets.cphpApplication (pkgs.stdenv.mkDerivation { name = "cryto-learn"; src = ./sources/cryto-learn; installPhase = '' mkdir -p $out/public_html cp -r $src/* $out/public_html cp ${../private/cryto-learn/config.json} $out/config.json ''; })) ]; "vps-list.cryto.net" = lib.mkMerge [ (nginxPresets.php args) /* Temporary hack until I can figure out the mkMerge evaluation order issue */ (nginxPresets.cphpApplication (pkgs.stdenv.mkDerivation { name = "vps-list"; src = ./sources/vps-list; installPhase = '' mkdir -p $out/public_html mkdir -p $out/public_html/cphp cp -r $src/* $out/public_html cp ${../private/vps-list/config.php} $out/public_html/cphp/config.php ''; })) ]; }; }; services.mysql = { enable = true; package = pkgs.mysql55; }; services.phpfpm = { extraConfig = '' log_level = notice ''; phpPackage = pkgs1803.php56; pools = { main = { listen = "/var/run/phpfpm-main.sock"; extraConfig = '' user = nobody listen.owner = nginx listen.group = nginx listen.mode = 0660 pm = dynamic pm.max_children = 75 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20 pm.max_requests = 500 catch_workers_output = yes ''; }; }; }; }; }