diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index d501da3..b6ea4c1 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -25,7 +25,7 @@ jobs: - name: Install Dependencies run: | apt update - apt install -y meson libaccountsservice-dev dbus libpolkit-gobject-1-dev python3 libglib2.0-bin + apt install -y meson libaccountsservice-dev dbus libpolkit-gobject-1-dev python3 libglib2.0-bin systemd-dev - name: Build env: DESTDIR: ${{ env.PWD }}/build/out diff --git a/flatpak/appcenter.preinstall b/flatpak/appcenter.preinstall new file mode 100644 index 0000000..c8e04cc --- /dev/null +++ b/flatpak/appcenter.preinstall @@ -0,0 +1,32 @@ +[Flatpak Preinstall io.elementary.calculator] +Branch=stable + +[Flatpak Preinstall io.elementary.camera] +Branch=stable + +[Flatpak Preinstall io.elementary.capnet-assist] +Branch=stable + +[Flatpak Preinstall io.elementary.maps] +Branch=stable + +[Flatpak Preinstall io.elementary.music] +Branch=stable + +[Flatpak Preinstall io.elementary.screenshot] +Branch=stable + +[Flatpak Preinstall io.elementary.videos] +Branch=stable + +[Flatpak Preinstall org.gnome.Epiphany] +Branch=stable + +[Flatpak Preinstall org.gnome.Evince] +Branch=stable + +[Flatpak Preinstall org.gnome.FileRoller] +Branch=stable + +[Flatpak Preinstall org.gnome.font-viewer] +Branch=stable diff --git a/flatpak/flatpak-preinstalld.service b/flatpak/flatpak-preinstalld.service new file mode 100644 index 0000000..68a6daf --- /dev/null +++ b/flatpak/flatpak-preinstalld.service @@ -0,0 +1,22 @@ +[Unit] +Description=Preinstall Flatpaks +After=network-online.target +Wants=network-online.target +ConditionPathExists=/usr/bin/flatpak +ConditionPathExists=!/var/lib/flatpak/.preinstall-finished +Documentation=man:flatpak-preinstall(1) +StartLimitIntervalSec=600 + +[Service] +Type=oneshot +ExecStart=mkdir -p /var/lib/flatpak/ +ExecStart=/usr/bin/flatpak preinstall -y +ExecStart=touch /var/lib/flatpak/.preinstall-finished +RemainAfterExit=true +Restart=on-failure +RestartSec=30 + +StartLimitBurst=3 + +[Install] +WantedBy=multi-user.target diff --git a/flatpak/meson.build b/flatpak/meson.build new file mode 100644 index 0000000..998b5ab --- /dev/null +++ b/flatpak/meson.build @@ -0,0 +1,17 @@ +install_data( + 'appcenter.preinstall', + install_dir: datadir / 'flatpak' / 'preinstall.d' +) + +systemd_system_unit_dir = get_option('systemdsystemunitdir') +if systemd_system_unit_dir != 'no' + if systemd_system_unit_dir == '' + systemd_dep = dependency('systemd') + systemd_system_unit_dir = systemd_dep.get_variable('systemdsystemunitdir', pkgconfig_define: ['rootprefix', prefix]) + endif + + install_data( + 'flatpak-preinstalld.service', + install_dir: systemd_system_unit_dir + ) +endif diff --git a/meson.build b/meson.build index 24be51b..5662ee7 100644 --- a/meson.build +++ b/meson.build @@ -9,6 +9,7 @@ gnome = import('gnome') prefix = get_option('prefix') datadir = prefix / get_option('datadir') sysconfdir = get_option('sysconfdir') +sharedstatedir = get_option('sharedstatedir') schemadir = datadir / 'glib-2.0' / 'schemas' gnome.post_install(glib_compile_schemas: true) @@ -59,3 +60,6 @@ subdir('gtk') # Network settings subdir('network') + +# Flatpak preinstall files +subdir('flatpak') diff --git a/meson_options.txt b/meson_options.txt index 3ef97b0..1407485 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -27,3 +27,8 @@ option('geoclue', type: 'boolean', value: true, description: 'Install configuration files for GeoClue') + +option('systemdsystemunitdir', + type: 'string', + value: '', + description: 'Custom directory for systemd system units, or \'no\' to disable') diff --git a/skel/meson.build b/skel/meson.build index e127678..9c346a9 100644 --- a/skel/meson.build +++ b/skel/meson.build @@ -2,6 +2,12 @@ skeldir = sysconfdir / 'skel' # AppCenter Flatpak Remote if get_option('appcenter-flatpak') + # remote for system-wide installation + install_subdir( + 'flatpak', + install_dir: sharedstatedir + ) + # remote for per-user installation install_subdir( 'flatpak', install_dir: skeldir / '.local' / 'share'