Compare commits
	
		
			7 Commits
		
	
	
		
			school-edi
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					2130b915ee | ||
| a36b44d1af | |||
| 8cac364367 | |||
| 
						 | 
					4619935c9a | ||
| 
						 | 
					bc42dde34a | ||
| 
						 | 
					2b2ee66665 | ||
| 
						 | 
					27596e7f45 | 
							
								
								
									
										19
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								README.md
									
									
									
									
									
								
							@ -1,3 +1,20 @@
 | 
			
		||||
# deskOS - School Edition
 | 
			
		||||
# deskOS - An easy to use, stable desktop operating system
 | 
			
		||||
 | 
			
		||||
## 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 git+https://git.michaelsmith.be/m/desk-os.git
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Contact
 | 
			
		||||
 | 
			
		||||
- E-mail: [postbus@michaelsmith.be](mailto:postbus@michaelsmith.be)
 | 
			
		||||
- Mastodon: [@neo](https://social.hacktheplanet.be/@neo)
 | 
			
		||||
- Bluesky: [Michael Smith (Neo)](https://bsky.app/profile/hacktheplanet.be)
 | 
			
		||||
- X: [@michaelshmitty](https://x.com/michaelshmitty)
 | 
			
		||||
 | 
			
		||||
## Acknowledgements
 | 
			
		||||
 | 
			
		||||
deskOS is based on [Linux](https://en.wikipedia.org/wiki/Linux) and [NixOS](https://nixos.org/).
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 82 KiB  | 
							
								
								
									
										8
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							@ -2,16 +2,16 @@
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1725407940,
 | 
			
		||||
        "narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=",
 | 
			
		||||
        "lastModified": 1743576891,
 | 
			
		||||
        "narHash": "sha256-vXiKURtntURybE6FMNFAVpRPr8+e8KoLPrYs9TGuAKc=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3",
 | 
			
		||||
        "rev": "44a69ed688786e98a101f02b712c313f1ade37ab",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "ref": "nixos-24.05",
 | 
			
		||||
        "ref": "nixos-24.11",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
  description = "deskOS - An easy to use, stable desktop operating system";
 | 
			
		||||
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
 | 
			
		||||
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs = {
 | 
			
		||||
 | 
			
		||||
@ -20,8 +20,9 @@
 | 
			
		||||
 | 
			
		||||
    # Localization
 | 
			
		||||
    time.timeZone = "Europe/Brussels";
 | 
			
		||||
    i18n.defaultLocale = "nl_NL.UTF-8";
 | 
			
		||||
    services.xserver.xkb.layout = "nl";
 | 
			
		||||
    i18n.defaultLocale = "en_US.UTF-8";
 | 
			
		||||
    services.xserver.xkb.layout = "us";
 | 
			
		||||
    services.xserver.xkb.variant = "dvorak";
 | 
			
		||||
 | 
			
		||||
    services.displayManager.autoLogin = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
 | 
			
		||||
@ -20,12 +20,12 @@
 | 
			
		||||
    loader.efi.canTouchEfiVariables = true;
 | 
			
		||||
    plymouth = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      theme = "lightbulb";
 | 
			
		||||
      themePackages = [ (pkgs.callPackage ../../packages/lightbulb-plymouth {}) ];
 | 
			
		||||
      theme = "desk-os";
 | 
			
		||||
      themePackages = [(pkgs.callPackage ../../packages/desk-os-plymouth {})];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  system.nixos.distroName = "deskOS 1 - School Edition";
 | 
			
		||||
  system.nixos.distroName = "deskOS 1";
 | 
			
		||||
 | 
			
		||||
  system.autoUpgrade = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
@ -68,16 +68,14 @@
 | 
			
		||||
    pulse.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  i18n.inputMethod.enabled = "ibus";
 | 
			
		||||
 | 
			
		||||
  programs.dconf.enable = true;
 | 
			
		||||
  programs.dconf.profiles = {
 | 
			
		||||
    user.databases = [
 | 
			
		||||
      {
 | 
			
		||||
        settings = {
 | 
			
		||||
          "org/gnome/desktop/background" = {
 | 
			
		||||
            picture-uri = "file://${../../assets/school-wallpaper.jpg}";
 | 
			
		||||
            picture-uri-dark = "file://${../../assets/school-wallpaper.jpg}";
 | 
			
		||||
            picture-uri = "file://${pkgs.gnome-backgrounds}/share/backgrounds/gnome/geometrics-l.jxl";
 | 
			
		||||
            picture-uri-dark = "file://${pkgs.gnome-backgrounds}/share/backgrounds/gnome/geometrics-d.jxl";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "org/gnome/desktop/wm/preferences" = {
 | 
			
		||||
@ -85,7 +83,7 @@
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "org/gnome/desktop/screensaver" = {
 | 
			
		||||
            picture-uri = "file://${../../assets/school-wallpaper.jpg}";
 | 
			
		||||
            picture-uri = "file://${pkgs.gnome-backgrounds}/share/backgrounds/gnome/geometrics-l.jxl";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "org/gnome/desktop/interface" = {
 | 
			
		||||
@ -171,12 +169,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")]
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
@ -200,7 +198,7 @@
 | 
			
		||||
    desktopManager.gnome.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services.udev.packages = with pkgs; [gnome.gnome-settings-daemon];
 | 
			
		||||
  services.udev.packages = with pkgs; [gnome-settings-daemon];
 | 
			
		||||
 | 
			
		||||
  programs.firefox.enable = true;
 | 
			
		||||
 | 
			
		||||
@ -212,14 +210,12 @@
 | 
			
		||||
    gnomeExtensions.just-perfection
 | 
			
		||||
    gnomeExtensions.printers
 | 
			
		||||
    gnomeExtensions.removable-drive-menu
 | 
			
		||||
    krita
 | 
			
		||||
    libreoffice
 | 
			
		||||
    superTuxKart
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  environment.gnome.excludePackages = with pkgs; [
 | 
			
		||||
    pkgs.gnome-tour
 | 
			
		||||
    pkgs.gnome.epiphany
 | 
			
		||||
    pkgs.epiphany
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  # Fix scaling issues with electron apps
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@ in {
 | 
			
		||||
    (modulesPath + "/profiles/installation-device.nix")
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  system.nixos.distroName = "deskOS 1 - School Edition";
 | 
			
		||||
  system.nixos.distroName = "deskOS 1";
 | 
			
		||||
 | 
			
		||||
  # FIXME(m): Disable squashfs compression during development
 | 
			
		||||
  # isoImage.squashfsCompression = null;
 | 
			
		||||
@ -43,8 +43,8 @@ in {
 | 
			
		||||
    loader.timeout = lib.mkForce 0;
 | 
			
		||||
    plymouth = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      theme = "lightbulb-installer";
 | 
			
		||||
      themePackages = [ (pkgs.callPackage ../../packages/lightbulb-installer-plymouth {}) ];
 | 
			
		||||
      theme = "desk-os-installer";
 | 
			
		||||
      themePackages = [(pkgs.callPackage ../../packages/desk-os-installer-plymouth {})];
 | 
			
		||||
    };
 | 
			
		||||
    # NOTE(m): Enable kernel modules that improve wifi support on
 | 
			
		||||
    # Macbooks during installation.
 | 
			
		||||
@ -125,8 +125,6 @@ in {
 | 
			
		||||
    gnomeExtensions.no-overview
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  i18n.defaultLocale = "nl_NL.UTF-8";
 | 
			
		||||
 | 
			
		||||
  # Support choosing from any locale
 | 
			
		||||
  i18n.supportedLocales = ["all"];
 | 
			
		||||
 | 
			
		||||
@ -149,12 +147,12 @@ in {
 | 
			
		||||
      sleep-inactive-ac-type='nothing'
 | 
			
		||||
      sleep-inactive-battery-type='nothing'
 | 
			
		||||
      [org.gnome.desktop.background]
 | 
			
		||||
      picture-uri='file://${../../assets/school-wallpaper.jpg}'
 | 
			
		||||
      picture-uri='file://${pkgs.gnome-backgrounds}/share/backgrounds/gnome/geometrics-l.jxl'
 | 
			
		||||
      [org.gnome.desktop.screensaver]
 | 
			
		||||
      picture-uri='file://${../../assets/school-wallpaper.jpg}'
 | 
			
		||||
      picture-uri='file://${pkgs.gnome-backgrounds}/share/backgrounds/gnome/geometrics-l.jxl'
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    extraGSettingsOverridePackages = [pkgs.gnome.gnome-settings-daemon];
 | 
			
		||||
    extraGSettingsOverridePackages = [pkgs.gnome-settings-daemon];
 | 
			
		||||
 | 
			
		||||
    enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -9,21 +9,21 @@ windowExpanding: fullscreen
 | 
			
		||||
windowPlacement: center
 | 
			
		||||
sidebar: none
 | 
			
		||||
strings:
 | 
			
		||||
    productName:         deskOS - School Edition
 | 
			
		||||
    shortProductName:    deskOS - School Edition
 | 
			
		||||
    productName:         deskOS
 | 
			
		||||
    shortProductName:    deskOS
 | 
			
		||||
    version:             1
 | 
			
		||||
    shortVersion:        1
 | 
			
		||||
    versionedName:       deskOS 1 - School Edition
 | 
			
		||||
    shortVersionedName:  deskOS 1 - School Edition
 | 
			
		||||
    bootloaderEntryName: deskOS - School Edition
 | 
			
		||||
    versionedName:       deskOS 1
 | 
			
		||||
    shortVersionedName:  deskOS 1
 | 
			
		||||
    bootloaderEntryName: deskOS
 | 
			
		||||
    productUrl:          https://nixup.io
 | 
			
		||||
    supportUrl:          https://nixup.io
 | 
			
		||||
    knownIssuesUrl:      https://github.com/nixup-io/desk-os/issues
 | 
			
		||||
    knownIssuesUrl:      https://git.michaelsmith.be/m/desk-os/issues
 | 
			
		||||
    releaseNotesUrl:     https://nixup.io
 | 
			
		||||
    donateUrl:           https://nixup.io
 | 
			
		||||
images:
 | 
			
		||||
    productIcon: "desk-os-logo-school.png"
 | 
			
		||||
    productLogo: "desk-os-logo-school.png"
 | 
			
		||||
    productIcon: "desk-os-logo.png"
 | 
			
		||||
    productLogo: "desk-os-logo.png"
 | 
			
		||||
style:
 | 
			
		||||
   SidebarBackground:        "#292F34"
 | 
			
		||||
   SidebarText:              "#FFFFFF"
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 180 KiB  | 
@ -5,6 +5,7 @@
 | 
			
		||||
defaultGroups:
 | 
			
		||||
  - users
 | 
			
		||||
  - networkmanager
 | 
			
		||||
  - wheel
 | 
			
		||||
setRootPassword: false
 | 
			
		||||
doAutologin: true
 | 
			
		||||
user:
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@ showReleaseNotesUrl: false
 | 
			
		||||
requirements:
 | 
			
		||||
  requiredStorage:    60
 | 
			
		||||
  requiredRam:        4.0
 | 
			
		||||
  internetCheckUrl: [ https://nixup.io, https://cache.nixos.org/ ]
 | 
			
		||||
  internetCheckUrl: [ https://cache.nixos.org/ ]
 | 
			
		||||
  check:
 | 
			
		||||
    - storage
 | 
			
		||||
    - ram
 | 
			
		||||
 | 
			
		||||
@ -54,9 +54,9 @@ flake = f"""
 | 
			
		||||
  description = "deskOS flake";
 | 
			
		||||
 | 
			
		||||
  inputs = {{
 | 
			
		||||
    nixpkgs.url = "github:nixup-io/nixpkgs-desk-os/stable";
 | 
			
		||||
    nixpkgs.url = "git+https://git.michaelsmith.be/m/nixpkgs-desk-os.git";
 | 
			
		||||
    desk-os = {{
 | 
			
		||||
      url = "github:nixup-io/desk-os/school-edition";
 | 
			
		||||
      url = "git+https://git.michaelsmith.be/m/desk-os.git";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    }};
 | 
			
		||||
  }};
 | 
			
		||||
@ -168,7 +168,7 @@ configuration_tail = """
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
def pretty_name():
 | 
			
		||||
    return _("Installing deskOS - School Edition (this can take a while depending on your Internet speed)...")
 | 
			
		||||
    return _("Installing deskOS (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"]
 | 
			
		||||
        groups = ["networkmanager", "wheel"]
 | 
			
		||||
 | 
			
		||||
        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 - School Edition (this can take a while depending on your Internet speed)...")
 | 
			
		||||
    status = _("Installing deskOS (this can take a while depending on your Internet speed)...")
 | 
			
		||||
 | 
			
		||||
    # Install
 | 
			
		||||
    try:
 | 
			
		||||
 | 
			
		||||
@ -1,16 +0,0 @@
 | 
			
		||||
{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
 | 
			
		||||
  '';
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +0,0 @@
 | 
			
		||||
[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
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 22 KiB  | 
@ -1,8 +0,0 @@
 | 
			
		||||
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);
 | 
			
		||||
@ -1,16 +0,0 @@
 | 
			
		||||
{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
 | 
			
		||||
  '';
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +0,0 @@
 | 
			
		||||
[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
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 21 KiB  | 
@ -1,8 +0,0 @@
 | 
			
		||||
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);
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user