diff --git a/iso/common.nix b/iso/common.nix index 4e64ad4..d517331 100644 --- a/iso/common.nix +++ b/iso/common.nix @@ -6,8 +6,10 @@ let pythonEnv = pkgs.python3.withPackages (ps: [ ps.pygobject3 ]); installerPy = pkgs.writeShellScriptBin "sovran-install" '' - export GI_TYPELIB_PATH=${pkgs.gtk4}/lib/girepository-1.0:${pkgs.libadwaita}/lib/girepository-1.0:${pkgs.glib}/lib/girepository-1.0:${pkgs.pango}/lib/girepository-1.0:${pkgs.gdk-pixbuf}/lib/girepository-1.0:${pkgs.graphene}/lib/girepository-1.0:${pkgs.cairo}/lib/girepository-1.0:${pkgs.harfbuzz}/lib/girepository-1.0 + export GI_TYPELIB_PATH=${pkgs.gtk4}/lib/girepository-1.0:${pkgs.libadwaita}/lib/girepository-1.0:${pkgs.glib}/lib/girepository-1.0:${pkgs.pango}/lib/girepository-1.0:${pkgs.gdk-pixbuf}/lib/girepository-1.0:${pkgs.graphene}/lib/girepository-1.0:${pkgs.cairo}/lib/girepository-1.0:${pkgs.harfbuzz}/lib/girepository-1.0:${pkgs.gobject-introspection}/lib/girepository-1.0 export LD_LIBRARY_PATH=${pkgs.gtk4}/lib:${pkgs.libadwaita}/lib:${pkgs.glib}/lib:${pkgs.pango}/lib:${pkgs.gdk-pixbuf}/lib:${pkgs.graphene}/lib:${pkgs.cairo}/lib:${pkgs.harfbuzz}/lib + export GDK_PIXBUF_MODULE_FILE="${pkgs.gdk-pixbuf}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" + export XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk4}/share:${pkgs.libadwaita}/share:${pkgs.adwaita-icon-theme}/share:${pkgs.hicolor-icon-theme}/share:$XDG_DATA_DIRS" exec ${pythonEnv}/bin/python3 /etc/sovran/installer.py ''; in @@ -34,7 +36,7 @@ in services.displayManager.autoLogin.enable = true; services.displayManager.autoLogin.user = lib.mkForce "free"; - nix-bitcoin.generateSecrets = true; + nix-bitcoin.generateSecrets = lib.mkDefault true; environment.systemPackages = with pkgs; [ installerPy @@ -48,6 +50,8 @@ in graphene cairo harfbuzz + gsettings-desktop-schemas + adwaita-icon-theme util-linux disko parted diff --git a/iso/installer.py b/iso/installer.py index 625da05..bf96e0b 100644 --- a/iso/installer.py +++ b/iso/installer.py @@ -2,20 +2,29 @@ import gi gi.require_version("Gtk", "4.0") gi.require_version("Adw", "1") -from gi.repository import Gtk, Adw, GLib, Pango, GdkPixbuf, Gio -import subprocess -import threading +from gi.repository import Gtk, Adw, GLib +import atexit import os +import subprocess +import sys +import threading LOGO = "/etc/sovran/logo.png" LOG = "/tmp/sovran-install.log" FLAKE = "/etc/sovran/flake" -logfile = open(LOG, "a") +try: + logfile = open(LOG, "a") + atexit.register(logfile.close) +except OSError: + logfile = None def log(msg): - logfile.write(msg + "\n") - logfile.flush() + if logfile is not None: + logfile.write(msg + "\n") + logfile.flush() + else: + print(msg, file=sys.stderr) def run(cmd): log(f"$ {' '.join(cmd)}") @@ -347,11 +356,10 @@ class InstallerWindow(Adw.ApplicationWindow): def on_confirm_next(self, btn): if self._confirm_entry.get_text().strip() != "ERASE": - dlg = Adw.MessageDialog( - transient_for=self, - heading="Confirmation Required", - body="You must type ERASE exactly to proceed." - ) + dlg = Adw.MessageDialog() + dlg.set_transient_for(self) + dlg.set_heading("Confirmation Required") + dlg.set_body("You must type ERASE exactly to proceed.") dlg.add_response("ok", "OK") dlg.present() return