Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
Nix
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586{ pkgs, ... }:{ name = "uwsgi"; meta = with pkgs.lib.maintainers; { maintainers = [ lnl7 ]; };
nodes.machine = { pkgs, ... }: { users.users.hello = { isSystemUser = true; group = "hello"; }; users.groups.hello = { };
services.uwsgi = { enable = true; plugins = [ "python3" "php" ]; capabilities = [ "CAP_NET_BIND_SERVICE" ]; instance.type = "emperor";
instance.vassals.hello = { type = "normal"; immediate-uid = "hello"; immediate-gid = "hello"; module = "wsgi:application"; http = ":80"; cap = "net_bind_service"; pythonPackages = self: [ self.flask ]; chdir = pkgs.writeTextDir "wsgi.py" '' from flask import Flask import subprocess application = Flask(__name__)
@application.route("/") def hello(): return "Hello, World!"
@application.route("/whoami") def whoami(): whoami = "${pkgs.coreutils}/bin/whoami" proc = subprocess.run(whoami, capture_output=True) return proc.stdout.decode().strip() ''; };
instance.vassals.php = { type = "normal"; master = true; workers = 2; http-socket = ":8000"; http-socket-modifier1 = 14; php-index = "index.php"; php-docroot = pkgs.writeTextDir "index.php" '' <?php echo "Hello World\n"; ?> ''; }; }; };
testScript = '' machine.wait_for_unit("multi-user.target") machine.wait_for_unit("uwsgi.service")
with subtest("uWSGI has started"): machine.wait_for_unit("uwsgi.service")
with subtest("Vassal can bind on port <1024"): machine.wait_for_open_port(80) hello = machine.succeed("curl -f http://machine").strip() assert "Hello, World!" in hello, f"Excepted 'Hello, World!', got '{hello}'"
with subtest("Vassal is running as dedicated user"): username = machine.succeed("curl -f http://machine/whoami").strip() assert username == "hello", f"Excepted 'hello', got '{username}'"
with subtest("PHP plugin is working"): machine.wait_for_open_port(8000) assert "Hello World" in machine.succeed("curl -fv http://machine:8000") '';}