diff --git a/README.md b/README.md index ac5334d..4acf4c1 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,3 @@ -# deskOS - An easy to use, stable desktop operating system - -See https://nixup.io/desk-os/learn-more - -## Run a deskOS demo in a virtual machine - -If you are running NixOS or you have the [Nix package manager](https://nixos.org/) installed, you can easily run a deskOS demo from this flake: - -```sh -nix run github:nixup-io/desk-os -``` - -## Contact - -- E-mail: [info@nixup.io](mailto:info@nixup.io) -- X: [@michaelshmitty](https://x.com/michaelshmitty) -- Fediverse: [@neo](https://social.hacktheplanet.be/@neo) - -## Acknowledgements +# deskOS - School Edition deskOS is based on [Linux](https://en.wikipedia.org/wiki/Linux) and [NixOS](https://nixos.org/). diff --git a/assets/school-wallpaper.jpg b/assets/school-wallpaper.jpg new file mode 100644 index 0000000..f1e6d40 Binary files /dev/null and b/assets/school-wallpaper.jpg differ diff --git a/machines/demo/default.nix b/machines/demo/default.nix index 90a7508..2612288 100644 --- a/machines/demo/default.nix +++ b/machines/demo/default.nix @@ -20,9 +20,8 @@ # Localization time.timeZone = "Europe/Brussels"; - i18n.defaultLocale = "en_US.UTF-8"; - services.xserver.xkb.layout = "us"; - services.xserver.xkb.variant = "dvorak"; + i18n.defaultLocale = "nl_NL.UTF-8"; + services.xserver.xkb.layout = "nl"; services.displayManager.autoLogin = { enable = true; diff --git a/modules/desk-os/default.nix b/modules/desk-os/default.nix index edc0fe5..0c55d5c 100644 --- a/modules/desk-os/default.nix +++ b/modules/desk-os/default.nix @@ -20,12 +20,12 @@ loader.efi.canTouchEfiVariables = true; plymouth = { enable = true; - theme = "desk-os"; - themePackages = [(pkgs.callPackage ../../packages/desk-os-plymouth {})]; + theme = "lightbulb"; + themePackages = [ (pkgs.callPackage ../../packages/lightbulb-plymouth {}) ]; }; }; - system.nixos.distroName = "deskOS 1"; + system.nixos.distroName = "deskOS 1 - School Edition"; system.autoUpgrade = { enable = true; @@ -76,8 +76,8 @@ { settings = { "org/gnome/desktop/background" = { - picture-uri = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/geometrics-l.jxl"; - picture-uri-dark = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/geometrics-d.jxl"; + picture-uri = "file://${../../assets/school-wallpaper.jpg}"; + picture-uri-dark = "file://${../../assets/school-wallpaper.jpg}"; }; "org/gnome/desktop/wm/preferences" = { @@ -85,7 +85,7 @@ }; "org/gnome/desktop/screensaver" = { - picture-uri = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/geometrics-l.jxl"; + picture-uri = "file://${../../assets/school-wallpaper.jpg}"; }; "org/gnome/desktop/interface" = { @@ -171,12 +171,12 @@ menu-layout = "Windows"; pinned-apps = lib.gvariant.mkArray [ [(lib.gvariant.mkDictionaryEntry "id" "firefox.desktop")] - [(lib.gvariant.mkDictionaryEntry "id" "org.gnome.Geary.desktop")] - [(lib.gvariant.mkDictionaryEntry "id" "org.gnome.Calendar.desktop")] [(lib.gvariant.mkDictionaryEntry "id" "org.gnome.Nautilus.desktop")] [(lib.gvariant.mkDictionaryEntry "id" "writer.desktop")] [(lib.gvariant.mkDictionaryEntry "id" "calc.desktop")] [(lib.gvariant.mkDictionaryEntry "id" "impress.desktop")] + [(lib.gvariant.mkDictionaryEntry "id" "org.kde.krita.desktop")] + [(lib.gvariant.mkDictionaryEntry "id" "supertuxkart.desktop")] [(lib.gvariant.mkDictionaryEntry "id" "org.gnome.Software.desktop")] ]; }; @@ -212,7 +212,9 @@ gnomeExtensions.just-perfection gnomeExtensions.printers gnomeExtensions.removable-drive-menu + krita libreoffice + superTuxKart ]; environment.gnome.excludePackages = with pkgs; [ diff --git a/modules/installer/default.nix b/modules/installer/default.nix index cb3d7f1..75d2ba9 100644 --- a/modules/installer/default.nix +++ b/modules/installer/default.nix @@ -30,7 +30,7 @@ in { (modulesPath + "/profiles/installation-device.nix") ]; - system.nixos.distroName = "deskOS 1"; + system.nixos.distroName = "deskOS 1 - School Edition"; # FIXME(m): Disable squashfs compression during development # isoImage.squashfsCompression = null; @@ -43,8 +43,8 @@ in { loader.timeout = lib.mkForce 0; plymouth = { enable = true; - theme = "desk-os-installer"; - themePackages = [(pkgs.callPackage ../../packages/desk-os-installer-plymouth {})]; + theme = "lightbulb-installer"; + themePackages = [ (pkgs.callPackage ../../packages/lightbulb-installer-plymouth {}) ]; }; # NOTE(m): Enable kernel modules that improve wifi support on # Macbooks during installation. @@ -125,6 +125,8 @@ in { gnomeExtensions.no-overview ]; + i18n.defaultLocale = "nl_NL.UTF-8"; + # Support choosing from any locale i18n.supportedLocales = ["all"]; @@ -147,9 +149,9 @@ in { sleep-inactive-ac-type='nothing' sleep-inactive-battery-type='nothing' [org.gnome.desktop.background] - picture-uri='file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/geometrics-l.jxl' + picture-uri='file://${../../assets/school-wallpaper.jpg}' [org.gnome.desktop.screensaver] - picture-uri='file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/geometrics-l.jxl' + picture-uri='file://${../../assets/school-wallpaper.jpg}' ''; extraGSettingsOverridePackages = [pkgs.gnome.gnome-settings-daemon]; diff --git a/packages/calamares-extensions/branding/default/branding.desc b/packages/calamares-extensions/branding/default/branding.desc index ee19628..3cc69ae 100644 --- a/packages/calamares-extensions/branding/default/branding.desc +++ b/packages/calamares-extensions/branding/default/branding.desc @@ -9,21 +9,21 @@ windowExpanding: fullscreen windowPlacement: center sidebar: none strings: - productName: deskOS - shortProductName: deskOS + productName: deskOS - School Edition + shortProductName: deskOS - School Edition version: 1 shortVersion: 1 - versionedName: deskOS 1 - shortVersionedName: deskOS 1 - bootloaderEntryName: deskOS + versionedName: deskOS 1 - School Edition + shortVersionedName: deskOS 1 - School Edition + bootloaderEntryName: deskOS - School Edition productUrl: https://nixup.io supportUrl: https://nixup.io knownIssuesUrl: https://github.com/nixup-io/desk-os/issues releaseNotesUrl: https://nixup.io donateUrl: https://nixup.io images: - productIcon: "desk-os-logo.png" - productLogo: "desk-os-logo.png" + productIcon: "desk-os-logo-school.png" + productLogo: "desk-os-logo-school.png" style: SidebarBackground: "#292F34" SidebarText: "#FFFFFF" diff --git a/packages/calamares-extensions/branding/default/desk-os-logo-school.png b/packages/calamares-extensions/branding/default/desk-os-logo-school.png new file mode 100644 index 0000000..62903f0 Binary files /dev/null and b/packages/calamares-extensions/branding/default/desk-os-logo-school.png differ diff --git a/packages/calamares-extensions/config/modules/users.conf b/packages/calamares-extensions/config/modules/users.conf index d069de6..856d141 100644 --- a/packages/calamares-extensions/config/modules/users.conf +++ b/packages/calamares-extensions/config/modules/users.conf @@ -5,7 +5,6 @@ defaultGroups: - users - networkmanager - - wheel setRootPassword: false doAutologin: true user: diff --git a/packages/calamares-extensions/modules/desk_os_installation/main.py b/packages/calamares-extensions/modules/desk_os_installation/main.py index 408b45e..087dbf5 100644 --- a/packages/calamares-extensions/modules/desk_os_installation/main.py +++ b/packages/calamares-extensions/modules/desk_os_installation/main.py @@ -56,7 +56,7 @@ flake = f""" inputs = {{ nixpkgs.url = "github:nixup-io/nixpkgs-desk-os/stable"; desk-os = {{ - url = "github:nixup-io/desk-os"; + url = "github:nixup-io/desk-os/school-edition"; inputs.nixpkgs.follows = "nixpkgs"; }}; }}; @@ -168,7 +168,7 @@ configuration_tail = """ """ def pretty_name(): - return _("Installing deskOS (this can take a while depending on your Internet speed)...") + return _("Installing deskOS - School Edition (this can take a while depending on your Internet speed)...") status = pretty_name() @@ -243,7 +243,7 @@ def run(): if (gs.value("username") is not None): fullname = gs.value("fullname") - groups = ["networkmanager", "wheel"] + groups = ["networkmanager"] catenate(variables, "username", gs.value("username")) catenate(variables, "fullname", fullname) @@ -295,7 +295,7 @@ def run(): libcalamares.utils.host_env_process_output( ["cp", "/dev/stdin", flakeFile], None, flake) - status = _("Installing deskOS (this can take a while depending on your Internet speed)...") + status = _("Installing deskOS - School Edition (this can take a while depending on your Internet speed)...") # Install try: diff --git a/packages/lightbulb-installer-plymouth/default.nix b/packages/lightbulb-installer-plymouth/default.nix new file mode 100644 index 0000000..ffe8f5e --- /dev/null +++ b/packages/lightbulb-installer-plymouth/default.nix @@ -0,0 +1,16 @@ +{stdenv}: +stdenv.mkDerivation { + pname = "lightbulb-installer-plymouth"; + version = "0.0.1"; + + src = ./src; + + installPhase = '' + runHook preInstall + sed -i 's:\(^ImageDir=\)/usr:\1'"$out"':' lightbulb-installer.plymouth + sed -i 's:\(^ScriptFile=\)/usr:\1'"$out"':' lightbulb-installer.plymouth + mkdir -p $out/share/plymouth/themes/lightbulb-installer + cp * $out/share/plymouth/themes/lightbulb-installer + runHook postInstall + ''; +} diff --git a/packages/lightbulb-installer-plymouth/src/lightbulb-installer.plymouth b/packages/lightbulb-installer-plymouth/src/lightbulb-installer.plymouth new file mode 100644 index 0000000..f2e8afa --- /dev/null +++ b/packages/lightbulb-installer-plymouth/src/lightbulb-installer.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=Lightbulb Installer +Description=A theme that displays the Lightbulb Installer logo +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/lightbulb-installer +ScriptFile=/usr/share/plymouth/themes/lightbulb-installer/lightbulb-installer.script diff --git a/packages/lightbulb-installer-plymouth/src/lightbulb-installer.png b/packages/lightbulb-installer-plymouth/src/lightbulb-installer.png new file mode 100644 index 0000000..d2bc3fd Binary files /dev/null and b/packages/lightbulb-installer-plymouth/src/lightbulb-installer.png differ diff --git a/packages/lightbulb-installer-plymouth/src/lightbulb-installer.script b/packages/lightbulb-installer-plymouth/src/lightbulb-installer.script new file mode 100644 index 0000000..7dbef5c --- /dev/null +++ b/packages/lightbulb-installer-plymouth/src/lightbulb-installer.script @@ -0,0 +1,8 @@ +image = Image("lightbulb-installer.png"); + +pos_x = Window.GetWidth()/2 - image.GetWidth()/2; +pos_y = Window.GetHeight()/2 - image.GetHeight()/2; + +sprite = Sprite(image); +sprite.SetX(pos_x); +sprite.SetY(pos_y); diff --git a/packages/lightbulb-plymouth/default.nix b/packages/lightbulb-plymouth/default.nix new file mode 100644 index 0000000..a3a2e61 --- /dev/null +++ b/packages/lightbulb-plymouth/default.nix @@ -0,0 +1,16 @@ +{stdenv}: +stdenv.mkDerivation { + pname = "lightbulb-plymouth"; + version = "0.0.1"; + + src = ./src; + + installPhase = '' + runHook preInstall + sed -i 's:\(^ImageDir=\)/usr:\1'"$out"':' lightbulb.plymouth + sed -i 's:\(^ScriptFile=\)/usr:\1'"$out"':' lightbulb.plymouth + mkdir -p $out/share/plymouth/themes/lightbulb + cp * $out/share/plymouth/themes/lightbulb + runHook postInstall + ''; +} diff --git a/packages/lightbulb-plymouth/src/lightbulb.plymouth b/packages/lightbulb-plymouth/src/lightbulb.plymouth new file mode 100644 index 0000000..8839131 --- /dev/null +++ b/packages/lightbulb-plymouth/src/lightbulb.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=Lightbulb +Description=A theme that displays the Lightbulb +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/lightbulb +ScriptFile=/usr/share/plymouth/themes/lightbulb/lightbulb.script diff --git a/packages/lightbulb-plymouth/src/lightbulb.png b/packages/lightbulb-plymouth/src/lightbulb.png new file mode 100644 index 0000000..2ccf950 Binary files /dev/null and b/packages/lightbulb-plymouth/src/lightbulb.png differ diff --git a/packages/lightbulb-plymouth/src/lightbulb.script b/packages/lightbulb-plymouth/src/lightbulb.script new file mode 100644 index 0000000..39525b5 --- /dev/null +++ b/packages/lightbulb-plymouth/src/lightbulb.script @@ -0,0 +1,8 @@ +image = Image("lightbulb.png"); + +pos_x = Window.GetWidth()/2 - image.GetWidth()/2; +pos_y = Window.GetHeight()/2 - image.GetHeight()/2; + +sprite = Sprite(image); +sprite.SetX(pos_x); +sprite.SetY(pos_y);