Compare commits

..

View file

@ -6,24 +6,19 @@
rust-overlay.url = "github:oxalica/rust-overlay"; rust-overlay.url = "github:oxalica/rust-overlay";
}; };
outputs = outputs = {
{
self, self,
nixpkgs, nixpkgs,
rust-overlay, rust-overlay,
... ...
}: }: let
let
systems = ["x86_64-linux"]; systems = ["x86_64-linux"];
forAllSystems = nixpkgs.lib.genAttrs systems; forAllSystems = nixpkgs.lib.genAttrs systems;
version = "0.0.10"; version = "0.0.10";
x86_64DebHash = "sha256-VVKkZ9yQ7BoLnYnCf5OSHcrakoBNfUx/uWxBmm3gBZE="; x86_64DebHash = "sha256-9s47HyPJf/6yA6XGgKBJ+60gTXLTV/jvE2tS/Fth8zA=";
forgejoBaseUrl = "https://git.methanium.net/tensamin/client/releases/download/${version}"; forgejoBaseUrl = "https://git.methanium.net/tensamin/client/releases/download/${version}";
in in {
{ packages = forAllSystems (system: let
packages = forAllSystems (
system:
let
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system;
overlays = [(import rust-overlay)]; overlays = [(import rust-overlay)];
@ -74,8 +69,7 @@
libXtst libXtst
libxcb libxcb
]; ];
packageDeb = packageDeb = src:
src:
pkgs.stdenv.mkDerivation { pkgs.stdenv.mkDerivation {
pname = "tensamin"; pname = "tensamin";
inherit version src; inherit version src;
@ -106,44 +100,37 @@
mkdir -p "$out/bin" mkdir -p "$out/bin"
makeWrapper "$out/opt/Tensamin/tensamin" "$out/bin/tensamin" makeWrapper "$out/opt/Tensamin/tensamin" "$out/bin/tensamin"
substituteInPlace "$out/share/applications/Tensamin.desktop" \ substituteInPlace "$out/share/applications/tensamin.desktop" \
--replace-fail "Exec=/opt/Tensamin/tensamin" "Exec=tensamin" --replace-fail "Exec=/opt/Tensamin/tensamin" "Exec=tensamin"
runHook postInstall runHook postInstall
''; '';
}; };
defaultPackage = packageDeb ( defaultPackage = packageDeb (pkgs.fetchurl {
pkgs.fetchurl {
url = "${forgejoBaseUrl}/${debArtifact}"; url = "${forgejoBaseUrl}/${debArtifact}";
hash = x86_64DebHash; hash = x86_64DebHash;
} });
);
localDebPath = builtins.getEnv "TENSAMIN_DEB"; localDebPath = builtins.getEnv "TENSAMIN_DEB";
localPathPackage = localPathPackage =
if localDebPath == "" then if localDebPath == ""
then
pkgs.writeShellScriptBin "tensamin" '' pkgs.writeShellScriptBin "tensamin" ''
echo "Set TENSAMIN_DEB to a local .deb path and run with --impure." >&2 echo "Set TENSAMIN_DEB to a local .deb path and run with --impure." >&2
exit 1 exit 1
'' ''
else else
packageDeb ( packageDeb (builtins.path {
builtins.path {
path = localDebPath; path = localDebPath;
name = debArtifact; name = debArtifact;
} });
); in {
in
{
default = defaultPackage; default = defaultPackage;
tensamin = defaultPackage; tensamin = defaultPackage;
electron = defaultPackage; electron = defaultPackage;
localPathForDev = localPathPackage; localPathForDev = localPathPackage;
} });
);
devShells = forAllSystems ( devShells = forAllSystems (system: let
system:
let
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system;
overlays = [(import rust-overlay)]; overlays = [(import rust-overlay)];
@ -201,10 +188,7 @@
toolsVersion = "26.1.1"; toolsVersion = "26.1.1";
platformToolsVersion = "35.0.2"; platformToolsVersion = "35.0.2";
buildToolsVersions = [buildToolsVersion]; buildToolsVersions = [buildToolsVersion];
platformVersions = [ platformVersions = ["35" "36"];
"35"
"36"
];
includeSources = false; includeSources = false;
includeSystemImages = false; includeSystemImages = false;
includeNDK = true; includeNDK = true;
@ -212,10 +196,7 @@
useGoogleAPIs = false; useGoogleAPIs = false;
}; };
rustToolchain = pkgs.rust-bin.stable.latest.default.override { rustToolchain = pkgs.rust-bin.stable.latest.default.override {
extensions = [ extensions = ["rust-src" "rust-analyzer"];
"rust-src"
"rust-analyzer"
];
targets = [ targets = [
"aarch64-linux-android" "aarch64-linux-android"
"armv7-linux-androideabi" "armv7-linux-androideabi"
@ -225,37 +206,23 @@
]; ];
}; };
commonDeps = [ commonDeps = [rustToolchain pkgs.wasm-pack pkgs.lld];
rustToolchain
pkgs.wasm-pack
pkgs.lld
];
appImageToolsArchive = pkgs.fetchurl { appImageToolsArchive = pkgs.fetchurl {
url = "https://github.com/electron-userland/electron-builder-binaries/releases/download/appimage@1.0.3/appimage-tools-runtime-20251108.tar.gz"; url = "https://github.com/electron-userland/electron-builder-binaries/releases/download/appimage@1.0.3/appimage-tools-runtime-20251108.tar.gz";
hash = "sha256-hAIaeO4hSub9M6LWKpK6JVQt0QvIa/EXqbLQu6ROdmU="; hash = "sha256-hAIaeO4hSub9M6LWKpK6JVQt0QvIa/EXqbLQu6ROdmU=";
}; };
appImageTools = appImageTools = pkgs.runCommand "electron-builder-appimage-tools-nix" {nativeBuildInputs = [pkgs.gnutar pkgs.gzip];} ''
pkgs.runCommand "electron-builder-appimage-tools-nix"
{
nativeBuildInputs = [
pkgs.gnutar
pkgs.gzip
];
}
''
mkdir -p "$out" mkdir -p "$out"
tar -xzf ${appImageToolsArchive} --strip-components=1 -C "$out" tar -xzf ${appImageToolsArchive} --strip-components=1 -C "$out"
rm -f "$out/mksquashfs" "$out/desktop-file-validate" rm -f "$out/mksquashfs" "$out/desktop-file-validate"
ln -s ${pkgs.squashfsTools}/bin/mksquashfs "$out/mksquashfs" ln -s ${pkgs.squashfsTools}/bin/mksquashfs "$out/mksquashfs"
ln -s ${pkgs.desktop-file-utils}/bin/desktop-file-validate "$out/desktop-file-validate" ln -s ${pkgs.desktop-file-utils}/bin/desktop-file-validate "$out/desktop-file-validate"
''; '';
in in rec {
rec {
default = electron; default = electron;
electron = pkgs.mkShell { electron = pkgs.mkShell {
packages = packages = with pkgs;
with pkgs;
[ [
nodejs_22 nodejs_22
corepack_22 corepack_22
@ -278,8 +245,7 @@
xz xz
p7zip p7zip
] ]
++ electronRuntimeLibs ++ electronRuntimeLibs ++ commonDeps;
++ commonDeps;
shellHook = '' shellHook = ''
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath electronRuntimeLibs}:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath electronRuntimeLibs}:$LD_LIBRARY_PATH"
@ -300,8 +266,7 @@
}; };
tauri = pkgs.mkShell { tauri = pkgs.mkShell {
buildInputs = buildInputs = with pkgs;
with pkgs;
[ [
jdk17 jdk17
gradle gradle
@ -375,7 +340,6 @@
fi fi
''; '';
}; };
} });
);
}; };
} }