Unverified Commit 6f0cbfb3 authored by nixpkgs-ci[bot]'s avatar nixpkgs-ci[bot] Committed by GitHub
Browse files

Merge master into staging-nixos

parents fb4ce19a a5a7cf16
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -15559,6 +15559,11 @@
    github = "ljxfstorm";
    githubId = 7077478;
  };
  lks = {
    name = "Lukas";
    github = "1H0";
    githubId = 37246258;
  };
  llakala = {
    email = "elevenaka11@gmail.com";
    github = "llakala";
+37 −31
Original line number Diff line number Diff line
{ lib, ... }:
let
  domain = "docs.local";
  oidcDomain = "127.0.0.1:8080";
  s3Domain = "127.0.0.1:9000";
  oidcAddr = "127.0.0.1:8080";
  s3Addr = "127.0.0.1:9000";

  minioAccessKey = "a8dff633d164068418a5";
  minioSecretKey = "d546ea5f9c9bfdcf83755a7c09f2f7fb";
  garageAccessKey = "GKaaaaaaaaaaaaaaaaaaaaaaaa";
  garageSecretKey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
in

{
@@ -24,7 +24,6 @@ in

      environment.systemPackages = with pkgs; [
        jq
        minio-client
      ];

      services.lasuite-docs = {
@@ -34,17 +33,17 @@ in
        postgresql.createLocally = true;

        inherit domain;
        s3Url = "http://${s3Domain}/lasuite-docs";
        s3Url = "http://${s3Addr}/lasuite-docs";

        settings = {
          DJANGO_SECRET_KEY_FILE = pkgs.writeText "django-secret-file" ''
            8540db59c03943d48c3ed1a0f96ce3b560e0f45274f120f7ee4dace3cc366a6b
          '';

          OIDC_OP_JWKS_ENDPOINT = "http://${oidcDomain}/dex/keys";
          OIDC_OP_AUTHORIZATION_ENDPOINT = "http://${oidcDomain}/dex/auth/mock";
          OIDC_OP_TOKEN_ENDPOINT = "http://${oidcDomain}/dex/token";
          OIDC_OP_USER_ENDPOINT = "http://${oidcDomain}/dex/userinfo";
          OIDC_OP_JWKS_ENDPOINT = "http://${oidcAddr}/dex/keys";
          OIDC_OP_AUTHORIZATION_ENDPOINT = "http://${oidcAddr}/dex/auth/mock";
          OIDC_OP_TOKEN_ENDPOINT = "http://${oidcAddr}/dex/token";
          OIDC_OP_USER_ENDPOINT = "http://${oidcAddr}/dex/userinfo";
          OIDC_RP_CLIENT_ID = "lasuite-docs";
          OIDC_RP_SIGN_ALGO = "RS256";
          OIDC_RP_SCOPES = "openid email";
@@ -54,9 +53,9 @@ in
          LOGIN_REDIRECT_URL_FAILURE = "http://${domain}";
          LOGOUT_REDIRECT_URL = "http://${domain}";

          AWS_S3_ENDPOINT_URL = "http://${s3Domain}";
          AWS_S3_ACCESS_KEY_ID = minioAccessKey;
          AWS_S3_SECRET_ACCESS_KEY = minioSecretKey;
          AWS_S3_ENDPOINT_URL = "http://${s3Addr}";
          AWS_S3_ACCESS_KEY_ID = garageAccessKey;
          AWS_S3_SECRET_ACCESS_KEY = garageSecretKey;
          AWS_STORAGE_BUCKET_NAME = "lasuite-docs";
          MEDIA_BASE_URL = "http://${domain}";

@@ -72,7 +71,7 @@ in
      services.dex = {
        enable = true;
        settings = {
          issuer = "http://${oidcDomain}/dex";
          issuer = "http://${oidcAddr}/dex";
          storage = {
            type = "postgres";
            config.host = "/var/run/postgresql";
@@ -101,25 +100,27 @@ in
        };
      };

      services.minio = {
      services.garage = {
        enable = true;
        rootCredentialsFile = "/etc/minio/minio-root-credentials";
        package = pkgs.garage_2;
        settings = {
          rpc_bind_addr = "127.0.0.1:3901";
          rpc_public_addr = "127.0.0.1:3901";
          rpc_secret = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
          replication_factor = 1;

          s3_api = {
            s3_region = "garage";
            api_bind_addr = s3Addr;
          };
        };
      };

      environment.etc."dex/lasuite-docs" = {
        mode = "0400";
        user = "dex";
        text = "lasuitedocsclientsecret";
      };

      environment.etc."minio/minio-root-credentials" = {
        mode = "0400";
        text = ''
          MINIO_ROOT_USER=${minioAccessKey}
          MINIO_ROOT_PASSWORD=${minioSecretKey}
        '';
      };

      services.postgresql = {
        enable = true;
        ensureDatabases = [ "dex" ];
@@ -135,25 +136,30 @@ in
  testScript = ''
    with subtest("Wait for units to start"):
      machine.wait_for_unit("dex.service")
      machine.wait_for_unit("minio.service")
      machine.wait_for_unit("garage.service")
      machine.wait_for_unit("lasuite-docs.service")
      machine.wait_for_unit("lasuite-docs-celery.service")
      machine.wait_for_unit("lasuite-docs-collaboration-server.service")

    with subtest("Create S3 bucket"):
      machine.succeed("mc alias set minio http://${s3Domain} ${minioAccessKey} ${minioSecretKey} --api s3v4")
      machine.succeed("mc mb lasuite-docs")
      machine.wait_for_open_port(3901)
      garage_node_id = machine.succeed("garage status | tail -n1 | awk '{ print $1 }'")
      machine.succeed(f"garage layout assign -c 100MB -z garage {garage_node_id}")
      machine.succeed("garage layout apply --version 1")
      machine.succeed("garage key import ${garageAccessKey} ${garageSecretKey} --yes")
      machine.succeed("garage bucket create lasuite-docs")
      machine.succeed("garage bucket allow --read --write --owner lasuite-docs --key ${garageAccessKey}")

    with subtest("Wait for web servers to start"):
      machine.wait_until_succeeds("curl -fs 'http://${domain}/api/v1.0/authenticate/'", timeout=120)
      machine.wait_until_succeeds("curl -fs '${oidcDomain}/dex/auth/mock?client_id=lasuite-docs&response_type=code&redirect_uri=http://${domain}/api/v1.0/callback/&scope=openid'", timeout=120)
      machine.wait_until_succeeds("curl -fs '${oidcAddr}/dex/auth/mock?client_id=lasuite-docs&response_type=code&redirect_uri=http://${domain}/api/v1.0/callback/&scope=openid'", timeout=120)

    with subtest("Login"):
      state, nonce = machine.succeed("curl -fs -c cjar 'http://${domain}/api/v1.0/authenticate/' -w '%{redirect_url}' | sed -n 's/.*state=\\(.*\\)&nonce=\\(.*\\)/\\1 \\2/p'").strip().split(' ')

      oidc_state = machine.succeed(f"curl -fs '${oidcDomain}/dex/auth/mock?client_id=lasuite-docs&response_type=code&redirect_uri=http://${domain}/api/v1.0/callback/&scope=openid+email&state={state}&nonce={nonce}' | sed -n 's/.*state=\\(.*\\)\">.*/\\1/p'").strip()
      oidc_state = machine.succeed(f"curl -fs '${oidcAddr}/dex/auth/mock?client_id=lasuite-docs&response_type=code&redirect_uri=http://${domain}/api/v1.0/callback/&scope=openid+email&state={state}&nonce={nonce}' | sed -n 's/.*state=\\(.*\\)\">.*/\\1/p'").strip()

      code = machine.succeed(f"curl -fs '${oidcDomain}/dex/auth/mock/login?back=&state={oidc_state}' -d 'login=admin&password=password' -w '%{{redirect_url}}' | sed -n 's/.*code=\\(.*\\)&.*/\\1/p'").strip()
      code = machine.succeed(f"curl -fs '${oidcAddr}/dex/auth/mock/login?back=&state={oidc_state}' -d 'login=admin&password=password' -w '%{{redirect_url}}' | sed -n 's/.*code=\\(.*\\)&.*/\\1/p'").strip()
      print(f"Got approval code {code}")

      machine.succeed(f"curl -fs -c cjar -b cjar 'http://${domain}/api/v1.0/callback/?code={code}&state={state}'")
+2 −2
Original line number Diff line number Diff line
@@ -6,8 +6,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
  mktplcRef = {
    name = "vscode-wakatime";
    publisher = "WakaTime";
    version = "30.0.4";
    hash = "sha256-5y7LTkiR7dnSHbL80pqsTb57rnLyEbIrHT4xzseVj84=";
    version = "30.0.5";
    hash = "sha256-8K8EgdHOGL3sYW5j8hpfbZFifbInMNWEYe60F1UGsj4=";
  };

  meta = {
+2 −0
Original line number Diff line number Diff line
@@ -2413,6 +2413,8 @@ let

      jackmacwindows.craftos-pc = callPackage ./jackmacwindows.craftos-pc { };

      jakestanger.corn = callPackage ./jakestanger.corn { };

      james-yu.latex-workshop = callPackage ./james-yu.latex-workshop { };

      jamesyang999.vscode-emacs-minimum = buildVscodeMarketplaceExtension {
+22 −0
Original line number Diff line number Diff line
{
  vscode-utils,
  lib,
}:

vscode-utils.buildVscodeMarketplaceExtension {
  mktplcRef = {
    name = "corn";
    publisher = "JakeStanger";
    version = "0.1.0";
    hash = "sha256-6c9lxwJDVUuT3VKAbIohd0mRHFbfmfDgKfYJ+XET5hQ=";
  };

  meta = {
    changelog = "https://marketplace.visualstudio.com/items/JakeStanger.corn/changelog";
    description = "Visual Studio Code extension for Cornlang";
    downloadPage = "https://marketplace.visualstudio.com/items?itemName=JakeStanger.corn";
    homepage = "https://github.com/corn-config/corn-vscode";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ drupol ];
  };
}
Loading