Compare commits

..

No commits in common. "v1.8.4-sc1" and "v1.7.32-sc1" have entirely different histories.

31 changed files with 39 additions and 445 deletions

1
.gitignore vendored
View file

@ -1,4 +1,3 @@
release.mk
/release
/local-pkgbuild
bom.lock

View file

@ -1,6 +1,5 @@
.PHONY: all setup regenerate-i18n reskindex web desktop-common linux debian rpm pacman local-pkgbuild local-pkgbuild-install windows windows-portable
.PHONY: web-release debian-release rpm-release pacman-release windows-setup-release windows-unpacked-release windows-portable-release windows-release
.PHONY: macos-common macos macos-mas macos-release macos-mas-release icns
.PHONY: all setup regenerate-i18n reskindex web desktop-common linux debian pacman local-pkgbuild local-pkgbuild-install windows windows-portable
.PHONY: web-release debian-release pacman-release windows-setup-release windows-unpacked-release windows-portable-release windows-release
.PHONY: clean
CFGDIR ?= configs/sc
@ -20,7 +19,6 @@ OUT_WEB := $(WEB_OUT)/$(WEB_APP_NAME)-$(WEB_OUT_DIST_VERSION).tar.gz
DESKTOP_OUT := element-desktop/dist
OUT_DEB64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)_$(VERSION)_amd64.deb
OUT_RPM64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)-$(VERSION).x86_64.rpm
OUT_PAC64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)-$(VERSION).pacman
OUT_APPIMAGE64 := $(DESKTOP_OUT)/$(PRODUCT_NAME)-$(VERSION).AppImage
OUT_TARXZ64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)-$(VERSION).tar.xz
@ -29,34 +27,17 @@ OUT_WIN64_PORTABLE := $(DESKTOP_OUT)/$(PRODUCT_NAME)\ $(VERSION).exe
OUT_WIN64_BETTER_NAME := $(PRODUCT_NAME)_Setup_v$(VERSION).exe
OUT_WIN64_UNPACKED_BETTER_NAME := $(PRODUCT_NAME)_win-unpacked_v$(VERSION).zip
OUT_WIN64_PORTABLE_BETTER_NAME := $(PRODUCT_NAME)_win-portable_v$(VERSION)
OUT_MACOS := $(DESKTOP_OUT)/$(PRODUCT_NAME)-$(VERSION)-universal.dmg
OUT_MACOS_MAS := $(DESKTOP_OUT)/mas-universal/$(PRODUCT_NAME).app
OUT_MACOS := $(DESKTOP_OUT)/$(PRODUCT_NAME)-$(VERSION).dmg
RELEASE_DIR := release
CURRENT_RELEASE_DIR := $(RELEASE_DIR)/$(VERSION)
# macOS Codesigning
CSC_IDENTITY_AUTO_DISCOVERY ?= false
NOTARIZE_APPLE_ID ?=
CSC_NAME ?=
-include release.mk
setup:
if [ ! -L "element-desktop/webapp" ]; then ./setup.sh; fi
element-desktop/build/SchildiChat.xcassets/SchildiChat.iconset: $(wildcard element-desktop/build/SchildiChat.xcassets/SchildiChat.iconset/*)
element-desktop/build/icon.icns: element-desktop/build/SchildiChat.xcassets/SchildiChat.iconset
iconutil -c icns -o $@ $<
element-desktop/build/SchildiChat.xcassets/SchildiChatDMG.iconset: $(wildcard element-desktop/build/SchildiChat.xcassets/SchildiChatDMG.iconset/*)
element-desktop/build/dmg.icns: element-desktop/build/SchildiChat.xcassets/SchildiChatDMG.iconset
iconutil -c icns -o $@ $<
icns: element-desktop/build/icon.icns element-desktop/build/dmg.icns
regenerate-i18n: setup
./regenerate_i18n.sh
@ -74,41 +55,26 @@ desktop-common: web
$(YARN) --cwd element-desktop run fetch --cfgdir ''
$(YARN) --cwd element-desktop run build:native
macos-common: web icns
$(YARN) --cwd element-desktop run fetch --cfgdir ''
$(YARN) --cwd element-desktop run build:native:universal
linux: desktop-common
$(YARN) --cwd element-desktop run build:64 --linux deb pacman tar.xz
$(YARN) --cwd element-desktop run build64 --linux deb pacman tar.xz
debian: desktop-common
$(YARN) --cwd element-desktop run build:64 --linux deb
rpm: desktop-common
$(YARN) --cwd element-desktop run build:64 --linux rpm
$(YARN) --cwd element-desktop run build64 --linux deb pacman tar.xz
pacman: desktop-common
$(YARN) --cwd element-desktop run build:64 --linux pacman
$(YARN) --cwd element-desktop run build64 --linux pacman
appimage: desktop-common
$(YARN) --cwd element-desktop run build:64 --linux AppImage
$(YARN) --cwd element-desktop run build64 --linux AppImage
windows: desktop-common
$(YARN) --cwd element-desktop run build:64 --windows nsis
$(YARN) --cwd element-desktop run build64 --windows nsis
windows-portable: desktop-common
$(YARN) --cwd element-desktop run build:64 --windows portable
$(YARN) --cwd element-desktop run build64 --windows portable
macos: macos-common
export CSC_IDENTITY_AUTO_DISCOVERY
export NOTARIZE_APPLE_ID
export CSC_NAME
$(YARN) --cwd element-desktop run build:universal --mac dmg
macos-mas: macos-common
export NOTARIZE_APPLE_ID
export CSC_NAME
$(YARN) --cwd element-desktop run build:universal --mac mas
macos: desktop-common
$(YARN) --cwd element-desktop run build --mac dmg -c.mac.identity=null
local-pkgbuild: debian
./create_local_pkgbuild.sh $(VERSION) $(DESKTOP_APP_NAME) $(PRODUCT_NAME) $(OUT_DEB64)
@ -124,10 +90,6 @@ debian-release: debian
mkdir -p $(CURRENT_RELEASE_DIR)
cp $(OUT_DEB64) $(CURRENT_RELEASE_DIR)
rpm-release: rpm
mkdir -p $(CURRENT_RELEASE_DIR)
cp $(OUT_RPM64) $(CURRENT_RELEASE_DIR)
pacman-release: pacman
mkdir -p $(CURRENT_RELEASE_DIR)
cp $(OUT_PAC64) $(CURRENT_RELEASE_DIR)
@ -153,14 +115,6 @@ macos-release: macos
mkdir -p $(CURRENT_RELEASE_DIR)
cp $(OUT_MACOS) $(CURRENT_RELEASE_DIR)
macos-mas-release: macos-mas
mkdir -p $(CURRENT_RELEASE_DIR)
cp $(OUT_MACOS_MAS) $(CURRENT_RELEASE_DIR)
bom.lock: element-desktop/yarn.lock element-web/yarn.lock matrix-js-sdk/yarn.lock matrix-react-sdk/yarn.lock
./build-bom.sh
bom: bom.lock
clean:
$(YARN) --cwd matrix-js-sdk clean
$(YARN) --cwd matrix-react-sdk clean
@ -169,4 +123,3 @@ clean:
rm -f element-desktop/webapp
rm -rf element-web/dist
rm -rf local-pkgbuild
rm -f bom.lock

View file

@ -3,7 +3,7 @@
SchildiChat Web/Desktop is a fork of Element [Web](https://github.com/vector-im/element-web)/[Desktop](https://github.com/vector-im/element-desktop).
The most important changes of SchildiChat Web/Desktop compared to Element Web/Desktop are:
- A unified chat list for both direct and group chats
- A unifed chat list for both direct and group chats
- Message bubbles
- Bigger items in the room list
- &hellip; and more!
@ -64,14 +64,6 @@ $ source .bashrc
brew install tcl rust node gpg vim curl git yarn git make gcc
```
#### Signed macOS builds
To sign a macOS build set the environment or make variable `CSC_IDENTITY_AUTO_DISCOVERY` to true
or set `CSC_NAME` to your certificate name or id.
To notarize a build with Apple set `NOTARIZE_APPLE_ID` to your AppleID and set the keychain item
`NOTARIZE_CREDS` to an App specific AppleID password.
### Initial setup
@ -96,7 +88,6 @@ After that these packages which belong to to their respective make target should
- `windows-setup`: _SchildiChat_Setup_v\<version\>.exe_: file ready for **installation** on a **Windows** system
- `windows-portable`: _SchildiChat_win-portable_v\<version\>.zip_: **portable** version for a **Windows** system take SchildiChat together with your login data around with you (the archive contains a readme with **instructions** and **notes**)
- `macos`: Build a *.dmg for macOS
- `macos-mas`: Build a *.pkg for release in the Mac App Store
#### Additional make targets not used for GitHub releases
- `pacman`: file ready for installation on an **Arch Linux** (based) system via `pacman -U schildichat-desktop-<version>.pacman`

View file

@ -1,46 +0,0 @@
# /usr/bin/env bash
cat element-desktop/yarn.lock > bom.lock
echo "" >> bom.lock
cat element-web/yarn.lock >> bom.lock
echo "" >> bom.lock
cat matrix-js-sdk/yarn.lock >> bom.lock
echo "" >> bom.lock
cat matrix-react-sdk/yarn.lock >> bom.lock
echo "" >> bom.lock
# matrix-seshat
cat << EOF >> bom.lock
matrix-seshat@2.3.0:
version "2.3.0"
resolved "https://github.com/matrix-org/seshat/archive/refs/heads/master.tar.gz"
integrity sha512-y4xtZViRX/h0zczl5hiqWyFNK7np0vVujQ/l47g1Mm7B7mDTHAneSSy/d5GADeUIsezZyvT3qKhSCwSSyqS8Xw==
dependencies:
sqlcipher "~m1"
openssl "~1.1.1f"
sqlcipher@m1:
version "m1"
resolved "https://github.com/SchildiChat/sqlcipher/archive/refs/heads/m1.tar.gz"
integrity sha512-1Nk7J0dQyVedFLqnxUJQWrf/VBsUsfC5vAYaHDH3LRbWarfKDGYduZrhdBuzgAF+kMA237HaDt9Tq+CcXV0EJA==
openssl@1.1.1f:
version "1.1.1f"
resolved "https://www.openssl.org/source/openssl-1.1.1f.tar.gz"
integrity sha512-sAvZta1SmPvO7sa7GcGrDBBspc+zEXhJfFi/fg4M8w/MGcIPhOI68xzBJr8kR9Pk+EYduXuvp7149pVhky8ADA==
EOF
echo "" >> bom.lock
# keytar
cat << EOF >> bom.lock
keytar@^5.6.0:
version "5.6.0"
resolved "https://github.com/atom/node-keytar/archive/refs/tags/v5.6.0.tar.gz"
integrity sha512-dPdXLrm8AlqooT0ZS7y/mYif0DmQXoGGrqomwfl6ugIEHlpL1D+hJYhjyMC00TK924vOGD1a6OhDS2+RKEffXA==
dependencies:
libsecret "~0.20.3"
libsecret@0.20.3:
version "0.20.3"
resolved "https://gitlab.gnome.org/GNOME/libsecret/-/archive/0.20.3/libsecret-0.20.3.tar.gz"
integrity sha512-tbD1jNKEEW9bPWuyd5YZ68eQjHhXOsy5PseVwleWYMEXgrrPPGnGGrLzSFUXRzNulFceLMeUG49Qr1rnyvfa1A==
EOF

View file

@ -15,7 +15,7 @@ release_notes_file="/tmp/scrn.md"
owner=SchildiChat
repo=schildichat-desktop
target=master
target=sc
# Define variables
GH_API="https://api.github.com"

View file

@ -13,6 +13,7 @@ repourl="git@github.com:flathub/chat.schildi.desktop.git"
downloadurl="https://github.com/SchildiChat/schildichat-desktop/releases/download/v${version}/schildichat-desktop_${version}_amd64.deb"
sha256sum=($(sha256sum $debpath))
debsize=($(wc -c $debpath))
debdate=$(date +%Y-%m-%d -r $debpath)
[ -d "$repopath" ] || git clone $repourl $repopath
@ -22,15 +23,20 @@ pushd "$repopath" > /dev/null
git fetch
git reset --hard origin/master
yamlFile="chat.schildi.desktop.yaml"
jsonFile="chat.schildi.desktop.json"
jsonString=$(jq -r "." $jsonFile)
xmlFile="chat.schildi.desktop.appdata.xml"
sed -i "s|url: .* #SC:url|url: $downloadurl #SC:url|" "$yamlFile"
sed -i "s|sha256: .* #SC:sha256|sha256: $sha256sum #SC:sha256|" "$yamlFile"
jsonString=$(echo $jsonString | jq -r ".modules[]? |= ((select(.name?==\"schildichat\") | .sources[0].url = \"${downloadurl}\") // .)")
jsonString=$(echo $jsonString | jq -r ".modules[]? |= ((select(.name?==\"schildichat\") | .sources[0].sha256 = \"${sha256sum}\") // .)")
jsonString=$(echo $jsonString | jq -r ".modules[]? |= ((select(.name?==\"schildichat\") | .sources[0].size = ${debsize}) // .)")
sed -i "s|^\s\s<releases>$| <releases>\n <release version=\"$version\" date=\"$debdate\"/>|" "$xmlFile"
echo $jsonString | jq --indent 4 "." > $jsonFile
git add $yamlFile $xmlFile
sed -i "s|^\s\s<releases>$| <releases>\n <release version=\"$version\" date=\"$debdate\"/>|" $xmlFile
git add $jsonFile $xmlFile
git commit -m "Bump version to v$version"
git push

@ -1 +1 @@
Subproject commit de5f137d4e37c7527596b4d910cb13a23b090dca
Subproject commit 634aaf77f51b86bb15ae99c1ef26cf4ddcf68e24

@ -1 +1 @@
Subproject commit 615ecdc6d663431807884d4bb7c1d66ea684a3c9
Subproject commit 6c6ee98eb98faebfdf9f88dd8dc73464e07ff2bf

26
flake.lock generated
View file

@ -1,26 +0,0 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1630504215,
"narHash": "sha256-H5pzwo7z3e7ZatwuwWY25oZSejchO+ZH/XtMi8/PXLw=",
"owner": "yu-re-ka",
"repo": "nixpkgs",
"rev": "979e5916df0e6830a2b1ee999632de9a9d2beb23",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

View file

@ -1,29 +0,0 @@
{
description = "The SchildiChat Matrix client";
inputs.nixpkgs.url = github:NixOS/nixpkgs;
outputs = { self, nixpkgs }: let
systems = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
overlay = import ./nix/overlay.nix;
# Memoize nixpkgs for different platforms for efficiency.
nixpkgsFor = forAllSystems (system:
import nixpkgs {
inherit system;
overlays = [ overlay ];
});
in {
inherit overlay;
packages = builtins.mapAttrs (system: pkgs: {
inherit (pkgs)
schildichat-web
schildichat-desktop
schildichat-desktop-wayland
;
}) nixpkgsFor;
};
}

View file

@ -1 +0,0 @@
{}

View file

@ -1,3 +0,0 @@
{
"Show": "Vis"
}

View file

@ -1,3 +1 @@
{
"Show": "Tonen"
}
{}

View file

@ -1,3 +0,0 @@
{
"Show": "Pokaż"
}

View file

@ -1,3 +1 @@
{
"Show": "Показать"
}
{}

View file

@ -1 +0,0 @@
{}

View file

@ -1 +0,0 @@
{}

View file

@ -1 +0,0 @@
{}

View file

@ -6,8 +6,5 @@
"Normal priority": "Normální priorita",
"Message layout": "Vzhled zpráv",
"Modern": "Moderní",
"Show people and rooms in a combined list": "Zobrazit lidi a místnosti v kombinovaném seznamu",
"Update notifications": "Aktualizace oznámení",
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Chcete se připojit k místnosti, která vás bude informovat o nových verzích? To je užitečné zejména v případě, že vaše platforma nepodporuje automatické aktualizace SchildiChatu (např. Windows a macOS).",
"Don't ask again": "Neptat se znovu"
"Show people and rooms in a combined list": "Zobrazit lidi a místnosti v kombinovaném seznamu"
}

View file

@ -8,11 +8,5 @@
"Show people and rooms in a combined list": "Show people and rooms in a combined list",
"Update notifications": "Update notifications",
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).",
"Don't ask again": "Don't ask again",
"System": "System",
"Add custom theme": "Add custom theme",
"Add theme": "Add theme",
"Theme in use": "Theme in use",
"Light theme": "Light theme",
"Dark theme": "Dark theme"
"Don't ask again": "Don't ask again"
}

View file

@ -1 +0,0 @@
{}

View file

@ -1,12 +0,0 @@
{
"Message bubbles": "Meldingsbobler",
"Normal priority": "Normal prioritet",
"Message layout": "Meldingsvisning",
"Modern": "Moderne",
"Show people and rooms in a combined list": "Vis folk og rom i kombinert liste",
"Update notifications": "Oppdater merknader",
"Show message bubbles on one side only": "Vis meldingsbobler kun på én side",
"Show message bubbles depending on the width either on both sides or only on one side": "Vis meldingsbobler avhengig av bredden enten på begge sider eller kun på én side",
"Don't ask again": "Ikke spør igjen",
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Ønsker du at et rom skal gi deg merknader om nye utgivelser? Dette er spesielt nyttig hvis din plattform ikke støtter automatiske oppdateringer for SchildiChat (f.eks. Windows og macOS)."
}

View file

@ -3,11 +3,5 @@
"Show message bubbles depending on the width either on both sides or only on one side": "Toon berichtbubbels, afhankelijk van de breedte, aan beide zijden of slechts aan één zijde",
"Message bubbles": "Boodschap bellen",
"Normal priority": "Normale prioriteit",
"Enable layout with message bubbles": "Schakel lay-out in met tekstballonnen",
"Update notifications": "Update meldingen",
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Wilt u lid worden van een kamer waarin u wordt geïnformeerd over nieuwe releases? Dit is vooral handig als uw platform geen automatische updates voor SchildiChat ondersteunt (bijv. Windows en macOS).",
"Don't ask again": "Niet nogmaals vragen",
"Modern": "Modern",
"Message layout": "Berichtlayout",
"Show people and rooms in a combined list": "Toon personen en kamers in een gecombineerde lijst"
"Enable layout with message bubbles": "Schakel lay-out in met tekstballonnen"
}

View file

@ -1 +0,0 @@
{}

View file

@ -3,11 +3,5 @@
"Normal priority": "Нормальный приоритет",
"Enable layout with message bubbles": "Включение макета с пузырьками сообщений",
"Show message bubbles on one side only": "Показывайте пузырьки с сообщениями только на одной стороне",
"Show message bubbles depending on the width either on both sides or only on one side": "Показывать пузырьки сообщений в зависимости от ширины либо с обеих сторон, либо только с одной стороны",
"Modern": "Современное",
"Message layout": "Оформление сообщений",
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Вы хотите присоединиться к комнате, уведомляющей вас о новых релизах? Это особенно полезно, если ваша платформа не поддерживает автоматические обновления для SchildiChat (например, Windows и macOS).",
"Show people and rooms in a combined list": "Показать людей и комнаты в объединенном списке",
"Update notifications": "Уведомления об обновлениях",
"Don't ask again": "Не спрашивать больше"
"Show message bubbles depending on the width either on both sides or only on one side": "Показывать пузырьки сообщений в зависимости от ширины либо с обеих сторон, либо только с одной стороны"
}

@ -1 +1 @@
Subproject commit 4bc4575eb65aa68ea8080f5de2072a5949ca8c6d
Subproject commit 4c5790814efa63139caa7ea1e08d9ebdf4ddb844

@ -1 +1 @@
Subproject commit 55874eaa27ac68daa1fd67f739945cf51551f4ef
Subproject commit c93fdd2be8a094726a2da7769ddac499bff1994b

View file

@ -74,6 +74,8 @@ revert_i18n_changes() {
git checkout upstream/master -- "$i18n_path"
$yarn i18n
if [[ "$skip_commit" != [Yy]* ]]; then
git commit -m "Automatic i18n reversion" || true
fi
@ -103,24 +105,18 @@ automatic_i18n_reversion() {
}
automatic_i18n_adjustment() {
# matrix-react-sdk
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
$yarn i18n
node "$i18n_helper_path" "$SCHILDI_ROOT/matrix-react-sdk/$i18n_path" "$i18n_overlay_path/matrix-react-sdk"
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
apply_i18n_changes "$i18n_path"
popd > /dev/null
# element-web
pushd "$SCHILDI_ROOT/element-web" > /dev/null
$yarn i18n
node "$i18n_helper_path" "$SCHILDI_ROOT/element-web/$i18n_path" "$i18n_overlay_path/element-web"
pushd "$SCHILDI_ROOT/element-web" > /dev/null
apply_i18n_changes "$i18n_path"
popd > /dev/null
# element-desktop
pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
$yarn i18n
node "$i18n_helper_path" "$SCHILDI_ROOT/element-desktop/$i18n_path" "$i18n_overlay_path/element-desktop"
pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
apply_i18n_changes "$i18n_path"
popd > /dev/null
}

View file

@ -1,17 +0,0 @@
final: prev: {
cleanSchildichatDesktopSource = src: with final.lib; cleanSourceWith {
filter = name: type: cleanSourceFilter name type
&& !(hasInfix "/node_modules/" name)
&& !(hasInfix "/nix/" name && hasSuffix ".nix" name)
;
inherit src;
};
schildichat-web = final.callPackage ./schildichat-web.nix {};
schildichat-desktop = final.callPackage ./schildichat-desktop.nix {
inherit (final.darwin.apple_sdk.frameworks) Security AppKit CoreServices;
};
schildichat-desktop-wayland = final.callPackage ./schildichat-desktop.nix {
inherit (final.darwin.apple_sdk.frameworks) Security AppKit CoreServices;
useWayland = true;
};
}

View file

@ -1,109 +0,0 @@
{ lib
, stdenv
, fetchFromGitHub
, makeWrapper
, makeDesktopItem
, mkYarnPackage
, electron
, element-desktop # for native modules
, schildichat-web
, callPackage
, Security
, AppKit
, CoreServices
, useWayland ? false
, cleanSchildichatDesktopSource
, schildichat-desktop-src ? ../.
}:
let
packageJSON = schildichat-desktop-src + "/element-desktop/package.json";
yarnLock = schildichat-desktop-src + "/element-desktop/yarn.lock";
package = builtins.fromJSON (builtins.readFile packageJSON);
pname = "schildichat-desktop";
version = package.version;
executableName = pname;
electron_exec = if stdenv.isDarwin then "${electron}/Applications/Electron.app/Contents/MacOS/Electron" else "${electron}/bin/electron";
in mkYarnPackage rec {
inherit pname version packageJSON;
src = cleanSchildichatDesktopSource (schildichat-desktop-src + "/element-desktop");
nativeBuildInputs = [ makeWrapper ];
inherit (element-desktop) seshat keytar;
buildPhase = ''
runHook preBuild
export HOME=$(mktemp -d)
pushd deps/schildichat-desktop/
npx tsc
yarn run i18n
node ./scripts/copy-res.js
popd
rm -rf node_modules/matrix-seshat node_modules/keytar
ln -s $keytar node_modules/keytar
ln -s $seshat node_modules/matrix-seshat
runHook postBuild
'';
installPhase = ''
runHook preInstall
# resources
mkdir -p "$out/share/element"
ln -s '${schildichat-web}' "$out/share/element/webapp"
cp -r './deps/schildichat-desktop' "$out/share/element/electron"
cp -r './deps/schildichat-desktop/res/img' "$out/share/element"
rm "$out/share/element/electron/node_modules"
cp -r './node_modules' "$out/share/element/electron"
cp $out/share/element/electron/lib/i18n/strings/en_EN.json $out/share/element/electron/lib/i18n/strings/en-us.json
ln -s $out/share/element/electron/lib/i18n/strings/en{-us,}.json
# icons
for icon in $out/share/element/electron/build/icons/*.png; do
mkdir -p "$out/share/icons/hicolor/$(basename $icon .png)/apps"
ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png)/apps/element.png"
done
# desktop item
mkdir -p "$out/share"
ln -s "${desktopItem}/share/applications" "$out/share/applications"
# executable wrapper
makeWrapper '${electron_exec}' "$out/bin/${executableName}" \
--add-flags "$out/share/element/electron${lib.optionalString useWayland " --enable-features=UseOzonePlatform --ozone-platform=wayland"}"
runHook postInstall
'';
# Do not attempt generating a tarball for element-web again.
# note: `doDist = false;` does not work.
distPhase = ''
true
'';
# The desktop item properties should be kept in sync with data from upstream:
# https://github.com/vector-im/element-desktop/blob/develop/package.json
desktopItem = makeDesktopItem {
name = "schildichat-desktop";
exec = "${executableName} %u";
icon = "schildichat";
desktopName = "SchildiChat";
genericName = "Matrix Client";
categories = "Network;InstantMessaging;Chat;";
extraEntries = ''
StartupWMClass=schildichat
MimeType=x-scheme-handler/element;
'';
};
}

View file

@ -1,75 +0,0 @@
{ stdenv
, mkYarnModules
, nodejs
, cleanSchildichatDesktopSource
, schildichat-desktop-src ? ../.
, ...
}:
let
packageJSON = schildichat-desktop-src + "/element-web/package.json";
yarnLock = schildichat-desktop-src + "/element-web/yarn.lock";
package = builtins.fromJSON (builtins.readFile packageJSON);
pname = "schildichat-web";
version = package.version;
modules = mkYarnModules {
name = "${pname}-modules-${version}";
inherit pname version packageJSON yarnLock;
};
in stdenv.mkDerivation {
inherit pname version;
src = cleanSchildichatDesktopSource schildichat-desktop-src;
buildInputs = [ nodejs ];
postPatch = ''
patchShebangs .
'';
configurePhase = ''
runHook preConfigure
cp configs/sc/config.json element-web/
cp -r ${modules}/node_modules node_modules
chmod u+rwX -R node_modules
rm -rf node_modules/matrix-react-sdk
ln -s $PWD/matrix-react-sdk node_modules/
ln -s $PWD/node_modules matrix-react-sdk/
ln -s $PWD/node_modules element-web/
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
pushd matrix-react-sdk
node_modules/.bin/reskindex -h ../element-web/src/header
popd
pushd element-web
node scripts/copy-res.js
node_modules/.bin/reskindex -h ../element-web/src/header
node_modules/.bin/webpack --progress --mode production
popd
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -r element-web/webapp $out
runHook postInstall
'';
passthru = {
inherit modules;
};
}