## START: Set by rpmautospec ## (rpmautospec version 0.8.4) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 5; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec %global debug_package %{nil} %global lang_commit 16dceb37119bd2a401f2c427cfb9ba892564faec %global __provides_exclude_from ^(%{nodejs_sitelib}/@actual-app/.*|%{_libdir}/actual/.*)$ %global __requires_exclude_from ^(%{nodejs_sitelib}/@actual-app/.*|%{_libdir}/actual/.*)$ Name: actual Version: 26.7.0 Release: %autorelease Summary: A local-first personal finance app License: MIT URL: https://github.com/actualbudget/actual Source0: https://github.com/actualbudget/actual/archive/refs/tags/v%{version}.tar.gz Source1: https://github.com/actualbudget/translations/archive/%{lang_commit}.tar.gz Source2: actual.sysusers.conf Source3: actual-server.service Source4: actual.sysconfig Source5: com.actualbudget.actual.desktop BuildRequires: yarnpkg BuildRequires: npm BuildRequires: git BuildRequires: nodejs-devel BuildRequires: systemd-rpm-macros BuildRequires: desktop-file-utils BuildRequires: gcc BuildRequires: g++ BuildRequires: ImageMagick Requires: hicolor-icon-theme ExclusiveArch: x86_64 aarch64 %description Actual is a local-first personal finance tool. It is 100% free and open-source, written in NodeJS, it has a synchronization element so that all your changes can move between devices without any heavy lifting. %files %license LICENSE.txt %doc README.md %{_bindir}/actual %{_libdir}/actual/ %{_datadir}/applications/com.actualbudget.actual.desktop %{_datadir}/icons/hicolor/1024x1024/apps/com.actualbudget.actual.png %{_datadir}/icons/hicolor/128x128/apps/com.actualbudget.actual.png %{_datadir}/icons/hicolor/16x16/apps/com.actualbudget.actual.png %{_datadir}/icons/hicolor/256x256/apps/com.actualbudget.actual.png %{_datadir}/icons/hicolor/32x32/apps/com.actualbudget.actual.png %{_datadir}/icons/hicolor/64x64/apps/com.actualbudget.actual.png %{_datadir}/icons/hicolor/512x512/apps/com.actualbudget.actual.png %{_metainfodir}/com.actualbudget.actual.metainfo.xml %package server Summary: Self hosteable version of a personal finance app ExclusiveArch: %{nodejs_arches} Requires: nodejs24 %description server Actual is a local-first personal finance tool. It is 100% free and open-source, written in NodeJS, it has a synchronization element so that all your changes can move between devices without any heavy lifting. %files server %license LICENSE.txt %doc README.md %attr(755, root, root) %{_bindir}/actual-server %attr(755, actual, actual) %{_sharedstatedir}/actual/ %attr(750, root, actual) %{_sysconfdir}/actual/ %config(noreplace,missingok) %{_sysconfdir}/sysconfig/actual %{_sysusersdir}/actual.conf %{_unitdir}/actual-server.service %{nodejs_sitelib}/@actual-app/ %prep %setup -q -n actual-%{version} tar -xzf %{S:1} mv translations-%{lang_commit} packages/desktop-client/locale # Set version on a git tag pushd packages/desktop-client/locale git init git add . git -c user.name='none' -c user.email='' commit -m "." git tag %{version} git remote add origin . git update-ref refs/remotes/origin/$(git branch --show-current) HEAD git branch --set-upstream-to=origin/$(git branch --show-current) popd # Set version on a git tag git init git -c user.name='none' -c user.email='' commit --allow-empty -m "." git tag %{version} %build mkdir @actual-app yarn install # Server yarn workspace @actual-app/core pack --filename ../../@actual-app/core.tgz yarn build:server yarn workspace @actual-app/web pack --filename ../../@actual-app/web.tgz yarn workspace @actual-app/sync-server pack --filename ../../@actual-app/sync-server.tgz # Desktop yarn workspace @actual-app/crdt build yarn workspace plugins-service build yarn workspace @actual-app/core build:node yarn workspace @actual-app/web build --mode=desktop yarn build:browser yarn workspace @actual-app/sync-server build yarn workspace @actual-app/core exec tsgo -p tsconfig.json yarn workspace desktop-electron update-client pushd packages/desktop-electron yarn clean yarn build:dist yarn dlx electron-builder build --linux tar.gz popd mv packages/desktop-electron/dist/*.tar.gz @actual-app/ # Generate icons pushd ./packages/desktop-electron/icons/ convert -background none -gravity center -extent '1190x1190' icon.png tmp.png convert -background none -resize '!16x16' tmp.png "icon_16x16.png" convert -background none -resize '!32x32' tmp.png "icon_32x32.png" convert -background none -resize '!64x64' tmp.png "icon_64x64.png" convert -background none -resize '!128x128' tmp.png "icon_128x128.png" convert -background none -resize '!256x256' tmp.png "icon_256x256.png" convert -background none -resize '!512x512' tmp.png "icon_512x512.png" convert -background none -resize '!1024x1024' tmp.png "icon_1024x1024.png" popd %install mkdir -p %{buildroot}%{_sysconfdir}/sysconfig/ mkdir -p %{buildroot}%{_sysconfdir}/actual/ mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_unitdir} mkdir -p %{buildroot}%{_sysusersdir} mkdir -p %{buildroot}%{_sharedstatedir}/actual/ mkdir -p %{buildroot}%{_libdir}/actual/ mkdir -p %{buildroot}%{nodejs_sitelib} # Install desktop ln -sf %{_libdir}/actual/actual %{buildroot}%{_bindir}/actual tar xf ./@actual-app/*.tar.gz --strip-components=1 -C %{buildroot}%{_libdir}/actual/ # Install server npm install --no-fund -g --cache npm-cache --prefix "%{buildroot}/usr" ./@actual-app/core.tgz npm install --no-fund -g --cache npm-cache --prefix "%{buildroot}/usr" ./@actual-app/web.tgz npm install --no-fund -g --cache npm-cache --prefix "%{buildroot}/usr" ./@actual-app/sync-server.tgz # npm install --no-fund -g --cache npm-cache --prefix "%{buildroot}/usr" ./@actual-app/api.tgz # npm install --no-fund -g --cache npm-cache --prefix "%{buildroot}/usr" ./@actual-app/cli.tgz # Service stuff install -m 644 %{S:2} %{buildroot}%{_sysusersdir}/actual.conf install -m 644 %{S:3} %{buildroot}%{_unitdir}/actual-server.service install -m 644 %{S:4} -D %{buildroot}%{_sysconfdir}/sysconfig/actual # Desktop metadata install -d %{buildroot}%{_datadir}/applications/ install -p -m 644 %{S:5} %{buildroot}%{_datadir}/applications/com.actualbudget.actual.desktop desktop-file-validate \ %{buildroot}%{_datadir}/applications/com.actualbudget.actual.desktop install -d %{buildroot}%{_metainfodir}/ install -p -m 644 ./packages/desktop-electron/extra-resources/linux/com.actualbudget.actual.metainfo.xml %{buildroot}%{_metainfodir}/com.actualbudget.actual.metainfo.xml install -d $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/1024x1024/apps/ install -p -m 644 ./packages/desktop-electron/icons/icon_1024x1024.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/1024x1024/apps/com.actualbudget.actual.png install -d $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/512x512/apps/ install -p -m 644 ./packages/desktop-electron/icons/icon_512x512.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/512x512/apps/com.actualbudget.actual.png install -d $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/256x256/apps/ install -p -m 644 ./packages/desktop-electron/icons/icon_256x256.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/256x256/apps/com.actualbudget.actual.png install -d $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/128x128/apps/ install -p -m 644 ./packages/desktop-electron/icons/icon_128x128.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/128x128/apps/com.actualbudget.actual.png install -d $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/64x64/apps/ install -p -m 644 ./packages/desktop-electron/icons/icon_64x64.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/64x64/apps/com.actualbudget.actual.png install -d $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/32x32/apps/ install -p -m 644 ./packages/desktop-electron/icons/icon_32x32.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/32x32/apps/com.actualbudget.actual.png install -d $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/16x16/apps/ install -p -m 644 ./packages/desktop-electron/icons/icon_16x16.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/16x16/apps/com.actualbudget.actual.png %pre server %sysusers_create_compat %{S:2} %post server %systemd_post actual-server.service %preun server %systemd_preun actual-server.service %postun server %systemd_postun_with_restart actual-server.service %changelog ## START: Generated by rpmautospec * Mon Jul 20 2026 Grillo del Mal - 26.7.0-5 - Fix server config * Sun Jul 19 2026 Grillo del Mal - 26.7.0-4 - Fix service files * Sun Jul 19 2026 Grillo del Mal - 26.7.0-3 - Add app metadata * Sun Jul 19 2026 Grillo del Mal - 26.7.0-2 - Fix requires and provides * Sun Jul 19 2026 Grillo del Mal - 26.7.0-1 - Initial commit ## END: Generated by rpmautospec