diff --git a/.ignore b/.ignore index dbf5c87..e1b043b 100644 --- a/.ignore +++ b/.ignore @@ -1,3 +1,4 @@ # dotfiles/ .git/ flake.lock +frame12/framework-plymouth-theme diff --git a/WORK_TOOLS_MODULE_DESIGN.md b/WORK_TOOLS_MODULE_DESIGN.md new file mode 100644 index 0000000..9c26112 --- /dev/null +++ b/WORK_TOOLS_MODULE_DESIGN.md @@ -0,0 +1,426 @@ +# Work Tools Module Design Document + +## Overview + +A modular NixOS configuration for work-specific development tools and services. This allows clean separation between personal and work machines while enabling easy reuse across multiple work systems. + +--- + +## Module Structure + +### Proposed Location +``` +shared/modules/work/work_tools.nix +``` + +This places it in the shared modules directory since it could be used across multiple work machines. + +### Alternative Location +``` +nate-work/modules/work/work_tools.nix +``` + +Use this if the tools are specific to a single work environment. + +--- + +## Module Design + +### Basic Structure + +```nix +{ inputs, lib, config, pkgs, ... }: +let + unstable = import inputs.nixpkgs-unstable { + system = "x86_64-linux"; + config.allowUnfree = true; + }; +in +{ + options.work_tools = { + enable = lib.mkEnableOption "Enable work development tools and services"; + + enableDocker = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Docker and related containerization tools"; + }; + + enableVirtualization = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable QEMU/KVM virtualization"; + }; + + enableGoTools = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Go development toolchain"; + }; + + enableNodeTools = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Node.js development tools"; + }; + + enableDatabaseTools = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable database clients and tools"; + }; + + user = lib.mkOption { + type = lib.types.str; + description = "Username for service configurations"; + }; + }; + + config = lib.mkIf config.work_tools.enable { + # Docker configuration + virtualisation.docker = lib.mkIf config.work_tools.enableDocker { + enable = true; + enableOnBoot = true; + package = unstable.docker_25; + }; + + users.groups.docker.members = lib.mkIf config.work_tools.enableDocker + [ config.work_tools.user ]; + + # Virtualization + virtualisation.libvirtd = lib.mkIf config.work_tools.enableVirtualization { + enable = true; + qemu = { + swtpm.enable = true; + }; + }; + + virtualisation.spiceUSBRedirection.enable = + lib.mkIf config.work_tools.enableVirtualization true; + + users.groups.libvirtd.members = lib.mkIf config.work_tools.enableVirtualization + [ config.work_tools.user ]; + + programs.virt-manager.enable = + lib.mkIf config.work_tools.enableVirtualization true; + + # NFS support (if needed for remote dev environments) + boot.initrd.supportedFilesystems = lib.mkIf config.work_tools.enableVirtualization + { nfs = true; }; + + # System packages that don't fit into categories + environment.systemPackages = with pkgs; lib.lists.flatten [ + (lib.optionals config.work_tools.enableDocker [ + docker-compose + ]) + ]; + }; +} +``` + +### Home Manager Companion Module + +Create a companion home-manager module for user-level packages: + +``` +shared/modules/work/work_tools_home.nix +``` + +```nix +{ inputs, lib, config, pkgs, ... }: +let + unstable = import inputs.nixpkgs-unstable { + system = "x86_64-linux"; + config.allowUnfree = true; + }; +in +{ + options.work_tools_home = { + enable = lib.mkEnableOption "Enable work development tools in home"; + + enableGoTools = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Go development toolchain"; + }; + + enableNodeTools = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Node.js development tools"; + }; + + enableDatabaseTools = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable database clients"; + }; + + enableAwsTools = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable AWS CLI and related tools"; + }; + }; + + config = lib.mkIf config.work_tools_home.enable { + home.packages = with pkgs; lib.lists.flatten [ + # Development tools + (lib.optionals config.work_tools_home.enableGoTools [ + go + unstable.delve + gotools + go-tools + govulncheck + unstable.golangci-lint + go-swag + gopls + ]) + + (lib.optionals config.work_tools_home.enableNodeTools [ + nodejs_24 + husky + pnpm + yarn + typescript-language-server + ]) + + (lib.optionals config.work_tools_home.enableDatabaseTools [ + mariadb + ]) + + (lib.optionals config.work_tools_home.enableAwsTools [ + awscli2 + ]) + + # General dev tools + vscode-fhs + jq + gnumake + cmake + gcc + gh + trivy + oxker # docker TUI + + # Additional LSPs + yaml-language-server + ltex-ls + ]; + + # Work-specific zsh configuration + programs.zsh.initExtra = lib.mkIf config.work_tools_home.enable '' + # Work environment variables + if [ -f ~/.vasion_env ]; then + source ~/.vasion_env + fi + + # Work functions + if [ -f ~/.config/zsh_functions.zsh ]; then + source ~/.config/zsh_functions.zsh + fi + + export GOBIN=~/go/bin + export PATH=$PATH:$GOBIN + ''; + }; +} +``` + +--- + +## Integration Steps + +### 1. Create the module files +- [ ] Create `shared/modules/work/work_tools.nix` +- [ ] Create `shared/modules/work/work_tools_home.nix` + +### 2. Import in nate-work system configuration + +In `nate-work/desktop-configuration.nix`: + +```nix +imports = [ + # ... existing imports + ../shared/modules/work/work_tools.nix +]; + +config = { + # ... existing config + + work_tools = { + enable = true; + enableDocker = true; + enableVirtualization = true; + enableGoTools = true; + enableNodeTools = true; + enableDatabaseTools = true; + user = deskCfg.userName; + }; +}; +``` + +### 3. Import in nate-work home-manager configuration + +In `nate-work/modules/home-manager/home.nix`: + +```nix +imports = [ + # ... existing imports + ../../../shared/modules/work/work_tools_home.nix +]; + +work_tools_home = { + enable = true; + enableGoTools = true; + enableNodeTools = true; + enableDatabaseTools = true; + enableAwsTools = true; +}; +``` + +### 4. Remove work packages from nirihome.homePackages + +Clean up the existing package list by removing packages now provided by work_tools_home. + +### 5. Test the configuration + +```bash +# Dry-run to check for errors +nix build .#nixosConfigurations.nate-work.config.system.build.toplevel --dry-run + +# If successful, rebuild +sudo nixos-rebuild switch --flake .#nate-work +``` + +--- + +## Benefits + +### Modularity +- Easy to enable/disable categories of tools +- Can be reused across multiple work machines +- Keeps personal configs clean + +### Flexibility +- Granular control via boolean flags +- Can enable only needed tool categories +- Easy to add new tool categories + +### Maintainability +- Single source of truth for work tools +- Easier to update work tooling across systems +- Clear separation of concerns + +--- + +## Future Enhancements + +### Additional Tool Categories +```nix +enablePythonTools = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable Python development tools"; +}; + +enableRustTools = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable Rust development toolchain"; +}; + +enableCloudTools = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable cloud provider CLIs (Azure, GCP)"; +}; +``` + +### Company-Specific Customization +```nix +company = lib.mkOption { + type = lib.types.enum [ "vasion" "other" ]; + default = "vasion"; + description = "Company-specific tool configurations"; +}; +``` + +### Environment File Management +Could integrate automated setup of `.vasion_env` or similar: + +```nix +work_tools_home.envFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = "Path to work environment variables file"; +}; +``` + +--- + +## Verification Checklist + +After creating the module: + +- [ ] Module imports correctly in desktop-configuration.nix +- [ ] Module imports correctly in home.nix +- [ ] Options can be toggled without errors +- [ ] Docker service starts correctly +- [ ] Libvirtd service starts correctly +- [ ] Go tools are in PATH +- [ ] Node tools are in PATH +- [ ] AWS CLI works +- [ ] User is in correct groups (docker, libvirtd) +- [ ] No duplicate packages between work_tools and personal configs +- [ ] Build succeeds with `nix flake check` +- [ ] System rebuilds successfully + +--- + +## Migration Path + +### Current State (nate-work) +Work tools scattered across: +- `nate-work/modules/niri/niri_conf.nix` (docker, virt-manager) +- `nate-work/modules/home-manager/home.nix` (go, node, aws tools) + +### Target State +Work tools consolidated in: +- `shared/modules/work/work_tools.nix` (system-level) +- `shared/modules/work/work_tools_home.nix` (user-level) + +### Steps +1. Create module files +2. Import modules +3. Enable with appropriate flags +4. Remove duplicate package declarations +5. Test rebuild +6. Verify all tools still work +7. Commit changes + +--- + +## Questions to Answer + +Before implementing: + +1. **Should this be in `shared/` or `nate-work/modules/`?** + - Recommendation: `shared/` if you might have multiple work machines + - Use `nate-work/modules/` if this is Vasion-specific + +2. **Do you want separate modules per tool category?** + - Could split into: `work_docker.nix`, `work_go.nix`, etc. + - Tradeoff: More files vs. better separation + +3. **Should work tools include LSPs?** + - Currently LSPs are in home.nix + - Could move to work_tools_home for consistency + +4. **Do you want cloud-specific tool categories?** + - AWS tools separate from GCP/Azure? + - Or generic "cloud tools" category? + +5. **Should VPN proxy module be part of work_tools?** + - Currently separate module + - Could integrate or keep separate diff --git a/flake.lock b/flake.lock index 6aab55a..89a508c 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1749223974, - "narHash": "sha256-/GAQYRW1duU81KG//2wI9ax8EkHVG/e1UOD97NdwLOY=", + "lastModified": 1770551880, + "narHash": "sha256-+cS5yXWsSLiK36+PP/+dcQdxpXSclx2d65p7l6Dis+A=", "owner": "catppuccin", "repo": "nix", - "rev": "3a42cd79c647360ee8742659e42aeec0947dd3b4", + "rev": "db4dfe3f2a80e9c33492d839accd49f75c7324c2", "type": "github" }, "original": { @@ -46,11 +46,11 @@ ] }, "locked": { - "lastModified": 1764866045, - "narHash": "sha256-0GsEtXV9OquDQ1VclQfP16cU5VZh7NEVIOjSH4UaJuM=", + "lastModified": 1770260404, + "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=", "owner": "nix-community", "repo": "home-manager", - "rev": "f63d0fe9d81d36e5fc95497217a72e02b8b7bcab", + "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b", "type": "github" }, "original": { @@ -62,11 +62,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1761759700, - "narHash": "sha256-zuiwvKAPwtMmwf44tb7Q7Y5d7JkBeuaF89PISUnkWA8=", + "lastModified": 1770631810, + "narHash": "sha256-b7iK/x+zOXbjhRqa+XBlYla4zFvPZyU5Ln2HJkiSnzc=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "2379bc40992ec29feb1933bb4acd224fa055f3f8", + "rev": "2889685785848de940375bf7fea5e7c5a3c8d502", "type": "github" }, "original": { @@ -78,11 +78,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744463964, - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "lastModified": 1770197578, + "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", + "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", "type": "github" }, "original": { @@ -94,11 +94,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1769018530, - "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", + "lastModified": 1770562336, + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", "owner": "nixos", "repo": "nixpkgs", - "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", "type": "github" }, "original": { @@ -110,11 +110,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1769089682, - "narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=", + "lastModified": 1770464364, + "narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "078d69f03934859a181e81ba987c2bb033eebfc5", + "rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1749285348, - "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", + "lastModified": 1770562336, + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", "type": "github" }, "original": { @@ -143,15 +143,14 @@ "nur": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_3", - "treefmt-nix": "treefmt-nix" + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1749411920, - "narHash": "sha256-b8gH96+gNoLMudWbM5B3AuAnr1uvOmAIrCuq08BfDGI=", + "lastModified": 1770671471, + "narHash": "sha256-XpSArPAk0WwHVB3Lj4/J9eFUTWhjhL9KXSIOPelCENY=", "owner": "nix-community", "repo": "NUR", - "rev": "73d91ecf207a0796b50f5a60c824073363dc52ae", + "rev": "2a64dca9f90414d5cf6d5c49c30aff09dcb709de", "type": "github" }, "original": { @@ -169,27 +168,6 @@ "nixpkgs-unstable": "nixpkgs-unstable", "nur": "nur" } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } } }, "root": "root", diff --git a/frame12/desktop-configuration.nix b/frame12/desktop-configuration.nix index 4a7ea7a..ee26763 100644 --- a/frame12/desktop-configuration.nix +++ b/frame12/desktop-configuration.nix @@ -1,4 +1,13 @@ -{ config, lib, inputs, outputs, pkgs, timeZone, system, ... }: +{ + config, + lib, + inputs, + outputs, + pkgs, + timeZone, + system, + ... +}: let supportedDesktops = [ "niri" ]; supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops; @@ -6,35 +15,36 @@ let in { options.deskCfg = { - de = lib.mkOption { - default = ""; - type = lib.types.str; - description = "Desktop Environment"; - }; - userName = lib.mkOption { - type = lib.types.str; - description = "Main username for system"; - }; - hostName = lib.mkOption { - type = lib.types.str; - description = "Hostname for system"; - }; + de = lib.mkOption { + default = ""; + type = lib.types.str; + description = "Desktop Environment"; + }; + userName = lib.mkOption { + type = lib.types.str; + description = "Main username for system"; + }; + hostName = lib.mkOption { + type = lib.types.str; + description = "Hostname for system"; + }; }; - imports = [ - modules/user/main_user.nix - modules/niri/niri_conf.nix - ../shared/modules/system/power_manager.nix - ]; + imports = [ + modules/user/main_user.nix + modules/niri/niri_conf.nix + modules/colemak-ec.nix + ../shared/modules/system/power_manager.nix + ]; - config = { + config = { assertions = [ { assertion = builtins.elem deskCfg.de supportedDesktops; message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}"; } ]; - + nixpkgs.overlays = [ inputs.nur.overlays.default ]; @@ -45,20 +55,29 @@ in # Enable flakes feature nix.settings.experimental-features = [ - "nix-command" "flakes" + "nix-command" + "flakes" ]; nixpkgs.config.allowUnfree = true; - + boot = { plymouth = { enable = true; - theme = "circuit"; - themePackages = with pkgs; [ - # By default we would install all themes - (adi1090x-plymouth-themes.override { - selected_themes = [ "circuit" "circle_flow" ]; - }) + theme = "framework"; + themePackages = [ + (pkgs.runCommand "plymouth-framework-theme" { } '' + mkdir -p $out/share/plymouth/themes/framework + cp -r ${./framework-plymouth-theme/framework}/* $out/share/plymouth/themes/framework/ + substituteInPlace $out/share/plymouth/themes/framework/framework.plymouth \ + --replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/framework" + '') ]; + # themePackages = with pkgs; [ + # # By default we would install all themes + # (adi1090x-plymouth-themes.override { + # selected_themes = [ "circuit" "circle_flow" ]; + # }) + # ]; }; # Enable "Silent Boot" @@ -84,17 +103,17 @@ in kernelPackages = pkgs.linuxPackages_latest; }; networking.hostName = deskCfg.hostName; # Define your hostname. - networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - networking.wireless.iwd.enable = true; + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + networking.wireless.iwd.enable = true; time.timeZone = timeZone; - + main_user = { enable = true; userName = deskCfg.userName; isDesktopUser = true; }; - + power_manager = { enable = true; }; @@ -118,6 +137,9 @@ in # For electron apps in wayland environment.sessionVariables.NIXOS_OZONE_WL = "1"; + # auto write colemak-dh to keyboard ec + colemakEc.enable = true; + services.greetd = { enable = true; settings = rec { @@ -128,7 +150,7 @@ in default_session = initial_session; }; }; - + # For yubioath desktop services.pcscd.enable = true; system.stateVersion = "25.05"; # Did you read the comment? diff --git a/frame12/dump-matrix.py b/frame12/dump-matrix.py new file mode 100755 index 0000000..38c1f80 --- /dev/null +++ b/frame12/dump-matrix.py @@ -0,0 +1,224 @@ +#!/usr/bin/env python3 +""" +Dump the full Framework EC keyboard matrix. +Reads all matrix positions and prints those with non-zero scancodes. + +Usage: + sudo python3 dump-matrix.py + # or on NixOS: + # nix-shell -p python3 --run 'sudo python3 dump-matrix.py' +""" + +import subprocess +import sys + +# PS/2 Scan Code Set 2 -> Key name mapping +SCANCODE_NAMES = { + 0x00: "(none)", + 0x01: "F9", + 0x03: "F5", + 0x04: "F3", + 0x05: "F1", + 0x06: "F2", + 0x07: "F12", + 0x09: "F10", + 0x0A: "F8", + 0x0B: "F6", + 0x0C: "F4", + 0x0D: "Tab", + 0x0E: "`", + 0x11: "L Alt", + 0x12: "L Shift", + 0x14: "L Ctrl", + 0x15: "q", + 0x16: "1", + 0x1A: "z", + 0x1B: "s", + 0x1C: "a", + 0x1D: "w", + 0x1E: "2", + 0x21: "c", + 0x22: "x", + 0x23: "d", + 0x24: "e", + 0x25: "4", + 0x26: "3", + 0x29: "Space", + 0x2A: "v", + 0x2B: "f", + 0x2C: "t", + 0x2D: "r", + 0x2E: "5", + 0x31: "n", + 0x32: "b", + 0x33: "h", + 0x34: "g", + 0x35: "y", + 0x36: "6", + 0x3A: "m", + 0x3B: "j", + 0x3C: "u", + 0x3D: "7", + 0x3E: "8", + 0x41: ",", + 0x42: "k", + 0x43: "i", + 0x44: "o", + 0x45: "0", + 0x46: "9", + 0x49: ".", + 0x4A: "/", + 0x4B: "l", + 0x4C: ";", + 0x4D: "p", + 0x4E: "-", + 0x52: "'", + 0x54: "[", + 0x55: "=", + 0x58: "Caps Lock", + 0x59: "R Shift", + 0x5A: "Enter", + 0x5B: "]", + 0x5D: "\\", + 0x66: "Backspace", + 0x69: "KP 1", + 0x6B: "KP 4", + 0x6C: "KP 7", + 0x70: "KP 0", + 0x71: "KP .", + 0x72: "KP 2", + 0x73: "KP 5", + 0x74: "KP 6", + 0x75: "KP 8", + 0x76: "Esc", + 0x77: "Num Lock", + 0x78: "F11", + 0x79: "KP +", + 0x7A: "KP 3", + 0x7B: "KP -", + 0x7C: "KP *", + 0x7D: "KP 9", + 0x7E: "Scroll Lock", + 0x83: "F7", + 0xFF: "Fn", + # Extended keys (E0 prefix) - stored as 16-bit values + 0xE011: "R Alt", + 0xE014: "R Ctrl", + 0xE01F: "L GUI", + 0xE027: "R GUI", + 0xE02F: "Apps/Menu", + 0xE04A: "KP /", + 0xE05A: "KP Enter", + 0xE069: "End", + 0xE06B: "Left Arrow", + 0xE06C: "Home", + 0xE070: "Insert", + 0xE071: "Delete", + 0xE072: "Down Arrow", + 0xE074: "Right Arrow", + 0xE075: "Up Arrow", + 0xE07A: "Page Down", + 0xE07D: "Page Up", +} + + +def get_scancode_name(code): + if code in SCANCODE_NAMES: + return SCANCODE_NAMES[code] + return f"unknown" + + +def read_matrix_position(row, col): + """Read the scancode at a given matrix position. Returns the 16-bit scancode.""" + col_hex = format(col, 'x') + cmd = f"ectool raw 0x3E0C d1,d0,b{row:x},b{col_hex},w0" + try: + result = subprocess.run( + cmd.split(), + capture_output=True, text=True, timeout=5 + ) + output = result.stdout + result.stderr + # Parse the response bytes. Look for the "Read XXX bytes" line and + # then parse the hex dump that follows. + lines = output.strip().split('\n') + response_bytes = [] + reading = False + for line in lines: + if "Read" in line and "bytes" in line: + reading = True + continue + if reading and '|' in line: + # Extract hex bytes before the | + hex_part = line.split('|')[0].strip() + for byte_str in hex_part.split(): + if len(byte_str) == 2: + try: + response_bytes.append(int(byte_str, 16)) + except ValueError: + pass + + # Scancode is at bytes 10-11 (little-endian 16-bit) + if len(response_bytes) >= 12: + scancode = response_bytes[10] | (response_bytes[11] << 8) + return scancode + return None + except (subprocess.TimeoutExpired, Exception) as e: + print(f" Error reading ({row},{col:x}): {e}", file=sys.stderr) + return None + + +def main(): + if subprocess.os.geteuid() != 0: + print("This script must be run as root (sudo).", file=sys.stderr) + sys.exit(1) + + # Scan a wide range: rows 0-15, cols 0-15 + # This covers well beyond the assumed 8x12 matrix + max_row = 16 + max_col = 16 + + print(f"Scanning matrix positions ({max_row} rows x {max_col} cols)...") + print(f"{'Pos':>8} {'Scancode':>10} Key") + print("-" * 40) + + found = [] + for row in range(max_row): + for col in range(max_col): + scancode = read_matrix_position(row, col) + if scancode is not None and scancode != 0: + name = get_scancode_name(scancode) + label = f"({row:x},{col:x})" + sc_str = f"{scancode:04x}" if scancode > 0xFF else f"{scancode:02x}" + print(f"{label:>8} {sc_str:>10} {name}") + found.append((row, col, scancode, name)) + # Print progress on stderr + print(f"\r Scanning ({row:x},{col:x})... ", end='', file=sys.stderr, flush=True) + + print("\r ", file=sys.stderr) + print("-" * 40) + print(f"Found {len(found)} mapped positions.") + + # Print a visual grid + print("\n=== Matrix Grid ===") + print(f"{'':>6}", end='') + for col in range(max_col): + print(f" {col:x} ", end='') + print() + + for row in range(max_row): + print(f" {row:x} ", end='') + for col in range(max_col): + match = None + for r, c, sc, name in found: + if r == row and c == col: + match = name + break + if match: + print(f" {match:>6}", end='') + else: + print(f" .", end='') + print() + + +if __name__ == "__main__": + main() diff --git a/frame12/framework-plymouth-theme/LICENSE b/frame12/framework-plymouth-theme/LICENSE new file mode 100644 index 0000000..23d6a58 --- /dev/null +++ b/frame12/framework-plymouth-theme/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Kupke + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/frame12/framework-plymouth-theme/README.md b/frame12/framework-plymouth-theme/README.md new file mode 100644 index 0000000..8acc33d --- /dev/null +++ b/frame12/framework-plymouth-theme/README.md @@ -0,0 +1,23 @@ +# Framework Plymouth Theme + +Theme with animated Framework logo. Inspiration from [KDE Splashscreen](https://github.com/NL-TCH/Frame.Work_SplashScreen-KDE). + +Artwork credit to sniss https://community.frame.work/t/framework-fan-art/6626/39 + +## Installation + +Copy the `framework` folder to your Plymouth theme folder (in Fedora, it's `/usr/share/plymouth/themes/`). + +To see if it's in the right spot, you can run `plymouth-set-default-theme -l` + +To set the theme, execute this command: +``` +sudo plymouth-set-default-theme framework -R +``` + +## Distro Logo + +If you want to add your distro logo to the boot animation screen, insert it as `watermark.png` + +You should be able to reuse your distro's watermark image from one of your existing themes. Fedora image included for reference; just rename `fedora_watermark.png` to `watermark.png` and move it into the `framework` folder. + diff --git a/frame12/framework-plymouth-theme/framework/bullet.png b/frame12/framework-plymouth-theme/framework/bullet.png new file mode 100644 index 0000000..5799dda Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/bullet.png differ diff --git a/frame12/framework-plymouth-theme/framework/capslock.png b/frame12/framework-plymouth-theme/framework/capslock.png new file mode 100644 index 0000000..9d775f6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/capslock.png differ diff --git a/frame12/framework-plymouth-theme/framework/entry.png b/frame12/framework-plymouth-theme/framework/entry.png new file mode 100644 index 0000000..4a22e7f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/entry.png differ diff --git a/frame12/framework-plymouth-theme/framework/framework.plymouth b/frame12/framework-plymouth-theme/framework/framework.plymouth new file mode 100644 index 0000000..6f218e4 --- /dev/null +++ b/frame12/framework-plymouth-theme/framework/framework.plymouth @@ -0,0 +1,54 @@ +[Plymouth Theme] +Name=Framework +Description=Theme with animated Framework logo. +ModuleName=two-step + +[two-step] +Font=Cantarell 12 +TitleFont=Cantarell Light 30 +ImageDir=@IMAGEDIR@ +DialogHorizontalAlignment=.5 +DialogVerticalAlignment=.382 +TitleHorizontalAlignment=.5 +TitleVerticalAlignment=.382 +HorizontalAlignment=.5 +VerticalAlignment=.5 +WatermarkHorizontalAlignment=.5 +WatermarkVerticalAlignment=.96 +Transition=none +TransitionDuration=0.0 +BackgroundStartColor=0x000000 +BackgroundEndColor=0x000000 +ProgressBarBackgroundColor=0x606060 +ProgressBarForegroundColor=0xffffff +MessageBelowAnimation=true + +[boot-up] +UseEndAnimation=false + +[shutdown] +UseEndAnimation=false + +[reboot] +UseEndAnimation=false + +[updates] +SuppressMessages=true +ProgressBarShowPercentComplete=true +UseProgressBar=true +Title=Installing Updates... +SubTitle=Do not turn off your computer + +[system-upgrade] +SuppressMessages=true +ProgressBarShowPercentComplete=true +UseProgressBar=true +Title=Upgrading System... +SubTitle=Do not turn off your computer + +[firmware-upgrade] +SuppressMessages=true +ProgressBarShowPercentComplete=true +UseProgressBar=true +Title=Upgrading Firmware... +SubTitle=Do not turn off your computer diff --git a/frame12/framework-plymouth-theme/framework/keyboard.png b/frame12/framework-plymouth-theme/framework/keyboard.png new file mode 100644 index 0000000..f532ad0 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/keyboard.png differ diff --git a/frame12/framework-plymouth-theme/framework/keymap-render.png b/frame12/framework-plymouth-theme/framework/keymap-render.png new file mode 100644 index 0000000..4aaed5a Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/keymap-render.png differ diff --git a/frame12/framework-plymouth-theme/framework/lock.png b/frame12/framework-plymouth-theme/framework/lock.png new file mode 100644 index 0000000..c1538df Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/lock.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0001.png b/frame12/framework-plymouth-theme/framework/throbber-0001.png new file mode 100644 index 0000000..7daef46 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0001.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0002.png b/frame12/framework-plymouth-theme/framework/throbber-0002.png new file mode 100644 index 0000000..7daef46 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0002.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0003.png b/frame12/framework-plymouth-theme/framework/throbber-0003.png new file mode 100644 index 0000000..7daef46 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0003.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0004.png b/frame12/framework-plymouth-theme/framework/throbber-0004.png new file mode 100644 index 0000000..7daef46 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0004.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0005.png b/frame12/framework-plymouth-theme/framework/throbber-0005.png new file mode 100644 index 0000000..7daef46 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0005.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0006.png b/frame12/framework-plymouth-theme/framework/throbber-0006.png new file mode 100644 index 0000000..7daef46 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0006.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0007.png b/frame12/framework-plymouth-theme/framework/throbber-0007.png new file mode 100644 index 0000000..7daef46 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0007.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0008.png b/frame12/framework-plymouth-theme/framework/throbber-0008.png new file mode 100644 index 0000000..7daef46 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0008.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0009.png b/frame12/framework-plymouth-theme/framework/throbber-0009.png new file mode 100644 index 0000000..e17a415 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0009.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0010.png b/frame12/framework-plymouth-theme/framework/throbber-0010.png new file mode 100644 index 0000000..e17a415 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0010.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0011.png b/frame12/framework-plymouth-theme/framework/throbber-0011.png new file mode 100644 index 0000000..e17a415 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0011.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0012.png b/frame12/framework-plymouth-theme/framework/throbber-0012.png new file mode 100644 index 0000000..e17a415 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0012.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0013.png b/frame12/framework-plymouth-theme/framework/throbber-0013.png new file mode 100644 index 0000000..e17a415 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0013.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0014.png b/frame12/framework-plymouth-theme/framework/throbber-0014.png new file mode 100644 index 0000000..e17a415 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0014.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0015.png b/frame12/framework-plymouth-theme/framework/throbber-0015.png new file mode 100644 index 0000000..9a49b37 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0015.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0016.png b/frame12/framework-plymouth-theme/framework/throbber-0016.png new file mode 100644 index 0000000..3cecce6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0016.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0017.png b/frame12/framework-plymouth-theme/framework/throbber-0017.png new file mode 100644 index 0000000..b6833ad Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0017.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0018.png b/frame12/framework-plymouth-theme/framework/throbber-0018.png new file mode 100644 index 0000000..2060812 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0018.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0019.png b/frame12/framework-plymouth-theme/framework/throbber-0019.png new file mode 100644 index 0000000..aa43827 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0019.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0020.png b/frame12/framework-plymouth-theme/framework/throbber-0020.png new file mode 100644 index 0000000..1d4b1de Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0020.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0021.png b/frame12/framework-plymouth-theme/framework/throbber-0021.png new file mode 100644 index 0000000..8f0f9de Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0021.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0022.png b/frame12/framework-plymouth-theme/framework/throbber-0022.png new file mode 100644 index 0000000..88c5388 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0022.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0023.png b/frame12/framework-plymouth-theme/framework/throbber-0023.png new file mode 100644 index 0000000..442071e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0023.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0024.png b/frame12/framework-plymouth-theme/framework/throbber-0024.png new file mode 100644 index 0000000..5ddea90 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0024.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0025.png b/frame12/framework-plymouth-theme/framework/throbber-0025.png new file mode 100644 index 0000000..79ed4fd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0025.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0026.png b/frame12/framework-plymouth-theme/framework/throbber-0026.png new file mode 100644 index 0000000..f16157d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0026.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0027.png b/frame12/framework-plymouth-theme/framework/throbber-0027.png new file mode 100644 index 0000000..e4cb010 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0027.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0028.png b/frame12/framework-plymouth-theme/framework/throbber-0028.png new file mode 100644 index 0000000..14e7e07 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0028.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0029.png b/frame12/framework-plymouth-theme/framework/throbber-0029.png new file mode 100644 index 0000000..a2e94b4 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0029.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0030.png b/frame12/framework-plymouth-theme/framework/throbber-0030.png new file mode 100644 index 0000000..bcecb2b Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0030.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0031.png b/frame12/framework-plymouth-theme/framework/throbber-0031.png new file mode 100644 index 0000000..dd1eed6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0031.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0032.png b/frame12/framework-plymouth-theme/framework/throbber-0032.png new file mode 100644 index 0000000..dd1eed6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0032.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0033.png b/frame12/framework-plymouth-theme/framework/throbber-0033.png new file mode 100644 index 0000000..dd1eed6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0033.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0034.png b/frame12/framework-plymouth-theme/framework/throbber-0034.png new file mode 100644 index 0000000..dd1eed6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0034.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0035.png b/frame12/framework-plymouth-theme/framework/throbber-0035.png new file mode 100644 index 0000000..dd1eed6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0035.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0036.png b/frame12/framework-plymouth-theme/framework/throbber-0036.png new file mode 100644 index 0000000..7cc6c07 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0036.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0037.png b/frame12/framework-plymouth-theme/framework/throbber-0037.png new file mode 100644 index 0000000..00cbea9 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0037.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0038.png b/frame12/framework-plymouth-theme/framework/throbber-0038.png new file mode 100644 index 0000000..32c28fe Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0038.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0039.png b/frame12/framework-plymouth-theme/framework/throbber-0039.png new file mode 100644 index 0000000..1eb2bf5 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0039.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0040.png b/frame12/framework-plymouth-theme/framework/throbber-0040.png new file mode 100644 index 0000000..d29517a Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0040.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0041.png b/frame12/framework-plymouth-theme/framework/throbber-0041.png new file mode 100644 index 0000000..b0f62c1 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0041.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0042.png b/frame12/framework-plymouth-theme/framework/throbber-0042.png new file mode 100644 index 0000000..b76870c Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0042.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0043.png b/frame12/framework-plymouth-theme/framework/throbber-0043.png new file mode 100644 index 0000000..f352b84 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0043.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0044.png b/frame12/framework-plymouth-theme/framework/throbber-0044.png new file mode 100644 index 0000000..6c992a9 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0044.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0045.png b/frame12/framework-plymouth-theme/framework/throbber-0045.png new file mode 100644 index 0000000..fa0ba64 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0045.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0046.png b/frame12/framework-plymouth-theme/framework/throbber-0046.png new file mode 100644 index 0000000..d8ff6f1 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0046.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0047.png b/frame12/framework-plymouth-theme/framework/throbber-0047.png new file mode 100644 index 0000000..77a3a4d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0047.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0048.png b/frame12/framework-plymouth-theme/framework/throbber-0048.png new file mode 100644 index 0000000..274fccb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0048.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0049.png b/frame12/framework-plymouth-theme/framework/throbber-0049.png new file mode 100644 index 0000000..2c3465d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0049.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0050.png b/frame12/framework-plymouth-theme/framework/throbber-0050.png new file mode 100644 index 0000000..ba89e55 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0050.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0051.png b/frame12/framework-plymouth-theme/framework/throbber-0051.png new file mode 100644 index 0000000..0347033 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0051.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0052.png b/frame12/framework-plymouth-theme/framework/throbber-0052.png new file mode 100644 index 0000000..377e404 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0052.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0053.png b/frame12/framework-plymouth-theme/framework/throbber-0053.png new file mode 100644 index 0000000..96003ba Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0053.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0054.png b/frame12/framework-plymouth-theme/framework/throbber-0054.png new file mode 100644 index 0000000..ea28891 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0054.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0055.png b/frame12/framework-plymouth-theme/framework/throbber-0055.png new file mode 100644 index 0000000..ae5c0bb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0055.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0056.png b/frame12/framework-plymouth-theme/framework/throbber-0056.png new file mode 100644 index 0000000..380674b Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0056.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0057.png b/frame12/framework-plymouth-theme/framework/throbber-0057.png new file mode 100644 index 0000000..9f427c6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0057.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0058.png b/frame12/framework-plymouth-theme/framework/throbber-0058.png new file mode 100644 index 0000000..1ef60aa Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0058.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0059.png b/frame12/framework-plymouth-theme/framework/throbber-0059.png new file mode 100644 index 0000000..16817d3 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0059.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0060.png b/frame12/framework-plymouth-theme/framework/throbber-0060.png new file mode 100644 index 0000000..6edeaa7 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0060.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0061.png b/frame12/framework-plymouth-theme/framework/throbber-0061.png new file mode 100644 index 0000000..b69eb2b Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0061.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0062.png b/frame12/framework-plymouth-theme/framework/throbber-0062.png new file mode 100644 index 0000000..4ed745b Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0062.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0063.png b/frame12/framework-plymouth-theme/framework/throbber-0063.png new file mode 100644 index 0000000..38a4c01 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0063.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0064.png b/frame12/framework-plymouth-theme/framework/throbber-0064.png new file mode 100644 index 0000000..badf60d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0064.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0065.png b/frame12/framework-plymouth-theme/framework/throbber-0065.png new file mode 100644 index 0000000..08d50fc Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0065.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0066.png b/frame12/framework-plymouth-theme/framework/throbber-0066.png new file mode 100644 index 0000000..8d1db9c Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0066.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0067.png b/frame12/framework-plymouth-theme/framework/throbber-0067.png new file mode 100644 index 0000000..1245c9d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0067.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0068.png b/frame12/framework-plymouth-theme/framework/throbber-0068.png new file mode 100644 index 0000000..75507bc Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0068.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0069.png b/frame12/framework-plymouth-theme/framework/throbber-0069.png new file mode 100644 index 0000000..feb62b1 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0069.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0070.png b/frame12/framework-plymouth-theme/framework/throbber-0070.png new file mode 100644 index 0000000..3e1c1ea Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0070.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0071.png b/frame12/framework-plymouth-theme/framework/throbber-0071.png new file mode 100644 index 0000000..59fb9bf Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0071.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0072.png b/frame12/framework-plymouth-theme/framework/throbber-0072.png new file mode 100644 index 0000000..e91fb94 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0072.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0073.png b/frame12/framework-plymouth-theme/framework/throbber-0073.png new file mode 100644 index 0000000..c1c8589 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0073.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0074.png b/frame12/framework-plymouth-theme/framework/throbber-0074.png new file mode 100644 index 0000000..9f347b3 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0074.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0075.png b/frame12/framework-plymouth-theme/framework/throbber-0075.png new file mode 100644 index 0000000..46d687f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0075.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0076.png b/frame12/framework-plymouth-theme/framework/throbber-0076.png new file mode 100644 index 0000000..086c70a Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0076.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0077.png b/frame12/framework-plymouth-theme/framework/throbber-0077.png new file mode 100644 index 0000000..490c28f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0077.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0078.png b/frame12/framework-plymouth-theme/framework/throbber-0078.png new file mode 100644 index 0000000..45980d8 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0078.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0079.png b/frame12/framework-plymouth-theme/framework/throbber-0079.png new file mode 100644 index 0000000..e6ae05a Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0079.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0080.png b/frame12/framework-plymouth-theme/framework/throbber-0080.png new file mode 100644 index 0000000..614a618 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0080.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0081.png b/frame12/framework-plymouth-theme/framework/throbber-0081.png new file mode 100644 index 0000000..c73bbfd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0081.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0082.png b/frame12/framework-plymouth-theme/framework/throbber-0082.png new file mode 100644 index 0000000..a7c9e6b Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0082.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0083.png b/frame12/framework-plymouth-theme/framework/throbber-0083.png new file mode 100644 index 0000000..764dd96 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0083.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0084.png b/frame12/framework-plymouth-theme/framework/throbber-0084.png new file mode 100644 index 0000000..a7d69f3 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0084.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0085.png b/frame12/framework-plymouth-theme/framework/throbber-0085.png new file mode 100644 index 0000000..4c0a0b1 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0085.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0086.png b/frame12/framework-plymouth-theme/framework/throbber-0086.png new file mode 100644 index 0000000..d3e00ba Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0086.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0087.png b/frame12/framework-plymouth-theme/framework/throbber-0087.png new file mode 100644 index 0000000..ed88b5c Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0087.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0088.png b/frame12/framework-plymouth-theme/framework/throbber-0088.png new file mode 100644 index 0000000..8e8c130 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0088.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0089.png b/frame12/framework-plymouth-theme/framework/throbber-0089.png new file mode 100644 index 0000000..15220ef Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0089.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0090.png b/frame12/framework-plymouth-theme/framework/throbber-0090.png new file mode 100644 index 0000000..1d23c14 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0090.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0091.png b/frame12/framework-plymouth-theme/framework/throbber-0091.png new file mode 100644 index 0000000..761ad9f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0091.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0092.png b/frame12/framework-plymouth-theme/framework/throbber-0092.png new file mode 100644 index 0000000..87a35fb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0092.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0093.png b/frame12/framework-plymouth-theme/framework/throbber-0093.png new file mode 100644 index 0000000..6bbd631 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0093.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0094.png b/frame12/framework-plymouth-theme/framework/throbber-0094.png new file mode 100644 index 0000000..c30a571 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0094.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0095.png b/frame12/framework-plymouth-theme/framework/throbber-0095.png new file mode 100644 index 0000000..6078151 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0095.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0096.png b/frame12/framework-plymouth-theme/framework/throbber-0096.png new file mode 100644 index 0000000..13dd060 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0096.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0097.png b/frame12/framework-plymouth-theme/framework/throbber-0097.png new file mode 100644 index 0000000..14ef1d3 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0097.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0098.png b/frame12/framework-plymouth-theme/framework/throbber-0098.png new file mode 100644 index 0000000..7bb3e1b Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0098.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0099.png b/frame12/framework-plymouth-theme/framework/throbber-0099.png new file mode 100644 index 0000000..8e463f1 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0099.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0100.png b/frame12/framework-plymouth-theme/framework/throbber-0100.png new file mode 100644 index 0000000..b8fd8d5 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0100.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0101.png b/frame12/framework-plymouth-theme/framework/throbber-0101.png new file mode 100644 index 0000000..adc62c7 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0101.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0102.png b/frame12/framework-plymouth-theme/framework/throbber-0102.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0102.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0103.png b/frame12/framework-plymouth-theme/framework/throbber-0103.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0103.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0104.png b/frame12/framework-plymouth-theme/framework/throbber-0104.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0104.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0105.png b/frame12/framework-plymouth-theme/framework/throbber-0105.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0105.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0106.png b/frame12/framework-plymouth-theme/framework/throbber-0106.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0106.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0107.png b/frame12/framework-plymouth-theme/framework/throbber-0107.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0107.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0108.png b/frame12/framework-plymouth-theme/framework/throbber-0108.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0108.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0109.png b/frame12/framework-plymouth-theme/framework/throbber-0109.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0109.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0110.png b/frame12/framework-plymouth-theme/framework/throbber-0110.png new file mode 100644 index 0000000..882ac2e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0110.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0111.png b/frame12/framework-plymouth-theme/framework/throbber-0111.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0111.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0112.png b/frame12/framework-plymouth-theme/framework/throbber-0112.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0112.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0113.png b/frame12/framework-plymouth-theme/framework/throbber-0113.png new file mode 100644 index 0000000..879a9c0 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0113.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0114.png b/frame12/framework-plymouth-theme/framework/throbber-0114.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0114.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0115.png b/frame12/framework-plymouth-theme/framework/throbber-0115.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0115.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0116.png b/frame12/framework-plymouth-theme/framework/throbber-0116.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0116.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0117.png b/frame12/framework-plymouth-theme/framework/throbber-0117.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0117.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0118.png b/frame12/framework-plymouth-theme/framework/throbber-0118.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0118.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0119.png b/frame12/framework-plymouth-theme/framework/throbber-0119.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0119.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0120.png b/frame12/framework-plymouth-theme/framework/throbber-0120.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0120.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0121.png b/frame12/framework-plymouth-theme/framework/throbber-0121.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0121.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0122.png b/frame12/framework-plymouth-theme/framework/throbber-0122.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0122.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0123.png b/frame12/framework-plymouth-theme/framework/throbber-0123.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0123.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0124.png b/frame12/framework-plymouth-theme/framework/throbber-0124.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0124.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0125.png b/frame12/framework-plymouth-theme/framework/throbber-0125.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0125.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0126.png b/frame12/framework-plymouth-theme/framework/throbber-0126.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0126.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0127.png b/frame12/framework-plymouth-theme/framework/throbber-0127.png new file mode 100644 index 0000000..aded4cb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0127.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0128.png b/frame12/framework-plymouth-theme/framework/throbber-0128.png new file mode 100644 index 0000000..0c36143 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0128.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0129.png b/frame12/framework-plymouth-theme/framework/throbber-0129.png new file mode 100644 index 0000000..0c36143 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0129.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0130.png b/frame12/framework-plymouth-theme/framework/throbber-0130.png new file mode 100644 index 0000000..0c36143 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0130.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0131.png b/frame12/framework-plymouth-theme/framework/throbber-0131.png new file mode 100644 index 0000000..0c36143 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0131.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0132.png b/frame12/framework-plymouth-theme/framework/throbber-0132.png new file mode 100644 index 0000000..0c36143 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0132.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0133.png b/frame12/framework-plymouth-theme/framework/throbber-0133.png new file mode 100644 index 0000000..d225775 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0133.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0134.png b/frame12/framework-plymouth-theme/framework/throbber-0134.png new file mode 100644 index 0000000..0c5a6f3 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0134.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0135.png b/frame12/framework-plymouth-theme/framework/throbber-0135.png new file mode 100644 index 0000000..bbeaa79 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0135.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0136.png b/frame12/framework-plymouth-theme/framework/throbber-0136.png new file mode 100644 index 0000000..18a5a7f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0136.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0137.png b/frame12/framework-plymouth-theme/framework/throbber-0137.png new file mode 100644 index 0000000..2fe18e5 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0137.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0138.png b/frame12/framework-plymouth-theme/framework/throbber-0138.png new file mode 100644 index 0000000..df7ccde Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0138.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0139.png b/frame12/framework-plymouth-theme/framework/throbber-0139.png new file mode 100644 index 0000000..eb02146 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0139.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0140.png b/frame12/framework-plymouth-theme/framework/throbber-0140.png new file mode 100644 index 0000000..ba88afe Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0140.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0141.png b/frame12/framework-plymouth-theme/framework/throbber-0141.png new file mode 100644 index 0000000..52abb14 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0141.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0142.png b/frame12/framework-plymouth-theme/framework/throbber-0142.png new file mode 100644 index 0000000..d514ffa Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0142.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0143.png b/frame12/framework-plymouth-theme/framework/throbber-0143.png new file mode 100644 index 0000000..94411de Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0143.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0144.png b/frame12/framework-plymouth-theme/framework/throbber-0144.png new file mode 100644 index 0000000..bf3f8aa Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0144.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0145.png b/frame12/framework-plymouth-theme/framework/throbber-0145.png new file mode 100644 index 0000000..6647fa6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0145.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0146.png b/frame12/framework-plymouth-theme/framework/throbber-0146.png new file mode 100644 index 0000000..de9d878 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0146.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0147.png b/frame12/framework-plymouth-theme/framework/throbber-0147.png new file mode 100644 index 0000000..710bfa2 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0147.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0148.png b/frame12/framework-plymouth-theme/framework/throbber-0148.png new file mode 100644 index 0000000..251dc23 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0148.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0149.png b/frame12/framework-plymouth-theme/framework/throbber-0149.png new file mode 100644 index 0000000..5e0bf6b Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0149.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0150.png b/frame12/framework-plymouth-theme/framework/throbber-0150.png new file mode 100644 index 0000000..29dc510 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0150.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0151.png b/frame12/framework-plymouth-theme/framework/throbber-0151.png new file mode 100644 index 0000000..f4f3db8 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0151.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0152.png b/frame12/framework-plymouth-theme/framework/throbber-0152.png new file mode 100644 index 0000000..1fb0c7d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0152.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0153.png b/frame12/framework-plymouth-theme/framework/throbber-0153.png new file mode 100644 index 0000000..b6b3145 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0153.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0154.png b/frame12/framework-plymouth-theme/framework/throbber-0154.png new file mode 100644 index 0000000..fdd20f5 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0154.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0155.png b/frame12/framework-plymouth-theme/framework/throbber-0155.png new file mode 100644 index 0000000..8503023 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0155.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0156.png b/frame12/framework-plymouth-theme/framework/throbber-0156.png new file mode 100644 index 0000000..a2393a3 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0156.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0157.png b/frame12/framework-plymouth-theme/framework/throbber-0157.png new file mode 100644 index 0000000..f3f3bda Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0157.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0158.png b/frame12/framework-plymouth-theme/framework/throbber-0158.png new file mode 100644 index 0000000..03b5594 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0158.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0159.png b/frame12/framework-plymouth-theme/framework/throbber-0159.png new file mode 100644 index 0000000..3ab6165 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0159.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0160.png b/frame12/framework-plymouth-theme/framework/throbber-0160.png new file mode 100644 index 0000000..e3f7a23 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0160.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0161.png b/frame12/framework-plymouth-theme/framework/throbber-0161.png new file mode 100644 index 0000000..97a1468 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0161.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0162.png b/frame12/framework-plymouth-theme/framework/throbber-0162.png new file mode 100644 index 0000000..81834cc Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0162.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0163.png b/frame12/framework-plymouth-theme/framework/throbber-0163.png new file mode 100644 index 0000000..9f6b406 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0163.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0164.png b/frame12/framework-plymouth-theme/framework/throbber-0164.png new file mode 100644 index 0000000..707741d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0164.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0165.png b/frame12/framework-plymouth-theme/framework/throbber-0165.png new file mode 100644 index 0000000..6cca4d8 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0165.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0166.png b/frame12/framework-plymouth-theme/framework/throbber-0166.png new file mode 100644 index 0000000..8c2e4d3 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0166.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0167.png b/frame12/framework-plymouth-theme/framework/throbber-0167.png new file mode 100644 index 0000000..2a78258 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0167.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0168.png b/frame12/framework-plymouth-theme/framework/throbber-0168.png new file mode 100644 index 0000000..cd5affb Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0168.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0169.png b/frame12/framework-plymouth-theme/framework/throbber-0169.png new file mode 100644 index 0000000..5df2e05 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0169.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0170.png b/frame12/framework-plymouth-theme/framework/throbber-0170.png new file mode 100644 index 0000000..49ba339 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0170.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0171.png b/frame12/framework-plymouth-theme/framework/throbber-0171.png new file mode 100644 index 0000000..7c1f06c Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0171.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0172.png b/frame12/framework-plymouth-theme/framework/throbber-0172.png new file mode 100644 index 0000000..e219814 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0172.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0173.png b/frame12/framework-plymouth-theme/framework/throbber-0173.png new file mode 100644 index 0000000..8f144f0 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0173.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0174.png b/frame12/framework-plymouth-theme/framework/throbber-0174.png new file mode 100644 index 0000000..4df8db5 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0174.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0175.png b/frame12/framework-plymouth-theme/framework/throbber-0175.png new file mode 100644 index 0000000..2d34345 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0175.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0176.png b/frame12/framework-plymouth-theme/framework/throbber-0176.png new file mode 100644 index 0000000..52b202a Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0176.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0177.png b/frame12/framework-plymouth-theme/framework/throbber-0177.png new file mode 100644 index 0000000..59af28a Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0177.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0178.png b/frame12/framework-plymouth-theme/framework/throbber-0178.png new file mode 100644 index 0000000..74990d4 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0178.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0179.png b/frame12/framework-plymouth-theme/framework/throbber-0179.png new file mode 100644 index 0000000..c20c1ae Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0179.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0180.png b/frame12/framework-plymouth-theme/framework/throbber-0180.png new file mode 100644 index 0000000..98c0832 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0180.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0181.png b/frame12/framework-plymouth-theme/framework/throbber-0181.png new file mode 100644 index 0000000..e853bfd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0181.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0182.png b/frame12/framework-plymouth-theme/framework/throbber-0182.png new file mode 100644 index 0000000..dce1c38 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0182.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0183.png b/frame12/framework-plymouth-theme/framework/throbber-0183.png new file mode 100644 index 0000000..4ce84e5 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0183.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0184.png b/frame12/framework-plymouth-theme/framework/throbber-0184.png new file mode 100644 index 0000000..706c432 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0184.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0185.png b/frame12/framework-plymouth-theme/framework/throbber-0185.png new file mode 100644 index 0000000..02046c7 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0185.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0186.png b/frame12/framework-plymouth-theme/framework/throbber-0186.png new file mode 100644 index 0000000..975eb3d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0186.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0187.png b/frame12/framework-plymouth-theme/framework/throbber-0187.png new file mode 100644 index 0000000..9543e55 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0187.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0188.png b/frame12/framework-plymouth-theme/framework/throbber-0188.png new file mode 100644 index 0000000..e263e04 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0188.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0189.png b/frame12/framework-plymouth-theme/framework/throbber-0189.png new file mode 100644 index 0000000..058cc6c Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0189.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0190.png b/frame12/framework-plymouth-theme/framework/throbber-0190.png new file mode 100644 index 0000000..e9b356d Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0190.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0191.png b/frame12/framework-plymouth-theme/framework/throbber-0191.png new file mode 100644 index 0000000..6e15b5f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0191.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0192.png b/frame12/framework-plymouth-theme/framework/throbber-0192.png new file mode 100644 index 0000000..4a96877 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0192.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0193.png b/frame12/framework-plymouth-theme/framework/throbber-0193.png new file mode 100644 index 0000000..7dd1c83 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0193.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0194.png b/frame12/framework-plymouth-theme/framework/throbber-0194.png new file mode 100644 index 0000000..e1dafb2 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0194.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0195.png b/frame12/framework-plymouth-theme/framework/throbber-0195.png new file mode 100644 index 0000000..129e19c Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0195.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0196.png b/frame12/framework-plymouth-theme/framework/throbber-0196.png new file mode 100644 index 0000000..e7026f7 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0196.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0197.png b/frame12/framework-plymouth-theme/framework/throbber-0197.png new file mode 100644 index 0000000..7ac82c5 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0197.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0198.png b/frame12/framework-plymouth-theme/framework/throbber-0198.png new file mode 100644 index 0000000..cbb3cd7 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0198.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0199.png b/frame12/framework-plymouth-theme/framework/throbber-0199.png new file mode 100644 index 0000000..c5fad2f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0199.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0200.png b/frame12/framework-plymouth-theme/framework/throbber-0200.png new file mode 100644 index 0000000..c5fad2f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0200.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0201.png b/frame12/framework-plymouth-theme/framework/throbber-0201.png new file mode 100644 index 0000000..c5fad2f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0201.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0202.png b/frame12/framework-plymouth-theme/framework/throbber-0202.png new file mode 100644 index 0000000..c5fad2f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0202.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0203.png b/frame12/framework-plymouth-theme/framework/throbber-0203.png new file mode 100644 index 0000000..c5fad2f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0203.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0204.png b/frame12/framework-plymouth-theme/framework/throbber-0204.png new file mode 100644 index 0000000..7df4fb0 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0204.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0205.png b/frame12/framework-plymouth-theme/framework/throbber-0205.png new file mode 100644 index 0000000..4c4ec27 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0205.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0206.png b/frame12/framework-plymouth-theme/framework/throbber-0206.png new file mode 100644 index 0000000..b33fdd6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0206.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0207.png b/frame12/framework-plymouth-theme/framework/throbber-0207.png new file mode 100644 index 0000000..f3b588f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0207.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0208.png b/frame12/framework-plymouth-theme/framework/throbber-0208.png new file mode 100644 index 0000000..1199c4f Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0208.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0209.png b/frame12/framework-plymouth-theme/framework/throbber-0209.png new file mode 100644 index 0000000..6d2f002 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0209.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0210.png b/frame12/framework-plymouth-theme/framework/throbber-0210.png new file mode 100644 index 0000000..904abd2 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0210.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0211.png b/frame12/framework-plymouth-theme/framework/throbber-0211.png new file mode 100644 index 0000000..db6fa20 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0211.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0212.png b/frame12/framework-plymouth-theme/framework/throbber-0212.png new file mode 100644 index 0000000..e135f1e Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0212.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0213.png b/frame12/framework-plymouth-theme/framework/throbber-0213.png new file mode 100644 index 0000000..92fc2d3 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0213.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0214.png b/frame12/framework-plymouth-theme/framework/throbber-0214.png new file mode 100644 index 0000000..c5ee371 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0214.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0215.png b/frame12/framework-plymouth-theme/framework/throbber-0215.png new file mode 100644 index 0000000..b97991c Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0215.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0216.png b/frame12/framework-plymouth-theme/framework/throbber-0216.png new file mode 100644 index 0000000..51fb035 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0216.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0217.png b/frame12/framework-plymouth-theme/framework/throbber-0217.png new file mode 100644 index 0000000..4462cb6 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0217.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0218.png b/frame12/framework-plymouth-theme/framework/throbber-0218.png new file mode 100644 index 0000000..050ce18 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0218.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0219.png b/frame12/framework-plymouth-theme/framework/throbber-0219.png new file mode 100644 index 0000000..1579755 Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0219.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0220.png b/frame12/framework-plymouth-theme/framework/throbber-0220.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0220.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0221.png b/frame12/framework-plymouth-theme/framework/throbber-0221.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0221.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0222.png b/frame12/framework-plymouth-theme/framework/throbber-0222.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0222.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0223.png b/frame12/framework-plymouth-theme/framework/throbber-0223.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0223.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0224.png b/frame12/framework-plymouth-theme/framework/throbber-0224.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0224.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0225.png b/frame12/framework-plymouth-theme/framework/throbber-0225.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0225.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0226.png b/frame12/framework-plymouth-theme/framework/throbber-0226.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0226.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0227.png b/frame12/framework-plymouth-theme/framework/throbber-0227.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0227.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0228.png b/frame12/framework-plymouth-theme/framework/throbber-0228.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0228.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0229.png b/frame12/framework-plymouth-theme/framework/throbber-0229.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0229.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0230.png b/frame12/framework-plymouth-theme/framework/throbber-0230.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0230.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0231.png b/frame12/framework-plymouth-theme/framework/throbber-0231.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0231.png differ diff --git a/frame12/framework-plymouth-theme/framework/throbber-0232.png b/frame12/framework-plymouth-theme/framework/throbber-0232.png new file mode 100644 index 0000000..588decd Binary files /dev/null and b/frame12/framework-plymouth-theme/framework/throbber-0232.png differ diff --git a/frame12/linked-dotfiles/niri/config.kdl b/frame12/linked-dotfiles/niri/config.kdl index 7ab189f..fdbd5eb 100644 --- a/frame12/linked-dotfiles/niri/config.kdl +++ b/frame12/linked-dotfiles/niri/config.kdl @@ -7,7 +7,6 @@ spawn-at-startup "waybar" spawn-at-startup "keepassxc" spawn-at-startup "flatpak" "run" "org.signal.Signal" // shell startup -spawn-at-startup "swayosd-server" // volume and brightness display spawn-sh-at-startup "kanshi" spawn-sh-at-startup "sleep 5 && nm-applet --indicator" spawn-sh-at-startup "sleep 5 && syncthingtray --wait" diff --git a/frame12/modules/colemak-ec.nix b/frame12/modules/colemak-ec.nix new file mode 100644 index 0000000..389e0d5 --- /dev/null +++ b/frame12/modules/colemak-ec.nix @@ -0,0 +1,182 @@ +# Colemak-DH EC Keyboard Remap for Framework Laptop +# +# TROUBLESHOOTING NOTES (for future agents): +# ========================================== +# This module applies keyboard remaps via the Framework EC (Embedded Controller). +# EC remaps are VOLATILE - lost after ~10 seconds unplugged (cold boot). +# +# If remap doesn't work at LUKS prompt after cold boot: +# +# 1. Check if service ran: +# journalctl -b -u colemak-ec-remap +# +# 2. Enable verbose boot for debugging: +# boot.initrd.verbose = lib.mkForce true; +# boot.kernelParams = lib.mkForce [ "boot.shell_on_fail" ]; +# +# 3. Verify EC modules loaded in initrd: +# lsinitrd /boot/initrd | grep cros_ec +# +# 4. Check service ordering - must run BEFORE cryptsetup.target +# +# 5. If systemd initrd approach fails entirely, fallback options: +# - FrameworkHacksPkg EFI driver: https://github.com/DHowett/FrameworkHacksPkg +# - This runs before OS starts, survives cold boots +# +# References: +# - https://www.howett.net/posts/2021-12-framework-ec/ +# - https://deck.sh/using-the-ec-to-change-the-keyboard-layout-on-the-framework-laptop/ +# - https://wiki.archlinux.org/title/Framework_Laptop_13 + +{ config, pkgs, lib, ... }: + +let + # All ectool remap commands + remapCommands = ectoolPath: '' + # Colemak-DH layout via EC for Framework 12 + # Matrix positions verified via FRAME12_KEY_MATRIX.md scan + + # Top row (QWERTY → Colemak-DH) + ${ectoolPath} raw 0x3E0C d1,d1,b7,b8,w2b # e(7,8) → f + ${ectoolPath} raw 0x3E0C d1,d1,b7,b9,w4d # r(7,9) → p + ${ectoolPath} raw 0x3E0C d1,d1,b2,b3,w32 # t(2,3) → b + ${ectoolPath} raw 0x3E0C d1,d1,b2,b6,w3b # y(2,6) → j + ${ectoolPath} raw 0x3E0C d1,d1,b7,b1,w4b # u(7,1) → l + ${ectoolPath} raw 0x3E0C d1,d1,b7,b2,w3c # i(7,2) → u + ${ectoolPath} raw 0x3E0C d1,d1,b7,b3,w35 # o(7,3) → y + ${ectoolPath} raw 0x3E0C d1,d1,b7,b4,w4c # p(7,4) → ; + + # Home row (QWERTY → Colemak-DH) + ${ectoolPath} raw 0x3E0C d1,d1,b3,b4,w2d # s(3,4) → r + ${ectoolPath} raw 0x3E0C d1,d1,b4,b2,w1b # d(4,2) → s + ${ectoolPath} raw 0x3E0C d1,d1,b4,b3,w2c # f(4,3) → t + ${ectoolPath} raw 0x3E0C d1,d1,b1,b6,w3a # h(1,6) → m + ${ectoolPath} raw 0x3E0C d1,d1,b4,b6,w31 # j(4,6) → n + ${ectoolPath} raw 0x3E0C d1,d1,b4,b5,w24 # k(4,5) → e + ${ectoolPath} raw 0x3E0C d1,d1,b4,b9,w43 # l(4,9) → i + ${ectoolPath} raw 0x3E0C d1,d1,b4,b8,w44 # ;(4,8) → o + + # Bottom row with angle mod (QWERTY → Colemak-DH) + ${ectoolPath} raw 0x3E0C d1,d1,b6,b1,w22 # z(6,1) → x + ${ectoolPath} raw 0x3E0C d1,d1,b5,b8,w21 # x(5,8) → c + ${ectoolPath} raw 0x3E0C d1,d1,b5,b5,w23 # c(5,5) → d + ${ectoolPath} raw 0x3E0C d1,d1,b0,b3,w1a # b(0,3) → z + ${ectoolPath} raw 0x3E0C d1,d1,b0,b5,w42 # n(0,5) → k + ${ectoolPath} raw 0x3E0C d1,d1,b5,bb,w33 # m(5,b) → h + ''; + + # Smart remap: check first, only apply if needed (for systemd service) + # Reads position (7,8) - if scancode is 0x2b (f), remap is already applied + smartRemapScript = ectoolPath: '' + # Read current scancode at e-key position (7,8) + # Response has scancode at bytes 10-11; we check byte 10 for 0x2b (f) + CURRENT=$(${ectoolPath} raw 0x3E0C d1,d0,b7,b8,w0 2>/dev/null | grep '|' | head -1 | awk '{print $11}') + if [ "$CURRENT" = "2b" ]; then + echo "Colemak-DH remap already active, skipping." + exit 0 + fi + + echo "Applying Colemak-DH EC remap..." + ${remapCommands ectoolPath} + echo "Colemak-DH remap applied." + ''; + + # Script with retry logic for initrd + initrdRemapScript = pkgs.writeShellScript "colemak-ec-initrd-remap" '' + set -e + ECTOOL="${pkgs.fw-ectool}/bin/ectool" + + # Wait for EC driver to be ready (up to 3 seconds) + echo "Waiting for EC driver..." + for i in $(seq 1 30); do + if $ECTOOL version >/dev/null 2>&1; then + echo "EC driver ready after $((i * 100))ms" + break + fi + sleep 0.1 + done + + # Verify EC communication works + if ! $ECTOOL version >/dev/null 2>&1; then + echo "ERROR: Cannot communicate with EC after 3 seconds" + exit 1 + fi + + echo "Applying Colemak-DH EC remap..." + ${remapCommands "$ECTOOL"} + echo "Colemak-DH remap applied successfully" + ''; +in +{ + options.colemakEc.enable = lib.mkEnableOption "Colemak-DH EC keyboard remap"; + + config = lib.mkIf config.colemakEc.enable { + # =========================================== + # INITRD: Apply remap BEFORE LUKS decryption + # =========================================== + + # Enable systemd in initrd (required for this approach) + boot.initrd.systemd.enable = true; + + # Add kernel modules for EC communication + boot.initrd.availableKernelModules = [ "cros_ec" "cros_ec_lpcs" ]; + + # Add fw-ectool and the remap script to initrd + boot.initrd.systemd.storePaths = [ pkgs.fw-ectool initrdRemapScript ]; + + # Systemd service that runs before cryptsetup + # Key: wantedBy sysinit.target + requiredBy on cryptsetup units ensures + # this service runs before LUKS password prompt + boot.initrd.systemd.services.colemak-ec-remap = { + description = "Apply Colemak-DH keyboard remap to EC"; + wantedBy = [ "sysinit.target" ]; + before = [ "cryptsetup.target" "systemd-ask-password-console.service" ]; + after = [ "systemd-modules-load.service" ]; + wants = [ "systemd-modules-load.service" ]; + + unitConfig = { + DefaultDependencies = false; + }; + + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = initrdRemapScript; + StandardOutput = "journal+console"; + StandardError = "journal+console"; + }; + }; + + # Make cryptsetup units wait for our remap service + # This adds After= and Wants= dependencies to each LUKS device's cryptsetup unit + boot.initrd.systemd.services."systemd-cryptsetup@" = { + after = [ "colemak-ec-remap.service" ]; + wants = [ "colemak-ec-remap.service" ]; + }; + + # =========================================== + # SYSTEMD: Apply remap after boot (backup) + # =========================================== + # This ensures the remap is applied even if the EC state was reset, + # and provides a service that can be restarted manually if needed. + + systemd.services.colemak-ec-remap = { + description = "Apply Colemak-DH remap to EC keyboard"; + after = [ "multi-user.target" ]; + wantedBy = [ "multi-user.target" ]; + + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = "${pkgs.writeShellScript "colemak-dh-remap" '' + ${smartRemapScript "${pkgs.fw-ectool}/bin/ectool"} + ''}"; + }; + }; + + # Also run after resume from suspend/hibernate + powerManagement.resumeCommands = '' + systemctl start colemak-ec-remap + ''; + }; +} diff --git a/frame12/modules/home-manager/home.nix b/frame12/modules/home-manager/home.nix index b28759a..4470f58 100644 --- a/frame12/modules/home-manager/home.nix +++ b/frame12/modules/home-manager/home.nix @@ -8,6 +8,7 @@ { imports = [ ../../../shared/modules/apps/firefox/firefox.nix + ../../../shared/modules/home-manager/git-autosync.nix ../niri/niri_home.nix ]; @@ -46,6 +47,105 @@ python313Packages.python-lsp-server ### Misc usbutils + fw-ectool # framework ectool for key remapping + + # Colemak-DH EC remap scripts + # Positions verified through testing on Framework 12 + # Format: ectool raw 0x3E0C d1,d1,bROW,bCOL,wSCANCODE + (writeShellScriptBin "colemak-dh" '' + # Apply Colemak-DH layout via EC + # Scancodes: a=1c b=32 c=21 d=23 e=24 f=2b g=34 h=33 i=43 j=3b k=42 l=4b + # m=3a n=31 o=44 p=4d q=15 r=2d s=1b t=2c u=3c v=2a w=1d x=22 + # y=35 z=1a ;=4c + # Matrix positions verified via FRAME12_KEY_MATRIX.md scan + + # Check if already remapped by reading position (7,8) - should be 0x2b (f) if remapped + CURRENT=$(sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d0,b7,b8,w0 2>/dev/null | grep '|' | head -1 | awk '{print $11}') + if [ "$CURRENT" = "2b" ]; then + echo "Colemak-DH already active, skipping." + exit 0 + fi + + echo "Applying Colemak-DH layout..." + + # Top row remaps (QWERTY → Colemak-DH) + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b8,w2b # e(7,8) → f + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b9,w4d # r(7,9) → p + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b2,b3,w32 # t(2,3) → b + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b2,b6,w3b # y(2,6) → j + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b1,w4b # u(7,1) → l + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b2,w3c # i(7,2) → u + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b3,w35 # o(7,3) → y + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b4,w4c # p(7,4) → ; + + # Home row remaps (QWERTY → Colemak-DH) + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b3,b4,w2d # s(3,4) → r + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b2,w1b # d(4,2) → s + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b3,w2c # f(4,3) → t + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b1,b6,w3a # h(1,6) → m + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b6,w31 # j(4,6) → n + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b5,w24 # k(4,5) → e + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b9,w43 # l(4,9) → i + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b8,w44 # ;(4,8) → o + + # Bottom row with angle mod (QWERTY → Colemak-DH) + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b6,b1,w22 # z(6,1) → x + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b5,b8,w21 # x(5,8) → c + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b5,b5,w23 # c(5,5) → d + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b0,b3,w1a # b(0,3) → z + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b0,b5,w42 # n(0,5) → k + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b5,bb,w33 # m(5,b) → h + + echo "Colemak-DH layout applied." + '') + + (writeShellScriptBin "qwerty" '' + # Restore QWERTY layout via EC + # Uses same positions as colemak-dh but restores original scancodes + # Scancodes: a=1c b=32 c=21 d=23 e=24 f=2b g=34 h=33 i=43 j=3b k=42 l=4b + # m=3a n=31 o=44 p=4d q=15 r=2d s=1b t=2c u=3c v=2a w=1d x=22 + # y=35 z=1a ;=4c + # Matrix positions verified via FRAME12_KEY_MATRIX.md scan + + # Check if already QWERTY by reading position (7,8) - should be 0x24 (e) if QWERTY + CURRENT=$(sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d0,b7,b8,w0 2>/dev/null | grep '|' | head -1 | awk '{print $11}') + if [ "$CURRENT" = "24" ]; then + echo "QWERTY already active, skipping." + exit 0 + fi + + echo "Restoring QWERTY layout..." + + # Top row - restore original scancodes + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b8,w24 # e(7,8) → e + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b9,w2d # r(7,9) → r + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b2,b3,w2c # t(2,3) → t + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b2,b6,w35 # y(2,6) → y + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b1,w3c # u(7,1) → u + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b2,w43 # i(7,2) → i + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b3,w44 # o(7,3) → o + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b7,b4,w4d # p(7,4) → p + + # Home row - restore original scancodes + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b3,b4,w1b # s(3,4) → s + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b2,w23 # d(4,2) → d + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b3,w2b # f(4,3) → f + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b1,b6,w33 # h(1,6) → h + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b6,w3b # j(4,6) → j + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b5,w42 # k(4,5) → k + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b9,w4b # l(4,9) → l + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b4,b8,w4c # ;(4,8) → ; + + # Bottom row - restore original scancodes + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b6,b1,w1a # z(6,1) → z + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b5,b8,w22 # x(5,8) → x + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b5,b5,w21 # c(5,5) → c + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b0,b3,w32 # b(0,3) → b + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b0,b5,w31 # n(0,5) → n + sudo ${fw-ectool}/bin/ectool raw 0x3E0C d1,d1,b5,bb,w3a # m(5,b) → m + + echo "QWERTY layout restored." + '') # # Unix tools @@ -146,6 +246,16 @@ }; }; + # Override Flatpak Steam to disable GPU acceleration (fixes black window on Niri) + xdg.desktopEntries."com.valvesoftware.Steam" = { + name = "Steam"; + exec = "flatpak run com.valvesoftware.Steam -cef-disable-gpu %U"; + icon = "steam"; + terminal = false; + categories = [ "Game" ]; + mimeType = [ "x-scheme-handler/steam" "x-scheme-handler/steamlink" ]; + }; + home.sessionVariables = { BAT_THEME="Catppuccin Macchiato"; EDITOR = "hx"; @@ -195,6 +305,12 @@ theme = "half-life"; }; initContent = '' + # History + HISTSIZE=10000 + SAVEHIST=10000 + setopt SHARE_HISTORY + setopt APPEND_HISTORY + # integrate ssh-agent from gnome keyring export SSH_AUTH_SOCK=/run/user/$UID/gcr/ssh @@ -217,6 +333,9 @@ profileExtra = '' export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share ''; + syntaxHighlighting = { + enable = true; + }; }; qt = { @@ -266,4 +385,14 @@ enable = true; topMargin = 0.9; }; + + # Git autosync for star-command + services.git-autosync = { + enable = true; + repos.star-command = { + path = "/home/${userName}/source/star-command"; + gitName = fullName; + gitEmail = email; + }; + }; } diff --git a/shared/modules/home-manager/git-autosync.nix b/shared/modules/home-manager/git-autosync.nix new file mode 100644 index 0000000..1e8152f --- /dev/null +++ b/shared/modules/home-manager/git-autosync.nix @@ -0,0 +1,198 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.git-autosync; + + git-autosync-script = pkgs.writeShellScript "git-autosync" '' + set -euo pipefail + + REPO_DIR="$1" + DEBOUNCE_SECONDS="''${2:-5}" + PULL_INTERVAL_SECONDS="''${3:-120}" + BRANCH="''${4:-main}" + + cd "$REPO_DIR" + + # Ensure we're in a git repo + if ! ${pkgs.git}/bin/git rev-parse --is-inside-work-tree &>/dev/null; then + echo "ERROR: $REPO_DIR is not a git repository" + exit 1 + fi + + commit_and_push() { + cd "$REPO_DIR" + ${pkgs.git}/bin/git add -A + if ! ${pkgs.git}/bin/git diff --cached --quiet; then + ${pkgs.git}/bin/git commit -m "autosync: $(date -Iseconds) on $(hostname)" + echo "Committed changes" + fi + + if ${pkgs.git}/bin/git remote get-url origin &>/dev/null; then + ${pkgs.git}/bin/git push origin "$BRANCH" 2>/dev/null && echo "Pushed" || echo "Push failed (offline?)" + fi + } + + pull_remote() { + cd "$REPO_DIR" + if ${pkgs.git}/bin/git remote get-url origin &>/dev/null; then + ${pkgs.git}/bin/git fetch origin "$BRANCH" 2>/dev/null || { echo "Fetch failed (offline?)"; return; } + + LOCAL=$(${pkgs.git}/bin/git rev-parse HEAD) + REMOTE=$(${pkgs.git}/bin/git rev-parse "origin/$BRANCH" 2>/dev/null || echo "") + + if [ -n "$REMOTE" ] && [ "$LOCAL" != "$REMOTE" ]; then + # Stash any uncommitted changes, rebase, then pop + STASHED=false + if ! ${pkgs.git}/bin/git diff --quiet || ! ${pkgs.git}/bin/git diff --cached --quiet; then + ${pkgs.git}/bin/git stash push -m "autosync-temp" + STASHED=true + fi + + ${pkgs.git}/bin/git rebase "origin/$BRANCH" || { + echo "Rebase conflict — aborting rebase, committing local state" + ${pkgs.git}/bin/git rebase --abort + } + + if [ "$STASHED" = true ]; then + ${pkgs.git}/bin/git stash pop || { + echo "Stash pop conflict — keeping stash, check manually" + } + fi + echo "Pulled remote changes" + fi + fi + } + + # Initial pull on start + pull_remote + + LAST_PULL=$(date +%s) + + echo "Watching $REPO_DIR for changes (debounce: ''${DEBOUNCE_SECONDS}s, pull interval: ''${PULL_INTERVAL_SECONDS}s)" + + # Watch for file changes, debounce, then sync + ${pkgs.inotify-tools}/bin/inotifywait \ + -m -r \ + -e modify,create,delete,move \ + --exclude '/\.git/' \ + --format '%w%f' \ + "$REPO_DIR" | + while read -t "$PULL_INTERVAL_SECONDS" CHANGED_FILE || true; do + NOW=$(date +%s) + + if [ -n "''${CHANGED_FILE:-}" ]; then + # File changed — debounce by consuming events for DEBOUNCE_SECONDS + echo "Change detected: $CHANGED_FILE" + while read -t "$DEBOUNCE_SECONDS" EXTRA_FILE; do + echo " also changed: $EXTRA_FILE" + done + commit_and_push + LAST_PULL=$NOW + fi + + # Periodic pull if enough time has passed + ELAPSED=$((NOW - LAST_PULL)) + if [ "$ELAPSED" -ge "$PULL_INTERVAL_SECONDS" ]; then + pull_remote + LAST_PULL=$(date +%s) + fi + done + ''; + + repoOpts = { name, ... }: { + options = { + path = lib.mkOption { + type = lib.types.str; + description = "Absolute path to the git repository."; + example = "/home/user/notes"; + }; + + branch = lib.mkOption { + type = lib.types.str; + default = "main"; + description = "Git branch to sync."; + }; + + debounceSeconds = lib.mkOption { + type = lib.types.int; + default = 5; + description = "Seconds to wait after last file change before committing."; + }; + + pullIntervalSeconds = lib.mkOption { + type = lib.types.int; + default = 120; + description = "Seconds between periodic pulls from remote."; + }; + + sshKey = lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + description = "Path to SSH private key for git push/pull. If null, uses the user's default SSH config."; + example = "/home/alice/.ssh/id_ed25519"; + }; + + gitName = lib.mkOption { + type = lib.types.str; + default = "autosync"; + description = "Git author name for auto-commits."; + }; + + gitEmail = lib.mkOption { + type = lib.types.str; + default = "autosync@localhost"; + description = "Git author email for auto-commits."; + }; + }; + }; + +in { + options.services.git-autosync = { + enable = lib.mkEnableOption "git-autosync file watcher and sync service"; + + repos = lib.mkOption { + type = lib.types.attrsOf (lib.types.submodule repoOpts); + default = {}; + description = "Set of git repositories to auto-sync."; + example = { + notes = { + path = "/home/alice/notes"; + branch = "main"; + }; + }; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.user.services = lib.mapAttrs' (name: repo: + lib.nameValuePair "git-autosync-${name}" { + Unit = { + Description = "Git auto-sync for ${repo.path}"; + After = [ "network-online.target" ]; + Wants = [ "network-online.target" ]; + }; + + Service = { + Type = "simple"; + Restart = "on-failure"; + RestartSec = 10; + + ExecStart = "${git-autosync-script} ${repo.path} ${toString repo.debounceSeconds} ${toString repo.pullIntervalSeconds} ${repo.branch}"; + + Environment = [ + "GIT_AUTHOR_NAME=${repo.gitName}" + "GIT_COMMITTER_NAME=${repo.gitName}" + "GIT_AUTHOR_EMAIL=${repo.gitEmail}" + "GIT_COMMITTER_EMAIL=${repo.gitEmail}" + ] ++ lib.optionals (repo.sshKey != null) [ + "GIT_SSH_COMMAND=ssh -i ${repo.sshKey} -o StrictHostKeyChecking=accept-new" + ]; + }; + + Install = { + WantedBy = [ "default.target" ]; + }; + } + ) cfg.repos; + }; +}