diff --git a/assets/icons/png/appflowy.png b/assets/icons/png/appflowy.png new file mode 100644 index 000000000..3f0ba7119 Binary files /dev/null and b/assets/icons/png/appflowy.png differ diff --git a/assets/icons/svg/appflowy.svg b/assets/icons/svg/appflowy.svg new file mode 100644 index 000000000..3958a1a25 --- /dev/null +++ b/assets/icons/svg/appflowy.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/modules/desktop/graphics/demo-apps.nix b/modules/desktop/graphics/demo-apps.nix index 5c10fc072..b0633e3d1 100644 --- a/modules/desktop/graphics/demo-apps.nix +++ b/modules/desktop/graphics/demo-apps.nix @@ -39,6 +39,7 @@ in { gala-app = mkProgramOption "Gala App" false; element-desktop = mkProgramOption "Element desktop" config.ghaf.graphics.enableDemoApplications; zathura = mkProgramOption "zathura" config.ghaf.graphics.enableDemoApplications; + appflowy = mkProgramOption "Appflowy" config.ghaf.graphics.enableDemoApplications; }; config = lib.mkIf config.ghaf.profiles.graphics.enable { @@ -67,12 +68,18 @@ in { name = "zathura"; path = "${pkgs.zathura}/bin/zathura"; icon = "${pkgs.zathura}/share/icons/hicolor/32x32/apps/org.pwmt.zathura.png"; + } + ++ lib.optional (cfg.appflowy && pkgs.stdenv.isx86_64) { + name = "appflowy"; + path = "${pkgs.appflowy}/bin/appflowy"; + icon = ../../../assets/icons/svg/appflowy.svg; }; environment.systemPackages = lib.optional cfg.chromium pkgs.chromium ++ lib.optional cfg.element-desktop pkgs.element-desktop ++ lib.optional cfg.firefox pkgs.firefox ++ lib.optional cfg.gala-app pkgs.gala-app - ++ lib.optional cfg.zathura pkgs.zathura; + ++ lib.optional cfg.zathura pkgs.zathura + ++ lib.optional (cfg.appflowy && pkgs.stdenv.isx86_64) pkgs.appflowy; }; } diff --git a/targets/lenovo-x1/appvms/appflowy.nix b/targets/lenovo-x1/appvms/appflowy.nix new file mode 100644 index 000000000..3a3cc813e --- /dev/null +++ b/targets/lenovo-x1/appvms/appflowy.nix @@ -0,0 +1,20 @@ +# Copyright 2024 TII (SSRC) and the Ghaf contributors +# SPDX-License-Identifier: Apache-2.0 +# +{ + pkgs, + config, + ... +}: { + name = "appflowy"; + packages = [pkgs.appflowy]; + macAddress = "02:00:00:03:08:01"; + ramMb = 512; + cores = 1; + extraModules = [ + { + hardware.opengl.enable = true; + time.timeZone = config.time.timeZone; + } + ]; +} diff --git a/targets/lenovo-x1/appvms/default.nix b/targets/lenovo-x1/appvms/default.nix index dd8d3596f..e93302a20 100644 --- a/targets/lenovo-x1/appvms/default.nix +++ b/targets/lenovo-x1/appvms/default.nix @@ -1,14 +1,27 @@ # Copyright 2024 TII (SSRC) and the Ghaf contributors # SPDX-License-Identifier: Apache-2.0 # -{pkgs, ...}: let +{ + pkgs, + config, + ... +}: let chromium = import ./chromium.nix {inherit pkgs;}; gala = import ./gala.nix {inherit pkgs;}; zathura = import ./zathura.nix {inherit pkgs;}; element = import ./element.nix {inherit pkgs;}; -in [ - chromium - gala - zathura - element -] + includeAppflowy = pkgs.stdenv.isx86_64; + appflowy = + if includeAppflowy + then import ./appflowy.nix {inherit pkgs config;} + else {}; + appvms = + [ + chromium + gala + zathura + element + ] + ++ pkgs.lib.optional includeAppflowy appflowy; +in + appvms diff --git a/targets/lenovo-x1/everything.nix b/targets/lenovo-x1/everything.nix index fb24b326e..63cd7cab6 100644 --- a/targets/lenovo-x1/everything.nix +++ b/targets/lenovo-x1/everything.nix @@ -104,7 +104,7 @@ }; virtualization.microvm.appvm = { enable = true; - vms = import ./appvms/default.nix {inherit pkgs;}; + vms = import ./appvms/default.nix {inherit pkgs config;}; }; # Enable all the default UI applications diff --git a/targets/lenovo-x1/guivmExtraModules.nix b/targets/lenovo-x1/guivmExtraModules.nix index f360dc1f9..11384919d 100644 --- a/targets/lenovo-x1/guivmExtraModules.nix +++ b/targets/lenovo-x1/guivmExtraModules.nix @@ -68,6 +68,12 @@ icon = "${../../assets/icons/png/element.png}"; } + { + name = "appflowy"; + path = "${pkgs.openssh}/bin/ssh -i ${configH.ghaf.security.sshKeys.sshKeyPath} -o StrictHostKeyChecking=no appflowy-vm.ghaf run-waypipe appflowy"; + icon = "${../../assets/icons/svg/appflowy.svg}"; + } + { name = "windows"; path = "${pkgs.virt-viewer}/bin/remote-viewer -f spice://${winConfig.spice-host}:${toString winConfig.spice-port}";