clan-app: rename clan-vm-manager
All checks were successful
buildbot/nix-build .#checks.x86_64-linux.clan-dep-e2fsprogs Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-bash Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-app-no-breakpoints Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-fakeroot Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-age Build done.
buildbot/nix-build .#checks.x86_64-linux.check-for-breakpoints Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-app-pytest Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.x86_64-linux.borgbackup Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-test-backup Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-flash-installer Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-iso-installer Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-test-backup Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-flash-installer Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-git Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-openssh Build done.
buildbot/nix-build .#checks.x86_64-linux."clan-dep-python3.11-mypy" Build done.
buildbot/nix-build .#checks.x86_64-linux."clan-dep-python3.11-qemu" Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-rsync Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-sops Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-sshpass Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-tor Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-zbar Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-pytest-without-core Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-clan-app Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-nix Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-webview-ui Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-pytest-with-core Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-jsonschema-example-valid Build done.
buildbot/nix-build .#checks.x86_64-linux.container Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-clan-cli Build done.
buildbot/nix-build .#checks.x86_64-linux.deltachat Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-default Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-app Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-cli Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-cli-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-ts-api Build done.
buildbot/nix-build .#checks.x86_64-linux.package-default Build done.
buildbot/nix-build .#checks.x86_64-linux.matrix-synapse Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.x86_64-linux.package-editor Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-install-test-ubuntu-22-04 Build done.
buildbot/nix-build .#checks.x86_64-linux.test-backups Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-apk Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-archlinux Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-deb Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-rpm Build done.
buildbot/nix-build .#checks.x86_64-linux.package-impure-checks Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-test-backup Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-jsonschema-nix-unit-tests Build done.
buildbot/nix-build .#checks.x86_64-linux.package-deploy-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.package-moonlight-sunshine-accept Build done.
buildbot/nix-build .#checks.x86_64-linux.package-pending-reviews Build done.
buildbot/nix-build .#checks.x86_64-linux.package-tea-create-pr Build done.
buildbot/nix-build .#checks.x86_64-linux.package-webview-ui Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zerotier-members Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zerotierone Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zt-tcp-relay Build done.
buildbot/nix-build .#checks.x86_64-linux.module-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.package-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.renderClanOptions Build done.
buildbot/nix-build .#checks.x86_64-linux.package-function-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.package-merge-after-ci Build done.
buildbot/nix-build .#checks.x86_64-linux.package-module-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.package-module-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-flash-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.secrets Build done.
buildbot/nix-build .#checks.x86_64-linux.treefmt Build done.
buildbot/nix-build .#checks.x86_64-linux.wayland-proxy-virtwl Build done.
buildbot/nix-build .#checks.x86_64-linux.zt-tcp-relay Build done.
buildbot/nix-build .#checks.x86_64-linux.package-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.syncthing Build done.
checks / checks-impure (pull_request) Successful in 2m19s
buildbot/nix-build .#checks.x86_64-linux.flash Build done.
buildbot/nix-build .#checks.x86_64-linux.test-installation Build done.
buildbot/nix-eval Build done.

This commit is contained in:
Johannes Kirschbauer 2024-06-05 11:23:12 +02:00
parent c751bc78d8
commit 0fb207bb59
Signed by: hsjobeki
SSH Key Fingerprint: SHA256:vX3utDqig7Ph5L0JPv87ZTPb/w7cMzREKVZzzLFg9qU
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,20 +75,20 @@ 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.
## Error handling ## Error handling
> Error dialogs should be avoided where possible, since they are disruptive. > Error dialogs should be avoided where possible, since they are disruptive.
> >
> For simple non-critical errors, toasts can be a good alternative. > For simple non-critical errors, toasts can be a good alternative.

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
@ -112,8 +112,8 @@ python3.pkgs.buildPythonApplication rec {
mkdir -p .home/.local/share/fonts mkdir -p .home/.local/share/fonts
export HOME=.home export HOME=.home
fc-cache --verbose fc-cache --verbose
# > fc-cache succeded # > fc-cache succeded
echo "Loaded the following fonts ..." echo "Loaded the following fonts ..."
fc-list fc-list
@ -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.
@ -160,13 +160,13 @@ python3.pkgs.buildPythonApplication rec {
mkdir -p .home/.local/share/fonts mkdir -p .home/.local/share/fonts
export HOME=.home export HOME=.home
fc-cache --verbose fc-cache --verbose
# > fc-cache succeded # > fc-cache succeded
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"
@ -43,5 +43,5 @@ ignore_missing_imports = true
[tool.ruff] [tool.ruff]
target-version = "py311" target-version = "py311"
line-length = 88 line-length = 88
lint.select = [ "E", "F", "I", "U", "N", "RUF", "ANN", "A" ] lint.select = ["E", "F", "I", "U", "N", "RUF", "ANN", "A"]
lint.ignore = ["E501", "E402", "N802", "ANN101", "ANN401", "A003"] lint.ignore = ["E501", "E402", "N802", "ANN101", "ANN401", "A003"]

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