Minus the bullshit, plus the features.
Patches?
Most clients (all of them?) are forks, and most forks don't bother rebasing their changes over and over, and instead opt for introducing merge commits to be on par with upstream changes. This makes history and changes harder to track and audit. Patch-based approach is, in a way, a rebase-workflow but without commits, and with range-diff included, allowing to more precisely track how patches evolve over time and understand code easier.
Please inspect these patches yourselves to make sure that you really trust the code.
Some more information can be found in Contributing notes.
Installation
Do not blindly trust our binary caches. They are built by GitHub Actions, and are supposed to be reproducible, though.
Windows and macOS are not supported.
Consider using isolated packages and reviewing and refining their permissions (with e.g. Flatseal for flatpak or with custom Nixpak options for nixpak) instead of plain binaries.
with flatpak
flatpak remote-add --user --if-not-exists yukigram https://yukigram.github.io/yukigram/index.flatpakrepo flatpak install --user io.github.yukigram
with nix
binary caches setup
Add yukigram-nixos-binary-cache:JY9MpP2ESUmPx3cfIpcSRpBK9HQ1/mzHemsvjv1aiYU=
to extra-trusted-public-keys.
Add https://yukigram.github.io/yukigram
to extra-substituters.
Add yukigram-official.cachix.org-1:PmmKVD/46LWDxfPWKol4rvoqvcdLqFq0aTtG/E1gdA8=
to extra-trusted-public-keys
for previous and development versions.
Add https://yukigram-official.cachix.org
to extra-substituters
for previous and development versions.
If you use Nix to manage nix config, activate a configuration with these settings at least once before adding Yukigram to packages.
If you supply these options as command-line-arguments, make sure to run builds from a trusted user, otherwise binary caches won't work.
Binary caches are only built for tagged releases.
Track release branch instead of master
if your pinning tool does not support tracking tags.
Recommended flake input formats are:
github:yukigram/yukigram/releasefor latest releases,github:yukigram/yukigram/v6.7.8.1for pinned releases,github:yukigram/yukigram/betafor latest pre-release.
Pre-release Nix builds are published only to Cachix and release artifacts.
with nixpak
without flakes:
(import <yukigram> {}).packages.default
with flakes:
inputs.yukigram.packages.${system}.default
default can be replaced with nixpak for explicitness.
without nixpak
without flakes:
(import <yukigram> {}).packages.nonisolated
with flakes:
inputs.yukigram.packages.${system}.nonisolated
custom options
Custom nixpak options are required to launch Yukigram nixpak under X11.
let d = import <yukigram> {}; # without flakes d = inputs.yukigram.d.${system}; # with flakes yukigram = d.override (prev: { # customize nixpak nixpak.yukigram = prev.nixpak.yukigram.override { appId = "io.github.yukigram.backed"; customNixpakConfig = { bubblewrap.sockets.x11 = true; } } # or bring your own patches (disables binary caches) packages.nonisolated = prev.packages.nonisolated.override (prev: { unwrapped = prev.unwrapped.overrideAttrs (prev: { patches = prev.patches ++ [./my-cool.patch]; }; }; # or bring your own nixpkgs (may disable binary caches) sources.nixpkgs = <nixpkgs>; # or use a custom instance of nixpkgs (may disable binary caches) inputs.pkgs = import <nixpkgs> {}; # or make nonisolated package the default one packages.default = prev.packages.nonisolated; }); in yukigram.packages.default;
on PostmarketOS
repository installation
wget https://yukigram.github.io/yukigram/pmaports/yukigram-key/yukigram.github.io.rsa.pub -O /etc/apk/keys/yukigram.github.io.rsa.pub echo https://yukigram.github.io/yukigram/packages/edge >> /etc/apk/repositories apk update apk add yukigram yukigram-key
direct .apk downloads
Download yukigram-$ARCH.apk from releases.
Not really recommended unless for quick checks,
as automatic updates are unsupported with bare .apk files.
distro packages
Unofficial packages that seem correct and maintained:
- AUR package
yukigram-desktop(from source, releases) - AUR package
yukigram-bin(binary, releases, x86_64-only)
manual installation
from binaries
Download binary-$ARCH from releases
and unpack it to /usr/local/ or ~/.local/.
Automatic updates are unsupported with this approach.
from source
Check your package manager's manual on how to add patches to packages and package Telegram Desktop (of correct version) with your selection of patches.
The recommended way of applying patches
for building for repositories
is by using patch.
See #applying-with-patch
in contributing notes for details.
Previous versions
Make a backup of your data! Downgrading versions is not supported.
Important
Pre-release versions prior to 6.8.3.2 had a fallback to these paths and could corrupt production tdata.
Versions prior to 6.7.8.1 are NOT devel-aware. Running devel-oblivious development versions will corrupt production version's tdata.
Installations of Yukigram prior to that version should migrate their data directory as follows.
- Close Yukigram.
- Update Yukigram to a recent enough version.
- Rename
~/.TelegramDesktopfolder to${XDG_DATA_HOME:-~/.local/share}/io.github.yukigram(nonisolated package that was used for a dozen years). - Go to
${XDG_DATA_HOME:-~/.local/share}(nonisolated package). and renameYukigramfolder toio.github.yukigram. - Go to
~/.var/app/io.github.yukigram/data(flatpak or nixpak) and renameYukigramfolder toio.github.yukigram. - Go to
~/.var/app/io.github.yukigram.devel/data(devel, flatpak or nixpak) and renameYukigramfolder toio.github.yukigram.devel. - Go to
~/.var/app/io.github.yukigram.devel/data(old nixpak with customNixpakConfig) and renameio.github.yukigramfolder toio.github.yukigram.develif that folder doesn't yet exist. - Run Yukigram again.
with flatpak
Download flatpak-$ARCH release asset and unpack it.
flatpak install --user .../flatpak-$ARCH io.github.yukigramSubstitute io.github.yukigram
with io.github.yukigram.devel
for development builds.
with nix
Recent previous and development versions are cached at Cachix.
Note
Versions prior to 6.8.2.1 are cached only on Cachix and may become inaccessible.
Caution
Versions prior to 6.8.3.1 are NOT devel-aware
and will corrupt your tdata.
Running those without customNixpakConfig or appId
is not supported.
with postmarketOS
Install .apk files from selected release.
Caution
postmarketOS builds are NOT devel-aware and will corrupt your tdata. Running those without backing up tdata is not supported.
64Gram-based
Caution
Versions of Yukigram up to (and including) 6.4.1.1 are deprecated and should no longer be used. They were based on 64Gram and developed in a downstream merge-based workflow.
"Enhanced settings" from 64Gram and Yukigram are converted to native "Experimental settings" (in Advanced). Users of past Yukigram should make a note of their enhanced settings and toggle them on new versions, because of different settings backends.
Past versions can be found at yukigram-legacy repo.
Licensing
This project follows the REUSE specification.
Patches for Telegram Desktop (under tdesktop/cur/)
are provided under GPL-3.0-or-later
with OpenSSL exception.
GitHub Actions workflows and flatpak manifest are provided under MIT.
Nix package definitions are provided under CC0-1.0 or Unlicense at your option.
This file is licensed under CC0-1.0.
See REUSE.toml for some details.
Additionally, .svg files embedded inside patches in tdesktop/cur/, namely
- Telegram/Resources/art/yukigram.svg
- Telegram/Resources/icons/info/edit/group_manage_actions_topbar.svg
- Telegram/Resources/icons/info/edit/group_manage_admins_topbar.svg
are provided under CC0-1.0.