diff options
Diffstat (limited to 'nixpkgs/pkgs/by-name/zi/zitadel')
-rw-r--r-- | nixpkgs/pkgs/by-name/zi/zitadel/console-use-local-protobuf-plugins.patch | 21 | ||||
-rw-r--r-- | nixpkgs/pkgs/by-name/zi/zitadel/console.nix | 60 | ||||
-rw-r--r-- | nixpkgs/pkgs/by-name/zi/zitadel/package.json | 91 | ||||
-rw-r--r-- | nixpkgs/pkgs/by-name/zi/zitadel/package.nix | 153 |
4 files changed, 325 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/zi/zitadel/console-use-local-protobuf-plugins.patch b/nixpkgs/pkgs/by-name/zi/zitadel/console-use-local-protobuf-plugins.patch new file mode 100644 index 000000000000..4babb92b25f9 --- /dev/null +++ b/nixpkgs/pkgs/by-name/zi/zitadel/console-use-local-protobuf-plugins.patch @@ -0,0 +1,21 @@ +diff --git a/console/buf.gen.yaml b/console/buf.gen.yaml +index 1737c2ded..d6affa8bc 100644 +--- a/console/buf.gen.yaml ++++ b/console/buf.gen.yaml +@@ -3,12 +3,12 @@ version: v1 + managed: + enabled: true + plugins: +- - plugin: buf.build/protocolbuffers/js ++ - plugin: js + out: src/app/proto/generated + opt: import_style=commonjs,binary +- - plugin: buf.build/grpc/web ++ - plugin: grpc-web + out: src/app/proto/generated + opt: import_style=typescript,mode=grpcweb +- - plugin: buf.build/grpc-ecosystem/openapiv2 ++ - plugin: openapiv2 + out: src/app/proto/generated + opt: allow_delete_body +\ No newline at end of file diff --git a/nixpkgs/pkgs/by-name/zi/zitadel/console.nix b/nixpkgs/pkgs/by-name/zi/zitadel/console.nix new file mode 100644 index 000000000000..ffef4ca1d4e5 --- /dev/null +++ b/nixpkgs/pkgs/by-name/zi/zitadel/console.nix @@ -0,0 +1,60 @@ +{ generateProtobufCode +, version +, zitadelRepo +}: + +{ mkYarnPackage +, fetchYarnDeps +, lib + +, grpc-gateway +, protoc-gen-grpc-web +, protoc-gen-js +}: + +let + protobufGenerated = generateProtobufCode { + pname = "zitadel-console"; + nativeBuildInputs = [ + grpc-gateway + protoc-gen-grpc-web + protoc-gen-js + ]; + workDir = "console"; + bufArgs = "../proto --include-imports --include-wkt"; + outputPath = "src/app/proto"; + hash = "sha256-BBXFt4f2SQphr106sQ0eEL4Z2ooAI8fxXhu2rKqhjb4="; + }; +in +mkYarnPackage rec { + name = "zitadel-console"; + inherit version; + + src = "${zitadelRepo}/console"; + + packageJSON = ./package.json; + offlineCache = fetchYarnDeps { + yarnLock = "${src}/yarn.lock"; + hash = "sha256-cfo2WLSbfU8tYADjF7j9zTLNsboVThF6MUBrb49MrII="; + }; + + postPatch = '' + substituteInPlace src/styles.scss \ + --replace "/node_modules/flag-icons" "flag-icons" + + substituteInPlace angular.json \ + --replace "./node_modules/tinycolor2" "../../node_modules/tinycolor2" + ''; + + buildPhase = '' + mkdir deps/console/src/app/proto + cp -r ${protobufGenerated}/* deps/console/src/app/proto/ + yarn --offline build + ''; + + installPhase = '' + cp -r deps/console/dist/console $out + ''; + + doDist = false; +} diff --git a/nixpkgs/pkgs/by-name/zi/zitadel/package.json b/nixpkgs/pkgs/by-name/zi/zitadel/package.json new file mode 100644 index 000000000000..42dc0ef19d77 --- /dev/null +++ b/nixpkgs/pkgs/by-name/zi/zitadel/package.json @@ -0,0 +1,91 @@ +{ + "name": "console", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "node prebuild.development.js && ng serve", + "build": "ng build --configuration production --base-href=/ui/console/", + "prelint": "npm run generate", + "lint": "ng lint && prettier --check src", + "lint:fix": "prettier --write src", + "generate": "buf generate ../proto --include-imports --include-wkt" + }, + "private": true, + "dependencies": { + "@angular/animations": "^16.2.5", + "@angular/cdk": "^16.2.4", + "@angular/common": "^16.2.5", + "@angular/compiler": "^16.2.5", + "@angular/core": "^16.2.5", + "@angular/forms": "^16.2.5", + "@angular/material": "^16.2.4", + "@angular/material-moment-adapter": "^16.2.4", + "@angular/platform-browser": "^16.2.5", + "@angular/platform-browser-dynamic": "^16.2.5", + "@angular/router": "^16.2.5", + "@angular/service-worker": "^16.2.5", + "@ctrl/ngx-codemirror": "^6.1.0", + "@fortawesome/angular-fontawesome": "^0.13.0", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-brands-svg-icons": "^6.4.2", + "@grpc/grpc-js": "^1.9.3", + "@ngx-translate/core": "^15.0.0", + "angular-oauth2-oidc": "^15.0.1", + "angularx-qrcode": "^16.0.0", + "buffer": "^6.0.3", + "codemirror": "^5.65.8", + "cors": "^2.8.5", + "file-saver": "^2.0.5", + "flag-icons": "^6.7.0", + "google-proto-files": "^4.0.0", + "google-protobuf": "^3.21.2", + "grpc-web": "^1.4.1", + "i18n-iso-countries": "^7.6.0", + "libphonenumber-js": "^1.10.49", + "material-design-icons-iconfont": "^6.1.1", + "moment": "^2.29.4", + "ngx-color": "^9.0.0", + "opentype.js": "^1.3.4", + "rxjs": "~7.8.0", + "tinycolor2": "^1.6.0", + "tslib": "^2.6.2", + "uuid": "^9.0.0", + "zone.js": "~0.13.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.2.2", + "@angular-eslint/builder": "16.2.0", + "@angular-eslint/eslint-plugin": "16.2.0", + "@angular-eslint/eslint-plugin-template": "16.2.0", + "@angular-eslint/schematics": "16.2.0", + "@angular-eslint/template-parser": "16.2.0", + "@angular/cli": "^16.2.2", + "@angular/compiler-cli": "^16.2.5", + "@angular/language-service": "^16.2.5", + "@bufbuild/buf": "^1.23.1", + "@types/file-saver": "^2.0.7", + "@types/google-protobuf": "^3.15.3", + "@types/jasmine": "~4.3.6", + "@types/jasminewd2": "~2.0.10", + "@types/jsonwebtoken": "^9.0.5", + "@types/node": "^20.7.0", + "@types/opentype.js": "^1.3.4", + "@types/qrcode": "^1.5.2", + "@types/uuid": "^9.0.2", + "@typescript-eslint/eslint-plugin": "^5.59.11", + "@typescript-eslint/parser": "^5.60.1", + "codelyzer": "^6.0.2", + "eslint": "^8.50.0", + "jasmine-core": "~4.6.0", + "jasmine-spec-reporter": "~7.0.0", + "karma": "^6.4.2", + "karma-chrome-launcher": "^3.2.0", + "karma-coverage-istanbul-reporter": "^3.0.3", + "karma-jasmine": "^5.1.0", + "karma-jasmine-html-reporter": "^2.1.0", + "prettier": "^3.0.3", + "prettier-plugin-organize-imports": "^3.2.2", + "protractor": "~7.0.0", + "typescript": "^5.1.6" + } +} diff --git a/nixpkgs/pkgs/by-name/zi/zitadel/package.nix b/nixpkgs/pkgs/by-name/zi/zitadel/package.nix new file mode 100644 index 000000000000..14c9ff1a3ad8 --- /dev/null +++ b/nixpkgs/pkgs/by-name/zi/zitadel/package.nix @@ -0,0 +1,153 @@ +{ stdenv +, buildGoModule +, callPackage +, fetchFromGitHub +, lib + +, buf +, cacert +, grpc-gateway +, protoc-gen-go +, protoc-gen-go-grpc +, protoc-gen-validate +, sass +, statik +}: + +let + version = "2.42.10"; + zitadelRepo = fetchFromGitHub { + owner = "zitadel"; + repo = "zitadel"; + rev = "v${version}"; + hash = "sha256-Uv0iEIFkTdBAi0WDBQHf0ATs4L2FOU4NmiE9p1MHSa0="; + }; + goModulesHash = "sha256-thd1bhbPVedYd+Yq1IYYUJFr66AWRTzA3DceCXFTEQo="; + + buildZitadelProtocGen = name: + buildGoModule { + pname = "protoc-gen-${name}"; + inherit version; + + src = zitadelRepo; + + proxyVendor = true; + vendorHash = goModulesHash; + + buildPhase = '' + go install internal/protoc/protoc-gen-${name}/main.go + ''; + + postInstall = '' + mv $out/bin/main $out/bin/protoc-gen-${name} + ''; + }; + + protoc-gen-authoption = buildZitadelProtocGen "authoption"; + protoc-gen-zitadel = buildZitadelProtocGen "zitadel"; + + # Buf downloads dependencies from an external repo - there doesn't seem to + # really be any good way around it. We'll use a fixed-output derivation so it + # can download what it needs, and output the relevant generated code for use + # during the main build. + generateProtobufCode = + { pname + , nativeBuildInputs ? [ ] + , bufArgs ? "" + , workDir ? "." + , outputPath + , hash + }: + stdenv.mkDerivation { + name = "${pname}-buf-generated"; + + src = zitadelRepo; + patches = [ ./console-use-local-protobuf-plugins.patch ]; + + nativeBuildInputs = nativeBuildInputs ++ [ buf ]; + + buildPhase = '' + cd ${workDir} + export SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt" + HOME=$TMPDIR buf generate ${bufArgs} + ''; + + installPhase = '' + cp -r ${outputPath} $out + ''; + + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = hash; + }; + + protobufGenerated = generateProtobufCode { + pname = "zitadel"; + nativeBuildInputs = [ + grpc-gateway + protoc-gen-authoption + protoc-gen-go + protoc-gen-go-grpc + protoc-gen-validate + protoc-gen-zitadel + ]; + outputPath = ".artifacts"; + hash = "sha256-ntIKudNFBs7kHjK7cfzbOfDCA6J8uvJRUbCTa6afK/I="; + }; +in +buildGoModule rec { + name = "zitadel"; + inherit version; + + src = zitadelRepo; + + nativeBuildInputs = [ sass statik ]; + + proxyVendor = true; + vendorHash = goModulesHash; + ldflags = [ "-X 'github.com/zitadel/zitadel/cmd/build.version=${version}'" ]; + + # Adapted from Makefile in repo, with dependency fetching and protobuf codegen + # bits removed + preBuild = '' + mkdir -p pkg/grpc + cp -r ${protobufGenerated}/grpc/github.com/zitadel/zitadel/pkg/grpc/* pkg/grpc + mkdir -p openapi/v2/zitadel + cp -r ${protobufGenerated}/grpc/zitadel/ openapi/v2/zitadel + + go generate internal/api/ui/login/static/resources/generate.go + go generate internal/api/ui/login/statik/generate.go + go generate internal/notification/statik/generate.go + go generate internal/statik/generate.go + + mkdir -p docs/apis/assets + go run internal/api/assets/generator/asset_generator.go -directory=internal/api/assets/generator/ -assets=docs/apis/assets/assets.md + + cp -r ${passthru.console}/* internal/api/ui/console/static + ''; + + doCheck = false; + + installPhase = '' + mkdir -p $out/bin + install -Dm755 $GOPATH/bin/zitadel $out/bin/ + ''; + + passthru = { + console = callPackage + (import ./console.nix { + inherit generateProtobufCode version zitadelRepo; + }) + { }; + }; + + meta = with lib; { + description = "Identity and access management platform"; + homepage = "https://zitadel.com/"; + downloadPage = "https://github.com/zitadel/zitadel/releases"; + platforms = platforms.linux ++ platforms.darwin; + license = licenses.asl20; + sourceProvenance = [ sourceTypes.fromSource ]; + maintainers = with maintainers; [ Sorixelle ]; + }; +} |