client/flake.nix
2026-06-16 10:07:08 +00:00

99 lines
2.3 KiB
Nix

{
description = "Tensamin desktop client";
inputs.nixpkgs.url = "nixpkgs/nixos-unstable";
outputs = {nixpkgs, ...}: let
systems = ["x86_64-linux"];
forAllSystems = nixpkgs.lib.genAttrs systems;
version = "0.0.10";
x86_64DebHash = "sha256-VVKkZ9yQ7BoLnYnCf5OSHcrakoBNfUx/uWxBmm3gBZE=";
forgejoBaseUrl = "https://git.methanium.net/tensamin/client/releases/download/${version}";
in {
packages = forAllSystems (system: let
pkgs = import nixpkgs {inherit system;};
debArtifact = "Tensamin-${version}-linux-amd64.deb";
electronRuntimeLibs = with pkgs; [
alsa-lib
at-spi2-atk
at-spi2-core
cairo
cups
dbus
expat
fontconfig
freetype
gdk-pixbuf
glib
gtk3
libdrm
libgbm
libnotify
libpulseaudio
libuuid
libxkbcommon
mesa
nspr
nss
pango
systemd
wayland
libX11
libXScrnSaver
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXtst
libxcb
];
packageDeb = src:
pkgs.stdenv.mkDerivation {
pname = "tensamin";
inherit version src;
nativeBuildInputs = with pkgs; [
autoPatchelfHook
dpkg
makeWrapper
];
buildInputs = electronRuntimeLibs;
dontConfigure = true;
dontBuild = true;
unpackPhase = ''
runHook preUnpack
dpkg-deb -x "$src" .
runHook postUnpack
'';
installPhase = ''
runHook preInstall
mkdir -p "$out"
cp -r opt "$out/"
cp -r usr/* "$out/"
mkdir -p "$out/bin"
makeWrapper "$out/opt/Tensamin/tensamin" "$out/bin/tensamin"
substituteInPlace "$out/share/applications/tensamin.desktop" \
--replace-fail "Exec=/opt/Tensamin/tensamin" "Exec=tensamin"
runHook postInstall
'';
};
defaultPackage = packageDeb (pkgs.fetchurl {
url = "${forgejoBaseUrl}/${debArtifact}";
hash = x86_64DebHash;
});
in {
default = defaultPackage;
});
};
}