diff --git a/henrovnix_ok/README.html b/henrovnix_ok/README.html index 5c3ec1aef..1ff137e10 100644 --- a/henrovnix_ok/README.html +++ b/henrovnix_ok/README.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -201,155 +201,155 @@

Table of Contents

-
-

1. Introduction

+
+

1. Introduction

Screenshot

@@ -401,8 +401,8 @@ Customization is designed to occur primarily through modular .conf files, allowi Before proceeding with installation, it is strongly recommended to read this documentation carefully. Understanding the structure and design philosophy will help ensure a smooth setup and provide the necessary context for extending the system effectively.

-
-

1.1. What do you get?

+
+

1.1. What do you get?

This repository delivers a reproducible foundation built on NixOS, Home-Manager, and Flakes. It assumes a clean NixOS installation as a starting point, preferably minimal or headless, onto which the configuration is applied. @@ -411,8 +411,8 @@ Core packages are installed as part of the base configuration. Additional softwa

-
-

1.2. What you do not get

+
+

1.2. What you do not get

This repository does not provide a fully polished, bug-free desktop system with every default preconfigured and validated across all hardware combinations. It is a structured foundation, not a turnkey end-user distribution. @@ -424,8 +424,8 @@ In short, this repository provides a coherent and extensible base, not a finishe

-
-

2. What Is a Literate System in the Context of NixOS?

+
+

2. What Is a Literate System in the Context of NixOS?

A literate system combines documentation and implementation into a single, coherent source. @@ -459,8 +459,8 @@ The README is not describing the system. The README is the system.

-
-

2.1. Two Types of Code Blocks

+
+

2.1. Two Types of Code Blocks

This literate system uses two different kinds of source blocks. @@ -472,7 +472,7 @@ These blocks exist purely for documentation purposes. They generate visible code blocks in the exported documentation, but they do not create files. Example:

-
+
 #+begin_src bash :tangle no
 <tekst>
 #+end_src
@@ -488,7 +488,7 @@ They are never tangled into the filesystem.
 These blocks generate real .nix files and insert the same code into the documentation.
 Example:
 

-
+
 ** install_packages.nix
 <tekst>
 #+begin_src nix :tangle configuration/apps/install_packages.nix :noweb tangle :mkdirp yes
@@ -516,8 +516,8 @@ This means:
 
 
-
-

2.2. The Two Core Commands

+
+

2.2. The Two Core Commands

There are exactly two commands that matter. @@ -565,8 +565,8 @@ Both come from the same source.

-
-

2.3. Editing Generated Files

+
+

2.3. Editing Generated Files

The directories: @@ -592,8 +592,8 @@ Generated directories are output, not source.

-
-

2.4. Recommended Workflow

+
+

2.4. Recommended Workflow

This workflow allows safe experimentation while preserving literate structure. @@ -634,15 +634,15 @@ If you are confident about your changes, you may skip steps 1–3 and edit READM

-
-

2.5. Folder Structure Explained

+
+

2.5. Folder Structure Explained

The repository separates generated system code from non-generated supporting files.

-
-

2.5.1. ./assets

+
+

2.5.1. ./assets

Contains non-generated assisting files such as: @@ -657,8 +657,8 @@ These files are safe to edit directly.

-
-

2.5.2. ./assets/conf

+
+

2.5.2. ./assets/conf

Contains non-generated assisting configuration files that influence several aspects of builds. @@ -666,8 +666,8 @@ Users are expected to modify these when needed.

-
-

2.5.3. ./configuration

+
+

2.5.3. ./configuration

Fully (re)generated by README.org. @@ -686,8 +686,8 @@ This directory is output.

-
-

2.5.4. ./hardware

+
+

2.5.4. ./hardware

Contains non-generated hardware.nix files detailing hardware-specific details. @@ -695,8 +695,8 @@ This directory will likely be deprecated in the future.

-
-

2.5.5. ./home

+
+

2.5.5. ./home

Fully (re)generated by README.org. @@ -712,8 +712,8 @@ Contains:

-
-

2.5.6. ./machines

+
+

2.5.6. ./machines

Contains one folder per machine you want to configure. @@ -731,8 +731,8 @@ These determine how shared modules apply to each system.

-
-

2.6. Final Principle

+
+

2.6. Final Principle

A literate NixOS system guarantees: @@ -751,8 +751,8 @@ You are maintaining a structured narrative that builds an operating system.

-
-

2.7. Base packages

+
+

2.7. Base packages

The baseline package set is defined explicitly within the repository to ensure reproducibility: @@ -826,8 +826,8 @@ The baseline package set is defined explicitly within the repository to ensure r

-
-

2.8. Additional packages

+
+

2.8. Additional packages

Additional software can be installed by extending the dedicated configuration files that define system and Flatpak packages: @@ -868,12 +868,12 @@ This separation maintains clarity between system-level packages and user-facing

-
-

3. Setting up your system manually

+
+

3. Setting up your system manually

-
-

3.1. Pre-requisites to build this setup

+
+

3.1. Pre-requisites to build this setup

- a NIXOS system installed with a user with sudo rights.
@@ -883,8 +883,8 @@ This separation maintains clarity between system-level packages and user-facing
 
-
-

3.2. Setup when Emacs not (yet) available

+
+

3.2. Setup when Emacs not (yet) available

  1. Copy the folder henrovnixok to your machine
  2. @@ -953,8 +953,8 @@ Run the build command to set up the system for the first time
-
-

4. Testing and generating builds

+
+

4. Testing and generating builds

At this stage, you should have a functional and reproducible system that can be edited, rebuilt, and extended according to your needs. The foundational structure is now in place, and further customization can occur incrementally through the modular configuration files. @@ -1017,46 +1017,46 @@ Other important files:

-
-

5. flake.lock for pinning input versions.

+
+

5. flake.lock for pinning input versions.

-
-

6. assets/* for non-Nix-managed artifacts such as images and wallpapers.

+
+

6. assets/* for non-Nix-managed artifacts such as images and wallpapers.

Generated outputs should not be edited directly. A CI workflow can tangle and commit generated outputs when they differ.

-
-

6.1. Emacs + Org + Tangle

+
+

6.1. Emacs + Org + Tangle

-
-

7. [Emacs](https://www.gnu.org/software/emacs/][Emacs) is used as the editor and execution environment for this literate configuration.

+
+

7. [Emacs](https://www.gnu.org/software/emacs/][Emacs) is used as the editor and execution environment for this literate configuration.

-
-

8. [Org](https://orgmode.org/][Org) mode provides the document structure and the source block execution model used here.

+
+

8. [Org](https://orgmode.org/][Org) mode provides the document structure and the source block execution model used here.

-
-

9. Tangling exports source blocks from this Org document into the corresponding configuration files.

+
+

9. Tangling exports source blocks from this Org document into the corresponding configuration files.

  • References of the form <<code-id>> are noweb placeholders that are expanded from other blocks during tangling.
-
-

9.1. Nix & NixOS

+
+

9.1. Nix & NixOS

-
-

10. [Nix](https://nix.dev/][Nix) is used to define packages, environments, and configuration as pure expressions.

+
+

10. [Nix](https://nix.dev/][Nix) is used to define packages, environments, and configuration as pure expressions.

-
-

11. [NixOS](https://nixos.org/][NixOS) evaluates Nix expressions into a complete system configuration that can be applied by rebuild operations.

+
+

11. [NixOS](https://nixos.org/][NixOS) evaluates Nix expressions into a complete system configuration that can be applied by rebuild operations.

-
-

11.1. Repository layout and folder conventions

+
+

11.1. Repository layout and folder conventions

<p> @@ -1069,8 +1069,8 @@ Generated outputs should not be edited directly. A CI workflow can tangle and co

-
-

11.2. Shared domain folders

+
+

11.2. Shared domain folders

<ul> @@ -1084,8 +1084,8 @@ Generated outputs should not be edited directly. A CI workflow can tangle and co

-
-

11.3. Full tree (including unchanged parts)

+
+

11.3. Full tree (including unchanged parts)

The tree below shows the full repository layout, with the standardized internal structure applied only inside @@ -1097,7 +1097,7 @@ The tree below shows the full repository layout, with the standardized internal ├── assets │   ├── conf │   │   ├── apps -│   │   ├── ai.nix +│   │   ├── ollama.nix │   │   │   ├── flatpaks.conf │   │   │   └── packages.conf │   │   ├── core @@ -1179,7 +1179,7 @@ The tree below shows the full repository layout, with the standardized internal │   └── hardware.nix ├── home │   ├── apps -│   │   ├── ai.nix +│   │   ├── ollama.nix │   │   ├── defaults-apps.nix │   │   └── theme.nix │   ├── default.nix @@ -1220,8 +1220,8 @@ The tree below shows the full repository layout, with the standardized internal

-
-

11.4. Notes

+
+

11.4. Notes

<ul> @@ -1254,8 +1254,8 @@ This prevents unwanted and surprise updates when rebuilding without changing the

-
-

12. TLDR App List

+
+

12. TLDR App List

@@ -1329,8 +1329,8 @@ This prevents unwanted and surprise updates when rebuilding without changing the
-
-

13. Configuration Variables

+
+

13. Configuration Variables

I have a bunch of constant strings that I would rather put in a file. Thats what user.nix is. @@ -1347,8 +1347,8 @@ The values are imported at the beginning and are available to almost all the fun

-
-

14. Flake Inputs

+
+

14. Flake Inputs

The inputs for my system's configuration are very simple @@ -1389,8 +1389,8 @@ Sometimes pinned to a specific commit because unstable broke something and the f

-
-

15. Flake Output

+
+

15. Flake Output

Now that the inputs are ready, the outputs define what the system will actually look like. I also define the machines that this configuration specifies early on. Finally, I iterate over the machines list and pull files from /.machines/${name} subdirectory. This allows me to have configuration that has machine specific configuration limited to those files while also keeping a modular reusable base. @@ -1398,7 +1398,7 @@ We also add a devshell that makes editing this repository easier in emacs.

-
outputs = inputs@{
+
outputs = inputs@{
   nixpkgs,
   home-manager,
   emacs-overlay,
@@ -1459,7 +1459,7 @@ Overlays are a special nix way to override existing packages within a repository
 

-
({ ... }: {
+
({ ... }: {
   nixpkgs.overlays = [ emacs-overlay.overlays.default ];
 })
 
@@ -1469,7 +1469,7 @@ Overlays are a special nix way to override existing packages within a repository Then the machine specific configuration, in this case, just "traveldroid".

-
./machines/${machine}/configuration.nix
+
./machines/${machine}/configuration.nix
 
@@ -1479,7 +1479,7 @@ This can be initialized and managed on its own but I'd rather use the nixo

-
home-manager.nixosModules.home-manager
+
home-manager.nixosModules.home-manager
 {
   home-manager.useGlobalPkgs = true;
   home-manager.useUserPackages = true;
@@ -1522,8 +1522,8 @@ Finally I pull in the machine specific home configuration. Along with the overri
 
-
-

15.1. Envrc + Direnv

+
+

15.1. Envrc + Direnv

Editing this file will be much nicer if we have the dev environment configured. @@ -1544,14 +1544,14 @@ fi

-
-

16. Machines

+
+

16. Machines

The individual machines subdirectory is configured as follows :-

-
+--machine
+
+--machine
 |  +--configuration.nix
 |  +--home.nix
 |  +--hardware-configuration.nix
@@ -1572,12 +1572,12 @@ This imported object (or function result) is just trivially merged into a common
 We can take a look at that the common hardware options I have for all my machines.
 

-
-

16.0.1. Other Utils

+
+

16.0.1. Other Utils

    -
  1. Updates
    +
  2. Updates

    To update the computer, I just need to update the flake.lock file to have references to the latest repository. This is done with :- @@ -1591,8 +1591,8 @@ To update the computer, I just need to update the flake.lock file t

-
-

17. Hardware

+
+

17. Hardware

I'll let the code comments explain the file here. @@ -1626,8 +1626,8 @@ I'll let the code comments explain the file here.

-
-

18. Configuration

+
+

18. Configuration

This section describes the main system configuration for the computers that I have. Nix will look for a default.nix file if you give it a path to a folder to import. And default.nix looks as follows :- @@ -1670,16 +1670,16 @@ This section describes the main system configuration for the computers that I ha

-
-

18.1. Apps section

+
+

18.1. Apps section

This section describes a way of installing packages, either through nixpkgs orr flatpak. What apps to instal is decided in the files ./assets/conf/apps/packages.conf and flatpaks.conf

-
-

18.2. installpackages.nix

+
+

18.2. installpackages.nix

{ config, lib, pkgs, flakeRoot, inputs, ... }:
@@ -1729,8 +1729,8 @@ in
 
-
-

18.3. installflatpaks.nix

+
+

18.3. installflatpaks.nix

{ config, pkgs, lib, flakeRoot, ... }:
@@ -1842,8 +1842,8 @@ in
 
-
-

18.4. Nix Settings

+
+

18.4. Nix Settings

These are global nix settings that configure the settings for the actual tool. @@ -1892,8 +1892,8 @@ These are global nix settings that configure the settings for the actual tool.

-
-

18.5. Boot

+
+

18.5. Boot

This file has most of the settings the control how the computer boots up. @@ -1931,16 +1931,16 @@ This file has most of the settings the control how the computer boots up.

-
-

18.6. Login

+
+

18.6. Login

Here we control what the login screen would look like. In configuration/default.nix you can choose whether to use tuigreet (very minimalistic) or LightDM (nicer, themeable)

-
-

18.7. Tuigreet

+
+

18.7. Tuigreet

Doesn't match the rest of the aesthetic of the system (with hyprland), but I like its simplicity. @@ -1965,8 +1965,8 @@ Doesn't match the rest of the aesthetic of the system (with hyprland), but I lik

-
-

18.8. LightDM

+
+

18.8. LightDM

{ config, pkgs, lib, ... }:
@@ -2113,8 +2113,8 @@ in
 
-
-

18.9. Terminal (default system)

+
+

18.9. Terminal (default system)

This is the initial system level configuration for the terminal that I use on this machine. Its just zsh. @@ -2133,8 +2133,8 @@ This is the initial system level configuration for the terminal that I use on th

-
-

18.10. Files

+
+

18.10. Files

I use Thunar as the file explorer. Also setup a few plugins for Thunar in this config. @@ -2175,8 +2175,8 @@ Along with that, a few other utilities like zip and enabling services to automou

-
-

18.11. Locale

+
+

18.11. Locale

I live in Netherlands and would like all my locale and timezone settings to match. Except my default locale. @@ -2210,8 +2210,8 @@ in

-
-

18.12. Networking

+
+

18.12. Networking

Not much to see here. I want networking to be enabled. I want firewall as well. @@ -2242,8 +2242,8 @@ Not much to see here. I want networking to be enabled. I want firewall as well.

-
-

18.13. Hyprland

+
+

18.13. Hyprland

This is a big one because the DE needs so much configuration. This section mostly installs Hyprland. @@ -2314,8 +2314,8 @@ The configuration is done in the home manager section.

-
-

18.14. Services

+
+

18.14. Services

These are some of the services that I enable at the system level. Explanation in the comments. @@ -2348,8 +2348,8 @@ These are some of the services that I enable at the system level. Explanation in

-
-

18.15. Audio

+
+

18.15. Audio

{ config, pkgs, lib, ... }:
@@ -2426,14 +2426,14 @@ These are some of the services that I enable at the system level. Explanation in
 
-
-

18.16. Fonts

+
+

18.16. Fonts

Nothing much to see here. I love Aporetic, and I use it everywhere.

-
fonts.packages = with pkgs; [
+
fonts.packages = with pkgs; [
   aporetic
   nerd-fonts.iosevka
 ];
@@ -2441,14 +2441,14 @@ Nothing much to see here. I love 
-

18.17. User Config

+
+

18.17. User Config

This creates the user profile that I login with. Initially created during install.

-
users.users.${user.username} = {
+
users.users.${user.username} = {
   isNormalUser = true;
   description = "henrov";
   extraGroups = [
@@ -2463,8 +2463,8 @@ This creates the user profile that I login with. Initially created during instal
 
-
-

19. Home

+
+

19. Home

I use home-manager to manage my user level dotfiles and configurations. @@ -2472,8 +2472,8 @@ Most of the "theme" of the system is decided here. I also use it to install programs that are okay with being installed at the user level instead of the system.

-
-

19.1. default.nix

+
+

19.1. default.nix

This module will import all necessities. @@ -2483,7 +2483,7 @@ This module will import all necessities.

{ pkgs, user, ... } :
   {
     imports = [
-      ./apps/ai.nix
+      ./apps/ollama.nix
       #./apps/default-apps.nix
       ./apps/theme.nix
       ./desktop/hypridle.nix
@@ -2517,121 +2517,56 @@ This module will import all necessities.
 
-
-

19.2. AI integrated with ZED

+
+

19.2. Ollama

-This module enables and configures the Ollama system service on NixOS, including optional GPU acceleration (CUDA or ROCm). -It ensures the Ollama CLI is available system-wide for interacting with local models. -It automatically pulls and prepares selected coding models (e.g., Qwen2.5-Coder and StarCoder2) at system activation. +This Home Manager Nix module (ai.nix) installs the Ollama package and configures it by reading a simple key-value configuration file (ollama.conf) for settings like the server host and default model. It sets environment variables (OLLAMAHOST and OLAMADEFAULTMODEL) for easy access in your shell or applications, with fallback defaults if the config file is missing or empty. Optionally, it also defines a user-level systemd service to automatically start the Ollama server on NixOS or systems with Home Manager’s systemd support enabled.

-
{ config, pkgs, lib, flakeRoot, ... }:
-
+
{ lib, config, pkgs, ... }:
 let
-  # Path to environment file
-  AiRepoEnv = flakeRoot + "/assets/conf/apps/ai/ai.env";
-
-  # Environment file parser
-  parseEnv = lines:
-    lib.foldl' (acc: line:
-      let
-        trimmed = builtins.trim line;
-      in
-      if trimmed == "" || (builtins.stringLength trimmed) > 0 && (builtins.substr 0 1 trimmed) == "#"
-      then acc
-      else
-        let parts = builtins.split "=" trimmed;
-        in
-        if builtins.length parts >= 2
-        then builtins.add (builtins.elemAt parts 0) (builtins.elemAt parts 1) acc
-        else acc
-    ) { } (builtins.split "\n" (builtins.readFile (toString AiRepoEnv)));
-
-  envVars = parseEnv;
+  # Path to the config file (relative to your flake or Home Manager root)
+  ollamaConfPath = ./assets/conf/apps/ai/ollama/ollama.conf;
+  # Read and parse the config file (assuming it's in shell variable format)
+  ollamaConf = builtins.readFile ollamaConfPath;
+  # Extract values using regex (adjust if your format differs)
+  extractValue = key: builtins.match
+    ("(?m)^${key}=\"([^\"]+)\"$" + ollamaConf)
+    "";
+  ollamaHost = extractValue "OLLAMA_HOST";
+  ollamaDefaultModel = extractValue "OLLAMA_DEFAULT_MODEL";
 in
 {
-  # Install required packages
-  home.packages = [
-    pkgs.ollama-vulkan
-    pkgs.zed-editor
+  # Install Ollama
+  home.packages = with pkgs; [
+    ollama
   ];
-
-  # Set environment variables
+  # Configure Ollama environment variables
   home.sessionVariables = {
-    OLLAMA_HOST = envVars.OLLAMA_HOST or "http://127.0.0.1:11434";
-    MISTRAL_API_KEY = envVars.MISTRAL_API_KEY or "";
+    OLLAMA_HOST = if ollamaHost != "" then ollamaHost else "http://127.0.0.1:11434";
+    OLAMA_DEFAULT_MODEL = if ollamaDefaultModel != "" then ollamaDefaultModel else "codellama:70b";
   };
-
-  # Configure Ollama service using the correct Home Manager syntax
+  # Optional: Start Ollama service (if using NixOS)
   systemd.user.services.ollama = {
-    Unit = {
-      Description = "Ollama service for local AI models";
-      After = [ "network.target" ];
-      Wants = [ "network.target" ];
-    };
-
-    Service = {
-      Type = "forking";
-      ExecStart = "${pkgs.ollama-vulkan}/bin/ollama serve";
-      ExecStartPost = ''
-        sleep 5
-        ${pkgs.ollama-vulkan}/bin/ollama pull codellama:70b
-        ${pkgs.ollama-vulkan}/bin/ollama pull mixtral:8x7b
-      '';
+    description = "Ollama service";
+    wantedBy = [ "multi-user.target" ];
+    serviceConfig = {
+      ExecStart = "${pkgs.ollama}/bin/ollama serve";
       Restart = "on-failure";
-    };
-
-    Install = {
-      WantedBy = [ "default.target" ];
+      Environment = [
+        "OLLAMA_HOST=${if ollamaHost != "" then ollamaHost else "http://127.0.0.1:11434"}"
+      ];
     };
   };
-
-  # ZED configuration
-  home.file.".config/zed/settings.json".text = lib.mkForce (
-    builtins.toJSON {
-      mistral = {
-        apiKey = envVars.MISTRAL_API_KEY or "";
-        defaultModel = "mistral-pro";
-      };
-      ollama = {
-        endpoint = envVars.OLLAMA_HOST or "http://127.0.0.1:11434";
-        defaultModel = "codellama:70b";
-      };
-    }
-  );
-
-  # --- Usage Notes ---
-  # 1. Pulling Additional Models:
-  #    To add more models later, run:
-  #      ollama pull <model-name>
-  #    Example: ollama pull llama3:8b
-  #
-  # 2. Switching GPU Backends:
-  #    - For NVIDIA: Replace all `ollama-vulkan` with `ollama` (uses CUDA)
-  #    - For AMD: Use `ollama-rocm` and ensure ROCm is installed
-  #
-  # 3. ZED Plugin Setup:
-  #    - Install the Ollama and Mistral plugins in ZED via the plugin marketplace
-  #    - The Ollama plugin will use the local models pulled above
-  #    - The Mistral plugin will use the MISTRAL_API_KEY for cloud access
-  #
-  # 4. Security:
-  #    - Never commit ./assets/conf/apps/ai.env to version control
-  #    - For extra security, encrypt ai.env using sops-nix or age
-  #
-  # 5. Persistent Service:
-  #    To keep Ollama running after logout, enable lingering:
-  #      loginctl enable-linger $(whoami)
 }
-
 
-
-

19.3. NCSway

+
+

19.3. NCSway

Takes care of notifications @@ -2669,8 +2604,8 @@ in

-
-

19.4. Powermenu

+
+

19.4. Powermenu

Creates a script for a powermenu @@ -2693,8 +2628,8 @@ in

-
-

19.5. Animated Wallpaper

+
+

19.5. Animated Wallpaper

userRelRoot = "nixosconf/wallpaperstuff"; @@ -2755,8 +2690,8 @@ in

-
-

19.6. Rotating Wallpaper

+
+

19.6. Rotating Wallpaper

rotatingwallpaper.nix installs wpaperd and deploys your wallpaper files from the repo (./assets/conf/desktop/wallpaper/pictures/) into ~/conf/desktop/wallpaper/pictures. It also deploys the default wallpaper configuration from assets/conf/desktop/wallpaper/wallpaper.conf into ~/conf/desktop/wallpaper/wallpaper.conf, which is the file you can edit as a user override. @@ -2810,8 +2745,8 @@ in

-
-

19.7. Workspace Wallpaper

+
+

19.7. Workspace Wallpaper

{ config, lib, pkgs, flakeRoot, ... }:
@@ -3021,11 +2956,11 @@ in
 
-
-

19.8. Waybar

+
+

19.8. Waybar

-
+

waybar.png

@@ -3059,8 +2994,8 @@ in
-
-
-

19.10. Idle Screen

+
+

19.10. Idle Screen

<henro: needs instruction> @@ -3101,8 +3036,8 @@ in

-
-

19.11. hyprscrolling

+
+

19.11. hyprscrolling

This Nix module integrates the hyprscrolling plugin into a Home-Manager managed Hyprland setup in a declarative and reproducible way. It ensures the plugin is installed, optionally switches Hyprland to the scrolling layout, and renders user-defined plugin settings directly into the Hyprland configuration. The goal is to manage the scrolling workspace behavior entirely from Nix instead of maintaining manual edits inside hyprland.conf. @@ -3159,8 +3094,8 @@ in

-
-

19.12. Hyprshell

+
+

19.12. Hyprshell

For nice task-starting and -switching @@ -3200,8 +3135,8 @@ in

-
-

19.13. Hyprland

+
+

19.13. Hyprland

This configures the desktop environment along with the peripherals. The comments should explain whats happening. @@ -3251,8 +3186,8 @@ in

-
-

19.14. Walker

+
+

19.14. Walker

This is how I launch applications. It is bound to Win+Space in the ./asstes/conf/desktop/hypr/bindings.conf. @@ -3288,8 +3223,8 @@ in

-
-

19.15. Theme

+
+

19.15. Theme

I use the Catppuccin almost everywhere. The nix module integrates almost automatically everywhere (except gtk). @@ -3322,8 +3257,8 @@ You'll notice the color values in multiple places outside this as well.

-
-

19.16. Default-apps

+
+

19.16. Default-apps

This is where you can set defaults @@ -3342,8 +3277,8 @@ This is where you can set defaults

-
-

19.17. Hyperexpo

+
+

19.17. Hyperexpo

hyprexpo gets installed and configured @@ -3382,8 +3317,8 @@ hyprexpo gets installed and configured

-
-

19.18. Alacritty

+
+

19.18. Alacritty

Alacritty gets installed and configured @@ -3405,8 +3340,8 @@ in

-
-

19.19. Dev Tools

+
+

19.19. Dev Tools

All the miscellaneous dev tools on this computer. @@ -3458,8 +3393,8 @@ All the miscellaneous dev tools on this computer.

-
-

19.20. Kitty

+
+

19.20. Kitty

Kitty gets installed and configured @@ -3498,8 +3433,8 @@ in

-
-

19.21. Shells

+
+

19.21. Shells

The aliases mentioned in ./assets/conf/dev/terminal/shells.conf will be added to enabled shells @@ -3715,8 +3650,8 @@ EOF

-
-

19.22. Zsh

+
+

19.22. Zsh

Zsh gets installed and configured @@ -3752,8 +3687,8 @@ Zsh gets installed and configured

-
-

19.23. Starship

+
+

19.23. Starship

The configuration mentioned in ./assets/conf/dev/terminal/starship.toml will be added to enabled shells @@ -3785,18 +3720,18 @@ in

-
-

19.24. Other Settings

+
+

19.24. Other Settings

Some repeated info from the configuration.

-
-

19.24.1. Home User

+
+

19.24.1. Home User

-
home.username = "${user.username}";
+
home.username = "${user.username}";
 home.homeDirectory = pkgs.lib.mkDefault "/home/${user.username}";
 home.stateVersion = user.stateVersion;
 
@@ -3805,8 +3740,8 @@ home.stateVersion = user.stateVersion;
-
-

20. Emacs

+
+

20. Emacs

I practically live inside emacs. The configuration for it is a mix between init.el and the nix configuration. @@ -3885,8 +3820,8 @@ Comments describe the emacs package and what it does.

-
-

20.1. Early Initialization

+
+

20.1. Early Initialization

There are some emacs settings that can be configured before the gui shows up. @@ -3991,8 +3926,8 @@ These are listed here.

-
-

20.2. Initialization

+
+

20.2. Initialization

Now starts the main emacs configuration. @@ -4404,22 +4339,22 @@ ting a file within such a

-
-

21. Machines

+
+

21. Machines

Only a few more things left. Specifically the machine level extra settings.

-
-

21.1. Traveldroid

+
+

21.1. Traveldroid

The configuration for the laptop does not change much. Most changes are because the hardware is different.

-
-

21.1.1. System Level

+
+

21.1.1. System Level

Nothing specific for the laptop. @@ -4437,8 +4372,8 @@ Nothing specific for the laptop.

-
-

21.1.2. Hardware

+
+

21.1.2. Hardware

This is the most different. Mostly taken from hardware-configuration.nix setup at first install. @@ -4488,8 +4423,8 @@ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistr

-
-

21.1.3. Home

+
+

21.1.3. Home

This is mostly about configuring the monitor. And laptop specific utilities. @@ -4516,18 +4451,18 @@ This is mostly about configuring the monitor. And laptop specific utilities.

-
-

22. README Utils

+
+

22. README Utils

-
-

22.0.1. Headers

+
+

22.0.1. Headers

This script adds a DO NOT MODIFY header to all the generated nix files.

-
(progn
+
(progn
   (defun add-tangle-headers ()
     (message "running in %s" (buffer-file-name))
     (when (string= (file-name-extension (buffer-file-name)) "nix")
@@ -4544,7 +4479,7 @@ This script adds a DO NOT MODIFY header to all the generated nix fi
 

Author: henrov

-

Created: 2026-02-28 za 11:38

+

Created: 2026-02-28 za 14:44

Validate

diff --git a/henrovnix_ok/README.org b/henrovnix_ok/README.org index 61ae921f8..8e7da362d 100755 --- a/henrovnix_ok/README.org +++ b/henrovnix_ok/README.org @@ -467,7 +467,7 @@ The tree below shows the full repository layout, with the standardized internal ├── assets │   ├── conf │   │   ├── apps -│   │   ├── ai.nix +│   │   ├── ollama.nix │   │   │   ├── flatpaks.conf │   │   │   └── packages.conf │   │   ├── core @@ -549,7 +549,7 @@ The tree below shows the full repository layout, with the standardized internal │   └── hardware.nix ├── home │   ├── apps -│   │   ├── ai.nix +│   │   ├── ollama.nix │   │   ├── defaults-apps.nix │   │   └── theme.nix │   ├── default.nix @@ -1605,7 +1605,7 @@ This module will import all necessities. { pkgs, user, ... } : { imports = [ - ./apps/ai.nix + ./apps/ollama.nix #./apps/default-apps.nix ./apps/theme.nix ./desktop/hypridle.nix @@ -1637,111 +1637,46 @@ This module will import all necessities. } #+end_src -** AI integrated with ZED -This module enables and configures the Ollama system service on NixOS, including optional GPU acceleration (CUDA or ROCm). -It ensures the Ollama CLI is available system-wide for interacting with local models. -It automatically pulls and prepares selected coding models (e.g., Qwen2.5-Coder and StarCoder2) at system activation. - -#+begin_src nix :tangle home/apps/ai.nix :noweb tangle :mkdirp yes -{ config, pkgs, lib, flakeRoot, ... }: +** Ollama +This Home Manager Nix module (ai.nix) installs the Ollama package and configures it by reading a simple key-value configuration file (ollama.conf) for settings like the server host and default model. It sets environment variables (OLLAMA_HOST and OLAMA_DEFAULT_MODEL) for easy access in your shell or applications, with fallback defaults if the config file is missing or empty. Optionally, it also defines a user-level systemd service to automatically start the Ollama server on NixOS or systems with Home Manager’s systemd support enabled. +#+begin_src nix :tangle home/apps/ollama.nix :noweb tangle :mkdirp yes +{ lib, config, pkgs, ... }: let - # Path to environment file - AiRepoEnv = flakeRoot + "/assets/conf/apps/ai/ai.env"; - - # Environment file parser - parseEnv = lines: - lib.foldl' (acc: line: - let - trimmed = builtins.trim line; - in - if trimmed == "" || (builtins.stringLength trimmed) > 0 && (builtins.substr 0 1 trimmed) == "#" - then acc - else - let parts = builtins.split "=" trimmed; - in - if builtins.length parts >= 2 - then builtins.add (builtins.elemAt parts 0) (builtins.elemAt parts 1) acc - else acc - ) { } (builtins.split "\n" (builtins.readFile (toString AiRepoEnv))); - - envVars = parseEnv; + # Path to the config file (relative to your flake or Home Manager root) + ollamaConfPath = ./assets/conf/apps/ai/ollama/ollama.conf; + # Read and parse the config file (assuming it's in shell variable format) + ollamaConf = builtins.readFile ollamaConfPath; + # Extract values using regex (adjust if your format differs) + extractValue = key: builtins.match + ("(?m)^${key}=\"([^\"]+)\"$" + ollamaConf) + ""; + ollamaHost = extractValue "OLLAMA_HOST"; + ollamaDefaultModel = extractValue "OLLAMA_DEFAULT_MODEL"; in { - # Install required packages - home.packages = [ - pkgs.ollama-vulkan - pkgs.zed-editor + # Install Ollama + home.packages = with pkgs; [ + ollama ]; - - # Set environment variables + # Configure Ollama environment variables home.sessionVariables = { - OLLAMA_HOST = envVars.OLLAMA_HOST or "http://127.0.0.1:11434"; - MISTRAL_API_KEY = envVars.MISTRAL_API_KEY or ""; + OLLAMA_HOST = if ollamaHost != "" then ollamaHost else "http://127.0.0.1:11434"; + OLAMA_DEFAULT_MODEL = if ollamaDefaultModel != "" then ollamaDefaultModel else "codellama:70b"; }; - - # Configure Ollama service using the correct Home Manager syntax + # Optional: Start Ollama service (if using NixOS) systemd.user.services.ollama = { - Unit = { - Description = "Ollama service for local AI models"; - After = [ "network.target" ]; - Wants = [ "network.target" ]; - }; - - Service = { - Type = "forking"; - ExecStart = "${pkgs.ollama-vulkan}/bin/ollama serve"; - ExecStartPost = '' - sleep 5 - ${pkgs.ollama-vulkan}/bin/ollama pull codellama:70b - ${pkgs.ollama-vulkan}/bin/ollama pull mixtral:8x7b - ''; + description = "Ollama service"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${pkgs.ollama}/bin/ollama serve"; Restart = "on-failure"; - }; - - Install = { - WantedBy = [ "default.target" ]; + Environment = [ + "OLLAMA_HOST=${if ollamaHost != "" then ollamaHost else "http://127.0.0.1:11434"}" + ]; }; }; - - # ZED configuration - home.file.".config/zed/settings.json".text = lib.mkForce ( - builtins.toJSON { - mistral = { - apiKey = envVars.MISTRAL_API_KEY or ""; - defaultModel = "mistral-pro"; - }; - ollama = { - endpoint = envVars.OLLAMA_HOST or "http://127.0.0.1:11434"; - defaultModel = "codellama:70b"; - }; - } - ); - - # --- Usage Notes --- - # 1. Pulling Additional Models: - # To add more models later, run: - # ollama pull - # Example: ollama pull llama3:8b - # - # 2. Switching GPU Backends: - # - For NVIDIA: Replace all `ollama-vulkan` with `ollama` (uses CUDA) - # - For AMD: Use `ollama-rocm` and ensure ROCm is installed - # - # 3. ZED Plugin Setup: - # - Install the Ollama and Mistral plugins in ZED via the plugin marketplace - # - The Ollama plugin will use the local models pulled above - # - The Mistral plugin will use the MISTRAL_API_KEY for cloud access - # - # 4. Security: - # - Never commit ./assets/conf/apps/ai.env to version control - # - For extra security, encrypt ai.env using sops-nix or age - # - # 5. Persistent Service: - # To keep Ollama running after logout, enable lingering: - # loginctl enable-linger $(whoami) } - #+end_src ** NCSway diff --git a/henrovnix_ok/assets/conf/apps/ai/ollama/ollama.conf b/henrovnix_ok/assets/conf/apps/ai/ollama/ollama.conf new file mode 100644 index 000000000..61f0b86e1 --- /dev/null +++ b/henrovnix_ok/assets/conf/apps/ai/ollama/ollama.conf @@ -0,0 +1,4 @@ +# Ollama configuration +OLLAMA_HOST="http://127.0.0.1:11434" +OLAMA_DEFAULT_MODEL="codellama:70b" +OLAMA_DEFAULT_MODEL="llama3.1:70b" diff --git a/henrovnix_ok/assets/conf/apps/packages.conf b/henrovnix_ok/assets/conf/apps/packages.conf index 2cd9e0ab9..8dc2d8722 100644 --- a/henrovnix_ok/assets/conf/apps/packages.conf +++ b/henrovnix_ok/assets/conf/apps/packages.conf @@ -54,6 +54,7 @@ wev solaar baobab duf +zed-editor # office obsidian diff --git a/henrovnix_ok/home/apps/ollama.nix b/henrovnix_ok/home/apps/ollama.nix new file mode 100644 index 000000000..d40889be6 --- /dev/null +++ b/henrovnix_ok/home/apps/ollama.nix @@ -0,0 +1,36 @@ +{ lib, config, pkgs, ... }: +let + # Path to the config file (relative to your flake or Home Manager root) + ollamaConfPath = ./assets/conf/apps/ai/ollama/ollama.conf; + # Read and parse the config file (assuming it's in shell variable format) + ollamaConf = builtins.readFile ollamaConfPath; + # Extract values using regex (adjust if your format differs) + extractValue = key: builtins.match + ("(?m)^${key}=\"([^\"]+)\"$" + ollamaConf) + ""; + ollamaHost = extractValue "OLLAMA_HOST"; + ollamaDefaultModel = extractValue "OLLAMA_DEFAULT_MODEL"; +in +{ + # Install Ollama + home.packages = with pkgs; [ + ollama + ]; + # Configure Ollama environment variables + home.sessionVariables = { + OLLAMA_HOST = if ollamaHost != "" then ollamaHost else "http://127.0.0.1:11434"; + OLAMA_DEFAULT_MODEL = if ollamaDefaultModel != "" then ollamaDefaultModel else "codellama:70b"; + }; + # Optional: Start Ollama service (if using NixOS) + systemd.user.services.ollama = { + description = "Ollama service"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${pkgs.ollama}/bin/ollama serve"; + Restart = "on-failure"; + Environment = [ + "OLLAMA_HOST=${if ollamaHost != "" then ollamaHost else "http://127.0.0.1:11434"}" + ]; + }; + }; +} diff --git a/henrovnix_ok/home/default.nix b/henrovnix_ok/home/default.nix index f7805a191..fdfee0353 100644 --- a/henrovnix_ok/home/default.nix +++ b/henrovnix_ok/home/default.nix @@ -1,7 +1,7 @@ { pkgs, user, ... } : { imports = [ - ./apps/ai.nix + ./apps/ollama.nix #./apps/default-apps.nix ./apps/theme.nix ./desktop/hypridle.nix diff --git a/henrovnix_ok/ollama_debug_llama3.log b/henrovnix_ok/ollama_debug_llama3.log new file mode 100644 index 000000000..096685c78 --- /dev/null +++ b/henrovnix_ok/ollama_debug_llama3.log @@ -0,0 +1,345 @@ +[?2026h[?25lpulling manifest ⠋ [?25h[?2026l[?2026h[?25lpulling manifest ⠙ [?25h[?2026l[?2026h[?25lpulling manifest ⠸ [?25h[?2026l[?2026h[?25lpulling manifest ⠸ [?25h[?2026l[?2026h[?25lpulling manifest ⠼ [?25h[?2026l[?2026h[?25lpulling manifest ⠴ [?25h[?2026l[?2026h[?25lpulling manifest ⠦ [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 97 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 97 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 97 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 97 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 97 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 97 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 98 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 98 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 99 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 99 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 99 MB/ 42 GB [?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 100 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 102 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 104 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 106 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 110 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 112 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 117 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 119 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 121 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 126 MB/ 42 GB 2.3 MB/s 5h7m[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 128 MB/ 42 GB 15 MB/s 46m14s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 131 MB/ 42 GB 15 MB/s 46m14s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 139 MB/ 42 GB 15 MB/s 46m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 146 MB/ 42 GB 15 MB/s 46m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 148 MB/ 42 GB 15 MB/s 46m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 150 MB/ 42 GB 15 MB/s 46m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 152 MB/ 42 GB 15 MB/s 46m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 160 MB/ 42 GB 15 MB/s 46m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 162 MB/ 42 GB 15 MB/s 46m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 163 MB/ 42 GB 15 MB/s 46m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 164 MB/ 42 GB 22 MB/s 31m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 178 MB/ 42 GB 22 MB/s 31m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 186 MB/ 42 GB 22 MB/s 31m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 188 MB/ 42 GB 22 MB/s 31m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 193 MB/ 42 GB 22 MB/s 31m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 199 MB/ 42 GB 22 MB/s 31m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 199 MB/ 42 GB 22 MB/s 31m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 200 MB/ 42 GB 22 MB/s 31m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 210 MB/ 42 GB 22 MB/s 31m42s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 210 MB/ 42 GB 22 MB/s 31m42s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 0% ▕ ▏ 211 MB/ 42 GB 28 MB/s 24m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 223 MB/ 42 GB 28 MB/s 24m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 223 MB/ 42 GB 28 MB/s 24m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 226 MB/ 42 GB 28 MB/s 24m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 230 MB/ 42 GB 28 MB/s 24m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 233 MB/ 42 GB 28 MB/s 24m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 233 MB/ 42 GB 28 MB/s 24m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 241 MB/ 42 GB 28 MB/s 24m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 244 MB/ 42 GB 28 MB/s 24m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 249 MB/ 42 GB 28 MB/s 24m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 255 MB/ 42 GB 31 MB/s 22m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 256 MB/ 42 GB 31 MB/s 22m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 263 MB/ 42 GB 31 MB/s 22m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 270 MB/ 42 GB 31 MB/s 22m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 270 MB/ 42 GB 31 MB/s 22m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 272 MB/ 42 GB 31 MB/s 22m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 286 MB/ 42 GB 31 MB/s 22m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 289 MB/ 42 GB 31 MB/s 22m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 292 MB/ 42 GB 31 MB/s 22m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 302 MB/ 42 GB 31 MB/s 22m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 305 MB/ 42 GB 31 MB/s 22m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 307 MB/ 42 GB 34 MB/s 20m8s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 310 MB/ 42 GB 34 MB/s 20m8s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 318 MB/ 42 GB 34 MB/s 20m8s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 320 MB/ 42 GB 34 MB/s 20m7s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 327 MB/ 42 GB 34 MB/s 20m7s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 330 MB/ 42 GB 34 MB/s 20m7s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 331 MB/ 42 GB 34 MB/s 20m7s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 333 MB/ 42 GB 34 MB/s 20m7s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 338 MB/ 42 GB 34 MB/s 20m7s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 345 MB/ 42 GB 34 MB/s 20m7s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 353 MB/ 42 GB 35 MB/s 19m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 359 MB/ 42 GB 35 MB/s 19m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 366 MB/ 42 GB 35 MB/s 19m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 371 MB/ 42 GB 35 MB/s 19m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 374 MB/ 42 GB 35 MB/s 19m43s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 379 MB/ 42 GB 35 MB/s 19m42s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 381 MB/ 42 GB 35 MB/s 19m42s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 387 MB/ 42 GB 35 MB/s 19m42s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 392 MB/ 42 GB 35 MB/s 19m42s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 392 MB/ 42 GB 35 MB/s 19m42s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 399 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 405 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 410 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 413 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 417 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 418 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 420 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 423 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 426 MB/ 42 GB 37 MB/s 18m36s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 429 MB/ 42 GB 37 MB/s 18m35s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 439 MB/ 42 GB 37 MB/s 18m28s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 455 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 458 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 464 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 466 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 473 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 478 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 479 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 482 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 484 MB/ 42 GB 37 MB/s 18m27s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 486 MB/ 42 GB 42 MB/s 16m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 486 MB/ 42 GB 42 MB/s 16m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 491 MB/ 42 GB 42 MB/s 16m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 497 MB/ 42 GB 42 MB/s 16m19s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 509 MB/ 42 GB 42 MB/s 16m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 512 MB/ 42 GB 42 MB/s 16m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 523 MB/ 42 GB 42 MB/s 16m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 528 MB/ 42 GB 42 MB/s 16m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 533 MB/ 42 GB 42 MB/s 16m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 540 MB/ 42 GB 42 MB/s 16m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 544 MB/ 42 GB 42 MB/s 16m17s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 550 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 550 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 556 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 559 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 559 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 560 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 567 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 574 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 574 MB/ 42 GB 46 MB/s 15m1s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 585 MB/ 42 GB 46 MB/s 15m0s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 588 MB/ 42 GB 47 MB/s 14m49s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 588 MB/ 42 GB 47 MB/s 14m49s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 598 MB/ 42 GB 47 MB/s 14m49s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 605 MB/ 42 GB 47 MB/s 14m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 608 MB/ 42 GB 47 MB/s 14m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 614 MB/ 42 GB 47 MB/s 14m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 618 MB/ 42 GB 47 MB/s 14m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 620 MB/ 42 GB 47 MB/s 14m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 626 MB/ 42 GB 47 MB/s 14m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 1% ▕ ▏ 632 MB/ 42 GB 47 MB/s 14m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 640 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 644 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 645 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 651 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 655 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 657 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 660 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 661 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 668 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 678 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 683 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 690 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 692 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 696 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 698 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 699 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 703 MB/ 42 GB 47 MB/s 14m39s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 712 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 712 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 724 MB/ 42 GB 47 MB/s 14m38s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 728 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 732 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 734 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 740 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 740 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 741 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 742 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 743 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 744 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 767 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 769 MB/ 42 GB 46 MB/s 14m52s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 772 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 776 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 776 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 776 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 786 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 786 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 792 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 795 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 795 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 804 MB/ 42 GB 47 MB/s 14m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 809 MB/ 42 GB 45 MB/s 15m21s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 811 MB/ 42 GB 45 MB/s 15m21s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 816 MB/ 42 GB 45 MB/s 15m21s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 818 MB/ 42 GB 45 MB/s 15m21s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 824 MB/ 42 GB 45 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 826 MB/ 42 GB 45 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 829 MB/ 42 GB 45 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 829 MB/ 42 GB 45 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 834 MB/ 42 GB 45 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 849 MB/ 42 GB 45 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 849 MB/ 42 GB 45 MB/s 15m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 852 MB/ 42 GB 45 MB/s 15m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 863 MB/ 42 GB 45 MB/s 15m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 866 MB/ 42 GB 45 MB/s 15m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 872 MB/ 42 GB 45 MB/s 15m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 878 MB/ 42 GB 45 MB/s 15m13s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 881 MB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 885 MB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 886 MB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 889 MB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 897 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 900 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 900 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 910 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 911 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 913 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 922 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 928 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 930 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 935 MB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 938 MB/ 42 GB 43 MB/s 15m57s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 940 MB/ 42 GB 43 MB/s 15m57s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 946 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 947 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 948 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 954 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 956 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 960 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 969 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 972 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 975 MB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 985 MB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 990 MB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 991 MB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 998 MB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 998 MB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 16m4s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 16m4s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 16m4s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 16m3s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 16m3s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 16m3s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.0 GB/ 42 GB 43 MB/s 16m3s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 16m3s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 2% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 16m3s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 16m3s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 16m3s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m16s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m16s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m15s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m15s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m15s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m15s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m15s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m15s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m15s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 42 MB/s 16m14s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 15m56s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 15m55s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 15m55s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 15m55s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 15m55s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.1 GB/ 42 GB 43 MB/s 15m55s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 43 MB/s 15m55s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 43 MB/s 15m55s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m33s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m32s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 44 MB/s 15m32s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m58s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m58s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m58s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m58s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m58s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m58s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m58s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m58s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.2 GB/ 42 GB 45 MB/s 14m57s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 14m57s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m12s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 45 MB/s 15m11s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m20s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.3 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m45s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m44s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m35s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m35s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m35s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m35s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m35s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.4 GB/ 42 GB 43 MB/s 15m35s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m35s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m34s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m34s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m34s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 3% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m18s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m17s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m17s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m17s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 44 MB/s 15m17s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m48s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m47s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m47s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m47s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m47s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m47s[?25h[?2026l[?2026h[?25lpulling manifest  +pulling de20d2cf2dc4: 4% ▕ ▏ 1.5 GB/ 42 GB 43 MB/s 15m47s[?25h[?2026l \ No newline at end of file