1{
2 name = "pixelfed-standard";
3 meta.maintainers = [ ];
4
5 nodes = {
6 server =
7 { pkgs, ... }:
8 {
9 services.pixelfed = {
10 enable = true;
11 domain = "pixelfed.local";
12 # Configure NGINX.
13 nginx = { };
14 secretFile = (
15 pkgs.writeText "secrets.env" ''
16 # Snakeoil secret, can be any random 32-chars secret via CSPRNG.
17 APP_KEY=adKK9EcY8Hcj3PLU7rzG9rJ6KKTOtYfA
18 ''
19 );
20 settings."FORCE_HTTPS_URLS" = false;
21 };
22 };
23 };
24
25 testScript = ''
26 # Wait for Pixelfed PHP pool
27 server.wait_for_unit("phpfpm-pixelfed.service")
28 # Wait for NGINX
29 server.wait_for_unit("nginx.service")
30 # Wait for HTTP port
31 server.wait_for_open_port(80)
32 # Access the homepage.
33 server.succeed("curl -H 'Host: pixelfed.local' http://localhost")
34 # Create an account
35 server.succeed("pixelfed-manage user:create --name=test --username=test --email=test@test.com --password=test")
36 # Create a OAuth token.
37 # TODO: figure out how to use it to send a image/toot
38 # server.succeed("pixelfed-manage passport:client --personal")
39 # server.succeed("curl -H 'Host: pixefed.local' -H 'Accept: application/json' -H 'Authorization: Bearer secret' -F'status'='test' http://localhost/api/v1/statuses")
40 '';
41}