clan-app: rename clan-vm-manager

This commit is contained in:
Johannes Kirschbauer
2024-06-05 11:23:12 +02:00
parent dcb9bbe50f
commit b03fe685dc
61 changed files with 122 additions and 127 deletions

View File

@@ -121,7 +121,7 @@ git+file:///home/lhebendanz/Projects/clan-core
│ ├───clan-cli omitted (use '--all-systems' to show) │ ├───clan-cli omitted (use '--all-systems' to show)
│ ├───clan-cli-docs omitted (use '--all-systems' to show) │ ├───clan-cli-docs omitted (use '--all-systems' to show)
│ ├───clan-ts-api omitted (use '--all-systems' to show) │ ├───clan-ts-api omitted (use '--all-systems' to show)
│ ├───clan-vm-manager omitted (use '--all-systems' to show) │ ├───clan-app omitted (use '--all-systems' to show)
│ ├───default omitted (use '--all-systems' to show) │ ├───default omitted (use '--all-systems' to show)
│ ├───deploy-docs omitted (use '--all-systems' to show) │ ├───deploy-docs omitted (use '--all-systems' to show)
│ ├───docs omitted (use '--all-systems' to show) │ ├───docs omitted (use '--all-systems' to show)

View File

@@ -10,10 +10,9 @@
treefmt.programs.mypy.enable = true; treefmt.programs.mypy.enable = true;
treefmt.programs.mypy.directories = { treefmt.programs.mypy.directories = {
"pkgs/clan-cli".extraPythonPackages = self'.packages.clan-cli.testDependencies; "pkgs/clan-cli".extraPythonPackages = self'.packages.clan-cli.testDependencies;
"pkgs/clan-vm-manager".extraPythonPackages = "pkgs/clan-app".extraPythonPackages =
# clan-vm-manager currently only exists on linux # clan-app currently only exists on linux
(self'.packages.clan-vm-manager.externalTestDeps or [ ]) (self'.packages.clan-app.externalTestDeps or [ ]) ++ self'.packages.clan-cli.testDependencies;
++ self'.packages.clan-cli.testDependencies;
}; };
treefmt.settings.formatter.nix = { treefmt.settings.formatter.nix = {

View File

@@ -3,4 +3,4 @@ source_up
watch_file flake-module.nix shell.nix default.nix watch_file flake-module.nix shell.nix default.nix
# Because we depend on nixpkgs sources, uploading to builders takes a long time # Because we depend on nixpkgs sources, uploading to builders takes a long time
use flake .#clan-vm-manager --builders '' use flake .#clan-app --builders ''

View File

@@ -1,4 +1,4 @@
# Clan VM Manager # clan app
Provides users with the simple functionality to manage their locally registered clans. Provides users with the simple functionality to manage their locally registered clans.
@@ -9,19 +9,19 @@ Provides users with the simple functionality to manage their locally registered
Run this application Run this application
```bash ```bash
./bin/clan-vm-manager ./bin/clan-app
``` ```
Join the default machine of a clan Join the default machine of a clan
```bash ```bash
./bin/clan-vm-manager [clan-uri] ./bin/clan-app [clan-uri]
``` ```
Join a specific machine of a clan Join a specific machine of a clan
```bash ```bash
./bin/clan-vm-manager [clan-uri]#[machine] ./bin/clan-app [clan-uri]#[machine]
``` ```
For more available commands see the developer section below. For more available commands see the developer section below.
@@ -35,7 +35,7 @@ For more available commands see the developer section below.
gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true
# Start the application with the debugger attached # Start the application with the debugger attached
GTK_DEBUG=interactive ./bin/clan-vm-manager --debug GTK_DEBUG=interactive ./bin/clan-app --debug
``` ```
Appending `--debug` flag enables debug logging printed into the console. Appending `--debug` flag enables debug logging printed into the console.
@@ -45,7 +45,7 @@ Appending `--debug` flag enables debug logging printed into the console.
To activate profiling you can run To activate profiling you can run
```bash ```bash
PERF=1 ./bin/clan-vm-manager PERF=1 ./bin/clan-app
``` ```
### Library Components ### Library Components
@@ -75,15 +75,15 @@ gtk4-icon-browser
### Links ### Links
Here are some important documentation links related to the Clan VM Manager: Here are some important documentation links related to the Clan App:
- [Adw PyGobject Reference](http://lazka.github.io/pgi-docs/index.html#Adw-1): This link provides the PyGObject reference documentation for the Adw library, which is used in the Clan VM Manager. It contains detailed information about the Adw widgets and their usage. - [Adw PyGobject Reference](http://lazka.github.io/pgi-docs/index.html#Adw-1): This link provides the PyGObject reference documentation for the Adw library, which is used in the Clan App. It contains detailed information about the Adw widgets and their usage.
- [GTK4 PyGobject Reference](http://lazka.github.io/pgi-docs/index.html#Gtk-4.0): This link provides the PyGObject reference documentation for GTK4, the toolkit used for building the user interface of the Clan VM Manager. It includes information about GTK4 widgets, signals, and other features. - [GTK4 PyGobject Reference](http://lazka.github.io/pgi-docs/index.html#Gtk-4.0): This link provides the PyGObject reference documentation for GTK4, the toolkit used for building the user interface of the clan app. It includes information about GTK4 widgets, signals, and other features.
- [Adw Widget Gallery](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/widget-gallery.html): This link showcases a widget gallery for Adw, allowing you to see the available widgets and their visual appearance. It can be helpful for designing the user interface of the Clan VM Manager. - [Adw Widget Gallery](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/widget-gallery.html): This link showcases a widget gallery for Adw, allowing you to see the available widgets and their visual appearance. It can be helpful for designing the user interface of the clan app.
- [Python + GTK3 Tutorial](https://python-gtk-3-tutorial.readthedocs.io/en/latest/textview.html): Although the Clan VM Manager uses GTK4, this tutorial for GTK3 can still be useful as it covers the basics of building GTK-based applications with Python. It includes examples and explanations for various GTK widgets, including text views. - [Python + GTK3 Tutorial](https://python-gtk-3-tutorial.readthedocs.io/en/latest/textview.html): Although the clan app uses GTK4, this tutorial for GTK3 can still be useful as it covers the basics of building GTK-based applications with Python. It includes examples and explanations for various GTK widgets, including text views.
- [GNOME Human Interface Guidelines](https://developer.gnome.org/hig/): This link provides the GNOME Human Interface Guidelines, which offer design and usability recommendations for creating GNOME applications. It covers topics such as layout, navigation, and interaction patterns. - [GNOME Human Interface Guidelines](https://developer.gnome.org/hig/): This link provides the GNOME Human Interface Guidelines, which offer design and usability recommendations for creating GNOME applications. It covers topics such as layout, navigation, and interaction patterns.

View File

@@ -7,7 +7,7 @@ module_path = Path(__file__).parent.parent.absolute()
sys.path.insert(0, str(module_path)) sys.path.insert(0, str(module_path))
sys.path.insert(0, str(module_path.parent / "clan_cli")) sys.path.insert(0, str(module_path.parent / "clan_cli"))
from clan_vm_manager import main # NOQA from clan_app import main # NOQA
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@@ -3,7 +3,7 @@ import sys
from clan_cli.profiler import profile from clan_cli.profiler import profile
from clan_vm_manager.app import MainApplication from clan_app.app import MainApplication
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View File

@@ -4,8 +4,8 @@ from typing import Any, ClassVar
import gi import gi
from clan_vm_manager import assets from clan_app import assets
from clan_vm_manager.singletons.toast import InfoToast, ToastOverlay from clan_app.singletons.toast import InfoToast, ToastOverlay
gi.require_version("Gtk", "4.0") gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1") gi.require_version("Adw", "1")
@@ -13,8 +13,8 @@ gi.require_version("Adw", "1")
from clan_cli.custom_logger import setup_logging from clan_cli.custom_logger import setup_logging
from gi.repository import Adw, Gdk, Gio, Gtk from gi.repository import Adw, Gdk, Gio, Gtk
from clan_vm_manager.components.interfaces import ClanConfig from clan_app.components.interfaces import ClanConfig
from clan_vm_manager.singletons.use_join import GLib, GObject from clan_app.singletons.use_join import GLib, GObject
from .windows.main_window import MainWindow from .windows.main_window import MainWindow

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View File

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 98 KiB

View File

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 155 KiB

View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View File

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 163 KiB

View File

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 183 KiB

View File

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

View File

@@ -4,7 +4,7 @@ from typing import TypeVar
import gi import gi
from clan_vm_manager import assets from clan_app import assets
gi.require_version("Adw", "1") gi.require_version("Adw", "1")
from gi.repository import Adw, GdkPixbuf, Gio, GObject, Gtk from gi.repository import Adw, GdkPixbuf, Gio, GObject, Gtk

View File

@@ -562,7 +562,7 @@ class StatusNotifierImplementation(BaseImplementation):
) )
self.tray_icon.register() self.tray_icon.register()
from clan_vm_manager.assets import loc from clan_app.assets import loc
icon_path = str(loc / "clan_white_notext.png") icon_path = str(loc / "clan_white_notext.png")
self.set_icon(icon_path) self.set_icon(icon_path)

View File

@@ -17,8 +17,8 @@ from clan_cli.clan_uri import ClanURI
from clan_cli.history.add import HistoryEntry from clan_cli.history.add import HistoryEntry
from clan_cli.machines.machines import Machine from clan_cli.machines.machines import Machine
from clan_vm_manager.components.executor import MPProcess, spawn from clan_app.components.executor import MPProcess, spawn
from clan_vm_manager.singletons.toast import ( from clan_app.singletons.toast import (
InfoToast, InfoToast,
SuccessToast, SuccessToast,
ToastOverlay, ToastOverlay,

View File

@@ -9,8 +9,8 @@ gi.require_version("Adw", "1")
from gi.repository import Adw from gi.repository import Adw
from clan_vm_manager.singletons.use_views import ViewStack from clan_app.singletons.use_views import ViewStack
from clan_vm_manager.views.logs import Logs from clan_app.views.logs import Logs
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View File

@@ -7,8 +7,8 @@ import gi
from clan_cli.clan_uri import ClanURI from clan_cli.clan_uri import ClanURI
from clan_cli.history.add import HistoryEntry, add_history from clan_cli.history.add import HistoryEntry, add_history
from clan_vm_manager.components.gkvstore import GKVStore from clan_app.components.gkvstore import GKVStore
from clan_vm_manager.singletons.use_vms import ClanStore from clan_app.singletons.use_vms import ClanStore
gi.require_version("Gtk", "4.0") gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1") gi.require_version("Adw", "1")

View File

@@ -7,11 +7,11 @@ import gi
from clan_cli.clan_uri import ClanURI from clan_cli.clan_uri import ClanURI
from clan_cli.history.add import HistoryEntry from clan_cli.history.add import HistoryEntry
from clan_vm_manager import assets from clan_app import assets
from clan_vm_manager.components.gkvstore import GKVStore from clan_app.components.gkvstore import GKVStore
from clan_vm_manager.components.vmobj import VMObject from clan_app.components.vmobj import VMObject
from clan_vm_manager.singletons.use_views import ViewStack from clan_app.singletons.use_views import ViewStack
from clan_vm_manager.views.logs import Logs from clan_app.views.logs import Logs
gi.require_version("GObject", "2.0") gi.require_version("GObject", "2.0")
gi.require_version("Gtk", "4.0") gi.require_version("Gtk", "4.0")

View File

@@ -7,20 +7,20 @@ from typing import Any, TypeVar
import gi import gi
from clan_cli.clan_uri import ClanURI from clan_cli.clan_uri import ClanURI
from clan_vm_manager.components.gkvstore import GKVStore from clan_app.components.gkvstore import GKVStore
from clan_vm_manager.components.interfaces import ClanConfig from clan_app.components.interfaces import ClanConfig
from clan_vm_manager.components.list_splash import EmptySplash from clan_app.components.list_splash import EmptySplash
from clan_vm_manager.components.vmobj import VMObject from clan_app.components.vmobj import VMObject
from clan_vm_manager.singletons.toast import ( from clan_app.singletons.toast import (
LogToast, LogToast,
SuccessToast, SuccessToast,
ToastOverlay, ToastOverlay,
WarningToast, WarningToast,
) )
from clan_vm_manager.singletons.use_join import JoinList, JoinValue from clan_app.singletons.use_join import JoinList, JoinValue
from clan_vm_manager.singletons.use_views import ViewStack from clan_app.singletons.use_views import ViewStack
from clan_vm_manager.singletons.use_vms import ClanStore, VMStore from clan_app.singletons.use_vms import ClanStore, VMStore
from clan_vm_manager.views.logs import Logs from clan_app.views.logs import Logs
gi.require_version("Adw", "1") gi.require_version("Adw", "1")
from gi.repository import Adw, Gdk, Gio, GLib, GObject, Gtk from gi.repository import Adw, Gdk, Gio, GLib, GObject, Gtk

View File

@@ -5,7 +5,7 @@ import gi
gi.require_version("Adw", "1") gi.require_version("Adw", "1")
from gi.repository import Adw, Gio, Gtk from gi.repository import Adw, Gio, Gtk
from clan_vm_manager.singletons.use_views import ViewStack from clan_app.singletons.use_views import ViewStack
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View File

@@ -16,9 +16,7 @@ gi.require_version("WebKit", "6.0")
from gi.repository import GLib, WebKit from gi.repository import GLib, WebKit
site_index: Path = ( site_index: Path = (
Path(sys.argv[0]).absolute() Path(sys.argv[0]).absolute() / Path("../..") / Path("clan_app/.webui/index.html")
/ Path("../..")
/ Path("clan_vm_manager/.webui/index.html")
).resolve() ).resolve()
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View File

@@ -5,20 +5,20 @@ import gi
from clan_cli.api import API from clan_cli.api import API
from clan_cli.history.list import list_history from clan_cli.history.list import list_history
from clan_vm_manager.components.interfaces import ClanConfig from clan_app.components.interfaces import ClanConfig
from clan_vm_manager.singletons.toast import ToastOverlay from clan_app.singletons.toast import ToastOverlay
from clan_vm_manager.singletons.use_views import ViewStack from clan_app.singletons.use_views import ViewStack
from clan_vm_manager.singletons.use_vms import ClanStore from clan_app.singletons.use_vms import ClanStore
from clan_vm_manager.views.details import Details from clan_app.views.details import Details
from clan_vm_manager.views.list import ClanList from clan_app.views.list import ClanList
from clan_vm_manager.views.logs import Logs from clan_app.views.logs import Logs
from clan_vm_manager.views.webview import WebView from clan_app.views.webview import WebView
gi.require_version("Adw", "1") gi.require_version("Adw", "1")
from gi.repository import Adw, Gio, GLib, Gtk from gi.repository import Adw, Gio, GLib, Gtk
from clan_vm_manager.components.trayicon import TrayIcon from clan_app.components.trayicon import TrayIcon
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View File

@@ -24,10 +24,10 @@
let let
source = ./.; source = ./.;
desktop-file = makeDesktopItem { desktop-file = makeDesktopItem {
name = "org.clan.vm-manager"; name = "org.clan.app";
exec = "clan-vm-manager %u"; exec = "clan-app %u";
icon = ./clan_vm_manager/assets/clan_white.png; icon = ./clan_app/assets/clan_white.png;
desktopName = "Clan Manager"; desktopName = "Clan App";
startupWMClass = "clan"; startupWMClass = "clan";
mimeTypes = [ "x-scheme-handler/clan" ]; mimeTypes = [ "x-scheme-handler/clan" ];
}; };
@@ -69,7 +69,7 @@ let
pythonWithTestDeps = python3.withPackages (_ps: testDependencies); pythonWithTestDeps = python3.withPackages (_ps: testDependencies);
in in
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
name = "clan-vm-manager"; name = "clan-app";
src = source; src = source;
format = "pyproject"; format = "pyproject";
@@ -99,8 +99,8 @@ python3.pkgs.buildPythonApplication rec {
# also re-expose dependencies so we test them in CI # also re-expose dependencies so we test them in CI
passthru = { passthru = {
tests = { tests = {
clan-vm-manager-pytest = clan-app-pytest =
runCommand "clan-vm-manager-pytest" { inherit buildInputs propagatedBuildInputs nativeBuildInputs; } runCommand "clan-app-pytest" { inherit buildInputs propagatedBuildInputs nativeBuildInputs; }
'' ''
cp -r ${source} ./src cp -r ${source} ./src
chmod +w -R ./src chmod +w -R ./src
@@ -124,7 +124,7 @@ python3.pkgs.buildPythonApplication rec {
touch $out touch $out
''; '';
clan-vm-manager-no-breakpoints = runCommand "clan-vm-manager-no-breakpoints" { } '' clan-app-no-breakpoints = runCommand "clan-app-no-breakpoints" { } ''
if grep --include \*.py -Rq "breakpoint()" ${source}; then if grep --include \*.py -Rq "breakpoint()" ${source}; then
echo "breakpoint() found in ${source}:" echo "breakpoint() found in ${source}:"
grep --include \*.py -Rn "breakpoint()" ${source} grep --include \*.py -Rn "breakpoint()" ${source}
@@ -142,10 +142,10 @@ python3.pkgs.buildPythonApplication rec {
passthru.runtimeDependencies = runtimeDependencies; passthru.runtimeDependencies = runtimeDependencies;
passthru.testDependencies = testDependencies; passthru.testDependencies = testDependencies;
# TODO: place webui in lib/python3.11/site-packages/clan_vm_manager # TODO: place webui in lib/python3.11/site-packages/clan_app
postInstall = '' postInstall = ''
mkdir -p $out/clan_vm_manager/.webui mkdir -p $out/clan_app/.webui
cp -r ${webview-ui}/lib/node_modules/@clan/webview-ui/dist/* $out/clan_vm_manager/.webui cp -r ${webview-ui}/lib/node_modules/@clan/webview-ui/dist/* $out/clan_app/.webui
''; '';
# Don't leak python packages into a devshell. # Don't leak python packages into a devshell.
@@ -166,7 +166,7 @@ python3.pkgs.buildPythonApplication rec {
echo "Loaded the following fonts ..." echo "Loaded the following fonts ..."
fc-list fc-list
PYTHONPATH= $out/bin/clan-vm-manager --help PYTHONPATH= $out/bin/clan-app --help
''; '';
desktopItems = [ desktop-file ]; desktopItems = [ desktop-file ];
} }

View File

@@ -0,0 +1,24 @@
{ ... }:
{
perSystem =
{
config,
pkgs,
lib,
system,
...
}:
if lib.elem system lib.platforms.darwin then
{ }
else
{
devShells.clan-app = pkgs.callPackage ./shell.nix {
inherit (config.packages) clan-app webview-ui;
};
packages.clan-app = pkgs.python3.pkgs.callPackage ./default.nix {
inherit (config.packages) clan-cli webview-ui;
};
checks = config.packages.clan-app.tests;
};
}

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
CLAN=$(nix build .#clan-vm-manager --print-out-paths) CLAN=$(nix build .#clan-app --print-out-paths)
if ! command -v xdg-mime &> /dev/null; then if ! command -v xdg-mime &> /dev/null; then
echo "Warning: 'xdg-mime' is not available. The desktop file cannot be installed." echo "Warning: 'xdg-mime' is not available. The desktop file cannot be installed."
@@ -8,14 +8,14 @@ fi
# install desktop file # install desktop file
set -eou pipefail set -eou pipefail
DESKTOP_FILE_NAME=org.clan.vm-manager.desktop DESKTOP_FILE_NAME=org.clan.app.desktop
DESKTOP_DST=~/.local/share/applications/"$DESKTOP_FILE_NAME" DESKTOP_DST=~/.local/share/applications/"$DESKTOP_FILE_NAME"
DESKTOP_SRC="$CLAN/share/applications/$DESKTOP_FILE_NAME" DESKTOP_SRC="$CLAN/share/applications/$DESKTOP_FILE_NAME"
UI_BIN="$CLAN/bin/clan-vm-manager" UI_BIN="$CLAN/bin/clan-app"
cp -f "$DESKTOP_SRC" "$DESKTOP_DST" cp -f "$DESKTOP_SRC" "$DESKTOP_DST"
sleep 2 sleep 2
sed -i "s|Exec=.*clan-vm-manager|Exec=$UI_BIN|" "$DESKTOP_DST" sed -i "s|Exec=.*clan-app|Exec=$UI_BIN|" "$DESKTOP_DST"
xdg-mime default "$DESKTOP_FILE_NAME" x-scheme-handler/clan xdg-mime default "$DESKTOP_FILE_NAME" x-scheme-handler/clan
echo "==== Validating desktop file installation ====" echo "==== Validating desktop file installation ===="
set -x set -x

View File

@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "clan-vm-manager" name = "clan-app"
description = "clan vm manager" description = "clan app"
dynamic = ["version"] dynamic = ["version"]
scripts = { clan-vm-manager = "clan_vm_manager:main" } scripts = { clan-app = "clan_app:main" }
[project.urls] [project.urls]
Homepage = "https://clan.lol/" Homepage = "https://clan.lol/"
@@ -18,7 +18,7 @@ Repository = "https://git.clan.lol/clan/clan-core"
exclude = ["result"] exclude = ["result"]
[tool.setuptools.package-data] [tool.setuptools.package-data]
clan_vm_manager = ["**/assets/*"] clan_app = ["**/assets/*"]
[tool.pytest.ini_options] [tool.pytest.ini_options]
testpaths = "tests" testpaths = "tests"

View File

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -1,7 +1,7 @@
{ {
lib, lib,
stdenv, stdenv,
clan-vm-manager, clan-app,
mkShell, mkShell,
ruff, ruff,
desktop-file-utils, desktop-file-utils,
@@ -15,7 +15,7 @@
let let
devshellTestDeps = devshellTestDeps =
clan-vm-manager.externalTestDeps clan-app.externalTestDeps
++ (with python3.pkgs; [ ++ (with python3.pkgs; [
rope rope
mypy mypy
@@ -26,7 +26,7 @@ let
]); ]);
in in
mkShell { mkShell {
inherit (clan-vm-manager) nativeBuildInputs; inherit (clan-app) nativeBuildInputs;
buildInputs = buildInputs =
[ [
ruff ruff
@@ -45,18 +45,18 @@ mkShell {
shellHook = '' shellHook = ''
export GIT_ROOT=$(git rev-parse --show-toplevel) export GIT_ROOT=$(git rev-parse --show-toplevel)
export PKG_ROOT=$GIT_ROOT/pkgs/clan-vm-manager export PKG_ROOT=$GIT_ROOT/pkgs/clan-app
# Add clan-vm-manager command to PATH # Add clan-app command to PATH
export PATH="$PKG_ROOT/bin":"$PATH" export PATH="$PKG_ROOT/bin":"$PATH"
# Add clan-cli to the python path so that we can import it without building it in nix first # Add clan-cli to the python path so that we can import it without building it in nix first
export PYTHONPATH="$GIT_ROOT/pkgs/clan-cli":"$PYTHONPATH" export PYTHONPATH="$GIT_ROOT/pkgs/clan-cli":"$PYTHONPATH"
# Add the webview-ui to the .webui directory # Add the webview-ui to the .webui directory
rm -rf ./clan_vm_manager/.webui/* rm -rf ./clan_app/.webui/*
mkdir -p ./clan_vm_manager/.webui mkdir -p ./clan_app/.webui
cp -a ${webview-ui}/lib/node_modules/@clan/webview-ui/dist/* ./clan_vm_manager/.webui cp -a ${webview-ui}/lib/node_modules/@clan/webview-ui/dist/* ./clan_app/.webui
chmod -R +w ./clan_vm_manager/.webui chmod -R +w ./clan_app/.webui
''; '';
} }

View File

@@ -7,9 +7,7 @@ from clan_cli.custom_logger import setup_logging
from clan_cli.nix import nix_shell from clan_cli.nix import nix_shell
sys.path.append(str(Path(__file__).parent / "helpers")) sys.path.append(str(Path(__file__).parent / "helpers"))
sys.path.append( sys.path.append(str(Path(__file__).parent.parent)) # Also add clan app to PYTHONPATH
str(Path(__file__).parent.parent)
) # Also add clan vm manager to PYTHONPATH
pytest_plugins = [ pytest_plugins = [
"temporary_dir", "temporary_dir",

View File

@@ -3,7 +3,7 @@ import shlex
from clan_cli.custom_logger import get_caller from clan_cli.custom_logger import get_caller
from clan_vm_manager import main from clan_app import main
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View File

@@ -5,4 +5,4 @@ from cli import Cli
def test_help(capfd: pytest.CaptureFixture) -> None: def test_help(capfd: pytest.CaptureFixture) -> None:
cli = Cli() cli = Cli()
with pytest.raises(SystemExit): with pytest.raises(SystemExit):
cli.run(["clan-vm-manager", "--help"]) cli.run(["clan-app", "--help"])

View File

@@ -21,7 +21,7 @@ GtkProc = NewType("GtkProc", Popen)
@pytest.fixture(scope="function") @pytest.fixture(scope="function")
def app() -> Generator[GtkProc, None, None]: def app() -> Generator[GtkProc, None, None]:
rapp = Popen([sys.executable, "-m", "clan_vm_manager"], text=True) rapp = Popen([sys.executable, "-m", "clan_app"], text=True)
yield GtkProc(rapp) yield GtkProc(rapp)
# Cleanup: Terminate your application # Cleanup: Terminate your application
rapp.terminate() rapp.terminate()

View File

@@ -1,24 +0,0 @@
{ ... }:
{
perSystem =
{
config,
pkgs,
lib,
system,
...
}:
if lib.elem system lib.platforms.darwin then
{ }
else
{
devShells.clan-vm-manager = pkgs.callPackage ./shell.nix {
inherit (config.packages) clan-vm-manager webview-ui;
};
packages.clan-vm-manager = pkgs.python3.pkgs.callPackage ./default.nix {
inherit (config.packages) clan-cli webview-ui;
};
checks = config.packages.clan-vm-manager.tests;
};
}

View File

@@ -9,7 +9,7 @@
contents = [ contents = [
{ {
src = "${./gui-installer.sh}"; src = "${./gui-installer.sh}";
dst = "/usr/bin/clan-vm-manager"; dst = "/usr/bin/clan-app";
} }
]; ];
} }

View File

@@ -53,7 +53,7 @@ ensure_nix_installed() {
start_clan_gui() { start_clan_gui() {
PATH="${PATH:+$PATH:}/nix/var/nix/profiles/default/bin" \ PATH="${PATH:+$PATH:}/nix/var/nix/profiles/default/bin" \
exec nix run \ exec nix run \
https://git.clan.lol/clan/clan-core/archive/main.tar.gz#clan-vm-manager \ https://git.clan.lol/clan/clan-core/archive/main.tar.gz#clan-app \
--no-accept-flake-config \ --no-accept-flake-config \
--extra-experimental-features flakes nix-command -- "$@" --extra-experimental-features flakes nix-command -- "$@"
} }

View File

@@ -3,7 +3,7 @@
{ {
imports = [ imports = [
./clan-cli/flake-module.nix ./clan-cli/flake-module.nix
./clan-vm-manager/flake-module.nix ./clan-app/flake-module.nix
./installer/flake-module.nix ./installer/flake-module.nix
./schemas/flake-module.nix ./schemas/flake-module.nix
./webview-ui/flake-module.nix ./webview-ui/flake-module.nix