Commit fdebf44611c9
Changed files (152)
systems
hardware
hosts
modules
desktop
editors
hardware
profiles
programs
services
shell
virtualisation
users
houbeb
modules
root
vincent
core
desktop
dev
redhat
systems/hardware/dell-latitude-e6540.nix
@@ -1,30 +0,0 @@
-{ pkgs, ... }:
-
-{
- boot = {
- loader.efi.canTouchEfiVariables = true;
- kernelParams = [
- # Kernel GPU Savings Options (NOTE i915 chipset only)
- "i915.enable_rc6=0"
- "i915.enable_fbc=1"
- "i915.lvds_use_ssc=0"
- "drm.debug=0"
- "drm.vblankoffdelay=1"
- ];
- blacklistedKernelModules = [
- # Kernel GPU Savings Options (NOTE i915 chipset only)
- "sierra_net"
- "cdc_mbim"
- "cdc_ncm"
- ];
- };
- hardware = {
- opengl = {
- enable = true;
- extraPackages = [ pkgs.vaapiIntel ];
- driSupport32Bit = true;
- };
- };
- nix.maxJobs = 8;
- services.acpid.enable = true;
-}
systems/hardware/gigabyte-brix.nix
@@ -1,24 +0,0 @@
-_:
-
-{
- boot = {
- initrd.availableKernelModules = [
- "xhci_pci"
- "ahci"
- "nvme"
- "usb_storage"
- "usbhid"
- "sd_mod"
- ];
- kernelModules = [ "kvm-intel" ];
- extraModulePackages = [ ];
- kernelParams = [
- "kvm_intel.nested=1"
- "intel_iommu=on"
- ];
- loader.efi.canTouchEfiVariables = true;
- };
- hardware = {
- cpu.intel.updateMicrocode = true;
- };
-}
systems/hardware/lenovo-p1.nix
@@ -1,57 +0,0 @@
-{ lib, ... }:
-#let
-# sources = import ../../nix/sources.nix;
-#in
-{
- imports = [
- # (sources.nixos-hardware + "/common/pc/ssd")
- # (sources.nixos-hardware + "/lenovo/thinkpad/p1/3th-gen")
- ./thinkpad.nix
- ];
- boot = {
- initrd.availableKernelModules = [
- "nvme"
- "rtsx_pci_sdmmc"
- "thunderbolt"
- "dm-mod"
- ];
- };
- hardware = {
- enableAllFirmware = true;
- bluetooth = {
- enable = true;
- powerOnBoot = true;
- };
- };
- nix.maxJobs = 12;
- services.throttled.enable = lib.mkDefault true;
- services = {
- tlp = {
- settings = {
- # CPU optimizations
- "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
- "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
- "CPU_MIN_PERF_ON_AC" = 0;
- "CPU_MAX_PERF_ON_AC" = 100;
- "CPU_MIN_PERF_ON_BAT" = 0;
- "CPU_MAX_PERF_ON_BAT" = 50;
- # DEVICES (wifi, ..)
- "DEVICES_TO_DISABLE_ON_STARTUP" = "";
- "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
- "DEVICES_TO_DISABLE_ON_BAT" = "";
- # Network management
- "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
- "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
- # Docking
- "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
- "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
- # Make sure it uses the right hard drive
- "DISK_DEVICES" = "nvme0n1p2";
- };
- };
- };
-}
systems/hardware/lenovo-p50.nix
@@ -1,65 +0,0 @@
-{ pkgs, lib, ... }:
-#let
-# sources = import ../../nix/sources.nix;
-#in
-{
- imports = [
- # (sources.nixos-hardware + "/common/pc/ssd")
- ./thinkpad.nix
- ];
- boot = {
- initrd.availableKernelModules = [
- "nvme"
- "rtsx_pci_sdmmc"
- ];
- };
- hardware = {
-
- enableAllFirmware = true;
- bluetooth = {
- enable = true;
- powerOnBoot = true;
- };
- nvidia.prime = {
- sync.enable = true;
- nvidiaBusId = "PCI:1:0:0";
- intelBusId = "PCI:0:2:0";
- };
- };
- nix.maxJobs = 12;
- services.throttled.enable = lib.mkDefault true;
- services = {
- tlp = {
- settings = {
- # CPU optimizations
- "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
- "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
- "CPU_MIN_PERF_ON_AC" = 0;
- "CPU_MAX_PERF_ON_AC" = 100;
- "CPU_MIN_PERF_ON_BAT" = 0;
- "CPU_MAX_PERF_ON_BAT" = 50;
- # DEVICES (wifi, ..)
- "DEVICES_TO_DISABLE_ON_STARTUP" = "";
- "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
- "DEVICES_TO_DISABLE_ON_BAT" = "";
- # Network management
- "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
- "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
- # Docking
- "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
- "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
- # Make sure it uses the right hard drive
- "DISK_DEVICES" = "nvme0n1p2";
- };
- };
- udev.extraRules = ''
- # Rules for Lenovo Thinkpad WS Dock
- SUBSYSTEM=="usb", ACTION=="add|remove", ENV{ID_VENDOR}=="17ef", ENV{ID_MODEL}=="305a", RUN+="${pkgs.vde-thinkpad}/bin/dock"
- ACTION=="add", SUBSYSTEM=="thunderbolt", ATTR{authorized}=="0", ATTR{authorized}="1"
- '';
- };
-}
systems/hardware/thinkpad-t460s.nix
@@ -1,44 +0,0 @@
-{ ... }:
-#let
-# sources = import ../../nix/sources.nix;
-#in
-{
- imports = [
- # (sources.nixos-hardware + "/lenovo/thinkpad/t460s")
- # (sources.nixos-hardware + "/common/pc/ssd")
- ./thinkpad.nix
- ];
- nix.maxJobs = 12;
- services = {
- tlp = {
- settings = {
- # CPU optimizations
- "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
- "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
- "CPU_MIN_PERF_ON_AC" = 0;
- "CPU_MAX_PERF_ON_AC" = 100;
- "CPU_MIN_PERF_ON_BAT" = 0;
- "CPU_MAX_PERF_ON_BAT" = 50;
- # DEVICES (wifi, ..)
- "DEVICES_TO_DISABLE_ON_STARTUP" = "";
- "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
- "DEVICES_TO_DISABLE_ON_BAT" = "";
- # Network management
- "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
- "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
- # Docking
- "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
- "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
- # Make sure it uses the right hard drive
- "DISK_DEVICES" = "nvme0n1p3";
- };
- };
- xserver = {
- dpi = 128;
- };
- };
-}
systems/hardware/thinkpad-t480s.nix
@@ -1,67 +0,0 @@
-{ pkgs, ... }:
-#let
-# sources = import ../../nix/sources.nix;
-#in
-{
- imports = [
- #(sources.nixos-hardware + "/lenovo/thinkpad/t480s")
- #(sources.nixos-hardware + "/common/pc/ssd")
- ./thinkpad.nix
- ];
- boot = {
- initrd.availableKernelModules = [
- "nvme"
- "rtsx_pci_sdmmc"
- "thunderbolt"
- ];
- kernelParams = [ "intel_idle.max_cstate=4" ];
- };
- hardware = {
- enableAllFirmware = true;
- bluetooth = {
- enable = true;
- powerOnBoot = true;
- };
- };
- nix.maxJobs = 12;
- programs.light.enable = true;
- services = {
- throttled.enable = true;
- tlp = {
- settings = {
- # CPU optimizations
- "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
- "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
- "CPU_MIN_PERF_ON_AC" = 0;
- "CPU_MAX_PERF_ON_AC" = 100;
- "CPU_MIN_PERF_ON_BAT" = 0;
- "CPU_MAX_PERF_ON_BAT" = 50;
- # DEVICES (wifi, ..)
- "DEVICES_TO_DISABLE_ON_STARTUP" = "";
- "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
- "DEVICES_TO_DISABLE_ON_BAT" = "";
- # Network management
- "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
- "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
- # Docking
- "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
- "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
- # Make sure it uses the right hard drive
- "DISK_DEVICES" = "nvme0n1p3";
- };
- };
- udev.extraRules = ''
- # Rules for Lenovo Thinkpad WS Dock
- # SUBSYSTEM=="usb", ACTION=="add|remove", ENV{ID_VENDOR}=="17ef", ENV{ID_MODEL}=="305a", RUN+="${pkgs.vde-thinkpad}/bin/dock"
- ACTION=="add", SUBSYSTEM=="thunderbolt", ATTR{authorized}=="0", ATTR{authorized}="1"
- '';
- xserver = {
- # dpi = 128;
- dpi = 96;
- };
- };
-}
systems/hardware/thinkpad-x1g9.nix
@@ -1,88 +0,0 @@
-{ pkgs, ... }:
-{
- # NixOS options
- boot = {
- blacklistedKernelModules = [
- "sierra_net" # sierra wireless modules
- "cdc_mbim" # modem mobile broadband modules
- "cdc_ncm" # similar
- ];
- extraModprobeConfig = ''
- options snd_hda_intel power_save=1
- '';
- initrd = {
- availableKernelModules = [
- "nvme" # required for nvme disks
- "thunderbolt" # required for thunderbolt (dock, ...)
- "dm-mod"
- "cryptd" # required for encryption
- "ahci" # sata controller, might not be needed
- "xhci_pci" # usb controller related
- "usb_storage" # usb storage related
- "sd_mod" # block device related
- "sdhci_pci" # block device related as well
- "aesni-intel" # advanced encryption for intel
- ];
- };
- loader.efi.canTouchEfiVariables = true;
- };
- hardware = {
- enableAllFirmware = true;
- trackpoint.enable = false;
- cpu.intel.updateMicrocode = true;
- opengl.extraPackages = with pkgs; [
- vaapiIntel
- libvdpau-va-gl
- vaapiVdpau
- intel-ocl
- intel-media-driver
- ];
- };
- services = {
- hardware.bolt.enable = true;
- # throttled.enable = true; # might not be needed
- tlp = {
- # FIXME: to disable
- enable = false;
- settings = {
- # Charge threshold
- # If the battery is used somewhat frequently,
- # set the start threshold at around 85% and stop at 90%. This
- # will still give a good lifespan benefit over keeping the
- # battery charged to 100%.
- START_CHARGE_THRESH_BAT0 = 75;
- STOP_CHARGE_THRESH_BAT0 = 80;
- # CPU optimizations
- "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
- "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
- "PLATFORM_PROFILE_ON_AC" = "balanced"; # or performance ?
- "PLATFORM_PROFILE_ON_BAT" = "low-power";
- "CPU_MIN_PERF_ON_AC" = 0;
- "CPU_MAX_PERF_ON_AC" = 100;
- "CPU_MIN_PERF_ON_BAT" = 0;
- "CPU_MAX_PERF_ON_BAT" = 75;
- # DEVICES (wifi, ..)
- "DEVICES_TO_DISABLE_ON_STARTUP" = "";
- "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
- "DEVICES_TO_DISABLE_ON_BAT" = "";
- # Network management
- "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "wifi";
- "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
- "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "wifi";
- "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
- # Docking
- "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
- "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
- # Make sure it uses the right hard drive
- "DISK_DEVICES" = "nvme0n1p1";
- };
- };
- udev.extraRules = ''
- # Rules for Lenovo Thinkpad WS Dock
- ACTION=="add", SUBSYSTEM=="thunderbolt", ATTR{authorized}=="0", ATTR{authorized}="1"
- ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness"
- '';
- };
-}
systems/hardware/thinkpad-x220.nix
@@ -1,64 +0,0 @@
-{ ... }:
-#let
-# sources = import ../../nix/sources.nix;
-#in
-{
- imports = [
- ./thinkpad.nix
- #(sources.nixos-hardware + "/lenovo/thinkpad/tp-smapi.nix")
- #(sources.nixos-hardware + "/common/cpu/intel")
- #(sources.nixos-hardware + "/common/pc/ssd")
- ];
- boot = {
- kernelParams = [ "i915.enable_psr=1" ];
- extraModprobeConfig = ''
- options iwlwifi 11n_disable=1
- '';
- };
- nix.maxJobs = 8;
- security = {
- pam.services = {
- slimlock.fprintAuth = false;
- slim.fprintAuth = false;
- login.fprintAuth = false;
- xscreensaver.fprintAuth = false;
- };
- };
- services = {
- fprintd.enable = true;
- tlp = {
- settings = {
- # CPU optimizations
- "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
- "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
- "CPU_MIN_PERF_ON_AC" = 0;
- "CPU_MAX_PERF_ON_AC" = 100;
- "CPU_MIN_PERF_ON_BAT" = 0;
- "CPU_MAX_PERF_ON_BAT" = 50;
- "CPU_BOOST_ON_AC" = 1;
- "CPU_BOOST_ON_BAT" = 0;
- # DEVICES (wifi, ..)
- "DEVICES_TO_DISABLE_ON_STARTUP" = "bluetooth";
- "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
- "DEVICES_TO_DISABLE_ON_BAT" = "bluetooth";
- # Network management
- "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
- "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
- "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
- "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
- # Misc
- "DISK_IDLE_SECS_ON_AC" = 0;
- "DISK_IDLE_SECS_ON_BAT" = 2;
- "MAX_LOST_WORK_SECS_ON_AC" = 15;
- "MAX_LOST_WORK_SECS_ON_BAT" = 60;
- "DISK_DEVICES" = "ata-Corsair_Force_LX_SSD_15256501000102160059";
- "SOUND_POWER_SAVE_ON_AC" = 0;
- "SOUND_POWER_SAVE_ON_BAT" = 1;
- "USB_AUTOSUSPEND" = 1;
- "USB_BLACKLIST_BTUSB" = 1;
- };
- };
- };
-}
systems/hardware/thinkpad.nix
@@ -1,75 +0,0 @@
-{ config, pkgs, ... }:
-{
- boot = {
- blacklistedKernelModules = [
- # Kernel GPU Savings Options (NOTE i915 chipset only)
- "sierra_net"
- "cdc_mbim"
- "cdc_ncm"
- ];
- extraModprobeConfig = ''
- options snd_hda_intel power_save=1
- '';
- initrd = {
- availableKernelModules = [
- "ehci_pci"
- "ahci"
- "xhci_pci"
- "usb_storage"
- "sd_mod"
- "sdhci_pci"
- "aesni-intel"
- "cryptd"
- ];
- };
- kernelModules = [ "kvm_intel" ];
- kernelParams = [
- # Kernel GPU Savings Options (NOTE i915 chipset only)
- "i915.enable_rc6=1"
- "i915.enable_fbc=1"
- "i915.lvds_use_ssc=0"
- "drm.debug=0"
- "drm.vblankoffdelay=1"
- "kvm_intel.nested=1"
- "intel_iommu=on"
- ];
- loader.efi.canTouchEfiVariables = true;
- };
- hardware = {
- trackpoint.enable = false;
- cpu.intel.updateMicrocode = true;
- opengl.extraPackages = with pkgs; [
- vaapiIntel
- libvdpau-va-gl
- vaapiVdpau
- intel-ocl
- intel-media-driver
- ];
- };
- services = {
- acpid = {
- enable = true;
- };
- xserver = {
- synaptics.enable = false;
- config = ''
- Section "InputClass"
- Identifier "Enable libinput for TrackPoint"
- MatchIsPointer "on"
- Driver "libinput"
- Option "ScrollMethod" "button"
- Option "ScrollButton" "8"
- EndSection
- '';
- inputClassSections = [
- ''
- Identifier "evdev touchpad off"
- MatchIsTouchpad "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
- Option "Ignore" "true"
- ''
- ];
- };
- };
-}
systems/hosts/sakhalin.nix
@@ -1,280 +0,0 @@
-{ pkgs, lib, ... }:
-
-with lib;
-let
- hostname = "sakhalin";
- secretPath = ../../secrets/machines.nix;
- secretCondition = builtins.pathExists secretPath;
-
- ip = strings.optionalString secretCondition (import secretPath).wireguard.ips."${hostname}";
- ips = lists.optionals secretCondition [ "${ip}/24" ];
- endpointIP = strings.optionalString secretCondition (import secretPath).wg.endpointIP;
- endpointPort = if secretCondition then (import secretPath).wg.listenPort else 0;
- endpointPublicKey = strings.optionalString secretCondition (import secretPath)
- .wireguard.kerkouane.publicKey;
-
- metadata = importTOML ../../ops/hosts.toml;
-in
-{
- imports = [
- ../hardware/gigabyte-brix.nix
- # (import ../../nix).home-manager-stable
- # ../modules/default.stable.nix
- (import ../../users/vincent)
- (import ../../users/root)
- ];
-
- fileSystems."/" = {
- device = "/dev/disk/by-uuid/92ce650d-873e-41c1-a44e-71c2b9191b9d";
- fsType = "ext4";
- options = [
- "noatime"
- "discard"
- ];
- };
- fileSystems."/boot" = {
- device = "/dev/disk/by-uuid/B226-075A";
- fsType = "vfat";
- };
- fileSystems."/home" = {
- device = "/dev/disk/by-uuid/4f614c00-d94d-42f9-8386-3ecd396aa246";
- fsType = "ext4";
- options = [
- "noatime"
- "discard"
- ];
- };
- fileSystems."/mnt/gaia" = {
- device = "/dev/disk/by-uuid/88d3d686-d451-4ba9-bd6e-373601ed2683";
- fsType = "ext4";
- options = [ "noatime" ];
- };
- fileSystems."/mnt/toshito" = {
- device = "/dev/disk/by-uuid/3c7cf84e-2486-417d-9de8-4b7757d483e4";
- fsType = "ext4";
- options = [ "noatime" ];
- };
- swapDevices = [ { device = "/dev/disk/by-uuid/9eb067d1-b329-4fbb-ae27-38abfbe7c108"; } ];
-
- networking = {
- hostName = hostname;
- firewall.enable = false; # we are in safe territory :D
- bridges.br1.interfaces = [ "enp0s31f6" ];
- useDHCP = false;
- interfaces.br1 = {
- useDHCP = true;
- };
- };
-
- modules = {
- profiles.home = true;
- services = {
- syncthing = {
- enable = true;
- guiAddress = "${metadata.hosts.sakhalin.wireguard.addrs.v4}:8384";
- };
- avahi.enable = true;
- ssh.enable = true;
- };
- virtualisation.libvirt = {
- enable = true;
- nested = true;
- listenTCP = true;
- };
- };
-
- fileSystems."/export/gaia" = {
- device = "/mnt/gaia";
- options = [ "bind" ];
- };
- fileSystems."/export/toshito" = {
- device = "/mnt/toshito";
- options = [ "bind" ];
- };
-
- services = {
- atuin = {
- enable = true;
- host = "0.0.0.0";
- openRegistration = false;
- };
-
- # services.postgresql.enable = true;
- # services.postgresql.package = pkgs.postgresql_15;
- # services.postgresql.dataDir = "/var/lib/postgresql/15";
- # services.postgresqlBackup.databases = [ "atuin" "homepage_production" "nextcloud" ];
- # services.postgresqlBackup.enable = true;
- # services.postgresqlBackup.location = "/var/backup/postgresql";
- # services.postgresqlBackup.startAt = "*-*-* 02:15:00";
-
- grafana = {
- enable = true;
- settings = {
- server = {
- http_addr = "0.0.0.0";
- http_port = 3000;
- domain = "graphana.sbr.pm";
- };
- };
- };
- prometheus = {
- enable = true;
- port = 9001;
- scrapeConfigs = [
- {
- job_name = "node";
- static_configs = [
- {
- # TODO: make this dynamic
- targets = [
- "aion.sbr.pm:9100"
- "aix.sbr.pm:9000"
- "aomi.sbr.pm:9000"
- "athena.sbr.pm:9000"
- "demeter.sbr.pm:9000"
- "kerkouane.sbr.pm:9000"
- "sakhalin.sbr.pm:9000"
- "shikoku.sbr.pm:9000"
- ];
- }
- ];
- }
- {
- job_name = "bind";
- static_configs = [
- {
- targets = [
- "demeter.sbr.pm:9009"
- "athena.sbr.pm:9009"
- ];
- }
- ];
- }
- {
- job_name = "nginx";
- static_configs = [
- {
- targets = [ "kerkouane.sbr.pm:9001" ];
- }
- ];
- }
- ];
- exporters.node = {
- enable = true;
- port = 9000;
- enabledCollectors = [
- "systemd"
- "processes"
- ];
- extraFlags = [
- "--collector.ethtool"
- "--collector.softirqs"
- "--collector.tcpstat"
- ];
- };
- };
- tarsnap = {
- enable = true;
- archives = {
- documents = {
- directories = [ "/home/vincent/desktop/documents" ];
- period = "daily";
- keyfile = "/etc/nixos/assets/tarsnap.documents.key";
- };
- org = {
- directories = [ "/home/vincent/desktop/org" ];
- period = "daily";
- keyfile = "/etc/nixos/assets/tarsnap.org.key";
- };
- };
- };
- nfs.server = {
- enable = true;
- exports = ''
- /export 192.168.1.0/24(rw,fsid=0,no_subtree_check) 10.100.0.0/24(rw,fsid=0,no_subtree_check)
- /export/gaia 192.168.1.0/24(rw,fsid=1,no_subtree_check) 10.100.0.0/24(rw,fsid=1,no_subtree_check)
- /export/toshito 192.168.1.0/24(rw,fsid=2,no_subtree_check) 10.100.0.0/24(rw,fsid=2,no_subtree_check)
- '';
- };
- # nix-binary-cache = {
- # enable = true;
- # domain = "nix.cache.home";
- # aliases = [ "cache.sakhalin.home" ];
- # };
- dockerRegistry = {
- enable = true;
- listenAddress = "0.0.0.0";
- enableGarbageCollect = true;
- };
- wireguard = {
- enable = true;
- inherit ips;
- endpoint = endpointIP;
- inherit endpointPort;
- inherit endpointPublicKey;
- };
- };
- security.apparmor.enable = true;
- security.pam.enableSSHAgentAuth = true;
- environment.systemPackages = with pkgs; [ yt-dlp ];
- # -----------------------------------
- environment.etc."vrsync".text = ''
- /home/vincent/desktop/pictures/screenshots/ vincent@synodine.home:/volumeUSB2/usbshare/pictures/screenshots/
- /home/vincent/desktop/pictures/wallpapers/ vincent@synodine.home:/volumeUSB2/usbshare/pictures/wallpapers/
- /home/vincent/desktop/documents/ vincent@synodine.home:/volume1/documents/
- /mnt/gaia/photos/ vincent@synodine.home:/volumeUSB2/usbshare/pictures/photos/
- /mnt/gaia/music/ vincent@synodine.home:/volumeUSB2/usbshare/music/
- '';
- systemd.services.vrsync = {
- description = "vrsync - sync folders to NAS";
- requires = [ "network-online.target" ];
- after = [ "network-online.target" ];
-
- unitConfig.X-StopOnRemoval = false;
- restartIfChanged = false;
-
- path = with pkgs; [
- rsync
- coreutils
- bash
- openssh
- ];
- script = ''
- ${pkgs.vrsync}/bin/vrsync
- '';
-
- startAt = "hourly";
- serviceConfig = {
- Type = "oneshot";
- OnFailure = "status-email-root@%n.service";
- };
- };
- # mr -i u daily
- systemd.services.mr = {
- description = "Update configs daily";
- requires = [ "network-online.target" ];
- after = [ "network-online.target" ];
-
- restartIfChanged = false;
- unitConfig.X-StopOnRemoval = false;
-
- serviceConfig = {
- Type = "oneshot";
- User = "vincent";
- OnFailure = "status-email-root@%n.service";
- };
-
- path = with pkgs; [
- git
- mr
- ];
- script = ''
- set -e
- cd /mnt/gaia/src/configs/
- mr -t run git reset --hard
- mr -t u
- '';
-
- startAt = "daily";
- };
-}
systems/hosts/shikoku.nix
@@ -1,275 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- hostname = "shikoku";
- secretPath = ../../secrets/machines.nix;
- secretCondition = builtins.pathExists secretPath;
-
- ip = strings.optionalString secretCondition (import secretPath).wireguard.ips."${hostname}";
- ips = lists.optionals secretCondition [ "${ip}/24" ];
- endpointIP = strings.optionalString secretCondition (import secretPath).wg.endpointIP;
- endpointPort = if secretCondition then (import secretPath).wg.listenPort else 0;
- endpointPublicKey = strings.optionalString secretCondition (import secretPath)
- .wireguard.kerkouane.publicKey;
-
- metadata = importTOML ../../ops/hosts.toml;
-
- gpuIDs = [
- "10de:1b80" # Graphics
- "10de:10f0" # Audio
- ];
-in
-{
- imports = [
- # (import ../../nix).home-manager-stable
- #../modules/default.stable.nix
- (import ../../users/vincent)
- (import ../../users/root)
- ];
-
- boot.supportedFilesystems = [ "zfs" ];
- networking = {
- hostId = builtins.substring 0 8 (builtins.hashString "md5" config.networking.hostName);
- hostName = hostname;
- bridges.br1.interfaces = [ "enp0s31f6" ];
- firewall.enable = false; # we are in safe territory :D
- useDHCP = false;
- interfaces.br1 = {
- useDHCP = true;
- };
- };
-
- # TODO: check if it's done elsewhere
- boot.initrd.availableKernelModules = [
- "xhci_pci"
- "ahci"
- "nvme"
- "usb_storage"
- "usbhid"
- "sd_mod"
- "sr_mod"
- ];
- boot.initrd.kernelModules = [
- "vfio_pci"
- "vfio"
- "vfio_iommu_type1"
-
- "nvidia"
- "nvidia_modeset"
- "nvidia_uvm"
- "nvidia_drm"
- ];
- boot.kernelModules = [ "kvm-intel" ];
- boot.extraModulePackages = [
- config.boot.kernelPackages.nvidiaPackages.stable
- ];
- boot.kernelParams = [
- "intel_iommu=on"
- "kvm_intel.nested=1"
- ("vfio-pci.ids=" + lib.concatStringsSep "," gpuIDs)
- ];
-
- hardware.opengl.enable = true;
- virtualisation.spiceUSBRedirection.enable = true;
- # TODO: check if it's done elsewhere
- hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
-
- fileSystems."/" = {
- device = "/dev/disk/by-uuid/73fd8864-f6af-4fdd-b826-0dfdeacd3c19";
- fsType = "ext4";
- options = [
- "noatime"
- "discard"
- ];
- };
-
- fileSystems."/boot" = {
- device = "/dev/disk/by-uuid/829D-BFD1";
- fsType = "vfat";
- };
-
- # Extra data
- # HDD: b58e59a4-92e7-4278-97ba-6fe361913f50
- fileSystems."/data" = {
- device = "/dev/disk/by-uuid/b58e59a4-92e7-4278-97ba-6fe361913f50";
- fsType = "ext4";
- options = [ "noatime" ];
- };
- # ZFS Pool
- # SSD1: 469077df-049f-4f5d-a34f-1f5449d782ec
- # SSD2: e11a3b63-791c-418b-9f4b-5ae0199f1f97
- # NVME2: 3d2dff80-f2b1-4c48-8e76-12b01fdf4137
- # boot.zfs.extraPools = [ "tank" ];
- # networking.hostId = "03129692bea040488878aa0133e54914";
- # networking.hostId = "03129692";
- # fileSystems."/tank/data" =
- # {
- # device = "tank/data";
- # fsType = "zfs";
- # options = [ "zfsutil" ];
- # };
- #
- # fileSystems."/tank/virt" =
- # {
- # device = "tank/virt";
- # fsType = "zfs";
- # options = [ "zfsutil" ];
- # };
-
- swapDevices = [
- {
- device = "/dev/disk/by-uuid/a9ec44e6-0c1d-4f60-9f5c-81a7eaa8e8fd";
- }
- ];
-
- modules = {
- core.binfmt.enable = true;
- dev = {
- enable = false;
- containers = {
- docker = {
- enable = true;
- package = pkgs.docker_27;
- };
- podman.enable = true;
- buildkit = {
- enable = true;
- grpcAddress = [
- "unix:///run/buildkit/buildkitd.sock"
- "tcp://aomi.home:1234"
- "tcp://${metadata.hosts.shikoku.addrs.v4}:1234"
- "tcp://${metadata.hosts.shikoku.wireguard.addrs.v4}:1234"
- ];
- };
- };
- };
- services = {
- syncthing = {
- enable = true;
- guiAddress = "${metadata.hosts.shikoku.wireguard.addrs.v4}:8384";
- };
- avahi.enable = true;
- ssh.enable = true;
- };
- virtualisation.libvirt = {
- enable = true;
- nested = true;
- listenTCP = true;
- };
- profiles.home = true;
- };
-
- # environment.systemPackages = [ pkgs.python310Packages.aria2p ];
-
- programs.ssh.setXAuthLocation = true;
-
- age.secrets."aria2RPCSecret" = {
- file = ../../secrets/shikoku/aria2rpcsecret.age;
- mode = "444";
- owner = "aria2";
- group = "aria2";
- };
- nixpkgs.config.permittedInsecurePackages = [
- "dotnet-sdk-6.0.428"
- "aspnetcore-runtime-6.0.36"
- ];
- services = {
- ollama = {
- enable = true;
- acceleration = "cuda";
- };
- prometheus.exporters.node = {
- enable = true;
- port = 9000;
- enabledCollectors = [
- "systemd"
- "processes"
- ];
- extraFlags = [
- "--collector.ethtool"
- "--collector.softirqs"
- "--collector.tcpstat"
- ];
- };
- aria2 = {
- enable = true;
- openPorts = true;
- # extraArguments = "--max-concurrent-downloads=20";
- settings = {
- max-concurrent-downloads = 20;
- };
- downloadDir = "/data/downloads";
- rpcSecretFile = "${pkgs.writeText "aria" "aria2rpc\n"}";
- };
- bazarr = {
- enable = true;
- # Use reverse proxy instead
- openFirewall = true;
- };
- radarr = {
- enable = true;
- # Use reverse proxy instead
- openFirewall = true;
- };
- sonarr = {
- enable = true;
- # Use reverse proxy instead
- openFirewall = true;
- };
- prowlarr = {
- enable = true;
- # Use reverse proxy instead
- openFirewall = true;
- };
- readarr = {
- enable = true;
- # Use reverse proxy instead
- openFirewall = true;
- };
- lidarr = {
- enable = true;
- # Use reverse proxy instead
- openFirewall = true;
- };
- smartd = {
- enable = true;
- devices = [ { device = "/dev/nvme0n1"; } ];
- };
- dockerRegistry = {
- enable = true;
- listenAddress = "0.0.0.0";
- port = 5000;
- enableDelete = true;
- enableGarbageCollect = true;
- garbageCollectDates = "daily";
- };
- wireguard = {
- enable = true;
- inherit ips;
- endpoint = endpointIP;
- inherit endpointPort;
- inherit endpointPublicKey;
- };
- };
-
- # Move this to a "builder" role
- users.extraUsers.builder = {
- isNormalUser = true;
- uid = 1018;
- extraGroups = [ ];
- openssh.authorizedKeys.keys = [ (builtins.readFile ../../secrets/builder.pub) ];
- };
- nix.settings.trusted-users = [
- "root"
- "vincent"
- "builder"
- ];
-
- security.pam.sshAgentAuth.enable = true;
-}
systems/modules/core/binfmt.nix
@@ -1,36 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.core.binfmt;
-in
-{
- options = {
- modules.core.binfmt = {
- enable = mkEnableOption "Register extra emulated systems using binfmt";
- };
- };
- config = mkIf cfg.enable {
- boot = {
- binfmt.registrations = {
- s390x-linux = {
- # interpreter = getEmulator "s390x-linux";
- interpreter = "${pkgs.qemu}/bin/qemu-s390x";
- magicOrExtension = ''\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16'';
- mask = ''\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'';
- };
- };
- binfmt.emulatedSystems = [
- "armv6l-linux"
- "armv7l-linux"
- "aarch64-linux"
- "powerpc64le-linux"
- ];
- };
- };
-}
systems/modules/core/boot.nix
@@ -1,19 +0,0 @@
-{ config, lib, ... }:
-
-let
- inherit (lib) mkOption types;
- cfg = config.core.boot;
-in
-{
- options = {
- core.boot.systemd-boot = mkOption {
- description = "Enable systemd-boot for loading";
- # This is meant to be disable only on a few cases (qemu images, DigitalOcean droplets, …)
- default = true;
- type = types.bool;
- };
- };
- config = {
- boot.loader.systemd-boot.enable = cfg.systemd-boot;
- };
-}
systems/modules/core/config.nix
@@ -1,21 +0,0 @@
-{ lib, ... }:
-
-with lib;
-{
- # This options are mainly used for user side for now
- # aka, in users/vincent, there is a check if these are enabled, to conditionnally
- # add something to the user environments
- # This shouldn't prevent to have real thing behind this
- options = {
- profiles.kubernetes = {
- enable = mkEnableOption "Enable Kubernetes profile";
- };
- profiles.openshift = {
- enable = mkEnableOption "Enable OpenShift profile";
- crc.enable = mkEnableOption "Enable CodeReady Containers";
- };
- profiles.tekton = {
- enable = mkEnableOption "Enable Tekton profile";
- };
- };
-}
systems/modules/core/default.nix
@@ -1,170 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-{
- imports = [
- ./binfmt.nix
- ./boot.nix
- ./config.nix
- ./i18n.nix
- ./nix.nix
- ./users.nix
- ];
-
- environment.systemPackages = with pkgs; [
- age
- cachix
- file
- htop
- iotop
- lsof
- netcat
- psmisc
- pv
- tree
- vim
- wget
- ];
- # FIXME fix tmpOnTmpfs
- # systemd.additionalUpstreamSystemUnits = [ "tmp.mount" ];
-
- security.sudo = {
- extraConfig = ''
- Defaults env_keep += SSH_AUTH_SOCK
- '';
- };
-
- age.secrets."minica.pem" = {
- file = ../../../secrets/minica.pem.age;
- path = "/etc/ssl/certs/minica.pem";
- };
- age.secrets."redhat.pem" = {
- file = ../../../secrets/redhat/redhat.pem.age;
- path = "/etc/ssl/certs/redhat.pem";
- };
-
- security.pki.certificates = [
- ''
- -----BEGIN CERTIFICATE-----
- MIIDSzCCAjOgAwIBAgIIJx9OWfxgsgswDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
- AxMVbWluaWNhIHJvb3QgY2EgMjcxZjRlMCAXDTI0MDIyODA5MjIxNVoYDzIxMjQw
- MjI4MDkyMjE1WjAgMR4wHAYDVQQDExVtaW5pY2Egcm9vdCBjYSAyNzFmNGUwggEi
- MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8UCyxEPiBME64NkwlOWLh19qE
- mlu3rAoT+CiFtEaUdjmEN34Emw/Tt0QbsKDhpkAEQwlsHuw5GFCI4ueI3bbC2LV1
- qkWVLgRrd6qduKnndzvDp8FwXHZFlG7tz0ds83cg4iRdPBt/jwHrqCm5sLVMaKKG
- heg+JlvEhGjiSlXQUIxUZGPpykVca1SHdleIWPb6fCLPogwo1mTMHPa8Flmze0IF
- bNhhlrW/eL5qoO96/tw/EsKGj6qzmjfGfCN76yu58tcW/bKaP18/DI6gLDw3c7b7
- oWlX8w+PBdOcmdllHiGdmHk/jojHPLy8kNAG/mSZC0j8w+pAI2IUhQO720QRAgMB
- AAGjgYYwgYMwDgYDVR0PAQH/BAQDAgKEMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggr
- BgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRRiUxAxMcL9FFg
- MiJq1YVpsbXVijAfBgNVHSMEGDAWgBRRiUxAxMcL9FFgMiJq1YVpsbXVijANBgkq
- hkiG9w0BAQsFAAOCAQEARNZy1lSXCQwXKCrIPDnEu58QBLiaCFTyUtc1/IuHgpjy
- 0Rvi5jnGj2pSJqG0lXEeHeMrs9dbFW7SJkC7HnCnER9Y3+Q712AG4vvagcD3lbrQ
- GfDSOa5tKtEESRlSfoQ1NEr5es4TRXxZrEL5yKU+GV6j3AtHFkgLYlcMbqZsbJIK
- Ag5Oy9aIjnXJ2cjRE+Y0Onsbmzp8sv7JefJ8KcZh23v6LBki7NCOLyetlpuikGGg
- 58SnY+5uWgUV8coraFWPnmFC8Y+yHLmWCousU/t8FvEXIuYtc5PQm3RI9zG75Jp1
- cJBDKkh55goYNkjU4zjdljsEImjoBlJdP0hpiyQKAg==
- -----END CERTIFICATE-----
- ''
- ''
- -----BEGIN CERTIFICATE-----
- MIIENDCCAxygAwIBAgIJANunI0D662cnMA0GCSqGSIb3DQEBCwUAMIGlMQswCQYD
- VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExEDAOBgNVBAcMB1JhbGVp
- Z2gxFjAUBgNVBAoMDVJlZCBIYXQsIEluYy4xEzARBgNVBAsMClJlZCBIYXQgSVQx
- GzAZBgNVBAMMElJlZCBIYXQgSVQgUm9vdCBDQTEhMB8GCSqGSIb3DQEJARYSaW5m
- b3NlY0ByZWRoYXQuY29tMCAXDTE1MDcwNjE3MzgxMVoYDzIwNTUwNjI2MTczODEx
- WjCBpTELMAkGA1UEBhMCVVMxFzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMRAwDgYD
- VQQHDAdSYWxlaWdoMRYwFAYDVQQKDA1SZWQgSGF0LCBJbmMuMRMwEQYDVQQLDApS
- ZWQgSGF0IElUMRswGQYDVQQDDBJSZWQgSGF0IElUIFJvb3QgQ0ExITAfBgkqhkiG
- 9w0BCQEWEmluZm9zZWNAcmVkaGF0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
- ADCCAQoCggEBALQt9OJQh6GC5LT1g80qNh0u50BQ4sZ/yZ8aETxt+5lnPVX6MHKz
- bfwI6nO1aMG6j9bSw+6UUyPBHP796+FT/pTS+K0wsDV7c9XvHoxJBJJU38cdLkI2
- c/i7lDqTfTcfLL2nyUBd2fQDk1B0fxrskhGIIZ3ifP1Ps4ltTkv8hRSob3VtNqSo
- GxkKfvD2PKjTPxDPWYyruy9irLZioMffi3i/gCut0ZWtAyO3MVH5qWF/enKwgPES
- X9po+TdCvRB/RUObBaM761EcrLSM1GqHNueSfqnho3AjLQ6dBnPWlo638Zm1VebK
- BELyhkLWMSFkKwDmne0jQ02Y4g075vCKvCsCAwEAAaNjMGEwHQYDVR0OBBYEFH7R
- 4yC+UehIIPeuL8Zqw3PzbgcZMB8GA1UdIwQYMBaAFH7R4yC+UehIIPeuL8Zqw3Pz
- bgcZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
- CwUAA4IBAQBDNvD2Vm9sA5A9AlOJR8+en5Xz9hXcxJB5phxcZQ8jFoG04Vshvd0e
- LEnUrMcfFgIZ4njMKTQCM4ZFUPAieyLx4f52HuDopp3e5JyIMfW+KFcNIpKwCsak
- oSoKtIUOsUJK7qBVZxcrIyeQV2qcYOeZhtS5wBqIwOAhFwlCET7Ze58QHmS48slj
- S9K0JAcps2xdnGu0fkzhSQxY8GPQNFTlr6rYld5+ID/hHeS76gq0YG3q6RLWRkHf
- 4eTkRjivAlExrFzKcljC4axKQlnOvVAzz+Gm32U0xPBF4ByePVxCJUHw1TsyTmel
- RxNEp7yHoXcwn+fXna+t5JWh1gxUZty3
- -----END CERTIFICATE-----
- -----BEGIN CERTIFICATE-----
- MIIGcjCCBFqgAwIBAgIFICIEEFwwDQYJKoZIhvcNAQEMBQAwgaMxCzAJBgNVBAYT
- AlVTMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTEQMA4GA1UEBwwHUmFsZWlnaDEW
- MBQGA1UECgwNUmVkIEhhdCwgSW5jLjETMBEGA1UECwwKUmVkIEhhdCBJVDEZMBcG
- A1UEAwwQSW50ZXJuYWwgUm9vdCBDQTEhMB8GCSqGSIb3DQEJARYSaW5mb3NlY0By
- ZWRoYXQuY29tMCAXDTIzMDQwNTE4MzM0NFoYDzIwNTIwNDAyMTgzMzQ0WjCBozEL
- MAkGA1UEBhMCVVMxFzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMRAwDgYDVQQHDAdS
- YWxlaWdoMRYwFAYDVQQKDA1SZWQgSGF0LCBJbmMuMRMwEQYDVQQLDApSZWQgSGF0
- IElUMRkwFwYDVQQDDBBJbnRlcm5hbCBSb290IENBMSEwHwYJKoZIhvcNAQkBFhJp
- bmZvc2VjQHJlZGhhdC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
- AQCxuloEVglzWXZ9FFFUOSVdpRIB2jW5YBpwgMem2fPZeWIIvrVQ6PL9XNenDOXu
- BHbShD/PApxi/ujSZyOIjLsNh7WDO+0NqpkfTyB9wUYAhx3GTIGY75RSoyZy1yKb
- ZDTKv+rSfui9IlstAMz6L3OQLZES9zAYK8ICiDUwTeNZ7quA6qf0Kam2LyuBc/bl
- BI7WFLOGGWY135P1OUXJgnJUsMhnYMTgvZQyJ2P7eLQpiR8TOr5ZI6CYapiyG64L
- nkr/rsALjSxoUo09Yai1CVO66VFJ/XgMNt3mzQtLDMPXiKUuwsBsgvo4QvLjkXYI
- ii+/YQyQaypsKctG8mefKkTT1kRDKj4LNdTRRgd5tco+b4+O/4upt8mIsx1+tbdM
- LNGEz3Jqd0sj8Fl4Rzus+W+enzXmMfZH86X6bU5tMvueuFd5LV+M9XzliscaEQMK
- EQ7CC72ldrOK2K12Gjb7bu8dKq+aSlNuWK+Gz1NvbwYpaCBYp0JoryvHEq5jrCLP
- lTkuJQ3HaaAf+4LaBm8no9xK2VbDf6l/7Htb5I5LnAAZi0/5TzH07NhHoIeMSmTE
- Ea07i/i5lbhM2qbx6pfLukg24HLCKTdi4Fo6/JqPWH6/3eI55NsoWSmoDdTiLg4v
- 1G/rgUVr2N6F36GTYMGqiITvvd4Qm3i9XOTQvsx8RJx4JQIDAQABo4GoMIGlMB0G
- A1UdDgQWBBS1+o3lCnihCZXbTSGGlWpZT0nIizAfBgNVHSMEGDAWgBS1+o3lCnih
- CZXbTSGGlWpZT0nIizAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAR
- BglghkgBhvhCAQEEBAMCAQYwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL29jc3Au
- cmVkaGF0LmNvbS9jcmwucGVtMA0GCSqGSIb3DQEBDAUAA4ICAQCDLaGTS0g2HmMS
- g0i6Z0RVDC7sSnWFgEk2ZO1WUQj5WkFVS7gWxed/mXCzeL2EV1Pd22YKHM1eU1vo
- 6b03cbNRXlRGGFksmQeM9h2sVjbP0hRZxqqfI+UW223N8E+qK3wSa8m6nhOfIJie
- DD9s8CdL1VT6l4qq2gR8mVBW7EZ+Ux5u+AMXpN4WPEkcLer2djbfhXoPsJ4r5CcX
- vh7W5rCZbo+0oBI5hrTlG4Tjhv1atqLhMmssjn8NbRrnhrbGF7w8NxFts69GkKDB
- UIXr1pWZSAuRELlIxmvh5ZSX5YTbFmDuTvmNx8RPPy6OY4W1v1BUKp0HyJTi07s2
- 8SN+n9htHPHX9XBZctQmOSFLiqhi15LIqI54tR2tSgwH3Z5moh4sy6MuApXstsu4
- qtkII2KZk3SottI8MOS6zqKrU7jPou6ZE0fznNiu23Q3Ksuuj6mBkLVw3bQe68Vm
- NUTDac1oVzc8d5NMbx5kVb4Lahq+SATVFC8NK9G/Pk1AiwO8WhKffySsLeO5nMib
- 4BOVq0qFoAi8YCFuJOl9FlH1dPW/TnqlTQMQNhXpzGjU3HV3lr/Mk+ghNgIYcLcz
- pEBsiGwKOVW4nYKIqPLn/36Ao/kfXeAdJhaAZq1SkTbeqNiwHQm3KNHzNObmjD0f
- 56vmq8fwQYIcazjrygWiaOnoep/SMw==
- -----END CERTIFICATE-----
- ''
- ];
-
- security.pki.certificateFiles = [
- "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
- # "/etc/ssl/certs/minica.pem"
- # "/etc/ssl/certs/redhat.pem"
- ];
-
- # Only keep the last 500MiB of systemd journal.
- services.journald.extraConfig = "SystemMaxUse=500M";
-
- # Clear out /tmp after a fortnight and give all normal users a ~/tmp
- # cleaned out weekly.
- systemd.tmpfiles.rules =
- [ "d /tmp 1777 root root 14d" ]
- ++ (
- let
- mkTmpDir = n: u: "d ${u.home}/tmp 0700 ${n} ${u.group} 7d";
- in
- lib.mapAttrsToList mkTmpDir (lib.filterAttrs (_: u: u.isNormalUser) config.users.extraUsers)
- );
-
- systemd.services."status-email-root@" = {
- description = "status email for %i to vincent";
- serviceConfig = {
- Type = "oneshot";
- ExecStart = ''
- ${pkgs.my.systemd-email}/bin/systemd-email vincent@demeester.fr %i
- '';
- User = "root";
- Environment = "PATH=/run/current-system/sw/bin";
- };
- };
-}
systems/modules/core/i18n.nix
@@ -1,24 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
- cfg = config.core.i18n;
-in
-{
- options = {
- core.i18n = {
- enable = mkOption {
- default = true;
- description = "Enable i18n profile";
- type = types.bool;
- };
- };
- };
- config = mkIf cfg.enable {
- console.keyMap = "fr-bepo";
- console.font = "Lat2-Terminus16";
- i18n = {
- defaultLocale = "en_US.UTF-8";
- };
- };
-}
systems/modules/core/nix.nix
@@ -1,141 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- dummyConfig = pkgs.writeText "configuration.nix" ''
- # assert builtins.trace "This is a dummy config, use switch!" false;
- {}
- '';
- cfg = config.core.nix;
-in
-{
- options = {
- core.nix = {
- enable = mkOption {
- type = types.bool;
- default = true;
- description = "Enable core.nix";
- };
- gcDates = mkOption {
- default = "daily";
- description = "Specification (in the format described by systemd.time(7)) of the time at which the garbage collector will run. ";
- type = types.str;
- };
- olderThan = mkOption {
- default = "15d";
- description = "Number of day to keep when garbage collect";
- type = types.str;
- };
- buildCores = mkOption {
- type = types.int;
- default = 2;
- example = 4;
- description = ''
- Maximum number of concurrent tasks during one build.
- '';
- };
- localCaches = mkOption {
- default = [ ];
- description = "List of local nix caches";
- type = types.listOf types.str;
- };
- };
- };
- config = mkIf cfg.enable {
- environment.systemPackages = [ pkgs.git ];
- nix = {
- settings = {
- cores = cfg.buildCores;
- substituters = cfg.localCaches ++ [
- "https://cache.nixos.org/"
- "https://r-ryantm.cachix.org"
- "https://shortbrain.cachix.org"
- "https://vdemeester.cachix.org"
- "https://chapeau-rouge.cachix.org"
- ];
- trusted-public-keys = [
- "r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c="
- "shortbrain.cachix.org-1:dqXcXzM0yXs3eo9ChmMfmob93eemwNyhTx7wCR4IjeQ="
- "mic92.cachix.org-1:gi8IhgiT3CYZnJsaW7fxznzTkMUOn1RY4GmXdT/nXYQ="
- "chapeau-rouge.cachix.org-1:r34IG766Ez4Eeanr7Zx+egzXLE2Zgvc+XRspYZPDAn8="
- "vdemeester.cachix.org-1:eZWNOrLR9A9szeMahn9ENaoT9DB3WgOos8va+d2CU44="
- ];
- };
- # On laptops at least, make the daemon and builders low priority
- # to have a responding system while building
- daemonIOSchedClass = "idle";
- daemonCPUSchedPolicy = "idle";
- # FIXME: On servers, we may change this.
- # daemonIOSchedPriority = 5;
- # daemonCPUSchedPolicy = "batch";
-
- # if hydra is down, don't wait forever
- extraOptions = ''
- connect-timeout = 20
- build-cores = 0
- keep-outputs = true
- keep-derivations = true
- builders-use-substitutes = true
- experimental-features = flakes nix-command
- '';
- gc = {
- automatic = true;
- dates = cfg.gcDates;
- options = "--delete-older-than ${cfg.olderThan}";
- };
- nixPath = [
- "nixos-config=${dummyConfig}"
- "nixpkgs=/run/current-system/nixpkgs"
- "nixpkgs-overlays=/run/current-system/overlays/compat"
- ];
- optimise = {
- automatic = true;
- dates = [
- "01:10"
- "12:10"
- ];
- };
- nrBuildUsers = 32;
- #nrBuildUsers = config.nix.maxJobs * 2;
- settings = {
- sandbox = true;
- allowed-users = [ "@wheel" ];
- trusted-users = [
- "root"
- "@wheel"
- ];
- # See https://nixos.org/manual/nix/stable/command-ref/conf-file#conf-use-xdg-base-directories
- use-xdg-base-directories = true;
- };
- };
-
- # `nix-daemon` will hit the stack limit when using `nixFlakes`.
- systemd.services.nix-daemon.serviceConfig."LimitSTACK" = "infinity";
-
- nixpkgs = {
- overlays = [
- # (import ../../../nix/overlays/mkSecret.nix)
- # (import ../../../nix/overlays/sbr.nix)
- # (import ../../../nix/overlays/unstable.nix)
- # (import ../../../nix).emacs
- ];
- config = {
- allowUnfree = true;
- #allowBroken = true;
- };
- };
- system = {
- extraSystemBuilderCmds = ''
- ln -sv ${pkgs.path} $out/nixpkgs
- ln -sv ${../../../nix/overlays} $out/overlays
- '';
-
- stateVersion = "22.05";
- };
- };
-}
systems/modules/core/users.nix
@@ -1,13 +0,0 @@
-{ config, ... }:
-{
- users.motd = with config; ''
- Welcome to ${networking.hostName}
-
- - This machine is managed by NixOS
- - All changes are futile
-
- OS: Nixos ${system.nixos.release} (${system.nixos.codeName})
- Version: ${system.nixos.version}
- Kernel: ${boot.kernelPackages.kernel.version}
- '';
-}
systems/modules/desktop/base.nix
@@ -1,237 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib)
- mkIf
- mkEnableOption
- mkDefault
- mkOption
- types
- ;
- cfg = config.modules.desktop;
-in
-{
- options = {
- modules.desktop = {
- enable = mkEnableOption "desktop configuration";
- plymouth = {
- theme = mkOption {
- default = "deus_ex";
- description = "Plymouth theme to use for boot (hexagon, green_loader, deus_ex, cuts, sphere, spinner_alt)";
- type = types.str;
- };
- themePackage = mkOption {
- default = pkgs.my.adi1090x-plymouth;
- description = "Plymouth theme package to use";
- type = types.package;
- };
- };
- };
- };
- config = mkIf cfg.enable {
- # Putting this in desktop for now
- programs = {
- nix-ld = {
- enable = true;
- # put whatever libraries you think you might need
- # nix-ld includes a strong sane-default as well
- # in addition to these
- libraries = with pkgs; [
- acl
- alsa-lib
- at-spi2-atk
- at-spi2-core
- atk
- attr
- bzip2
- cairo
- curl
- dbus
- expat
- fontconfig
- freetype
- fuse3
- gdk-pixbuf
- glib
- glibc
- gtk3
- icu
- libGL
- libappindicator-gtk3
- libdrm
- libglvnd
- libnotify
- libpulseaudio
- libsecret
- libsodium
- libssh
- libunwind
- libusb1
- libuuid
- libxkbcommon
- mesa
- nspr
- nss
- openssl
- pango
- pipewire
- systemd
- stdenv.cc.cc # .lib
- util-linux
- # vulkan-loader
- # xorg.libX11
- # xorg.libXScrnSaver
- # xorg.libXcomposite
- # xorg.libXcursor
- # xorg.libXdamage
- # xorg.libXext
- # xorg.libXfixes
- # xorg.libXi
- # xorg.libXrandr
- # xorg.libXrender
- # xorg.libXtst
- # xorg.libxcb
- # xorg.libxkbfile
- # xorg.libxshmfence
- zlib
- zstd
- ];
- };
- };
-
- services = {
- envfs = {
- enable = true;
- };
- };
-
- modules.services.avahi.enable = true;
- # Enable netbootxyz if systemd-boot is enabled
- boot = {
- loader.systemd-boot.netbootxyz.enable = config.core.boot.systemd-boot;
- # /tmp to be tmpfs
- tmp = {
- useTmpfs = true;
- cleanOnBoot = true;
- };
- # Enable Plymouth on desktops
- plymouth = {
- enable = true;
- themePackages = [ cfg.plymouth.themePackage ];
- inherit (cfg.plymouth) theme;
- };
- };
-
- # Configure some fonts
- fonts = {
- # enableFontDir = true;
- fontDir.enable = true;
- enableGhostscriptFonts = true;
- packages = with pkgs; [
- cascadia-code
- corefonts
- dejavu_fonts
- # emojione
- feh
- fira
- fira-code
- fira-code-symbols
- fira-mono
- font-awesome
- go-font
- hack-font
- inconsolata
- jetbrains-mono
- liberation_ttf
- nerd-fonts.jetbrains-mono
- nerd-fonts.inconsolata
- nerd-fonts.fira-code
- nerd-fonts.fira-mono
- nerd-fonts.caskaydia-cove
- nerd-fonts.caskaydia-mono
- nerd-fonts.overpass
- nerd-fonts.ubuntu
- nerd-fonts.ubuntu-mono
- nerd-fonts.ubuntu-sans
- noto-fonts
- noto-fonts-cjk-sans
- noto-fonts-emoji
- noto-fonts-extra
- overpass
- symbola
- twemoji-color-font
- ubuntu_font_family
- unifont
- recursive
- ];
- };
-
- # Enable NetkworManager by default
- networking.networkmanager = {
- enable = mkDefault true;
- unmanaged =
- [
- "interface-name:br-*"
- "interface-name:ve-*" # FIXME are those docker's or libvirt's
- "interface-name:veth-*" # FIXME are those docker's or libvirt's
- ]
- # Do not manager wireguard
- ++ lib.optionals config.networking.wireguard.enable [ "interface-name:wg0" ]
- # Do not manage docker interfaces
- ++ lib.optionals config.virtualisation.docker.enable [ "interface-name:docker0" ]
- # Do not manager libvirt interfaces
- ++ lib.optionals config.virtualisation.libvirtd.enable [ "interface-name:virbr*" ];
- plugins = with pkgs; [ networkmanager-openvpn ];
- # dispatcherScripts = [{
- # # https://askubuntu.com/questions/1271491/disable-wifi-if-lan-is-connected
- # source = pkgs.writeText "wifi-wired-exclusive" ''
- # #!${pkgs.bash}/bin/bash
- # export LC_ALL=C
- #
- # enable_disable_wifi ()
- # {
- # result=$(${pkgs.networkmanager}/bin/nmcli dev | ${pkgs.gnugrep}/bin/grep "ethernet" | ${pkgs.gnugrep}/bin/grep -w "connected")
- # if [ -n "$result" ]; then
- # ${pkgs.networkmanager}/bin/nmcli radio wifi off
- # else
- # ${pkgs.networkmanager}/bin/nmcli radio wifi on
- # fi
- # }
- #
- # if [ "$2" = "up" ]; then
- # enable_disable_wifi
- # fi
- #
- # if [ "$2" = "down" ]; then
- # enable_disable_wifi
- # fi
- # '';
- # type = "basic";
- # }];
- };
-
- nix = {
- # Enable SSH-serving nix packages
- sshServe.enable = mkDefault true;
- };
-
- services = {
- udisks2.enable = true;
-
- # Make `/run/user/X` larger.
- logind.extraConfig = ''
- RuntimeDirectorySize=20%
- '';
-
- # Enable printing by default too
- printing = {
- enable = true;
- drivers = [ pkgs.gutenprint ];
- };
- };
- };
-}
systems/modules/desktop/default.nix
@@ -1,9 +0,0 @@
-{
- imports = [
- ./base.nix
- ./i3.nix
- ./sway.nix
- ./wayland.nix
- ./xorg.nix
- ];
-}
systems/modules/desktop/i3.nix
@@ -1,40 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.modules.desktop.xorg.i3;
-in
-{
- options = {
- modules.desktop.xorg.i3 = {
- enable = mkEnableOption "Enable i3 desktop profile";
- };
- };
-
- config = mkIf cfg.enable {
- # Enable xorg desktop modules if not already
- modules.desktop.xorg.enable = true;
- services = {
- blueman.enable = true;
- autorandr.enable = true;
- xserver = {
- displayManager = {
- defaultSession = "none+i3";
- lightdm.enable = true;
- lightdm.greeters.pantheon.enable = true;
- };
- windowManager.i3.enable = true;
- };
- dbus = {
- enable = true;
- # socketActivated = true;
- packages = [ pkgs.dconf ];
- };
- };
- };
-}
systems/modules/desktop/sway.nix
@@ -1,58 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkIf mkEnableOption;
- cfg = config.modules.desktop.wayland.sway;
-in
-{
- options = {
- modules.desktop.wayland.sway = {
- enable = mkEnableOption "Enable sway desktop profile";
- };
- };
- config = mkIf cfg.enable {
- # Enable wayland desktop modules if not already
- modules.desktop.wayland.enable = true;
-
- # Enable pipewire
- modules.hardware.audio = {
- enable = true;
- pipewire.enable = true;
- };
-
- services.blueman.enable = config.modules.hardware.bluetooth.enable;
- environment.sessionVariables = {
- # only needed for Sway
- XDG_CURRENT_DESKTOP = "sway";
- };
- xdg = {
- portal = {
- enable = true;
- wlr.enable = true;
- extraPortals = with pkgs; [
- xdg-desktop-portal-wlr
- xdg-desktop-portal-gtk
- ];
- };
- };
-
- # Allow swaylock to unlock the computer for us
- security.pam.services.swaylock = {
- text = "auth include login";
- };
-
- # FIXME are those needed
- programs.dconf.enable = true;
- services.dbus = {
- enable = true;
- packages = [
- pkgs.dconf
- pkgs.gcr
- ];
- };
- };
-}
systems/modules/desktop/wayland.nix
@@ -1,79 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib)
- mkIf
- mkEnableOption
- mkForce
- versionOlder
- ;
- cfg = config.modules.desktop.wayland;
- stable = versionOlder config.system.nixos.release "24.05";
- swayRun = pkgs.writeShellScript "sway-run" ''
- export XDG_SESSION_TYPE=wayland
- export XDG_SESSION_DESKTOP=sway
- export XDG_CURRENT_DESKTOP=sway
-
- systemd-run --user --scope --collect --quiet --unit=sway systemd-cat --identifier=sway ${pkgs.sway}/bin/sway $@
- '';
-in
-{
- options = {
- modules.desktop.wayland = {
- enable = mkEnableOption "Enable wayland desktop";
- };
- };
- config = mkIf cfg.enable {
- # Enable desktop module if not already.
- modules.desktop.enable = true;
- # Force disable xorg desktop module
- modules.desktop.xorg.enable = mkForce false;
- # Hardware Support for Wayland Sway, …
- hardware = {
- # graphics
- opengl = {
- enable = true;
- };
- };
- services =
- {
- greetd = {
- enable = true;
- settings = {
- default_session = {
- # command = "${pkgs.greetd.greetd}/bin/agreety --cmd sway";
- command = "${lib.makeBinPath [ pkgs.greetd.tuigreet ]}/tuigreet --time --cmd ${swayRun}";
- users = "greeter";
- };
- initial_session = {
- command = "${swayRun}";
- user = "vincent";
- };
- };
- # restart = false;
- };
- }
- // (
- if stable then
- { }
- else
- {
- libinput = {
- touchpad = {
- disableWhileTyping = true;
- additionalOptions = ''
- Option "Ignore" "on"
- '';
- };
- };
- }
- );
- environment.systemPackages = with pkgs; [
- qogir-icon-theme
- ];
- };
-}
systems/modules/desktop/xorg.nix
@@ -1,38 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkIf mkEnableOption;
- cfg = config.modules.desktop.xorg;
-in
-{
- options = {
- modules.desktop.xorg = {
- enable = mkEnableOption "Enable Xorg desktop";
- };
- };
- config = mkIf cfg.enable {
- modules.desktop.enable = true;
- # Extra packages to add to the system
- environment.systemPackages = with pkgs; [
- xorg.xmessage
- ];
-
- services = {
- # Enable xserver on desktop
- xserver = {
- enable = true;
- enableTCP = false;
- libinput.enable = true;
- synaptics.enable = false;
- layout = "fr";
- xkbVariant = "bepo";
- xkbOptions = "grp:menu_toggle,grp_led:caps,compose:caps";
- };
- };
-
- };
-}
systems/modules/dev/base.nix
@@ -1,35 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- cfg = config.modules.dev;
- inherit (lib) mkEnableOption mkIf;
-in
-{
- options = {
- modules.dev = {
- enable = mkEnableOption "Mark this machine as a dev machine";
- };
- };
- config = mkIf cfg.enable {
- # Dev means Emacs 🙃
- modules.editors.emacs.enable = true;
- modules.shell = {
- direnv.enable = true;
- git.enable = true;
- gnupg.enable = true;
- tmux.enable = true;
- };
- # Enable lorri (to handle nix shells)
- # services.lorri.enable = true;
- environment.systemPackages = with pkgs; [
- grc
- ripgrep
- gnumake
- ];
- };
-}
systems/modules/dev/containers-image-mirroring.nix
@@ -1,96 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- inherit (lib)
- mkEnableOption
- mkOption
- mkIf
- types
- ;
- cfg = config.modules.dev.containers.image-mirroring;
- settingsFormat = pkgs.formats.yaml { };
- settingsFile = settingsFormat.generate "sync.yaml" cfg.settings;
-in
-{
- ##### interface
- options = {
- modules.dev.containers.image-mirroring = {
- enable = mkEnableOption "Enable container image mirroring service";
- targets = mkOption {
- type = types.listOf types.str;
- example = [
- "quay.io/vdemeest"
- "ghcr.io/vdemeester"
- ];
- description = lib.mdDoc ''
- A list of targets to sync images to. It will use the same
- sync configuration to push on all.
- '';
- };
- settings = mkOption {
- inherit (settingsFormat) type;
- default = { };
- example = {
- "docker.io" = {
- "vdemeester/foo" = [
- "latest"
- "bar"
- ];
- };
- "quay.io" = {
- "buildah/stable" = [ "latest" ];
- };
- };
- description = lib.mdDoc ''
- Configuration of the image to sync, using skopeo-sync.
- See skopeo-sync(1) for the content.
- '';
- };
- };
- };
- ##### implementation
- config = mkIf cfg.enable {
- systemd.services.container-image-mirroring = {
- description = "Synchronize docker images to a set of targets";
- requires = [ "network-online.target" ];
-
- restartIfChanged = false;
- unitConfig.X-StopOnRemoval = false;
-
- serviceConfig = {
- Type = "oneshot";
- User = "vincent";
- OnFailure = "status-email-root@%.service";
- };
-
- path = with pkgs; [ skopeo ];
- # ./scripts/docker.mirroring.script.sh;
- script = ''
- BUILDTMPDIR=$(mktemp -d)
- trap 'rm -rf -- "$BUILDTMPDIR"' EXIT
-
-
- # Pull to dir first
- skopeo sync --preserve-digests --src yaml --dest dir \
- ${settingsFile} \
- $BUILDTMPDIR
-
- # Push to targets
- for target in ${lib.strings.concatStringsSep " " cfg.targets}; do
- skopeo sync --preserve-digests --src dir --dest docker \
- $BUILDTMPDIR \
- $target
- done
- '';
-
- after = [ "network-online.target" ];
- # Make it configurable ?
- startAt = "weekly";
- };
- };
-}
systems/modules/dev/containers.nix
@@ -1,190 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- cfg = config.modules.dev.containers;
- inherit (lib)
- mkEnableOption
- mkIf
- mkMerge
- mkOption
- types
- ;
-in
-{
- options = {
- modules.dev.containers = {
- enable = mkEnableOption "Enable dev containers";
- docker = {
- enable = mkEnableOption "Enable docker containers";
- package = mkOption {
- default = pkgs.docker;
- description = "docker package to be used";
- type = types.package;
- };
- runcPackage = mkOption {
- default = pkgs.runc;
- description = "runc package to be used";
- type = types.package;
- };
- };
- podman = {
- enable = mkEnableOption "Enable podman containers";
- };
- buildkit = {
- enable = mkEnableOption "Enable podman containers";
- grpcAddress = mkOption {
- type = types.listOf types.str;
- default = [ "unix:///run/buildkit/buildkitd.sock" ];
- example = [
- "unix:///run/buildkit/buildkitd.sock"
- "tcp://0.0.0.0:1234"
- ];
- description = lib.mdDoc ''
- A list of address to listen to for the grpc service.
- '';
- };
- };
- };
- };
- config = mkIf cfg.enable (mkMerge [
- {
- networking.firewall.checkReversePath = false;
- virtualisation.containers = {
- enable = true;
- containersConf.settings = {
- network = {
- default_subnet_pools = [
- # See https://github.com/kubernetes-sigs/kind/issues/2872 for this
- {
- "base" = "11.0.0.0/24";
- "size" = 24;
- }
- {
- "base" = "192.168.129.0/24";
- "size" = 24;
- }
- {
- "base" = "192.168.130.0/24";
- "size" = 24;
- }
- {
- "base" = "192.168.131.0/24";
- "size" = 24;
- }
- {
- "base" = "192.168.132.0/24";
- "size" = 24;
- }
- ];
- };
- };
- };
- }
- (mkIf cfg.docker.enable {
- virtualisation = {
- containerd = {
- enable = true;
- };
- buildkitd = {
- enable = true;
- settings = {
- grpc = {
- address = cfg.buildkit.grpcAddress;
- };
- worker.oci = {
- enabled = false;
- };
- worker.containerd = {
- enabled = true;
- platforms = [
- "linux/amd64"
- "linux/arm64"
- ];
- namespace = "buildkit";
- };
- # FIXME: move to home
- registry = {
- "r.svc.home:5000" = {
- http = true;
- insecure = true;
- };
- "r.svc.home" = {
- http = true;
- insecure = true;
- };
- };
- };
- };
- docker = {
- enable = true;
- inherit (cfg.docker) package;
- liveRestore = false;
- storageDriver = "overlay2";
- daemon.settings = {
- userland-proxy = false;
- experimental = true;
- bip = "172.26.0.1/16";
- runtimes = {
- "docker-runc" = {
- path = "${cfg.docker.runcPackage}/bin/runc";
- };
- };
- default-runtime = "docker-runc";
- containerd = "/run/containerd/containerd.sock";
- features = {
- buildkit = true;
- };
- insecure-registries = [
- "172.30.0.0/16"
- "192.168.1.0/16"
- "10.100.0.0/16"
- "shikoku.home:5000"
- "r.svc.home:5000"
- "r.svc.home"
- ];
- seccomp-profile = ./my-seccomp.json;
- };
- };
- };
- environment.systemPackages = with pkgs; [
- docker-buildx
- ];
- networking.firewall.trustedInterfaces = [
- "docker0"
- "podman"
- ];
- })
- (mkIf cfg.podman.enable {
- virtualisation.podman.enable = true;
- })
- (mkIf config.modules.profiles.work.redhat {
- # Red Hat specific setup for virtualisation (buildah, podman, skopeo)
- virtualisation = {
- containers = {
- registries = {
- search = [
- "registry.fedoraproject.org"
- "registry.access.redhat.com"
- "registry.centos.org"
- "docker.io"
- "quay.io"
- ];
- };
- policy = {
- default = [ { type = "insecureAcceptAnything"; } ];
- transports = {
- docker-daemon = {
- "" = [ { type = "insecureAcceptAnything"; } ];
- };
- };
- };
- };
- };
- })
- ]);
-}
systems/modules/dev/default.nix
@@ -1,7 +0,0 @@
-{
- imports = [
- ./base.nix
- ./containers.nix
- ./containers-image-mirroring.nix
- ];
-}
systems/modules/dev/my-seccomp.json
@@ -1,1041 +0,0 @@
-{
- "defaultAction": "SCMP_ACT_ERRNO",
- "defaultErrnoRet": 38,
- "defaultErrno": "ENOSYS",
- "archMap": [
- {
- "architecture": "SCMP_ARCH_X86_64",
- "subArchitectures": [
- "SCMP_ARCH_X86",
- "SCMP_ARCH_X32"
- ]
- },
- {
- "architecture": "SCMP_ARCH_AARCH64",
- "subArchitectures": [
- "SCMP_ARCH_ARM"
- ]
- },
- {
- "architecture": "SCMP_ARCH_MIPS64",
- "subArchitectures": [
- "SCMP_ARCH_MIPS",
- "SCMP_ARCH_MIPS64N32"
- ]
- },
- {
- "architecture": "SCMP_ARCH_MIPS64N32",
- "subArchitectures": [
- "SCMP_ARCH_MIPS",
- "SCMP_ARCH_MIPS64"
- ]
- },
- {
- "architecture": "SCMP_ARCH_MIPSEL64",
- "subArchitectures": [
- "SCMP_ARCH_MIPSEL",
- "SCMP_ARCH_MIPSEL64N32"
- ]
- },
- {
- "architecture": "SCMP_ARCH_MIPSEL64N32",
- "subArchitectures": [
- "SCMP_ARCH_MIPSEL",
- "SCMP_ARCH_MIPSEL64"
- ]
- },
- {
- "architecture": "SCMP_ARCH_S390X",
- "subArchitectures": [
- "SCMP_ARCH_S390"
- ]
- }
- ],
- "syscalls": [
- {
- "names": [
- "bdflush",
- "io_pgetevents",
- "kexec_file_load",
- "kexec_load",
- "migrate_pages",
- "move_pages",
- "nfsservctl",
- "nice",
- "oldfstat",
- "oldlstat",
- "oldolduname",
- "oldstat",
- "olduname",
- "pciconfig_iobase",
- "pciconfig_read",
- "pciconfig_write",
- "sgetmask",
- "ssetmask",
- "swapcontext",
- "swapoff",
- "swapon",
- "sysfs",
- "uselib",
- "userfaultfd",
- "ustat",
- "vm86",
- "vm86old",
- "vmsplice"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {},
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "_llseek",
- "_newselect",
- "accept",
- "accept4",
- "access",
- "adjtimex",
- "alarm",
- "bind",
- "brk",
- "capget",
- "capset",
- "chdir",
- "chmod",
- "chown",
- "chown32",
- "clock_adjtime",
- "clock_adjtime64",
- "clock_getres",
- "clock_getres_time64",
- "clock_gettime",
- "clock_gettime64",
- "clock_nanosleep",
- "clock_nanosleep_time64",
- "clone",
- "clone3",
- "close",
- "close_range",
- "connect",
- "copy_file_range",
- "creat",
- "dup",
- "dup2",
- "dup3",
- "epoll_create",
- "epoll_create1",
- "epoll_ctl",
- "epoll_ctl_old",
- "epoll_pwait",
- "epoll_pwait2",
- "epoll_wait",
- "epoll_wait_old",
- "eventfd",
- "eventfd2",
- "execve",
- "execveat",
- "exit",
- "exit_group",
- "faccessat",
- "faccessat2",
- "fadvise64",
- "fadvise64_64",
- "fallocate",
- "fanotify_mark",
- "fchdir",
- "fchmod",
- "fchmodat",
- "fchown",
- "fchown32",
- "fchownat",
- "fcntl",
- "fcntl64",
- "fdatasync",
- "fgetxattr",
- "flistxattr",
- "flock",
- "fork",
- "fremovexattr",
- "fsconfig",
- "fsetxattr",
- "fsmount",
- "fsopen",
- "fspick",
- "fstat",
- "fstat64",
- "fstatat64",
- "fstatfs",
- "fstatfs64",
- "fsync",
- "ftruncate",
- "ftruncate64",
- "futex",
- "futex_time64",
- "futimesat",
- "get_robust_list",
- "get_thread_area",
- "getcpu",
- "getcwd",
- "getdents",
- "getdents64",
- "getegid",
- "getegid32",
- "geteuid",
- "geteuid32",
- "getgid",
- "getgid32",
- "getgroups",
- "getgroups32",
- "getitimer",
- "get_mempolicy",
- "getpeername",
- "getpgid",
- "getpgrp",
- "getpid",
- "getppid",
- "getpriority",
- "getrandom",
- "getresgid",
- "getresgid32",
- "getresuid",
- "getresuid32",
- "getrlimit",
- "getrusage",
- "getsid",
- "getsockname",
- "getsockopt",
- "gettid",
- "gettimeofday",
- "getuid",
- "getuid32",
- "getxattr",
- "inotify_add_watch",
- "inotify_init",
- "inotify_init1",
- "inotify_rm_watch",
- "io_cancel",
- "io_destroy",
- "io_getevents",
- "io_setup",
- "io_submit",
- "ioctl",
- "ioprio_get",
- "ioprio_set",
- "ipc",
- "keyctl",
- "kill",
- "lchown",
- "lchown32",
- "lgetxattr",
- "link",
- "linkat",
- "listen",
- "listxattr",
- "llistxattr",
- "lremovexattr",
- "lseek",
- "lsetxattr",
- "lstat",
- "lstat64",
- "madvise",
- "mbind",
- "memfd_create",
- "memfd_secret",
- "mincore",
- "mkdir",
- "mkdirat",
- "mknod",
- "mknodat",
- "mlock",
- "mlock2",
- "mlockall",
- "mmap",
- "mmap2",
- "mount",
- "move_mount",
- "mprotect",
- "mq_getsetattr",
- "mq_notify",
- "mq_open",
- "mq_timedreceive",
- "mq_timedreceive_time64",
- "mq_timedsend",
- "mq_timedsend_time64",
- "mq_unlink",
- "mremap",
- "msgctl",
- "msgget",
- "msgrcv",
- "msgsnd",
- "msync",
- "munlock",
- "munlockall",
- "munmap",
- "name_to_handle_at",
- "nanosleep",
- "newfstatat",
- "open",
- "openat",
- "openat2",
- "open_tree",
- "pause",
- "pidfd_getfd",
- "pidfd_open",
- "pidfd_send_signal",
- "pipe",
- "pipe2",
- "pivot_root",
- "pkey_alloc",
- "pkey_free",
- "pkey_mprotect",
- "poll",
- "ppoll",
- "ppoll_time64",
- "prctl",
- "pread64",
- "preadv",
- "preadv2",
- "prlimit64",
- "pselect6",
- "pselect6_time64",
- "pwrite64",
- "pwritev",
- "pwritev2",
- "read",
- "readahead",
- "readdir",
- "readlink",
- "readlinkat",
- "readv",
- "reboot",
- "recv",
- "recvfrom",
- "recvmmsg",
- "recvmmsg_time64",
- "recvmsg",
- "remap_file_pages",
- "removexattr",
- "rename",
- "renameat",
- "renameat2",
- "restart_syscall",
- "rmdir",
- "rseq",
- "rt_sigaction",
- "rt_sigpending",
- "rt_sigprocmask",
- "rt_sigqueueinfo",
- "rt_sigreturn",
- "rt_sigsuspend",
- "rt_sigtimedwait",
- "rt_sigtimedwait_time64",
- "rt_tgsigqueueinfo",
- "sched_get_priority_max",
- "sched_get_priority_min",
- "sched_getaffinity",
- "sched_getattr",
- "sched_getparam",
- "sched_getscheduler",
- "sched_rr_get_interval",
- "sched_rr_get_interval_time64",
- "sched_setaffinity",
- "sched_setattr",
- "sched_setparam",
- "sched_setscheduler",
- "sched_yield",
- "seccomp",
- "select",
- "semctl",
- "semget",
- "semop",
- "semtimedop",
- "semtimedop_time64",
- "send",
- "sendfile",
- "sendfile64",
- "sendmmsg",
- "sendmsg",
- "sendto",
- "setns",
- "set_mempolicy",
- "set_robust_list",
- "set_thread_area",
- "set_tid_address",
- "setfsgid",
- "setfsgid32",
- "setfsuid",
- "setfsuid32",
- "setgid",
- "setgid32",
- "setgroups",
- "setgroups32",
- "setitimer",
- "setpgid",
- "setpriority",
- "setregid",
- "setregid32",
- "setresgid",
- "setresgid32",
- "setresuid",
- "setresuid32",
- "setreuid",
- "setreuid32",
- "setrlimit",
- "setsid",
- "setsockopt",
- "setuid",
- "setuid32",
- "setxattr",
- "shmat",
- "shmctl",
- "shmdt",
- "shmget",
- "shutdown",
- "sigaltstack",
- "signalfd",
- "signalfd4",
- "sigreturn",
- "socketcall",
- "socketpair",
- "splice",
- "stat",
- "stat64",
- "statfs",
- "statfs64",
- "statx",
- "symlink",
- "symlinkat",
- "sync",
- "sync_file_range",
- "syncfs",
- "sysinfo",
- "syslog",
- "tee",
- "tgkill",
- "time",
- "timer_create",
- "timer_delete",
- "timer_getoverrun",
- "timer_gettime",
- "timer_gettime64",
- "timer_settime",
- "timer_settime64",
- "timerfd_create",
- "timerfd_gettime",
- "timerfd_gettime64",
- "timerfd_settime",
- "timerfd_settime64",
- "times",
- "tkill",
- "truncate",
- "truncate64",
- "ugetrlimit",
- "umask",
- "umount",
- "umount2",
- "uname",
- "unlink",
- "unlinkat",
- "unshare",
- "utime",
- "utimensat",
- "utimensat_time64",
- "utimes",
- "vfork",
- "wait4",
- "waitid",
- "waitpid",
- "write",
- "writev"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {}
- },
- {
- "names": [
- "personality"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [
- {
- "index": 0,
- "value": 0,
- "valueTwo": 0,
- "op": "SCMP_CMP_EQ"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {}
- },
- {
- "names": [
- "personality"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [
- {
- "index": 0,
- "value": 8,
- "valueTwo": 0,
- "op": "SCMP_CMP_EQ"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {}
- },
- {
- "names": [
- "personality"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [
- {
- "index": 0,
- "value": 131072,
- "valueTwo": 0,
- "op": "SCMP_CMP_EQ"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {}
- },
- {
- "names": [
- "personality"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [
- {
- "index": 0,
- "value": 131080,
- "valueTwo": 0,
- "op": "SCMP_CMP_EQ"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {}
- },
- {
- "names": [
- "personality"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [
- {
- "index": 0,
- "value": 4294967295,
- "valueTwo": 0,
- "op": "SCMP_CMP_EQ"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {}
- },
- {
- "names": [
- "sync_file_range2"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "arches": [
- "ppc64le"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "arm_fadvise64_64",
- "arm_sync_file_range",
- "sync_file_range2",
- "breakpoint",
- "cacheflush",
- "set_tls"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "arches": [
- "arm",
- "arm64"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "arch_prctl"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "arches": [
- "amd64",
- "x32"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "modify_ldt"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "arches": [
- "amd64",
- "x32",
- "x86"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "s390_pci_mmio_read",
- "s390_pci_mmio_write",
- "s390_runtime_instr"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "arches": [
- "s390",
- "s390x"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "open_by_handle_at"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_DAC_READ_SEARCH"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "open_by_handle_at"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_DAC_READ_SEARCH"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "bpf",
- "fanotify_init",
- "lookup_dcookie",
- "perf_event_open",
- "quotactl",
- "setdomainname",
- "sethostname",
- "setns"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_SYS_ADMIN"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "bpf",
- "fanotify_init",
- "lookup_dcookie",
- "perf_event_open",
- "quotactl",
- "setdomainname",
- "sethostname",
- "setns"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_SYS_ADMIN"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "chroot"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_SYS_CHROOT"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "chroot"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_SYS_CHROOT"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "delete_module",
- "init_module",
- "finit_module",
- "query_module"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_SYS_MODULE"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "delete_module",
- "init_module",
- "finit_module",
- "query_module"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_SYS_MODULE"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "acct"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_SYS_PACCT"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "acct"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_SYS_PACCT"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "kcmp",
- "process_madvise",
- "process_vm_readv",
- "process_vm_writev",
- "ptrace"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_SYS_PTRACE"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "kcmp",
- "process_madvise",
- "process_vm_readv",
- "process_vm_writev",
- "ptrace"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_SYS_PTRACE"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "iopl",
- "ioperm"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_SYS_RAWIO"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "iopl",
- "ioperm"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_SYS_RAWIO"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "settimeofday",
- "stime",
- "clock_settime",
- "clock_settime64"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_SYS_TIME"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "settimeofday",
- "stime",
- "clock_settime",
- "clock_settime64"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_SYS_TIME"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "vhangup"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [],
- "comment": "",
- "includes": {
- "caps": [
- "CAP_SYS_TTY_CONFIG"
- ]
- },
- "excludes": {}
- },
- {
- "names": [
- "vhangup"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_SYS_TTY_CONFIG"
- ]
- },
- "errnoRet": 1,
- "errno": "EPERM"
- },
- {
- "names": [
- "socket"
- ],
- "action": "SCMP_ACT_ERRNO",
- "args": [
- {
- "index": 0,
- "value": 16,
- "valueTwo": 0,
- "op": "SCMP_CMP_EQ"
- },
- {
- "index": 2,
- "value": 9,
- "valueTwo": 0,
- "op": "SCMP_CMP_EQ"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_AUDIT_WRITE"
- ]
- },
- "errnoRet": 22,
- "errno": "EINVAL"
- },
- {
- "names": [
- "socket"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [
- {
- "index": 2,
- "value": 9,
- "valueTwo": 0,
- "op": "SCMP_CMP_NE"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_AUDIT_WRITE"
- ]
- }
- },
- {
- "names": [
- "socket"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [
- {
- "index": 0,
- "value": 16,
- "valueTwo": 0,
- "op": "SCMP_CMP_NE"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_AUDIT_WRITE"
- ]
- }
- },
- {
- "names": [
- "socket"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": [
- {
- "index": 2,
- "value": 9,
- "valueTwo": 0,
- "op": "SCMP_CMP_NE"
- }
- ],
- "comment": "",
- "includes": {},
- "excludes": {
- "caps": [
- "CAP_AUDIT_WRITE"
- ]
- }
- },
- {
- "names": [
- "socket"
- ],
- "action": "SCMP_ACT_ALLOW",
- "args": null,
- "comment": "",
- "includes": {
- "caps": [
- "CAP_AUDIT_WRITE"
- ]
- },
- "excludes": {}
- }
- ]
-}
systems/modules/editors/default.nix
@@ -1,29 +0,0 @@
-{ config, lib, ... }:
-let
- inherit (lib)
- mkIf
- mkOption
- mkOverride
- types
- ;
- cfg = config.modules.editors;
-in
-{
- imports = [
- ./vim.nix
- ./emacs.nix
- ./neovim.nix
- ];
- options.modules.editors = {
- default = mkOption {
- description = "default editor";
- type = types.str;
- default = "vim";
- };
- };
- config = mkIf (cfg.default != null) {
- environment.variables = {
- EDITOR = mkOverride 0 cfg.default;
- };
- };
-}
systems/modules/editors/emacs.nix
@@ -1,25 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.editors.emacs;
-in
-{
- options.modules.editors.emacs = {
- enable = mkEnableOption "enable emacs editor";
- };
- config = mkIf cfg.enable {
- # modules.editors.default = "emacs";
- # FIXME add a default configuration
- environment = {
- systemPackages = [ pkgs.emacs ];
- shellAliases = {
- e = "emacs";
- };
- };
- };
-}
systems/modules/editors/neovim.nix
@@ -1,20 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.editors.neovim;
-in
-{
- options.modules.editors.neovim = {
- enable = mkEnableOption "enable neovim editor";
- };
- config = mkIf cfg.enable {
- environment = {
- systemPackages = [ pkgs.neovim ];
- };
- };
-}
systems/modules/editors/vim.nix
@@ -1,23 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.editors.vim;
-in
-{
- options.modules.editors.vim = {
- enable = mkEnableOption "enable vim editor";
- };
- config = mkIf cfg.enable {
- environment = {
- systemPackages = [ pkgs.vim ];
- shellAliases = {
- v = "vim";
- };
- };
- };
-}
systems/modules/hardware/audio.nix
@@ -1,170 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib)
- mkEnableOption
- mkIf
- mkMerge
- mkOption
- types
- versionOlder
- ;
- cfg = config.modules.hardware.audio;
- stable = versionOlder config.system.nixos.release "24.05";
-in
-{
- options.modules.hardware.audio = {
- enable = mkEnableOption "enable audio";
- pulseaudio = {
- enable = mkEnableOption "enable pulseaudio";
- tcp = mkOption {
- default = false;
- description = "enable pulseaudio tcp";
- type = types.bool;
- };
- };
- pipewire = {
- enable = mkEnableOption "enable pipewire";
- };
- };
- config = mkIf cfg.enable (mkMerge [
- {
- # Enable sound (alsa)
- # sound.enable = true;
- # FIXME is it needed
- security.pam.loginLimits = [
- {
- domain = "@audio";
- item = "memlock";
- type = "-";
- value = "unlimited";
- }
- {
- domain = "@audio";
- item = "rtprio";
- type = "-";
- value = "99";
- }
- {
- domain = "@audio";
- item = "nofile";
- type = "-";
- value = "99999";
- }
- ];
- }
- (mkIf cfg.pipewire.enable {
- security.rtkit.enable = true;
- services.pipewire =
- {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
- wireplumber =
- {
- enable = true;
- }
- // (
- if stable then
- { }
- else
- {
- configPackages = [
- (pkgs.writeTextDir "share/wireplumber/bluetooth.lua.d/51-bluez-config.lua" ''
- bluez_monitor.properties = {
- ["bluez5.enable-sbc-xq"] = true,
- ["bluez5.enable-msbc"] = true,
- ["bluez5.enable-hw-volume"] = true,
- ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
- }
- '')
- ];
- }
- );
- }
- // (
- if stable then
- { }
- else
- {
- extraConfig = {
- pipewire-pulse = {
- "50-network-party.conf" = {
- # "context.modules" = [
- # { name = "libpipewire-module-protocol-native"; }
- # { name = "libpipewire-module-client-node"; }
- # { name = "libpipewire-module-adapter"; }
- # { name = "libpipewire-module-metadata"; }
- # ];
- "context.exec" = [
- {
- path = "pactl";
- args = "load-module module-native-protocol-tcp";
- }
- {
- path = "pactl";
- args = "load-module module-zeroconf-discover";
- }
- {
- path = "pactl";
- args = "load-module module-zeroconf-publish";
- }
- ];
- };
- };
- };
- }
- );
- networking.firewall = {
- allowedTCPPorts = [
- 6001
- 6002
- ];
- };
- })
- (mkIf cfg.pulseaudio.enable {
- # Enable and configure pulseaudio
- hardware.pulseaudio = {
- enable = true;
- support32Bit = true;
- zeroconf.discovery.enable = true;
- };
- })
- (mkIf (cfg.pulseaudio.enable || cfg.pipewire.enable) {
- # Add extra packages
- environment.systemPackages = with pkgs; [
- apulse # allow alsa application to use pulse
- pavucontrol # pulseaudio volume control
- pasystray # systray application
- pulseaudioFull # pactl, etc..
- ];
- })
- (mkIf (cfg.pulseaudio.enable && cfg.pulseaudio.tcp) {
- hardware.pulseaudio = {
- zeroconf = {
- discovery.enable = cfg.tcp;
- publish.enable = cfg.tcp;
- };
- tcp = {
- enable = cfg.tcp;
- anonymousClients = {
- allowAll = true;
- allowedIpRanges = [
- "127.0.0.1"
- "192.168.12.0/24"
- "10.0.0.0/24"
- ];
- };
- };
- };
- networking.firewall = {
- allowedTCPPorts = [ 4713 ];
- };
- })
- ]);
-}
systems/modules/hardware/bluetooth.nix
@@ -1,35 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf mkMerge;
- cfg = config.modules.hardware.bluetooth;
-in
-{
- options.modules.hardware.bluetooth = {
- enable = mkEnableOption "Enable bluetooth";
- };
-
- config = mkIf cfg.enable (mkMerge [
- {
- hardware.bluetooth.enable = true;
- # warnings = if stable then [ ] else [ "NixOS release: ${config.system.nixos.release}" ];
- }
- (mkIf config.modules.hardware.audio.pulseaudio.enable {
- hardware.pulseaudio = {
- # NixOS allows either a lightweight build (default) or full build of
- # PulseAudio to be installed. Only the full build has Bluetooth
- # support, so it must be selected here.
- package = pkgs.pulseaudioFull;
- };
- hardware.bluetooth.settings = {
- General = {
- Enable = "Source,Sink,Media,Socket";
- };
- };
- })
- ]);
-}
systems/modules/hardware/default.nix
@@ -1,11 +0,0 @@
-{
- imports = [
- ./audio.nix
- ./bluetooth.nix
- ./yubikey.nix
- ./laptop.nix
- ./server.nix
- # remove "nixos"
- ./sane-extra-config.nixos.nix
- ];
-}
systems/modules/hardware/laptop.nix
@@ -1,50 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf mkMerge;
- cfg = config.modules.hardware.laptop;
-in
-{
- options = {
- modules.hardware.laptop = {
- enable = mkEnableOption "Enable laptop profile";
- };
- };
- config = mkIf cfg.enable (mkMerge [
- {
- # Some systctl options for all laptops
- boot.kernel.sysctl = {
- "vm.swappiness" = 10;
- "vm.dirty_ratio" = 25;
- "vm.dirty_background_ratio" = 10;
- "vm.dirty_writeback_centisecs" = 5000;
- "vm.dirty_expire_centisecs" = 5000;
- };
- # Packages that are always useful for laptops
- environment.systemPackages = with pkgs; [
- lm_sensors
- powertop
- acpi
- ];
- # Run nix-gc only when on AC power
- systemd.services.nix-gc.unitConfig.ConditionACPower = true;
- # When a laptop is docked or on external power, ignore the lid state (if the laptop is opened or closed)
- services = {
- logind.extraConfig = ''
- HandleLidSwitchExternalPower=ignore
- HandleLidSwitchDocked=ignore
- '';
- };
- }
- (mkIf config.modules.desktop.enable {
- # FIXME to enable
- # Graphical interface, we can add additionnal packages
- # Enable setting power-profiles trough DBus
- services.power-profiles-daemon.enable = true;
- })
- ]);
-}
systems/modules/hardware/sane-extra-config.nixos.nix
@@ -1,42 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-with lib;
-let
- cfg = config.hardware.sane;
- # saneExtraConfig =
- # pkgs.runCommand "sane-extra-config"
- # { } ''
- # cp -Lr '${pkgs.mkSaneConfig { paths = [ pkgs.sane-backends ]; }}'/etc/sane.d $out
- # chmod +w $out
- # ${concatMapStrings
- # (
- # c: ''
- # f="$out/${c.name}.conf"
- # [ ! -e "$f" ] || chmod +w "$f"
- # cat ${builtins.toFile "" (c.value + "\n")} >>"$f"
- # chmod -w "$f"
- # ''
- # )
- # (mapAttrsToList nameValuePair cfg.extraConfig)}
- # chmod -w $out
- # '';
-in
-{
- options = {
- hardware.sane.extraConfig = mkOption {
- type = types.attrsOf types.lines;
- default = { };
- example = {
- "some-backend" = "# some lines to add to its .conf";
- };
- };
- };
-
- config = mkIf (cfg.enable && cfg.extraConfig != { }) {
- # hardware.sane.configDir = saneExtraConfig.outPath;
- };
-}
systems/modules/hardware/server.nix
@@ -1,13 +0,0 @@
-{ config, lib, ... }:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.hardware.server;
-in
-{
- options = {
- modules.hardware.server = {
- enable = mkEnableOption "Enable server profile";
- };
- };
- config = mkIf cfg.enable { };
-}
systems/modules/hardware/yubikey.nix
@@ -1,81 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib)
- mkEnableOption
- mkIf
- mkMerge
- mkOption
- types
- ;
- cfg = config.modules.hardware.yubikey;
-in
-{
- options = {
- modules.hardware.yubikey = {
- enable = mkEnableOption "Enable yubikey profile";
- agent = mkOption {
- default = true;
- description = "wether to enable yubikey-agent";
- type = types.bool;
- };
- u2f = mkOption {
- default = true;
- description = "wether to enable auth with yubkeys throguh pam using u2f";
- type = types.bool;
- };
- };
- };
- config = mkIf cfg.enable (mkMerge [
- {
- environment = {
- systemPackages = with pkgs; [
- yubico-piv-tool
- yubikey-personalization
- yubikey-manager
- age-plugin-yubikey
- ];
- };
- services = {
- pcscd.enable = true;
- udev = {
- packages = with pkgs; [ yubikey-personalization ];
- extraRules = ''
- # Yubico YubiKey
- KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0113|0114|0115|0116|0120|0402|0403|0406|0407|0410", TAG+="uaccess", MODE="0660", GROUP="wheel"
- # ACTION=="remove", ENV{ID_VENDOR_ID}=="1050", ENV{ID_MODEL_ID}=="0113|0114|0115|0116|0120|0402|0403|0406|0407|0410", RUN+="${pkgs.systemd}/bin/loginctl lock-sessions"
- '';
- };
- };
- }
- (mkIf config.modules.desktop.enable {
- environment.systemPackages = with pkgs; [
- yubioath-flutter
- ];
- programs.yubikey-touch-detector = {
- enable = true;
- };
- })
- (mkIf cfg.u2f {
- security.pam.u2f = {
- enable = true;
- origin = "pam://yubi";
- authFile = pkgs.writeText "u2f-mappings" (
- lib.concatStrings [
- "vincent"
- ":4IiWZI9g6D8W6LeAW13ug4CnS8PreNRcHdcebkUDny3gWGfmpMJg4TgBWaZSIdh+sgg4jQA4MxYwTCmmP/ipWQ==,qOl+ouBRk6MMEJiE7H5LuTAirhBhN0UQrCNlLQoRsVttp6IBKG4yq4zDwm4fmYlfy1MFhvh7oOapMOmodMKJpQ==,es256,+presence" # yubikey5-a
- ":Sz4J2qMhoE7bE/uzwUzjJxG/bE0s+cw18zXcQjRsLIdJTVbuMad1ivKlYeLZW6vWV0lYiODlRW21HTSaFzu06A==,p7OZ3z5fiAIuJRHVzm56Y8Ti934+4cVHjsG7kaapmz8cWPfXfXfj5c8QiyIz3EQ0hOoxVV5cbkzUTxe7hdQIsA==,es256,+presence" # yubikey5-c1
- ]
- );
- };
- })
- (mkIf cfg.agent {
- programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;
- services.yubikey-agent.enable = true;
- })
- ]);
-}
systems/modules/profiles/builder.nix
@@ -1,72 +0,0 @@
-{ config, lib, ... }:
-
-let
- inherit (lib)
- mkIf
- mkEnableOption
- importTOML
- filter
- ;
- cfg = config.profiles.externalbuilder;
- metadata = importTOML ../../../ops/hosts.toml;
- currentHostIP =
- if builtins.hasAttr "addrs" metadata.hosts.${config.networking.hostName} then
- metadata.hosts.${config.networking.hostName}.addrs.v4
- else
- "0.0.0.0";
- isCurrentHost = n: n.hostName != currentHostIP;
-in
-{
- options = {
- profiles.externalbuilder = {
- enable = mkEnableOption "Enable externalbuilder profile";
- };
- };
- config = mkIf cfg.enable {
- nix.distributedBuilds = true;
- # FIXME Redo this later
- # sops.secrets.builder = {
- # sopsFile = ../../../secrets/builder.yaml;
- # mode = "600";
- # path = "/etc/nix/builder.key";
- # };
-
- nix.buildMachines = filter isCurrentHost [
- {
- hostName = "${metadata.hosts.shikoku.addrs.v4}";
- inherit (metadata.hosts.shikoku.builder) maxJobs;
- sshUser = "builder";
- # sshKey = config.sops.secrets.builder.path;
- inherit (metadata.hosts.shikoku.builder) systems;
- supportedFeatures = metadata.hosts.shikoku.builder.features;
- }
- {
- hostName = "${metadata.hosts.aomi.addrs.v4}";
- inherit (metadata.hosts.aomi.builder) maxJobs;
- sshUser = "builder";
- # sshKey = config.sops.secrets.builder.path;
- inherit (metadata.hosts.aomi.builder) systems;
- supportedFeatures = metadata.hosts.aomi.builder.features;
- }
- ];
-
- programs.ssh.knownHosts = {
- "shikoku" = {
- hostNames = [
- "shikoku.home"
- "${metadata.hosts.shikoku.addrs.v4}"
- ];
- publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH18c6kcorVbK2TwCgdewL6nQf29Cd5BVTeq8nRYUigm";
- };
- "aomi" = {
- hostNames = [
- "aomi.home"
- "${metadata.hosts.aomi.addrs.v4}"
- ];
- publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFQVlSrUKU0xlM9E+sJ8qgdgqCW6ePctEBD2Yf+OnyME";
- };
- };
-
- };
-
-}
systems/modules/profiles/default.nix
@@ -1,7 +0,0 @@
-{
- imports = [
- ./builder.nix
- ./home.nix
- ./work.nix
- ];
-}
systems/modules/profiles/home.nix
@@ -1,112 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
- cfg = config.modules.profiles.home;
- secretPath = ../../../secrets/machines.nix;
- secretCondition = builtins.pathExists secretPath;
- machines = lib.optionalAttrs secretCondition (import secretPath);
-in
-{
- options = {
- modules.profiles.home = mkEnableOption "Enable home profile";
- };
- config = mkIf cfg {
- boot.kernelParams = [
- "nfs.nfs4_disable_idmapping=0"
- "nfsd.nfs4_disable_idmapping=0"
- ];
- networking = {
- domain = "home";
- hosts =
- with machines;
- mkIf secretCondition {
- "${home.ips.honshu}" = [ "honshu.home" ];
- "${home.ips.aion}" = [ "aion.home" ];
- "${home.ips.aomi}" = [ "aomi.home" ];
- "${wireguard.ips.aomi}" = [ "aomi.vpn" ];
- "${home.ips.shikoku}" = [ "shikoku.home" ];
- "${wireguard.ips.shikoku}" = [ "shikoku.vpn" ];
- # "${home.ips.wakasu}" = [ "wakasu.home" ];
- # "${wireguard.ips.wakasu}" = [ "wakasu.vpn" ];
- "${home.ips.hokkaido}" = [ "hokkaido.home" ];
- "${wireguard.ips.hokkaido}" = [ "hokkaido.vpn" ];
- # "${home.ips.sakhalin}" = [ "sakhalin.home" ];
- "${home.ips.sakhalin}" = [
- "sakhalin.home"
- "nix.cache.home"
- ];
- "${wireguard.ips.sakhalin}" = [ "sakhalin.vpn" ];
- "${home.ips.synodine}" = [ "synodine.home" ];
- "${home.ips.okinawa}" = [ "okinawa.home" ];
- "${wireguard.ips.okinawa}" = [ "okinawa.vpn" ];
- "${wireguard.ips.kerkouane}" = [ "kerkouane.vpn" ];
- "${wireguard.ips.naruhodo}" = [ "naruhodo.vpn" ];
- "${home.ips.demeter}" = [ "demeter.home" ];
- "${home.ips.athena}" = [ "athena.home" ];
- };
- };
- time.timeZone = "Europe/Paris";
- # To mimic autofs on fedora
- fileSystems = mkIf secretCondition {
- "/net/synodine.home" = {
- device = "${machines.home.ips.synodine}:/";
- fsType = "nfs";
- options = [
- "x-systemd.automount"
- "noauto"
- ];
- };
- # FIXME(vdemeester): I think it acts like this because there is only one export
- "/net/sakhalin.home/export" = {
- device = "${machines.home.ips.sakhalin}:/";
- fsType = "nfs";
- options = [
- "x-systemd.automount"
- "noauto"
- ];
- };
- # FIXME(vdemeester): Loop
- "/net/aion.home/export/documents" = {
- device = "aion.home:/export/documents";
- fsType = "nfs";
- options = [
- "x-systemd.automount"
- "noauto"
- ];
- };
- "/net/aion.home/export/downloads" = {
- device = "aion.home:/export/downloads";
- fsType = "nfs";
- options = [
- "x-systemd.automount"
- "noauto"
- ];
- };
- "/net/aion.home/export/music" = {
- device = "aion.home:/export/music";
- fsType = "nfs";
- options = [
- "x-systemd.automount"
- "noauto"
- ];
- };
- "/net/aion.home/export/pictures" = {
- device = "aion.home:/export/pictures";
- fsType = "nfs";
- options = [
- "x-systemd.automount"
- "noauto"
- ];
- };
- "/net/aion.home/export/videos" = {
- device = "aion.home:/export/videos";
- fsType = "nfs";
- options = [
- "x-systemd.automount"
- "noauto"
- ];
- };
- };
- };
-}
systems/modules/profiles/work.nix
@@ -1,97 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.modules.profiles.work;
-in
-{
- options = {
- modules.profiles.work = {
- redhat = mkEnableOption "Enable the Red Hat profiles (VPN, certs, …)";
- };
- };
- config = mkIf cfg.redhat {
- environment.systemPackages = with pkgs; [
- krb5
- (google-chrome.override {
- commandLineArgs = "--auth-negotiate-delegate-whitelist='*.redhat.com' --auth-server-whitelist=.redhat.com --enable-features=UseOzonePlatform --enable-gpu --ozone-platform=wayland";
- })
- libnotify
- ];
- # Kerberos
- age.secrets."krb5.conf" = {
- file = ../../../secrets/redhat/krb5.conf.age;
- path = "/etc/krb5.conf";
- mode = "444";
- group = "wheel";
- };
- # NetworkManager
- age.secrets."RHVPN.ovpn" = {
- file = ../../../secrets/redhat/RHVPN.ovpn.age;
- path = "/etc/NetworkManager/system-connections/RHVPN.ovpn";
- mode = "600";
- };
- age.secrets."redhat/AMS2.ovpn" = {
- file = ../../../secrets/redhat/AMS2.ovpn.age;
- path = "/etc/NetworkManager/system-connections/AMS2.ovpn";
- mode = "600";
- };
- age.secrets."BBRQ.ovpn" = {
- file = ../../../secrets/redhat/BBRQ.ovpn.age;
- path = "/etc/NetworkManager/system-connections/BBRQ.ovpn";
- mode = "600";
- };
- age.secrets."RDU2.ovpn" = {
- file = ../../../secrets/redhat/RDU2.ovpn.age;
- path = "/etc/NetworkManager/system-connections/RDU2.ovpn";
- mode = "600";
- };
- # Certificates
- age.secrets."ipa.crt" = {
- file = ../../../secrets/redhat/ipa.crt.age;
- path = "/etc/ipa/ipa.crt";
- mode = "444";
- };
- age.secrets."2015-RH-IT-Root-CA.pem" = {
- file = ../../../secrets/redhat/2015-RH-IT-Root-CA.pem.age;
- path = "/etc/pki/tls/certs/2015-RH-IT-Root-CA.pem";
- mode = "444";
- };
- age.secrets."Eng-CA.crt" = {
- file = ../../../secrets/redhat/Eng-CA.crt.age;
- path = "/etc/pki/tls/certs/Eng-CA.crt";
- mode = "444";
- };
- age.secrets."newca.crt" = {
- file = ../../../secrets/redhat/newca.crt.age;
- path = "/etc/pki/tls/certs/newca.crt";
- mode = "444";
- };
- age.secrets."oracle_ebs.crt" = {
- file = ../../../secrets/redhat/oracle_ebs.crt.age;
- path = "/etc/pki/tls/certs/oracle_ebs.crt";
- mode = "444";
- };
- age.secrets."pki-ca-chain.crt" = {
- file = ../../../secrets/redhat/pki-ca-chain.crt.age;
- path = "/etc/pki/tls/certs/pki-ca-chain.crt";
- mode = "444";
- };
- age.secrets."RH_ITW.crt" = {
- file = ../../../secrets/redhat/RH_ITW.crt.age;
- path = "/etc/pki/tls/certs/RH_ITW.crt";
- mode = "444";
- };
- age.secrets."win-intermediate-ca.cer" = {
- file = ../../../secrets/redhat/win-intermediate-ca.cer.age;
- path = "/etc/pki/tls/certs/win-intermediate-ca.cer";
- mode = "444";
- };
- };
-
-}
systems/modules/programs/crc.nix
@@ -1,32 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.programs.crc;
-in
-{
- options = {
- programs.crc = {
- enable = mkEnableOption "wether to enable crc";
- package = mkOption {
- default = pkgs.my.crc; # FIXME use pkgs.crc at some point
- description = "crc package to be used";
- type = types.package;
- };
- };
- };
-
- config = mkIf cfg.enable {
- environment.systemPackages = with pkgs; [ cfg.package ];
- networking.networkmanager.dns = "dnsmasq";
- environment.etc."NetworkManager/dnsmasq.d/crc.conf".text = ''
- server=/apps-crc.testing/192.168.130.11
- server=/crc.testing/192.168.130.11
- '';
- };
-}
systems/modules/programs/default.nix
@@ -1,5 +0,0 @@
-{
- imports = [
- ./crc.nix
- ];
-}
systems/modules/services/athens.nix
@@ -1,84 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.services.athens;
-in
-{
- options = {
- services.athens = {
- enable = mkEnableOption ''
- Athens is a go module proxy
- '';
- package = mkOption {
- type = types.package;
- default = pkgs.my.athens;
- description = ''
- Athens package to use.
- '';
- };
-
- user = mkOption {
- type = types.str;
- };
-
- group = mkOption {
- type = types.str;
- default = "nogroup";
- };
- };
- };
- config = mkIf cfg.enable {
- networking.firewall = {
- allowedTCPPorts = [ 3000 ];
- };
- systemd.packages = [ cfg.package ];
- environment.etc."athens/config.toml".text = ''
- GoBinary = "${pkgs.go}/bin/go"
- # what is that ?
- GoEnv = "development"
- GoGetWorkers = 30
- ProtocolWorkers = 30
- LogLevel = "debug"
- BuffaloLogLevel = "debug"
- Port = ":3000"
- ForceSSL = false
- CloudRuntime = "none"
- Timeout = 300
- StorageType = "disk"
-
- [Storage]
- [Storage.Disk]
- RootPath = "/var/lib/athens"
- '';
- systemd.services.athens = {
- description = "Athens service";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- preStart = ''
- mkdir -p /var/lib/athens
- '';
- environment = {
- HOME = "/var/lib/athens";
- };
- serviceConfig = {
- User = cfg.user;
- Restart = "on-failure";
- ExecStart = ''
- ${cfg.package}/bin/proxy -config_file=/etc/athens/config.toml
- '';
- };
- path =
- [ cfg.package ]
- ++ [
- pkgs.go
- pkgs.git
- ];
- };
- };
-}
systems/modules/services/avahi.nix
@@ -1,40 +0,0 @@
-{ config, lib, ... }:
-
-let
- inherit (lib) mkEnableOption mkIf versionOlder;
- cfg = config.modules.services.avahi;
- stable = versionOlder config.system.nixos.release "24.05";
-in
-{
- options = {
- modules.services.avahi = {
- enable = mkEnableOption "Enable avahi profile";
- };
- };
-
- config = mkIf cfg.enable {
- services = {
- avahi =
- {
- enable = true;
- ipv4 = true;
- ipv6 = true;
- publish = {
- enable = true;
- userServices = true;
- };
- openFirewall = true;
- }
- // (
- if stable then
- {
- nssmdns = true;
- }
- else
- {
- nssmdns4 = true;
- }
- );
- };
- };
-}
systems/modules/services/barrier.nix
@@ -1,18 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
- cfg = config.services.barrier;
-in
-{
- options = {
- services.barrier = {
- enable = mkEnableOption ''
- Barrier is a software kvm
- '';
- };
- };
- config = mkIf cfg.enable {
- networking.firewall.allowedTCPPorts = [ 24800 ];
- };
-}
systems/modules/services/bind.nix
@@ -1,70 +0,0 @@
-{ config, lib, ... }:
-
-let
- inherit (lib) mkIf mkEnableOption;
- cfg = config.modules.services.bind;
-in
-{
- options = {
- modules.services.bind = {
- enable = mkEnableOption "Enable bind profile";
- };
- };
- config = mkIf cfg.enable {
-
- services = {
- bind = {
- enable = true;
- forwarders = [
- "8.8.8.8"
- "8.8.4.4"
- ];
- extraOptions = ''
- dnssec-validation no;
- '';
- cacheNetworks = [
- "192.168.1.0/24"
- "127.0.0.0/8"
- "10.100.0.0/24"
- ];
- zones = [
- {
- # sbr
- name = "sbr.pm";
- master = true;
- slaves = [ ];
- file = ../../../secrets/db.sbr.pm;
- }
- {
- # home
- name = "home";
- master = true;
- slaves = [ ];
- file = ../../../secrets/db.home;
- }
- {
- # home.reverse
- name = "192.168.1.in-addr.arpa";
- master = true;
- slaves = [ ];
- file = ../../../secrets/db.192.168.1;
- }
- {
- # vpn
- name = "vpn";
- master = true;
- slaves = [ ];
- file = ../../../secrets/db.vpn;
- }
- {
- # vpn.reverse
- name = "10.100.0.in-addr.arpa";
- master = true;
- slaves = [ ];
- file = ../../../secrets/db.10.100.0;
- }
- ];
- };
- };
- };
-}
systems/modules/services/default.nix
@@ -1,14 +0,0 @@
-{
- imports = [
- ./avahi.nix
- ./barrier.nix
- ./bind.nix
- ./gosmee.nix
- ./govanityurl.nix
- ./nix-binary-cache.nix
- ./ssh.nix
- ./syncthing.nix
- ./wireguard.client.nix
- ./wireguard.server.nix
- ];
-}
systems/modules/services/gosmee.nix
@@ -1,52 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.services.gosmee;
-in
-{
- options = {
- services.gosmee = {
- enable = mkEnableOption ''
- gosmee is a webhook forwader/relayer
- '';
- package = mkOption {
- type = types.package;
- default = pkgs.gosmee;
- description = ''
- gosmee package to use.
- '';
- };
-
- public-url = mkOption {
- description = ''
- Public URL to show to user, useful when you are behind a proxy.
- '';
- type = types.str;
- default = "";
- };
- };
- };
- config = mkIf cfg.enable {
- systemd.packages = [ cfg.package ];
- systemd.services.gosmee = {
- description = "Gosmee service";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- # User = cfg.user;
- Restart = "on-failure";
- ExecStart = ''
- ${cfg.package}/bin/gosmee server \
- ${optionalString (cfg.public-url != "") "--public-url ${escapeShellArg cfg.public-url}"}
- '';
- };
- path = [ cfg.package ];
- };
- };
-}
systems/modules/services/govanityurl.nix
@@ -1,59 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.services.govanityurl;
-in
-{
- options = {
- services.govanityurl = {
- enable = mkEnableOption ''
- govanityurl is a go canonical path server
- '';
- package = mkOption {
- type = types.package;
- default = pkgs.my.govanityurl;
- description = ''
- govanityurl package to use.
- '';
- };
-
- user = mkOption {
- type = types.str;
- };
-
- host = mkOption {
- type = types.str;
- };
-
- config = mkOption {
- type = types.lines;
- };
- };
- };
- config = mkIf cfg.enable {
- systemd.packages = [ cfg.package ];
- environment.etc."govanityurl/config.yaml".text = ''
- host: ${cfg.host}
- ${cfg.config}
- '';
- systemd.services.govanityurl = {
- description = "Govanity service";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- User = cfg.user;
- Restart = "on-failure";
- ExecStart = ''
- ${cfg.package}/bin/vanityurl /etc/govanityurl/config.yaml
- '';
- };
- path = [ cfg.package ];
- };
- };
-}
systems/modules/services/nix-binary-cache.nix
@@ -1,94 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
- cfg = config.services.nix-binary-cache;
-in
-{
- options = {
- services.nix-binary-cache = {
- enable = mkEnableOption "Enable nix-binary-cache";
- domain = mkOption {
- description = "domain to serve";
- type = types.str;
- };
- aliases = mkOption {
- default = [ ];
- description = "server aliases to serve";
- type = types.listOf types.str;
- };
- };
- };
- config = mkIf cfg.enable {
- networking.firewall.allowedTCPPorts = [
- 80
- 443
- ];
- systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/public-nix-cache" ];
- services.nginx = {
- enable = true;
- appendHttpConfig = ''
- proxy_cache_path /var/public-nix-cache/ levels=1:2 keys_zone=cachecache:1200m max_size=20g inactive=365d use_temp_path=off;
- # Cache only success status codes; in particular we don't want to cache 404s.
- # See https://serverfault.com/a/690258/128321
- map $status $cache_header {
- 200 "public";
- 302 "public";
- default "no-cache";
- }
- access_log /var/public-nix-cache/access.log;
- '';
- virtualHosts."${cfg.domain}" = {
- serverAliases = cfg.aliases;
- # enableACME = true;
-
- locations."/" = {
- root = "/var/public-nix-cache/";
- extraConfig = ''
- expires max;
- add_header Cache-Control $cache_header always;
- # Ask the upstream server if a file isn't available locally
- error_page 404 = @fallback;
- '';
- };
- extraConfig = ''
- # Using a variable for the upstream endpoint to ensure that it is
- # resolved at runtime as opposed to once when the config file is loaded
- # and then cached forever (we don't want that):
- # see https://tenzer.dk/nginx-with-dynamic-upstreams/
- # This fixes errors like
- # nginx: [emerg] host not found in upstream "upstream.example.com"
- # when the upstream host is not reachable for a short time when
- # nginx is started.
- resolver 8.8.8.8;
- set $upstream_endpoint https://cache.nixos.org;
- '';
- locations."@fallback" = {
- proxyPass = "$upstream_endpoint";
- extraConfig = ''
- proxy_cache cachecache;
- proxy_cache_valid 200 302 60m;
- expires max;
- add_header Cache-Control $cache_header always;
- '';
- };
- # We always want to copy cache.nixos.org's nix-cache-info file,
- # and ignore our own, because `nix-push` by default generates one
- # without `Priority` field, and thus that file by default has priority
- # 50 (compared to cache.nixos.org's `Priority: 40`), which will make
- # download clients prefer `cache.nixos.org` over our binary cache.
- locations."= /nix-cache-info" = {
- # Note: This is duplicated with the `@fallback` above,
- # would be nicer if we could redirect to the @fallback instead.
- proxyPass = "$upstream_endpoint";
- extraConfig = ''
- proxy_cache cachecache;
- proxy_cache_valid 200 302 60m;
- expires max;
- add_header Cache-Control $cache_header always;
- '';
- };
- };
- };
- };
-}
systems/modules/services/ssh.nix
@@ -1,48 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
- cfg = config.modules.services.ssh;
-in
-{
- options = {
- modules.services.ssh = {
- enable = mkEnableOption "Enable ssh profile";
- listenAddresses = mkOption {
- type = types.listOf types.str;
- default = [ ];
- };
- forwardX11 = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Whether to allow X11 connections to be forwarded.
- '';
- };
- extraConfig = mkOption {
- type = types.lines;
- default = "";
- description = "Verbatim contents of <filename>sshd_config</filename>.";
- };
- };
- };
- config = mkIf cfg.enable {
- services = {
- openssh = {
- enable = true;
- startWhenNeeded = false;
- settings = {
- X11Forwarding = cfg.forwardX11;
- };
- # listenAddresses = map
- # Move this for kerkouane only
- extraConfig = ''
- StreamLocalBindUnlink yes
- ${cfg.extraConfig}
- '';
- };
- sshguard.enable = true;
- };
- programs.mosh.enable = true;
- };
-}
systems/modules/services/syncthing.nix
@@ -1,195 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
- # unstable = versionOlder config.system.nixos.release "21.05";
- cfg = config.modules.services.syncthing;
- isCurrentHost = n: _v: n != config.networking.hostName;
- isFull = n: v: (isCurrentHost n v) && v.full; # TODO: handle this
- devices = {
- wakasu = {
- id = "3P5BRF6-27NH2OX-3ZUI7EZ-BP4KCSE-EF2GMJL-DHUGPP2-OGHIJVO-LAJOMA7";
- addresses = [
- "tcp://wakasu.light"
- "tcp://wakasu.vpn"
- "tcp://wakasu.sbr.pm"
- ];
- full = true;
- };
- aomi = {
- id = "XCR6WWB-OZUDGFB-LQPFW73-MV5SPJK-4IGOMA4-IAXON3I-C6OFETL-TPK5FQS";
- addresses = [
- "tcp://aomi.vpn"
- "tcp://aomi.light"
- "tcp://aomi.sbr.pm"
- ];
- full = true;
- };
- sakhalin = {
- id = "4TYYG7V-A67D5SN-HMEJCI7-POOZRLL-RNCIE4U-ZYVGTOB-JQ5DOSV-ZCGWUAL";
- addresses = [
- "tcp://sakhalin.light"
- "tcp://sakhalin.vpn"
- "tcp://sakhalin.sbr.pm"
- ];
- full = true;
- };
- shikoku = {
- id = "KZMMXRR-UINDQTS-H3TV2W7-EIGOUDI-3LW4ZDG-7PRKDFV-MJ5KUTJ-YG5Y5AI";
- addresses = [
- "tcp://shikoku.light"
- "tcp://shikoku.vpn"
- "tcp://shikoku.sbr.pm"
- ];
- full = true;
- };
- kerkouane = {
- id = "IFVRRQ7-KMIOQXP-5YDJXQU-UJXUKHB-7THCSY6-B3NHRNA-ED7IRI7-2JPPKQY";
- addresses = [
- "tcp://10.100.0.1"
- "tcp://kerkouane.vpn"
- ];
- full = false;
- };
- aion = {
- id = "YORNSGU-UC4IAG5-IWJCD7T-MVPIU7O-AYM36UK-LEHF7AP-CBC4L6C-ZWKUYQF";
- addresses = [
- "tcp://aion.light"
- "tcp://aion.vpn"
- "tcp://aion.sbr.pm"
- ];
- full = true;
- };
- honshu = {
- id = "RGIR34D-3SH3GZK-CYPNNFI-5M5I2K4-HVTUS56-72GJTLH-SDMOY4I-I7AURQR";
- addresses = [
- "tcp://honshu.home"
- "tcp://honshu.sbr.pm"
- ];
- full = true;
- };
- okinawa = {
- id = "2RWT47Z-UGSH4QO-G4W6XN7-3XY722R-ZKGDN5U-4MDGHMA-6SM26QM-7VCQIAZ";
- addresses = [
- "tcp://okinawa.home"
- "tcp://okinawa.vpn"
- "tcp://okinawa.sbr.pm"
- ];
- full = true;
- };
- iphone = {
- # hokkaido
- id = "XD4XYNZ-DT3PJEY-UJYBHWX-6OQPPUI-HTW752L-FYTX3TW-GVHDTKW-PT336QV";
- # addresses = [ "tcp://okinawa.home" "tcp://okinawa.vpn" "tcp://okinawa.sbr.pm" ];
- full = false;
- };
- # Deprecated
- # naruhodo = {
- # id = "BKZN3FH-KRP4XRN-XFEVCCG-VANAUJN-YFAUS5Q-WUOLQQ7-II7I6PR-NVJZXQT";
- # addresses = [ "tcp://naruhodo.vpn" "tcp://naruhodo.home" ];
- # };
- };
- deviceNames = builtins.attrNames (filterAttrs isCurrentHost devices);
- fullDeviceNames = builtins.attrNames (filterAttrs isFull devices);
- musicDeviceNames = builtins.attrNames (
- filterAttrs isCurrentHost {
- inherit (devices) wakasu;
- inherit (devices) iphone;
- inherit (devices) aomi;
- inherit (devices) aion;
- }
- );
-in
-{
- options = {
- modules.services.syncthing = {
- enable = mkEnableOption "Enable syncthing profile";
- guiAddress = mkOption {
- type = types.str;
- default = "127.0.0.1:8384";
- description = ''
- The address to serve the web interface at.
- '';
- };
- };
- };
- config = mkIf cfg.enable {
- services.syncthing =
- if (builtins.hasAttr "devices" config.services.syncthing) then
- {
- enable = true;
- user = "vincent";
- dataDir = "/home/vincent/.syncthing";
- configDir = "/home/vincent/.syncthing";
- inherit (cfg) guiAddress;
- settings = {
- devices = filterAttrs isCurrentHost devices;
- folders =
- {
- "/home/vincent/sync" = {
- label = "sync";
- id = "7dshg-r8zr6";
- devices = deviceNames;
- };
- # "/home/vincent/desktop/notes" = {
- # label = "notes";
- # id = "q2eld-jylbu";
- # devices = deviceNames;
- # };
- "/home/vincent/desktop/org" = {
- label = "org";
- id = "sjpsr-xfwdu";
- devices = deviceNames;
- };
- }
- // (
- if (config.networking.hostName != "kerkouane") then
- {
- "/home/vincent/desktop/documents" = {
- label = "documents";
- id = "oftdb-t5anv";
- devices = fullDeviceNames;
- };
- "/home/vincent/desktop/pictures/screenshots" = {
- label = "screenshots";
- id = "prpsz-azlz9";
- devices = fullDeviceNames;
- };
- "/home/vincent/desktop/pictures/wallpapers" = {
- label = "wallpapers";
- id = "wpiah-ydwwx";
- devices = fullDeviceNames;
- };
- "/home/vincent/desktop/pictures/photos" = {
- label = "photos";
- id = "uetya-ypa3d";
- devices = fullDeviceNames;
- };
- }
- else
- { }
- )
- // (
- if (config.networking.hostName == "wakasu") then
- {
- "/home/vincent/desktop/music" = {
- label = "music";
- id = "kcyrf-mugzt";
- devices = musicDeviceNames;
- };
- }
- else
- { }
- );
- };
- }
- else
- {
- enable = true;
- user = "vincent";
- dataDir = "/home/vincent/.syncthing";
- configDir = "/home/vincent/.syncthing";
- inherit (cfg) guiAddress;
- };
- };
-}
systems/modules/services/wireguard.client.nix
@@ -1,70 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.services.wireguard;
-in
-{
- options = {
- services.wireguard = {
- enable = mkEnableOption "Whether to enable a reverse SSH proxy.";
- ips = mkOption {
- type = with types; listOf str;
- description = ''
- The client IPs
- '';
- };
- allowedIPs = mkOption {
- default = [ "10.100.0.0/24" ];
- type = with types; listOf str;
- description = ''
- The peer (server) allowedIPs
- '';
- };
- endpoint = mkOption {
- type = with types; str;
- description = ''
- The endpoint IP to target
- '';
- };
- endpointPort = mkOption {
- default = 51820;
- type = with types; int;
- description = ''
- The endpoint Port to target
- '';
- };
- endpointPublicKey = mkOption {
- type = with types; str;
- description = ''
- The peer (server) public key
- '';
- };
- };
- };
- config = mkIf cfg.enable {
- # boot.extraModulePackages = [ config.boot.kernelPackages.wireguard ];
- environment.systemPackages = [ pkgs.wireguard-tools ];
- networking.firewall.trustedInterfaces = [ "wg0" ];
- networking.wireguard.enable = true;
- networking.wireguard.interfaces = {
- wg0 = {
- inherit (cfg) ips;
- privateKeyFile = "/etc/nixos/secrets/wireguard/private.key";
- peers = [
- {
- publicKey = cfg.endpointPublicKey;
- inherit (cfg) allowedIPs;
- endpoint = "${cfg.endpoint}:${toString cfg.endpointPort}";
- persistentKeepalive = 25;
- }
- ];
- };
- };
- };
-}
systems/modules/services/wireguard.server.nix
@@ -1,44 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.modules.services.wireguard.server;
-
- secretPath = ../../../secrets/machines.nix;
- secretCondition = builtins.pathExists secretPath;
- allowedIPs = lists.optionals secretCondition (import secretPath).wireguard.kerkouane.allowedIPs;
- listenPort = if secretCondition then (import secretPath).wg.listenPort else 0;
- peers = lists.optionals secretCondition (import secretPath).wg.peers;
-in
-{
- options = {
- modules.services.wireguard.server = {
- enable = mkEnableOption "Enable wireguard.server profile";
- };
- };
- config = mkIf cfg.enable {
- # boot.extraModulePackages = [ config.boot.kernelPackages.wireguard ];
- environment.systemPackages = [ pkgs.wireguard-tools ];
- boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
- networking.firewall.extraCommands = ''
- iptables -t nat -A POSTROUTING -s10.100.0.0/24 -j MASQUERADE
- iptables -A FORWARD -i wg+ -j ACCEPT
- '';
- networking.firewall.allowedUDPPorts = [ 51820 ];
- networking.firewall.trustedInterfaces = [ "wg0" ];
- networking.wireguard.enable = true;
- networking.wireguard.interfaces = {
- "wg0" = {
- ips = allowedIPs;
- inherit listenPort;
- privateKeyFile = "/etc/nixos/secrets/wireguard/private.key";
- inherit peers;
- };
- };
- };
-}
systems/modules/shell/git/config
@@ -1,43 +0,0 @@
-[alias]
- co = checkout
- st = status
- ci = commit --signoff
- ca = commit --amend
- b = branc --color -v
- br = branch
- unstage = reset HEAD
- lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
- lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --branches --remotes
- lol = log --pretty=oneline --abbrev-commit --graph --decorate
- conflicts = !git ls-files --unmerged | cut -c51- | sort -u | xargs $EDITOR
- resolve = !git ls-files --unmerged | cut -c51- | sort -u | xargs git add
-[color]
- branch = auto
- diff = auto
- status = auto
-[color "branch"]
- current = cyan reverse
- local = cyan
- remote = green
-[color "diff"]
- meta = white reverse
- frag = magenta reverse
- old = red
- new = green
-[color "status"]
- added = green
- changed = yellow
- untracked = red
-[core]
- excludesfile = /etc/gitignore
-[push]
- default = matching
-[merge]
- tool = vimdiff
-[user]
- name = Vincent Demeester
- email = vincent@sbr.pm
-[http]
- cookiefile = /home/vincent/.gitcookies
-[url "git@github.com:"]
- pushInsteadOf = git://github.com/
systems/modules/shell/git/ignore
@@ -1,61 +0,0 @@
-# For emacs:
-*~
-*.*~
-\#*
-.\#*
-
-# For vim:
-*.swp
-.*.sw[a-z]
-*.un~
-Session.vim
-.netrwhist
-
-# Ignore tags (from etags and ctags)
-TAGS
-!TAGS/
-tags
-!tags/
-
-# Logs and databases #
-######################
-*.log
-*.cache
-
-# OS generated files #
-######################
-.DS_Store?
-.DS_Store
-.CFUserTextEncoding
-.Trash
-.Xauthority
-thumbs.db
-Icon?
-Thumbs.db
-.cache
-.pid
-.sock
-
-# Code stuffs #
-###############
-.svn
-.git
-.swp
-.idea
-.*.swp
-*~
-.tags
-tags
-.sass-cache
-tmp
-.codekit-cache
-config.codekit
-
-# Compiled thangs #
-###################
-*.class
-*.exe
-*.o
-*.so
-*.dll
-*.pyc
systems/modules/shell/default.nix
@@ -1,10 +0,0 @@
-{ ... }:
-{
- imports = [
- ./direnv.nix
- ./git.nix
- ./gnupg.nix
- ./tmux.nix
- ./zsh.nix
- ];
-}
systems/modules/shell/direnv.nix
@@ -1,25 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.shell.direnv;
-in
-{
- options.modules.shell.direnv = {
- enable = mkEnableOption "enable direnv";
- };
- config = mkIf cfg.enable {
- programs.direnv.enable = true;
- environment = {
- # Path to link from packages to /run/current-system/sw
- pathsToLink = [
- "/share/nix-direnv"
- ];
- systemPackages = [ pkgs.direnv ];
- };
- };
-}
systems/modules/shell/git.nix
@@ -1,29 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.shell.git;
-in
-{
- options.modules.shell.git = {
- enable = mkEnableOption "enable git";
- };
- config = mkIf cfg.enable {
- environment = {
- # Install some packages
- systemPackages = with pkgs; [
- git
- # gitAndTools.git-extras
- (mkIf config.modules.shell.gnupg.enable gitAndTools.git-crypt)
- lazygit
- ];
- # Default gitconfig
- etc."gitconfig".source = ./git/config;
- etc."gitignore".source = ./git/ignore;
- };
- };
-}
systems/modules/shell/gnupg.nix
@@ -1,21 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.shell.gnupg;
-in
-{
- options.modules.shell.gnupg = {
- enable = mkEnableOption "enable gnupg";
- };
- config = mkIf cfg.enable {
- environment = {
- # variables.GNUPGHOME = "$XDG_CONFIG_HOME/gnupg";
- systemPackages = [ pkgs.gnupg ];
- };
- };
-}
systems/modules/shell/tmux.nix
@@ -1,18 +0,0 @@
-{ config, lib, ... }:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.modules.shell.tmux;
-in
-{
- options.modules.shell.tmux = {
- enable = mkEnableOption "enable tmux";
- };
- config = mkIf cfg.enable {
- programs.tmux = {
- enable = true;
- clock24 = true;
- escapeTime = 0;
- terminal = "tmux-256color";
- };
- };
-}
systems/modules/shell/zsh.nix
@@ -1,20 +0,0 @@
-{ config, lib, ... }:
-let
- inherit (lib) mkOption mkIf types;
- cfg = config.modules.shell.zsh;
-in
-{
- options.modules.shell.zsh = {
- enable = mkOption {
- default = true;
- description = "Enable zsh profile";
- type = types.bool;
- };
- };
- config = mkIf cfg.enable {
- programs.zsh = {
- enable = true;
- enableCompletion = true;
- };
- };
-}
systems/modules/virtualisation/buildkit.nix
@@ -1,123 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.virtualisation.buildkitd;
- inherit (lib) mkOption mkIf;
- inherit (lib.types)
- attrsOf
- str
- nullOr
- path
- bool
- package
- listOf
- ;
-
- configFile =
- if cfg.configFile == null then
- settingsFormat.generate "buildkitd.toml" cfg.settings
- else
- cfg.configFile;
-
- settingsFormat = pkgs.formats.toml { };
-in
-{
- options.virtualisation.buildkitd = {
- enable = mkOption {
- type = bool;
- default = false;
- description = ''This option enables buildkitd'';
- };
-
- package = mkOption {
- default = pkgs.buildkit;
- type = package;
- example = pkgs.buildkit;
- description = ''
- Buildkitd package to be used in the module
- '';
- };
-
- packages = mkOption {
- type = listOf package;
- default = [
- pkgs.runc
- pkgs.git
- ];
- description = "List of packages to be added to buildkitd service path";
- };
-
- configFile = lib.mkOption {
- default = null;
- description = ''
- Path to containerd config file.
- Setting this option will override any configuration applied by the settings option.
- '';
- type = nullOr path;
- };
-
- args = lib.mkOption {
- default = { };
- description = "extra args to append to the containerd cmdline";
- type = attrsOf str;
- };
-
- settings = lib.mkOption {
- inherit (settingsFormat) type;
- default = {
- grpc.address = [ "unix:///run/buildkit/buildkitd.sock" ];
- };
- description = ''
- Verbatim lines to add to containerd.toml
- '';
- };
- };
-
- config = mkIf cfg.enable {
- users.groups.buildkit.gid = 350;
- environment.systemPackages = [ cfg.package ];
- systemd.packages = [ cfg.package ];
-
- virtualisation.buildkitd = {
- args = {
- group = "buildkit";
- config = toString configFile;
- };
- settings = {
- debug = false;
- };
- };
-
- systemd.services.buildkitd = {
- after = [
- "network.target"
- "containerd.service"
- ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- ExecStart = ''${cfg.package}/bin/buildkitd ${
- lib.concatStringsSep " " (lib.cli.toGNUCommandLine { } cfg.args)
- }'';
- Delegate = "yes";
- KillMode = "process";
- Type = "notify";
- Restart = "always";
- RestartSec = "10";
-
- # "limits" defined below are adopted from upstream: https://github.com/containerd/containerd/blob/master/containerd.service
- LimitNPROC = "infinity";
- LimitCORE = "infinity";
- LimitNOFILE = "infinity";
- TasksMax = "infinity";
- OOMScoreAdjust = "-999";
- };
- path = [ cfg.package ] ++ cfg.packages;
- };
-
- };
-
-}
systems/modules/virtualisation/containerd.nix
@@ -1,90 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- cfg = config.virtualisation.mycontainerd;
-
- inherit (lib) mkOption types mkIf;
-in
-{
- options.virtualisation.mycontainerd = {
- enable = mkOption {
- type = types.bool;
- default = false;
- description = ''
- This option enables containerd, a daemon that manages linux containers.
- '';
- };
-
- autostart = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Start containerd automatically.
- '';
- };
-
- package = mkOption {
- default = pkgs.containerd;
- type = types.package;
- example = pkgs.containerd;
- description = ''
- Containerd package to be used in the module
- '';
- };
-
- extraPackages = mkOption {
- type = types.listOf types.package;
- default = [
- pkgs.runc
- pkgs.cni
- pkgs.cni-plugins
- ];
- description = "List of packages to be added to containerd service path";
- };
-
- extraOptions = mkOption {
- type = types.separatedString " ";
- default = "";
- description = ''
- The extra command-line options to pass to
- <command>containerd</command> daemon.
- '';
- };
- };
-
- config = mkIf cfg.enable {
- environment.systemPackages = [ cfg.package ];
- systemd.packages = [ cfg.package ];
-
- systemd.services.containerd = {
- wantedBy = lib.optional cfg.autostart [ "multi-user.target" ];
- serviceConfig = {
- ExecStart = [
- ""
- ''
- ${cfg.package}/bin/containerd \
- ${cfg.extraOptions}
- ''
- ];
- };
- path = [ cfg.package ] ++ cfg.extraPackages;
- };
-
- systemd.sockets.containerd = {
- description = "Containerd Socket for the API";
- wantedBy = [ "sockets.target" ];
- socketConfig = {
- ListenStream = "/run/containerd/containerd.sock";
- SocketMode = "0660";
- SocketUser = "root";
- SocketGroup = "root";
- };
- };
-
- };
-
-}
systems/modules/virtualisation/default.nix
@@ -1,9 +0,0 @@
-{
- imports = [
- # ./buildkit.nix # sourced in flake direclty
- ./libvirt.nix
- # Containerd is now a module upstream
- # FIXME: remove this when 21.05 is out.
- ./containerd.nix
- ];
-}
users/houbeb/default.nix
@@ -1,18 +0,0 @@
-{ lib, pkgs, ... }:
-
-let
- inherit (lib) importTOML;
- metadata = importTOML ../../ops/hosts.toml;
-in
-{
- users.users.houbeb = {
- createHome = true;
- description = "Houbeb Ben Othmene";
- extraGroups = [ "wheel" ];
- isNormalUser = true;
- openssh.authorizedKeys.keys = metadata.ssh.keys.houbeb;
- };
- home-manager.users.houbeb = {
- home.packages = with pkgs; [ hello ];
- };
-}
users/modules/profiles/default.nix
@@ -1,5 +0,0 @@
-{
- imports = [
- ./mails.nix
- ];
-}
users/modules/profiles/mails.nix
@@ -1,224 +0,0 @@
-# Generated from an org file 💃
-# See : https://sbr.pm/technical/configurations/mails.html
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- cfg = config.profiles.mails;
-in
-{
-
- options = {
- profiles.mails = {
- enable = mkEnableOption "Enable mails configuration";
- sync = mkEnableOption "Enable sync mail service";
- frequency = mkOption {
- default = "*:0/30";
- description = "Frequency at which the mail should be checked";
- type = types.str;
- };
- };
- };
-
- config = mkIf cfg.enable (mkMerge [
- {
- accounts.email = {
- maildirBasePath = "desktop/mails";
- accounts = {
- "redhat" = {
- address = "vdemeest@redhat.com";
- userName = "vdemeest@redhat.com";
- realName = "Vincent Demeester";
- passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/rh.pass -d ${config.home.homeDirectory}/desktop/documents/0\ Archives/rh.pass.gpg";
- imap.host = "imap.gmail.com";
- smtp.host = "smtp.gmail.com";
- mbsync = {
- enable = true;
- create = "both";
- expunge = "both";
- patterns = [
- "*"
- "![Gmail]*"
- "[Gmail]/Sent Mail"
- "[Gmail]/Starred"
- "[Gmail]/All Mail"
- ];
- extraConfig = {
- channel = {
- Sync = "All";
- };
- account = {
- Timeout = 120;
- PipelineDepth = 1;
- };
- };
- };
- notmuch.enable = cfg.sync;
- # astroid.enable = cfg.sync;
- msmtp.enable = true;
- };
- "perso" = {
- address = "vinc.demeester@gmail.com";
- userName = "vinc.demeester@gmail.com";
- realName = "Vincent Demeester";
- passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/perso.pass -d ${config.home.homeDirectory}/desktop/documents/0\ Archives/perso.pass.gpg";
- imap.host = "imap.gmail.com";
- smtp.host = "smtp.gmail.com";
- mbsync = {
- enable = true;
- create = "both";
- expunge = "both";
- patterns = [
- "*"
- "![Gmail]*"
- "[Gmail]/Sent Mail"
- "[Gmail]/Starred"
- "[Gmail]/All Mail"
- ];
- extraConfig = {
- channel = {
- Sync = "All";
- };
- account = {
- Timeout = 120;
- PipelineDepth = 1;
- };
- };
- };
- notmuch.enable = cfg.sync;
- # astroid.enable = cfg.sync;
- msmtp.enable = true;
- };
- "prv" = {
- primary = true;
- address = "vincent@demeester.fr";
- userName = "vincent@demeester.fr";
- realName = "Vincent Demeester";
- passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/prv.pass -d ${config.home.homeDirectory}/desktop/documents/prv.pass.gpg";
- imap.host = "mail.gandi.net";
- smtp.host = "mail.gandi.net";
- mbsync = {
- enable = true;
- create = "both";
- expunge = "both";
- patterns = [ "*" ];
- extraConfig = {
- channel = {
- Sync = "All";
- };
- account = {
- Timeout = 120;
- PipelineDepth = 1;
- };
- };
- };
- notmuch.enable = cfg.sync;
- # astroid.enable = cfg.sync;
- msmtp.enable = true;
- };
- };
- };
-
- home.file."bin/msmtp" = {
- text = ''
- #!${pkgs.stdenv.shell}
- ${pkgs.libnotify}/bin/notify-send "Sending mail ✉️"
- ${pkgs.msmtp}/bin/msmtp --read-envelope-from $@
- '';
- executable = true;
- };
-
- programs.msmtp.enable = true;
-
- }
-
- (mkIf cfg.sync {
-
- services.mbsync = {
- enable = true;
- preExec = "${config.xdg.configHome}/mbsync/preExec";
- postExec = "${config.xdg.configHome}/mbsync/postExec";
- inherit (cfg) frequency;
- };
-
- xdg.configFile."mbsync/preExec" = {
- text = ''
- #!${pkgs.stdenv.shell}
-
- export NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/notmuchrc
- export NMBGIT=${config.xdg.dataHome}/notmuch/nmbug
-
- ${pkgs.coreutils}/bin/mkdir -p ${config.home.homeDirectory}/desktop/mails/redhat ${config.home.homeDirectory}/desktop/mails/perso
- ${pkgs.afew}/bin/afew -C ${config.xdg.configHome}/notmuch/notmuchrc -m -v || true
- '';
- executable = true;
- };
-
- xdg.configFile."mbsync/postExec" = {
- text = ''
- #!${pkgs.stdenv.shell}
-
- export NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/notmuchrc
- export NMBGIT=${config.xdg.dataHome}/notmuch/nmbug
-
- ${pkgs.notmuch}/bin/notmuch new
- ${pkgs.afew}/bin/afew -C ${config.xdg.configHome}/notmuch/notmuchrc --tag --new -v
- # Remove inbox (lower-case)
- ${pkgs.notmuch}/bin/notmuch tag -inbox -- tag:inbox
- # Remove Inbox tagged message that are not in an Inbox
- ${pkgs.notmuch}/bin/notmuch tag -Inbox -- not folder:redhat/Inbox and not folder:perso/Inbox and tag:Inbox
- ${pkgs.libnotify}/bin/notify-send "Mails synced 📬"
- '';
- executable = true;
- };
-
- home.file."bin/msync" = {
- text = ''
- #!${pkgs.stdenv.shell}
- ${pkgs.libnotify}/bin/notify-send "Syncing mails 📫️"
- systemctl --user start mbsync
- '';
- executable = true;
- };
-
- programs.mbsync.enable = true;
- programs.notmuch.enable = true;
-
- programs.afew = {
- enable = true;
- extraConfig = ''
- [SpamFilter]
- [KillThreadsFilter]
- [ListMailsFilter]
- [ArchiveSentMailsFilter]
- [FolderNameFilter]
- maildir_separator = /
-
- [MailMover]
- folders = perso/Inbox redhat/Inbox
- rename = true
-
- perso/Inbox = 'NOT tag:Inbox':"perso/[Gmail]/All Mail"
- redhat/Inbox = 'NOT tag:Inbox':"redhat/[Gmail]/All Mail"
- '';
- };
-
- programs.astroid = {
- enable = false;
- externalEditor = "emacsclient -c";
- extraConfig = {
- startup.queries.inbox = "tag:Inbox";
- startup.queries.inbox_perso = "folder:perso/Inbox";
- startup.queries.inbox_redhat = "folder:redhat/Inbox";
- };
- };
-
- })
-
- ]);
-}
users/modules/services/default.nix
@@ -1,4 +0,0 @@
-{
- imports = [
- ];
-}
users/modules/default.nix
@@ -1,6 +0,0 @@
-{
- imports = [
- ./profiles
- ./services
- ];
-}
users/modules/modules.nix
@@ -1,4 +0,0 @@
-[
- ./services
- ./profiles
-]
users/root/default.nix
@@ -1,39 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- inherit (lib)
- mkIf
- optionals
- versionOlder
- importTOML
- ;
- metadata = importTOML ../../ops/hosts.toml;
-in
-{
- users.users.root = {
- shell = mkIf config.programs.zsh.enable pkgs.zsh;
- openssh.authorizedKeys.keys = metadata.ssh.keys.root;
- };
- home-manager.users.root = lib.mkMerge (
- [
- (import ../vincent/core/zsh.nix)
- (import ../vincent/core/ssh.nix)
- ]
- ++ optionals (versionOlder config.system.nixos.release "21.11") [
- {
- # manpages are broken on 21.05 and home-manager (for some reason..)
- manual.manpages.enable = false;
- }
- ]
- ++ [
- {
- home.stateVersion = "22.05";
- }
- ]
- );
-}
users/vincent/containers/chos4.desktop
@@ -1,6 +0,0 @@
-[Desktop Entry]
-Name=chos4
-Exec=chos4
-Type=Application
-Terminal=true
-Categories=System;
users/vincent/containers/default.nix
@@ -1,16 +0,0 @@
-{ pkgs, ... }:
-
-{
- imports = [
- ./gcloud.nix
- ];
-
- home.packages = with pkgs; [
- skopeo
- my.manifest-tool
- # nerdctl
- # act
- oras
- dagger
- ];
-}
users/vincent/containers/gcloud.nix
@@ -1,15 +0,0 @@
-{ pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- (google-cloud-sdk.withExtraComponents (
- with google-cloud-sdk.components;
- [
- gke-gcloud-auth-plugin
- gcloud-man-pages
- cloud-run-proxy
- terraform-tools
- ]
- ))
- ];
-}
users/vincent/containers/kubernetes.nix
@@ -1,30 +0,0 @@
-{ lib, pkgs, ... }:
-
-with lib;
-let
- knd = pkgs.writeScriptBin "knd" ''
- #!${pkgs.stdenv.shell}
- ${pkgs.kubectl}/bin/kubectl get namespaces -o name | ${pkgs.fzf}/bin/fzf --multi | xargs kubectl delete
- '';
-in
-{
- home.packages = with pkgs; [
- kail
- kubectl
- kustomize
- kind
- ko
- crane
- krew
- kss
- # our own scripts
- knd
- # bekind
- my.chmouzies.kubernetes
- # kubectx
- kubelogin-oidc
- ];
- programs.zsh.initExtra = ''
- alias -g SK="|snazy -s --kail --kail-prefix-format='{pod}'"
- '';
-}
users/vincent/containers/openshift.nix
@@ -1,13 +0,0 @@
-{ pkgs, ... }:
-
-{
- home.file.".local/share/applications/chos4.desktop".source = ./chos4.desktop;
- home.packages = with pkgs; [
- oc
- omc
- openshift-install
- operator-sdk
- opm
- my.operator-tool
- ];
-}
users/vincent/containers/tekton.nix
@@ -1,14 +0,0 @@
-{ pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- tektoncd-cli
- kubernetes-helm
- snazy
- tkn-pac
- tkn-local
- rekor-cli
- cosign
- python312Packages.pyaml
- ];
-}
users/vincent/core/ape/ape.conf
@@ -1,73 +0,0 @@
-# mirrors
-git@gitlab.com:vdemeester/nur-packages.git git@github.com:vdemeester/nur-packages.git
-git@gitlab.com:vdemeester/machines.git git@github.com:vdemeester/machines.git
-git@gitlab.com:vdemeester/ergodox.git git@github.com:vdemeester/ergodox.git
-
-# docker & co
-git@github.com:vdemeester/docker.git https://github.com/docker/docker.git
-git@github.com:vdemeester/cli.git https://github.com/docker/cli.git
-git@github.com:vdemeester/app.git https://github.com/docker/app.git
-git@github.com:vdemeester/docker-py.git https://github.com/docker/docker-py.git
-git@github.com:vdemeester/compose.git https://github.com/docker/compose.git
-git@github.com:vdemeester/libcompose.git https://github.com/docker/libcompose.git
-git@github.com:vdemeester/swarmkit.git https://github.com/docker/swarmkit.git
-git@github.com:vdemeester/go-units.git https://github.com/docker/go-units.git
-git@github.com:vdemeester/go-connections.git https://github.com/docker/go-connections.git
-
-# kubernetes
-git@github.com:vdemeester/kubernetes.git https://github.com/kubernetes/kubernetes.git
-git@github.com:vdemeester/kubernetes-test-infra.git https://github.com/kubernetes/test-infra.git
-
-# knative
-git@github.com:vdemeester/knative-serving.git https://github.com/knative/serving.git
-git@github.com:vdemeester/knative-pkg.git https://github.com/knative/pkg.git
-
-# tekton
-git@github.com:vdemeester/tektoncd-pipeline.git https://github.com/tektoncd/pipeline.git
-git@github.com:vdemeester/tektoncd-dashboard.git https://github.com/tektoncd/dashboard.git
-git@github.com:vdemeester/tektoncd-catalog.git https://github.com/tektoncd/catalog.git
-git@github.com:vdemeester/tektoncd-plumbing.git https://github.com/tektoncd/plumbing.git
-git@github.com:vdemeester/tektoncd-experimental.git https://github.com/tektoncd/experimental.git
-git@github.com:vdemeester/tektoncd-cli.git https://github.com/tektoncd/cli.git
-git@github.com:vdemeester/tektoncd-hub.git https://github.com/tektoncd/hub.git
-git@github.com:vdemeester/tektoncd-triggers.git https://github.com/tektoncd/triggers.git
-git@github.com:vdemeester/tektoncd-operator.git https://github.com/tektoncd/operator.git
-git@github.com:vdemeester/tektoncd-community.git https://github.com/tektoncd/community.git
-
-# openshift-pipelines
-git@github.com:vdemeester/openshift-pipelines-knowledge-base.git git@github.com:openshift-pipelines/knowledge-base.git
-
-# openshift
-git@github.com:vdemeester/source-to-image.git https://github.com/openshift/source-to-image.git
-git@github.com:vdemeester/imagebuilder.git https://github.com/openshift/imagebuilder.git
-git@github.com:vdemeester/origin.git https://github.com/openshift/origin.git
-git@github.com:vdemeester/release.git https://github.com/openshift/release.git
-git@github.com:vdemeester/openshift-pipelines-catalog.git https://github.com/openshift/pipelines-catalog.git
-
-# containers
-git@github.com:vdemeester/libpod.git https://github.com/containers/libpod.git
-git@github.com:vdemeester/containers-image.git https://github.com/containers/image.git
-git@github.com:vdemeester/containers-storage.git https://github.com/containers/storage.git
-git@github.com:vdemeester/skopeo.git https://github.com/containers/skopeo.git
-git@github.com:vdemeester/buildah.git https://github.com/containers/buildah.git
-
-# other red hat projects
-git@github.com:vdemeester/odo.git https://github.com/redhat-developer/odo.git
-
-# moby
-git@github.com:vdemeester/containerd.git https://github.com/containerd/containerd.git
-git@github.com:vdemeester/runc.git https://github.com/opencontainers/runc.git
-git@github.com:vdemeester/buildkit.git https://github.com/moby/buildkit.git
-git@github.com:vdemeester/linuxkit.git https://github.com/linuxkit/linuxkit.git
-
-git@github.com:vdemeester/gotest.tools.git https://github.com/gotestyourself/gotest.tools.git
-git@github.com:vdemeester/mergo.git https://github.com/imdario/mergo.git
-git@github.com:vdemeester/prm.git https://github.com/ldez/prm.git
-
-git@github.com:vdemeester/traefik.git https://github.com/containous/traefik.git
-
-git@github.com:vdemeester/home-manager.git https://github.com/rycee/home-manager.git
-git@github.com:vdemeester/nixpkgs.git https://github.com/NixOS/nixpkgs.git
-
-# google
-git@github.com:vdemeester/go-containerregistry.git https://github.com/google/go-containerregistry.git
users/vincent/core/git/redhat.gitconfig
@@ -1,3 +0,0 @@
-[user]
- name = Vincent Demeester
- email = vdemeest@redhat.com
\ No newline at end of file
users/vincent/core/tmux/tmux.conf
@@ -1,97 +0,0 @@
-# Tmux configuration file
-# Documented by Vincent Demeester.
-# Note that I am using bepo keyboard (that why key binding might be a
-# little weird for you).
-# First thing first, quickly reload $HOME/.tmux.conf
-#bind o source-file ~/.tmux.conf; display "tmux configuration reloaded."
-set -g history-limit 500000
-# Be sure to deactive the mode
-# set -g mode-mouse off
-# By default tmux adds a small delay when sending commands.
-# Reducing this delay by setting escape-time.
-set -sg escape-time 1
-bind v paste-buffer
-# Vim-behavior for moving between panes
-bind c select-pane -L
-bind t select-pane -D
-bind s select-pane -U
-bind r select-pane -R
-# Re-binding new-window and kill-pane to something more bepo-ish
-bind x new-window
-unbind c
-bind y kill-pane
-# Re-binding list-of-session
-bind u list-sessions
-# Vim-behavior for moving between windows
-bind -r C-t select-window -t :-
-bind -r C-s select-window -t :+
-# Vim-behavior for resizing panes
-bind -r C resize-pane -L 5
-bind -r T resize-pane -D 5
-bind -r S resize-pane -U 5
-bind -r R resize-pane -R 5
-# vi-mode for copy.
-set -g mode-key vi
-# `PREFIX`-`ESCAPE` for going into copy mode
-bind-key ESCAPE copy-mode
-bind-key b copy-mode
-# Rebinding some vi-copy keys in a more bepoish fashion.
-#bind-key -Tvi-copy 'v' begin-selection
-#bind-key -Tvi-copy 'y' copy-selection
-#bind-key -Tvi-copy 'C' top-line
-#bind-key -Tvi-copy 'T' scroll-down
-#bind-key -Tvi-copy 'S' scroll-up
-#bind-key -Tvi-copy 'R' bottom-line
-#bind-key -Tvi-copy 'c' cursor-left
-#bind-key -Tvi-copy 't' cursor-down
-#bind-key -Tvi-copy 's' cursor-up
-#bind-key -Tvi-copy 'r' cursor-right
-# Telling childs that this is a 256 terminal multiplexer
-set -g default-terminal "screen-256color"
-# Maximizing/Restoring panes (useful for *a lot* of workflows)
-unbind Up
-bind Up new-window -d -n tmp \; swap-pane -s tmp \; select-window -t tmp
-unbind Down
-bind Down last-window \; swap-pane -s tmp \; kill-window -t tmp
-# Recording pane content to a file. (This is crasy !)
-bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
-
-# titles
-# set -g show -g says
-set -g set-titles on
-set -g set-titles-string "tmux - #S:#I.#P (#W)"
-# Set window notifications
-setw -g monitor-activity on
-set -g visual-activity on
-# Rather than constraining window size to the maximum size of any client
-# connected to the *session*, constrain window size to the maximum size of any
-# client connected to *that window*. Much more reasonable.
-setw -g aggressive-resize on
-# binding
-bind-key C-a last-window
-bind-key C-r command-prompt 'rename-window %%'
-bind-key '"' split-window -v -c '#{pane_current_path}'
-bind-key '%' split-window -h -c '#{pane_current_path}'
-
-# Custom status line
-set-option -g status-left '-- #[fg=colour253]#S - '
-set-window-option -g window-status-format '#[fg=colour244]#I/#[fg=colour253] #W '
-set-window-option -g window-status-current-format '#[fg=colour244]#I/#[fg=colour253,bg=colour238] #W '
-set-option -g status-right '#[fg=colour250] %Y-%m-%d #[fg=colour254]%H.%M'
-set-option -g status-bg colour234
-set-option -g status-fg colour007
-set-option -g status-position top
-
-# Custom split colours
-set -g pane-active-border-style bg=colour234,fg=colour234
-set -g pane-border-style bg=colour234,fg=colour234
-
-# loud or quiet?
-set-option -g visual-activity off
-set-option -g visual-bell on
-set-option -g visual-silence off
-set-window-option -g monitor-activity on
-set-option -g bell-action none
-
-bind m switch-client -l
-bind M command-prompt -p 'switch session:' "run \"tm.sh '%%'\""
\ No newline at end of file
users/vincent/core/zsh/_kubectl
@@ -1,8634 +0,0 @@
-#compdef kubectl
-
-# Copyright 2016 The Kubernetes Authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-__kubectl_bash_source() {
- alias shopt=':'
- alias _expand=_bash_expand
- alias _complete=_bash_comp
- emulate -L sh
- setopt kshglob noshglob braceexpand
-
- source "$@"
-}
-
-__kubectl_type() {
- # -t is not supported by zsh
- if [ "$1" == "-t" ]; then
- shift
-
- # fake Bash 4 to disable "complete -o nospace". Instead
- # "compopt +-o nospace" is used in the code to toggle trailing
- # spaces. We don't support that, but leave trailing spaces on
- # all the time
- if [ "$1" = "__kubectl_compopt" ]; then
- echo builtin
- return 0
- fi
- fi
- type "$@"
-}
-
-__kubectl_compgen() {
- local completions w
- completions=( $(compgen "$@") ) || return $?
-
- # filter by given word as prefix
- while [[ "$1" = -* && "$1" != -- ]]; do
- shift
- shift
- done
- if [[ "$1" == -- ]]; then
- shift
- fi
- for w in "${completions[@]}"; do
- if [[ "${w}" = "$1"* ]]; then
- echo "${w}"
- fi
- done
-}
-
-__kubectl_compopt() {
- true # don't do anything. Not supported by bashcompinit in zsh
-}
-
-__kubectl_ltrim_colon_completions()
-{
- if [[ "$1" == *:* && "$COMP_WORDBREAKS" == *:* ]]; then
- # Remove colon-word prefix from COMPREPLY items
- local colon_word=${1%${1##*:}}
- local i=${#COMPREPLY[*]}
- while [[ $((--i)) -ge 0 ]]; do
- COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"}
- done
- fi
-}
-
-__kubectl_get_comp_words_by_ref() {
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[${COMP_CWORD}-1]}"
- words=("${COMP_WORDS[@]}")
- cword=("${COMP_CWORD[@]}")
-}
-
-__kubectl_filedir() {
- local RET OLD_IFS w qw
-
- __kubectl_debug "_filedir $@ cur=$cur"
- if [[ "$1" = \~* ]]; then
- # somehow does not work. Maybe, zsh does not call this at all
- eval echo "$1"
- return 0
- fi
-
- OLD_IFS="$IFS"
- IFS=$'\n'
- if [ "$1" = "-d" ]; then
- shift
- RET=( $(compgen -d) )
- else
- RET=( $(compgen -f) )
- fi
- IFS="$OLD_IFS"
-
- IFS="," __kubectl_debug "RET=${RET[@]} len=${#RET[@]}"
-
- for w in ${RET[@]}; do
- if [[ ! "${w}" = "${cur}"* ]]; then
- continue
- fi
- if eval "[[ \"\${w}\" = *.$1 || -d \"\${w}\" ]]"; then
- qw="$(__kubectl_quote "${w}")"
- if [ -d "${w}" ]; then
- COMPREPLY+=("${qw}/")
- else
- COMPREPLY+=("${qw}")
- fi
- fi
- done
-}
-
-__kubectl_quote() {
- if [[ $1 == \'* || $1 == \"* ]]; then
- # Leave out first character
- printf %q "${1:1}"
- else
- printf %q "$1"
- fi
-}
-
-autoload -U +X bashcompinit && bashcompinit
-
-# use word boundary patterns for BSD or GNU sed
-LWORD='[[:<:]]'
-RWORD='[[:>:]]'
-if sed --help 2>&1 | grep -q GNU; then
- LWORD='\<'
- RWORD='\>'
-fi
-
-__kubectl_convert_bash_to_zsh() {
- sed \
- -e 's/declare -F/whence -w/' \
- -e 's/_get_comp_words_by_ref "\$@"/_get_comp_words_by_ref "\$*"/' \
- -e 's/local \([a-zA-Z0-9_]*\)=/local \1; \1=/' \
- -e 's/flags+=("\(--.*\)=")/flags+=("\1"); two_word_flags+=("\1")/' \
- -e 's/must_have_one_flag+=("\(--.*\)=")/must_have_one_flag+=("\1")/' \
- -e "s/${LWORD}_filedir${RWORD}/__kubectl_filedir/g" \
- -e "s/${LWORD}_get_comp_words_by_ref${RWORD}/__kubectl_get_comp_words_by_ref/g" \
- -e "s/${LWORD}__ltrim_colon_completions${RWORD}/__kubectl_ltrim_colon_completions/g" \
- -e "s/${LWORD}compgen${RWORD}/__kubectl_compgen/g" \
- -e "s/${LWORD}compopt${RWORD}/__kubectl_compopt/g" \
- -e "s/${LWORD}declare${RWORD}/builtin declare/g" \
- -e "s/\\\$(type${RWORD}/\$(__kubectl_type/g" \
- <<'BASH_COMPLETION_EOF'
-# bash completion for kubectl -*- shell-script -*-
-
-__kubectl_debug()
-{
- if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
- echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
- fi
-}
-
-# Homebrew on Macs have version 1.3 of bash-completion which doesn't include
-# _init_completion. This is a very minimal version of that function.
-__kubectl_init_completion()
-{
- COMPREPLY=()
- _get_comp_words_by_ref "$@" cur prev words cword
-}
-
-__kubectl_index_of_word()
-{
- local w word=$1
- shift
- index=0
- for w in "$@"; do
- [[ $w = "$word" ]] && return
- index=$((index+1))
- done
- index=-1
-}
-
-__kubectl_contains_word()
-{
- local w word=$1; shift
- for w in "$@"; do
- [[ $w = "$word" ]] && return
- done
- return 1
-}
-
-__kubectl_handle_reply()
-{
- __kubectl_debug "${FUNCNAME[0]}"
- case $cur in
- -*)
- if [[ $(type -t compopt) = "builtin" ]]; then
- compopt -o nospace
- fi
- local allflags
- if [ ${#must_have_one_flag[@]} -ne 0 ]; then
- allflags=("${must_have_one_flag[@]}")
- else
- allflags=("${flags[*]} ${two_word_flags[*]}")
- fi
- COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") )
- if [[ $(type -t compopt) = "builtin" ]]; then
- [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace
- fi
-
- # complete after --flag=abc
- if [[ $cur == *=* ]]; then
- if [[ $(type -t compopt) = "builtin" ]]; then
- compopt +o nospace
- fi
-
- local index flag
- flag="${cur%=*}"
- __kubectl_index_of_word "${flag}" "${flags_with_completion[@]}"
- COMPREPLY=()
- if [[ ${index} -ge 0 ]]; then
- PREFIX=""
- cur="${cur#*=}"
- ${flags_completion[${index}]}
- if [ -n "${ZSH_VERSION}" ]; then
- # zsh completion needs --flag= prefix
- eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )"
- fi
- fi
- fi
- return 0;
- ;;
- esac
-
- # check if we are handling a flag with special work handling
- local index
- __kubectl_index_of_word "${prev}" "${flags_with_completion[@]}"
- if [[ ${index} -ge 0 ]]; then
- ${flags_completion[${index}]}
- return
- fi
-
- # we are parsing a flag and don't have a special handler, no completion
- if [[ ${cur} != "${words[cword]}" ]]; then
- return
- fi
-
- local completions
- completions=("${commands[@]}")
- if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then
- completions=("${must_have_one_noun[@]}")
- fi
- if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then
- completions+=("${must_have_one_flag[@]}")
- fi
- COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") )
-
- if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then
- COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") )
- fi
-
- if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
- declare -F __custom_func >/dev/null && __custom_func
- fi
-
- # available in bash-completion >= 2, not always present on macOS
- if declare -F __ltrim_colon_completions >/dev/null; then
- __ltrim_colon_completions "$cur"
- fi
-
- # If there is only 1 completion and it is a flag with an = it will be completed
- # but we don't want a space after the =
- if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then
- compopt -o nospace
- fi
-}
-
-# The arguments should be in the form "ext1|ext2|extn"
-__kubectl_handle_filename_extension_flag()
-{
- local ext="$1"
- _filedir "@(${ext})"
-}
-
-__kubectl_handle_subdirs_in_dir_flag()
-{
- local dir="$1"
- pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1
-}
-
-__kubectl_handle_flag()
-{
- __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
-
- # if a command required a flag, and we found it, unset must_have_one_flag()
- local flagname=${words[c]}
- local flagvalue
- # if the word contained an =
- if [[ ${words[c]} == *"="* ]]; then
- flagvalue=${flagname#*=} # take in as flagvalue after the =
- flagname=${flagname%=*} # strip everything after the =
- flagname="${flagname}=" # but put the = back
- fi
- __kubectl_debug "${FUNCNAME[0]}: looking for ${flagname}"
- if __kubectl_contains_word "${flagname}" "${must_have_one_flag[@]}"; then
- must_have_one_flag=()
- fi
-
- # if you set a flag which only applies to this command, don't show subcommands
- if __kubectl_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then
- commands=()
- fi
-
- # keep flag value with flagname as flaghash
- # flaghash variable is an associative array which is only supported in bash > 3.
- if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then
- if [ -n "${flagvalue}" ] ; then
- flaghash[${flagname}]=${flagvalue}
- elif [ -n "${words[ $((c+1)) ]}" ] ; then
- flaghash[${flagname}]=${words[ $((c+1)) ]}
- else
- flaghash[${flagname}]="true" # pad "true" for bool flag
- fi
- fi
-
- # skip the argument to a two word flag
- if __kubectl_contains_word "${words[c]}" "${two_word_flags[@]}"; then
- c=$((c+1))
- # if we are looking for a flags value, don't show commands
- if [[ $c -eq $cword ]]; then
- commands=()
- fi
- fi
-
- c=$((c+1))
-
-}
-
-__kubectl_handle_noun()
-{
- __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
-
- if __kubectl_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then
- must_have_one_noun=()
- elif __kubectl_contains_word "${words[c]}" "${noun_aliases[@]}"; then
- must_have_one_noun=()
- fi
-
- nouns+=("${words[c]}")
- c=$((c+1))
-}
-
-__kubectl_handle_command()
-{
- __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
-
- local next_command
- if [[ -n ${last_command} ]]; then
- next_command="_${last_command}_${words[c]//:/__}"
- else
- if [[ $c -eq 0 ]]; then
- next_command="_kubectl_root_command"
- else
- next_command="_${words[c]//:/__}"
- fi
- fi
- c=$((c+1))
- __kubectl_debug "${FUNCNAME[0]}: looking for ${next_command}"
- declare -F "$next_command" >/dev/null && $next_command
-}
-
-__kubectl_handle_word()
-{
- if [[ $c -ge $cword ]]; then
- __kubectl_handle_reply
- return
- fi
- __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
- if [[ "${words[c]}" == -* ]]; then
- __kubectl_handle_flag
- elif __kubectl_contains_word "${words[c]}" "${commands[@]}"; then
- __kubectl_handle_command
- elif [[ $c -eq 0 ]]; then
- __kubectl_handle_command
- else
- __kubectl_handle_noun
- fi
- __kubectl_handle_word
-}
-
-# call kubectl get $1,
-__kubectl_override_flag_list=(--kubeconfig --cluster --user --context --namespace --server -n -s)
-__kubectl_override_flags()
-{
- local ${__kubectl_override_flag_list[*]##*-} two_word_of of var
- for w in "${words[@]}"; do
- if [ -n "${two_word_of}" ]; then
- eval "${two_word_of##*-}=\"${two_word_of}=\${w}\""
- two_word_of=
- continue
- fi
- for of in "${__kubectl_override_flag_list[@]}"; do
- case "${w}" in
- ${of}=*)
- eval "${of##*-}=\"${w}\""
- ;;
- ${of})
- two_word_of="${of}"
- ;;
- esac
- done
- done
- for var in "${__kubectl_override_flag_list[@]##*-}"; do
- if eval "test -n \"\$${var}\""; then
- eval "echo \${${var}}"
- fi
- done
-}
-
-__kubectl_config_get_contexts()
-{
- __kubectl_parse_config "contexts"
-}
-
-__kubectl_config_get_clusters()
-{
- __kubectl_parse_config "clusters"
-}
-
-__kubectl_config_get_users()
-{
- __kubectl_parse_config "users"
-}
-
-# $1 has to be "contexts", "clusters" or "users"
-__kubectl_parse_config()
-{
- local template kubectl_out
- template="{{ range .$1 }}{{ .name }} {{ end }}"
- if kubectl_out=$(kubectl config $(__kubectl_override_flags) -o template --template="${template}" view 2>/dev/null); then
- COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
- fi
-}
-
-# $1 is the name of resource (required)
-# $2 is template string for kubectl get (optional)
-__kubectl_parse_get()
-{
- local template
- template="${2:-"{{ range .items }}{{ .metadata.name }} {{ end }}"}"
- local kubectl_out
- if kubectl_out=$(kubectl get $(__kubectl_override_flags) -o template --template="${template}" "$1" 2>/dev/null); then
- COMPREPLY+=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
- fi
-}
-
-__kubectl_get_resource()
-{
- if [[ ${#nouns[@]} -eq 0 ]]; then
- local kubectl_out
- if kubectl_out=$(kubectl api-resources $(__kubectl_override_flags) -o name --cached --request-timeout=5s --verbs=get 2>/dev/null); then
- COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
- return 0
- fi
- return 1
- fi
- __kubectl_parse_get "${nouns[${#nouns[@]} -1]}"
-}
-
-__kubectl_get_resource_namespace()
-{
- __kubectl_parse_get "namespace"
-}
-
-__kubectl_get_resource_pod()
-{
- __kubectl_parse_get "pod"
-}
-
-__kubectl_get_resource_rc()
-{
- __kubectl_parse_get "rc"
-}
-
-__kubectl_get_resource_node()
-{
- __kubectl_parse_get "node"
-}
-
-__kubectl_get_resource_clusterrole()
-{
- __kubectl_parse_get "clusterrole"
-}
-
-# $1 is the name of the pod we want to get the list of containers inside
-__kubectl_get_containers()
-{
- local template
- template="{{ range .spec.initContainers }}{{ .name }} {{end}}{{ range .spec.containers }}{{ .name }} {{ end }}"
- __kubectl_debug "${FUNCNAME} nouns are ${nouns[*]}"
-
- local len="${#nouns[@]}"
- if [[ ${len} -ne 1 ]]; then
- return
- fi
- local last=${nouns[${len} -1]}
- local kubectl_out
- if kubectl_out=$(kubectl get $(__kubectl_override_flags) -o template --template="${template}" pods "${last}" 2>/dev/null); then
- COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
- fi
-}
-
-# Require both a pod and a container to be specified
-__kubectl_require_pod_and_container()
-{
- if [[ ${#nouns[@]} -eq 0 ]]; then
- __kubectl_parse_get pods
- return 0
- fi;
- __kubectl_get_containers
- return 0
-}
-
-__kubectl_cp()
-{
- if [[ $(type -t compopt) = "builtin" ]]; then
- compopt -o nospace
- fi
-
- case "$cur" in
- /*|[.~]*) # looks like a path
- return
- ;;
- *:*) # TODO: complete remote files in the pod
- return
- ;;
- */*) # complete <namespace>/<pod>
- local template namespace kubectl_out
- template="{{ range .items }}{{ .metadata.namespace }}/{{ .metadata.name }}: {{ end }}"
- namespace="${cur%%/*}"
- if kubectl_out=( $(kubectl get $(__kubectl_override_flags) --namespace "${namespace}" -o template --template="${template}" pods 2>/dev/null) ); then
- COMPREPLY=( $(compgen -W "${kubectl_out[*]}" -- "${cur}") )
- fi
- return
- ;;
- *) # complete namespaces, pods, and filedirs
- __kubectl_parse_get "namespace" "{{ range .items }}{{ .metadata.name }}/ {{ end }}"
- __kubectl_parse_get "pod" "{{ range .items }}{{ .metadata.name }}: {{ end }}"
- _filedir
- ;;
- esac
-}
-
-__custom_func() {
- case ${last_command} in
- kubectl_get | kubectl_describe | kubectl_delete | kubectl_label | kubectl_edit | kubectl_patch |\
- kubectl_annotate | kubectl_expose | kubectl_scale | kubectl_autoscale | kubectl_taint | kubectl_rollout_* |\
- kubectl_apply_edit-last-applied | kubectl_apply_view-last-applied)
- __kubectl_get_resource
- return
- ;;
- kubectl_logs)
- __kubectl_require_pod_and_container
- return
- ;;
- kubectl_exec | kubectl_port-forward | kubectl_top_pod | kubectl_attach)
- __kubectl_get_resource_pod
- return
- ;;
- kubectl_rolling-update)
- __kubectl_get_resource_rc
- return
- ;;
- kubectl_cordon | kubectl_uncordon | kubectl_drain | kubectl_top_node)
- __kubectl_get_resource_node
- return
- ;;
- kubectl_config_use-context | kubectl_config_rename-context)
- __kubectl_config_get_contexts
- return
- ;;
- kubectl_config_delete-cluster)
- __kubectl_config_get_clusters
- return
- ;;
- kubectl_cp)
- __kubectl_cp
- return
- ;;
- *)
- ;;
- esac
-}
-
-_kubectl_annotate()
-{
- last_command="kubectl_annotate"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--field-selector=")
- local_nonpersistent_flags+=("--field-selector=")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--overwrite")
- local_nonpersistent_flags+=("--overwrite")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--resource-version=")
- local_nonpersistent_flags+=("--resource-version=")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_api-resources()
-{
- last_command="kubectl_api-resources"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--api-group=")
- local_nonpersistent_flags+=("--api-group=")
- flags+=("--cached")
- local_nonpersistent_flags+=("--cached")
- flags+=("--namespaced")
- local_nonpersistent_flags+=("--namespaced")
- flags+=("--no-headers")
- local_nonpersistent_flags+=("--no-headers")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--verbs=")
- local_nonpersistent_flags+=("--verbs=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_api-versions()
-{
- last_command="kubectl_api-versions"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_apply_edit-last-applied()
-{
- last_command="kubectl_apply_edit-last-applied"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--windows-line-endings")
- local_nonpersistent_flags+=("--windows-line-endings")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_apply_set-last-applied()
-{
- last_command="kubectl_apply_set-last-applied"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--create-annotation")
- local_nonpersistent_flags+=("--create-annotation")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_apply_view-last-applied()
-{
- last_command="kubectl_apply_view-last-applied"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_apply()
-{
- last_command="kubectl_apply"
- commands=()
- commands+=("edit-last-applied")
- commands+=("set-last-applied")
- commands+=("view-last-applied")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--cascade")
- local_nonpersistent_flags+=("--cascade")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--experimental-field-manager=")
- local_nonpersistent_flags+=("--experimental-field-manager=")
- flags+=("--experimental-force-conflicts")
- local_nonpersistent_flags+=("--experimental-force-conflicts")
- flags+=("--experimental-server-side")
- local_nonpersistent_flags+=("--experimental-server-side")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--force")
- local_nonpersistent_flags+=("--force")
- flags+=("--grace-period=")
- local_nonpersistent_flags+=("--grace-period=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--openapi-patch")
- local_nonpersistent_flags+=("--openapi-patch")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--overwrite")
- local_nonpersistent_flags+=("--overwrite")
- flags+=("--prune")
- local_nonpersistent_flags+=("--prune")
- flags+=("--prune-whitelist=")
- local_nonpersistent_flags+=("--prune-whitelist=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--server-dry-run")
- local_nonpersistent_flags+=("--server-dry-run")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--timeout=")
- local_nonpersistent_flags+=("--timeout=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--wait")
- local_nonpersistent_flags+=("--wait")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_attach()
-{
- last_command="kubectl_attach"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--container=")
- two_word_flags+=("-c")
- local_nonpersistent_flags+=("--container=")
- flags+=("--pod-running-timeout=")
- local_nonpersistent_flags+=("--pod-running-timeout=")
- flags+=("--stdin")
- flags+=("-i")
- local_nonpersistent_flags+=("--stdin")
- flags+=("--tty")
- flags+=("-t")
- local_nonpersistent_flags+=("--tty")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_auth_can-i()
-{
- last_command="kubectl_auth_can-i"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all-namespaces")
- flags+=("-A")
- local_nonpersistent_flags+=("--all-namespaces")
- flags+=("--list")
- local_nonpersistent_flags+=("--list")
- flags+=("--no-headers")
- local_nonpersistent_flags+=("--no-headers")
- flags+=("--quiet")
- flags+=("-q")
- local_nonpersistent_flags+=("--quiet")
- flags+=("--subresource=")
- local_nonpersistent_flags+=("--subresource=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_auth_reconcile()
-{
- last_command="kubectl_auth_reconcile"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--remove-extra-permissions")
- local_nonpersistent_flags+=("--remove-extra-permissions")
- flags+=("--remove-extra-subjects")
- local_nonpersistent_flags+=("--remove-extra-subjects")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_auth()
-{
- last_command="kubectl_auth"
- commands=()
- commands+=("can-i")
- commands+=("reconcile")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_autoscale()
-{
- last_command="kubectl_autoscale"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--cpu-percent=")
- local_nonpersistent_flags+=("--cpu-percent=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--max=")
- local_nonpersistent_flags+=("--max=")
- flags+=("--min=")
- local_nonpersistent_flags+=("--min=")
- flags+=("--name=")
- local_nonpersistent_flags+=("--name=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_flag+=("--max=")
- must_have_one_noun=()
- must_have_one_noun+=("deployment")
- must_have_one_noun+=("replicaset")
- must_have_one_noun+=("replicationcontroller")
- noun_aliases=()
-}
-
-_kubectl_certificate_approve()
-{
- last_command="kubectl_certificate_approve"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--force")
- local_nonpersistent_flags+=("--force")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_certificate_deny()
-{
- last_command="kubectl_certificate_deny"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--force")
- local_nonpersistent_flags+=("--force")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_certificate()
-{
- last_command="kubectl_certificate"
- commands=()
- commands+=("approve")
- commands+=("deny")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_cluster-info_dump()
-{
- last_command="kubectl_cluster-info_dump"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all-namespaces")
- flags+=("-A")
- local_nonpersistent_flags+=("--all-namespaces")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--namespaces=")
- local_nonpersistent_flags+=("--namespaces=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--output-directory=")
- local_nonpersistent_flags+=("--output-directory=")
- flags+=("--pod-running-timeout=")
- local_nonpersistent_flags+=("--pod-running-timeout=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_cluster-info()
-{
- last_command="kubectl_cluster-info"
- commands=()
- commands+=("dump")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_completion()
-{
- last_command="kubectl_completion"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--help")
- flags+=("-h")
- local_nonpersistent_flags+=("--help")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- must_have_one_noun+=("bash")
- must_have_one_noun+=("zsh")
- noun_aliases=()
-}
-
-_kubectl_config_current-context()
-{
- last_command="kubectl_config_current-context"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_delete-cluster()
-{
- last_command="kubectl_config_delete-cluster"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_delete-context()
-{
- last_command="kubectl_config_delete-context"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_get-clusters()
-{
- last_command="kubectl_config_get-clusters"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_get-contexts()
-{
- last_command="kubectl_config_get-contexts"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--no-headers")
- local_nonpersistent_flags+=("--no-headers")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_rename-context()
-{
- last_command="kubectl_config_rename-context"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_set()
-{
- last_command="kubectl_config_set"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--set-raw-bytes")
- local_nonpersistent_flags+=("--set-raw-bytes")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_set-cluster()
-{
- last_command="kubectl_config_set-cluster"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--embed-certs")
- local_nonpersistent_flags+=("--embed-certs")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_set-context()
-{
- last_command="kubectl_config_set-context"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--current")
- local_nonpersistent_flags+=("--current")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_set-credentials()
-{
- last_command="kubectl_config_set-credentials"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--auth-provider=")
- local_nonpersistent_flags+=("--auth-provider=")
- flags+=("--auth-provider-arg=")
- local_nonpersistent_flags+=("--auth-provider-arg=")
- flags+=("--embed-certs")
- local_nonpersistent_flags+=("--embed-certs")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_unset()
-{
- last_command="kubectl_config_unset"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_use-context()
-{
- last_command="kubectl_config_use-context"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config_view()
-{
- last_command="kubectl_config_view"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--flatten")
- local_nonpersistent_flags+=("--flatten")
- flags+=("--merge")
- local_nonpersistent_flags+=("--merge")
- flags+=("--minify")
- local_nonpersistent_flags+=("--minify")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--raw")
- local_nonpersistent_flags+=("--raw")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_config()
-{
- last_command="kubectl_config"
- commands=()
- commands+=("current-context")
- commands+=("delete-cluster")
- commands+=("delete-context")
- commands+=("get-clusters")
- commands+=("get-contexts")
- commands+=("rename-context")
- commands+=("set")
- commands+=("set-cluster")
- commands+=("set-context")
- commands+=("set-credentials")
- commands+=("unset")
- commands+=("use-context")
- commands+=("view")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_convert()
-{
- last_command="kubectl_convert"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--output-version=")
- local_nonpersistent_flags+=("--output-version=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_cordon()
-{
- last_command="kubectl_cordon"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_cp()
-{
- last_command="kubectl_cp"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--container=")
- two_word_flags+=("-c")
- local_nonpersistent_flags+=("--container=")
- flags+=("--no-preserve")
- local_nonpersistent_flags+=("--no-preserve")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_clusterrole()
-{
- last_command="kubectl_create_clusterrole"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--aggregation-rule=")
- local_nonpersistent_flags+=("--aggregation-rule=")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--non-resource-url=")
- local_nonpersistent_flags+=("--non-resource-url=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--resource=")
- local_nonpersistent_flags+=("--resource=")
- flags+=("--resource-name=")
- local_nonpersistent_flags+=("--resource-name=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--verb=")
- local_nonpersistent_flags+=("--verb=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_clusterrolebinding()
-{
- last_command="kubectl_create_clusterrolebinding"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--clusterrole=")
- flags_with_completion+=("--clusterrole")
- flags_completion+=("__kubectl_get_resource_clusterrole")
- local_nonpersistent_flags+=("--clusterrole=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--group=")
- local_nonpersistent_flags+=("--group=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--serviceaccount=")
- local_nonpersistent_flags+=("--serviceaccount=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_configmap()
-{
- last_command="kubectl_create_configmap"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--append-hash")
- local_nonpersistent_flags+=("--append-hash")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--from-env-file=")
- local_nonpersistent_flags+=("--from-env-file=")
- flags+=("--from-file=")
- local_nonpersistent_flags+=("--from-file=")
- flags+=("--from-literal=")
- local_nonpersistent_flags+=("--from-literal=")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_cronjob()
-{
- last_command="kubectl_create_cronjob"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--image=")
- local_nonpersistent_flags+=("--image=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--restart=")
- local_nonpersistent_flags+=("--restart=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--schedule=")
- local_nonpersistent_flags+=("--schedule=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_deployment()
-{
- last_command="kubectl_create_deployment"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--image=")
- local_nonpersistent_flags+=("--image=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_flag+=("--image=")
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_job()
-{
- last_command="kubectl_create_job"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--from=")
- local_nonpersistent_flags+=("--from=")
- flags+=("--image=")
- local_nonpersistent_flags+=("--image=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_namespace()
-{
- last_command="kubectl_create_namespace"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_poddisruptionbudget()
-{
- last_command="kubectl_create_poddisruptionbudget"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--max-unavailable=")
- local_nonpersistent_flags+=("--max-unavailable=")
- flags+=("--min-available=")
- local_nonpersistent_flags+=("--min-available=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--selector=")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_priorityclass()
-{
- last_command="kubectl_create_priorityclass"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--description=")
- local_nonpersistent_flags+=("--description=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--global-default")
- local_nonpersistent_flags+=("--global-default")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--value=")
- local_nonpersistent_flags+=("--value=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_quota()
-{
- last_command="kubectl_create_quota"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--hard=")
- local_nonpersistent_flags+=("--hard=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--scopes=")
- local_nonpersistent_flags+=("--scopes=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_role()
-{
- last_command="kubectl_create_role"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--resource=")
- local_nonpersistent_flags+=("--resource=")
- flags+=("--resource-name=")
- local_nonpersistent_flags+=("--resource-name=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--verb=")
- local_nonpersistent_flags+=("--verb=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_rolebinding()
-{
- last_command="kubectl_create_rolebinding"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--clusterrole=")
- local_nonpersistent_flags+=("--clusterrole=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--group=")
- local_nonpersistent_flags+=("--group=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--role=")
- local_nonpersistent_flags+=("--role=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--serviceaccount=")
- local_nonpersistent_flags+=("--serviceaccount=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_secret_docker-registry()
-{
- last_command="kubectl_create_secret_docker-registry"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--append-hash")
- local_nonpersistent_flags+=("--append-hash")
- flags+=("--docker-email=")
- local_nonpersistent_flags+=("--docker-email=")
- flags+=("--docker-password=")
- local_nonpersistent_flags+=("--docker-password=")
- flags+=("--docker-server=")
- local_nonpersistent_flags+=("--docker-server=")
- flags+=("--docker-username=")
- local_nonpersistent_flags+=("--docker-username=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--from-file=")
- local_nonpersistent_flags+=("--from-file=")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_flag+=("--docker-password=")
- must_have_one_flag+=("--docker-username=")
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_secret_generic()
-{
- last_command="kubectl_create_secret_generic"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--append-hash")
- local_nonpersistent_flags+=("--append-hash")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--from-env-file=")
- local_nonpersistent_flags+=("--from-env-file=")
- flags+=("--from-file=")
- local_nonpersistent_flags+=("--from-file=")
- flags+=("--from-literal=")
- local_nonpersistent_flags+=("--from-literal=")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--type=")
- local_nonpersistent_flags+=("--type=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_secret_tls()
-{
- last_command="kubectl_create_secret_tls"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--append-hash")
- local_nonpersistent_flags+=("--append-hash")
- flags+=("--cert=")
- local_nonpersistent_flags+=("--cert=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--key=")
- local_nonpersistent_flags+=("--key=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_secret()
-{
- last_command="kubectl_create_secret"
- commands=()
- commands+=("docker-registry")
- commands+=("generic")
- commands+=("tls")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_service_clusterip()
-{
- last_command="kubectl_create_service_clusterip"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--clusterip=")
- local_nonpersistent_flags+=("--clusterip=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--tcp=")
- local_nonpersistent_flags+=("--tcp=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_service_externalname()
-{
- last_command="kubectl_create_service_externalname"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--external-name=")
- local_nonpersistent_flags+=("--external-name=")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--tcp=")
- local_nonpersistent_flags+=("--tcp=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_flag+=("--external-name=")
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_service_loadbalancer()
-{
- last_command="kubectl_create_service_loadbalancer"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--tcp=")
- local_nonpersistent_flags+=("--tcp=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_service_nodeport()
-{
- last_command="kubectl_create_service_nodeport"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--node-port=")
- local_nonpersistent_flags+=("--node-port=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--tcp=")
- local_nonpersistent_flags+=("--tcp=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_service()
-{
- last_command="kubectl_create_service"
- commands=()
- commands+=("clusterip")
- commands+=("externalname")
- commands+=("loadbalancer")
- commands+=("nodeport")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create_serviceaccount()
-{
- last_command="kubectl_create_serviceaccount"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_create()
-{
- last_command="kubectl_create"
- commands=()
- commands+=("clusterrole")
- commands+=("clusterrolebinding")
- commands+=("configmap")
- commands+=("cronjob")
- commands+=("deployment")
- commands+=("job")
- commands+=("namespace")
- commands+=("poddisruptionbudget")
- commands+=("priorityclass")
- commands+=("quota")
- commands+=("role")
- commands+=("rolebinding")
- commands+=("secret")
- commands+=("service")
- commands+=("serviceaccount")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--edit")
- local_nonpersistent_flags+=("--edit")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--raw=")
- local_nonpersistent_flags+=("--raw=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--windows-line-endings")
- local_nonpersistent_flags+=("--windows-line-endings")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_delete()
-{
- last_command="kubectl_delete"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--all-namespaces")
- flags+=("-A")
- local_nonpersistent_flags+=("--all-namespaces")
- flags+=("--cascade")
- local_nonpersistent_flags+=("--cascade")
- flags+=("--field-selector=")
- local_nonpersistent_flags+=("--field-selector=")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--force")
- local_nonpersistent_flags+=("--force")
- flags+=("--grace-period=")
- local_nonpersistent_flags+=("--grace-period=")
- flags+=("--ignore-not-found")
- local_nonpersistent_flags+=("--ignore-not-found")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--now")
- local_nonpersistent_flags+=("--now")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--timeout=")
- local_nonpersistent_flags+=("--timeout=")
- flags+=("--wait")
- local_nonpersistent_flags+=("--wait")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_describe()
-{
- last_command="kubectl_describe"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all-namespaces")
- flags+=("-A")
- local_nonpersistent_flags+=("--all-namespaces")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--show-events")
- local_nonpersistent_flags+=("--show-events")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_diff()
-{
- last_command="kubectl_diff"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--experimental-field-manager=")
- local_nonpersistent_flags+=("--experimental-field-manager=")
- flags+=("--experimental-force-conflicts")
- local_nonpersistent_flags+=("--experimental-force-conflicts")
- flags+=("--experimental-server-side")
- local_nonpersistent_flags+=("--experimental-server-side")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_drain()
-{
- last_command="kubectl_drain"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--delete-local-data")
- local_nonpersistent_flags+=("--delete-local-data")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--force")
- local_nonpersistent_flags+=("--force")
- flags+=("--grace-period=")
- local_nonpersistent_flags+=("--grace-period=")
- flags+=("--ignore-daemonsets")
- local_nonpersistent_flags+=("--ignore-daemonsets")
- flags+=("--pod-selector=")
- local_nonpersistent_flags+=("--pod-selector=")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--timeout=")
- local_nonpersistent_flags+=("--timeout=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_edit()
-{
- last_command="kubectl_edit"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--output-patch")
- local_nonpersistent_flags+=("--output-patch")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--windows-line-endings")
- local_nonpersistent_flags+=("--windows-line-endings")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_exec()
-{
- last_command="kubectl_exec"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--container=")
- two_word_flags+=("-c")
- local_nonpersistent_flags+=("--container=")
- flags+=("--stdin")
- flags+=("-i")
- local_nonpersistent_flags+=("--stdin")
- flags+=("--tty")
- flags+=("-t")
- local_nonpersistent_flags+=("--tty")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_explain()
-{
- last_command="kubectl_explain"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--api-version=")
- local_nonpersistent_flags+=("--api-version=")
- flags+=("--recursive")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_expose()
-{
- last_command="kubectl_expose"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--cluster-ip=")
- local_nonpersistent_flags+=("--cluster-ip=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--external-ip=")
- local_nonpersistent_flags+=("--external-ip=")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--labels=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--labels=")
- flags+=("--load-balancer-ip=")
- local_nonpersistent_flags+=("--load-balancer-ip=")
- flags+=("--name=")
- local_nonpersistent_flags+=("--name=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--overrides=")
- local_nonpersistent_flags+=("--overrides=")
- flags+=("--port=")
- local_nonpersistent_flags+=("--port=")
- flags+=("--protocol=")
- local_nonpersistent_flags+=("--protocol=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--selector=")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--session-affinity=")
- local_nonpersistent_flags+=("--session-affinity=")
- flags+=("--target-port=")
- local_nonpersistent_flags+=("--target-port=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--type=")
- local_nonpersistent_flags+=("--type=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- must_have_one_noun+=("deployment")
- must_have_one_noun+=("pod")
- must_have_one_noun+=("replicaset")
- must_have_one_noun+=("replicationcontroller")
- must_have_one_noun+=("service")
- noun_aliases=()
-}
-
-_kubectl_get()
-{
- last_command="kubectl_get"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all-namespaces")
- flags+=("-A")
- local_nonpersistent_flags+=("--all-namespaces")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--chunk-size=")
- local_nonpersistent_flags+=("--chunk-size=")
- flags+=("--field-selector=")
- local_nonpersistent_flags+=("--field-selector=")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--ignore-not-found")
- local_nonpersistent_flags+=("--ignore-not-found")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--label-columns=")
- two_word_flags+=("-L")
- local_nonpersistent_flags+=("--label-columns=")
- flags+=("--no-headers")
- local_nonpersistent_flags+=("--no-headers")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--raw=")
- local_nonpersistent_flags+=("--raw=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--server-print")
- local_nonpersistent_flags+=("--server-print")
- flags+=("--show-kind")
- local_nonpersistent_flags+=("--show-kind")
- flags+=("--show-labels")
- local_nonpersistent_flags+=("--show-labels")
- flags+=("--sort-by=")
- local_nonpersistent_flags+=("--sort-by=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--watch")
- flags+=("-w")
- local_nonpersistent_flags+=("--watch")
- flags+=("--watch-only")
- local_nonpersistent_flags+=("--watch-only")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_kustomize()
-{
- last_command="kubectl_kustomize"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_label()
-{
- last_command="kubectl_label"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--field-selector=")
- local_nonpersistent_flags+=("--field-selector=")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--list")
- local_nonpersistent_flags+=("--list")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--overwrite")
- local_nonpersistent_flags+=("--overwrite")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--resource-version=")
- local_nonpersistent_flags+=("--resource-version=")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_logs()
-{
- last_command="kubectl_logs"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all-containers")
- local_nonpersistent_flags+=("--all-containers")
- flags+=("--container=")
- two_word_flags+=("-c")
- local_nonpersistent_flags+=("--container=")
- flags+=("--follow")
- flags+=("-f")
- local_nonpersistent_flags+=("--follow")
- flags+=("--limit-bytes=")
- local_nonpersistent_flags+=("--limit-bytes=")
- flags+=("--max-log-requests=")
- local_nonpersistent_flags+=("--max-log-requests=")
- flags+=("--pod-running-timeout=")
- local_nonpersistent_flags+=("--pod-running-timeout=")
- flags+=("--previous")
- flags+=("-p")
- local_nonpersistent_flags+=("--previous")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--since=")
- local_nonpersistent_flags+=("--since=")
- flags+=("--since-time=")
- local_nonpersistent_flags+=("--since-time=")
- flags+=("--tail=")
- local_nonpersistent_flags+=("--tail=")
- flags+=("--timestamps")
- local_nonpersistent_flags+=("--timestamps")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_options()
-{
- last_command="kubectl_options"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_patch()
-{
- last_command="kubectl_patch"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--patch=")
- two_word_flags+=("-p")
- local_nonpersistent_flags+=("--patch=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--type=")
- local_nonpersistent_flags+=("--type=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_flag+=("--patch=")
- must_have_one_flag+=("-p")
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_plugin_list()
-{
- last_command="kubectl_plugin_list"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--name-only")
- local_nonpersistent_flags+=("--name-only")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_plugin()
-{
- last_command="kubectl_plugin"
- commands=()
- commands+=("list")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_port-forward()
-{
- last_command="kubectl_port-forward"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--address=")
- local_nonpersistent_flags+=("--address=")
- flags+=("--pod-running-timeout=")
- local_nonpersistent_flags+=("--pod-running-timeout=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_proxy()
-{
- last_command="kubectl_proxy"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--accept-hosts=")
- local_nonpersistent_flags+=("--accept-hosts=")
- flags+=("--accept-paths=")
- local_nonpersistent_flags+=("--accept-paths=")
- flags+=("--address=")
- local_nonpersistent_flags+=("--address=")
- flags+=("--api-prefix=")
- local_nonpersistent_flags+=("--api-prefix=")
- flags+=("--disable-filter")
- local_nonpersistent_flags+=("--disable-filter")
- flags+=("--keepalive=")
- local_nonpersistent_flags+=("--keepalive=")
- flags+=("--port=")
- two_word_flags+=("-p")
- local_nonpersistent_flags+=("--port=")
- flags+=("--reject-methods=")
- local_nonpersistent_flags+=("--reject-methods=")
- flags+=("--reject-paths=")
- local_nonpersistent_flags+=("--reject-paths=")
- flags+=("--unix-socket=")
- two_word_flags+=("-u")
- local_nonpersistent_flags+=("--unix-socket=")
- flags+=("--www=")
- two_word_flags+=("-w")
- local_nonpersistent_flags+=("--www=")
- flags+=("--www-prefix=")
- two_word_flags+=("-P")
- local_nonpersistent_flags+=("--www-prefix=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_replace()
-{
- last_command="kubectl_replace"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--cascade")
- local_nonpersistent_flags+=("--cascade")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--force")
- local_nonpersistent_flags+=("--force")
- flags+=("--grace-period=")
- local_nonpersistent_flags+=("--grace-period=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--timeout=")
- local_nonpersistent_flags+=("--timeout=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--wait")
- local_nonpersistent_flags+=("--wait")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_rollout_history()
-{
- last_command="kubectl_rollout_history"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--revision=")
- local_nonpersistent_flags+=("--revision=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- must_have_one_noun+=("daemonset")
- must_have_one_noun+=("deployment")
- must_have_one_noun+=("statefulset")
- noun_aliases=()
-}
-
-_kubectl_rollout_pause()
-{
- last_command="kubectl_rollout_pause"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- must_have_one_noun+=("deployment")
- noun_aliases=()
-}
-
-_kubectl_rollout_resume()
-{
- last_command="kubectl_rollout_resume"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- must_have_one_noun+=("deployment")
- noun_aliases=()
-}
-
-_kubectl_rollout_status()
-{
- last_command="kubectl_rollout_status"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--revision=")
- local_nonpersistent_flags+=("--revision=")
- flags+=("--timeout=")
- local_nonpersistent_flags+=("--timeout=")
- flags+=("--watch")
- flags+=("-w")
- local_nonpersistent_flags+=("--watch")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- must_have_one_noun+=("daemonset")
- must_have_one_noun+=("deployment")
- must_have_one_noun+=("statefulset")
- noun_aliases=()
-}
-
-_kubectl_rollout_undo()
-{
- last_command="kubectl_rollout_undo"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--to-revision=")
- local_nonpersistent_flags+=("--to-revision=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- must_have_one_noun+=("daemonset")
- must_have_one_noun+=("deployment")
- must_have_one_noun+=("statefulset")
- noun_aliases=()
-}
-
-_kubectl_rollout()
-{
- last_command="kubectl_rollout"
- commands=()
- commands+=("history")
- commands+=("pause")
- commands+=("resume")
- commands+=("status")
- commands+=("undo")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_run()
-{
- last_command="kubectl_run"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--attach")
- local_nonpersistent_flags+=("--attach")
- flags+=("--cascade")
- local_nonpersistent_flags+=("--cascade")
- flags+=("--command")
- local_nonpersistent_flags+=("--command")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--env=")
- local_nonpersistent_flags+=("--env=")
- flags+=("--expose")
- local_nonpersistent_flags+=("--expose")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--force")
- local_nonpersistent_flags+=("--force")
- flags+=("--generator=")
- local_nonpersistent_flags+=("--generator=")
- flags+=("--grace-period=")
- local_nonpersistent_flags+=("--grace-period=")
- flags+=("--hostport=")
- local_nonpersistent_flags+=("--hostport=")
- flags+=("--image=")
- local_nonpersistent_flags+=("--image=")
- flags+=("--image-pull-policy=")
- local_nonpersistent_flags+=("--image-pull-policy=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--labels=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--labels=")
- flags+=("--leave-stdin-open")
- local_nonpersistent_flags+=("--leave-stdin-open")
- flags+=("--limits=")
- local_nonpersistent_flags+=("--limits=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--overrides=")
- local_nonpersistent_flags+=("--overrides=")
- flags+=("--pod-running-timeout=")
- local_nonpersistent_flags+=("--pod-running-timeout=")
- flags+=("--port=")
- local_nonpersistent_flags+=("--port=")
- flags+=("--quiet")
- local_nonpersistent_flags+=("--quiet")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--replicas=")
- two_word_flags+=("-r")
- local_nonpersistent_flags+=("--replicas=")
- flags+=("--requests=")
- local_nonpersistent_flags+=("--requests=")
- flags+=("--restart=")
- local_nonpersistent_flags+=("--restart=")
- flags+=("--rm")
- local_nonpersistent_flags+=("--rm")
- flags+=("--save-config")
- local_nonpersistent_flags+=("--save-config")
- flags+=("--schedule=")
- local_nonpersistent_flags+=("--schedule=")
- flags+=("--service-generator=")
- local_nonpersistent_flags+=("--service-generator=")
- flags+=("--service-overrides=")
- local_nonpersistent_flags+=("--service-overrides=")
- flags+=("--serviceaccount=")
- local_nonpersistent_flags+=("--serviceaccount=")
- flags+=("--stdin")
- flags+=("-i")
- local_nonpersistent_flags+=("--stdin")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--timeout=")
- local_nonpersistent_flags+=("--timeout=")
- flags+=("--tty")
- flags+=("-t")
- local_nonpersistent_flags+=("--tty")
- flags+=("--wait")
- local_nonpersistent_flags+=("--wait")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_flag+=("--image=")
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_scale()
-{
- last_command="kubectl_scale"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--current-replicas=")
- local_nonpersistent_flags+=("--current-replicas=")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--replicas=")
- local_nonpersistent_flags+=("--replicas=")
- flags+=("--resource-version=")
- local_nonpersistent_flags+=("--resource-version=")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--timeout=")
- local_nonpersistent_flags+=("--timeout=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_flag+=("--replicas=")
- must_have_one_noun=()
- must_have_one_noun+=("deployment")
- must_have_one_noun+=("replicaset")
- must_have_one_noun+=("replicationcontroller")
- must_have_one_noun+=("statefulset")
- noun_aliases=()
-}
-
-_kubectl_set_env()
-{
- last_command="kubectl_set_env"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--containers=")
- two_word_flags+=("-c")
- local_nonpersistent_flags+=("--containers=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--env=")
- two_word_flags+=("-e")
- local_nonpersistent_flags+=("--env=")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--from=")
- local_nonpersistent_flags+=("--from=")
- flags+=("--keys=")
- local_nonpersistent_flags+=("--keys=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--list")
- local_nonpersistent_flags+=("--list")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--overwrite")
- local_nonpersistent_flags+=("--overwrite")
- flags+=("--prefix=")
- local_nonpersistent_flags+=("--prefix=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--resolve")
- local_nonpersistent_flags+=("--resolve")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_set_image()
-{
- last_command="kubectl_set_image"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_set_resources()
-{
- last_command="kubectl_set_resources"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--containers=")
- two_word_flags+=("-c")
- local_nonpersistent_flags+=("--containers=")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--limits=")
- local_nonpersistent_flags+=("--limits=")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--requests=")
- local_nonpersistent_flags+=("--requests=")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_set_selector()
-{
- last_command="kubectl_set_selector"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--resource-version=")
- local_nonpersistent_flags+=("--resource-version=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_set_serviceaccount()
-{
- last_command="kubectl_set_serviceaccount"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--record")
- local_nonpersistent_flags+=("--record")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_set_subject()
-{
- last_command="kubectl_set_subject"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--group=")
- local_nonpersistent_flags+=("--group=")
- flags+=("--kustomize=")
- two_word_flags+=("-k")
- local_nonpersistent_flags+=("--kustomize=")
- flags+=("--local")
- local_nonpersistent_flags+=("--local")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--serviceaccount=")
- local_nonpersistent_flags+=("--serviceaccount=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_set()
-{
- last_command="kubectl_set"
- commands=()
- commands+=("env")
- commands+=("image")
- commands+=("resources")
- commands+=("selector")
- commands+=("serviceaccount")
- commands+=("subject")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_taint()
-{
- last_command="kubectl_taint"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--overwrite")
- local_nonpersistent_flags+=("--overwrite")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--validate")
- local_nonpersistent_flags+=("--validate")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- must_have_one_noun+=("node")
- noun_aliases=()
-}
-
-_kubectl_top_node()
-{
- last_command="kubectl_top_node"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--heapster-namespace=")
- local_nonpersistent_flags+=("--heapster-namespace=")
- flags+=("--heapster-port=")
- local_nonpersistent_flags+=("--heapster-port=")
- flags+=("--heapster-scheme=")
- local_nonpersistent_flags+=("--heapster-scheme=")
- flags+=("--heapster-service=")
- local_nonpersistent_flags+=("--heapster-service=")
- flags+=("--no-headers")
- local_nonpersistent_flags+=("--no-headers")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_top_pod()
-{
- last_command="kubectl_top_pod"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all-namespaces")
- flags+=("-A")
- local_nonpersistent_flags+=("--all-namespaces")
- flags+=("--containers")
- local_nonpersistent_flags+=("--containers")
- flags+=("--heapster-namespace=")
- local_nonpersistent_flags+=("--heapster-namespace=")
- flags+=("--heapster-port=")
- local_nonpersistent_flags+=("--heapster-port=")
- flags+=("--heapster-scheme=")
- local_nonpersistent_flags+=("--heapster-scheme=")
- flags+=("--heapster-service=")
- local_nonpersistent_flags+=("--heapster-service=")
- flags+=("--no-headers")
- local_nonpersistent_flags+=("--no-headers")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_top()
-{
- last_command="kubectl_top"
- commands=()
- commands+=("node")
- commands+=("pod")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_uncordon()
-{
- last_command="kubectl_uncordon"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--dry-run")
- local_nonpersistent_flags+=("--dry-run")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_version()
-{
- last_command="kubectl_version"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--client")
- local_nonpersistent_flags+=("--client")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--short")
- local_nonpersistent_flags+=("--short")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_wait()
-{
- last_command="kubectl_wait"
- commands=()
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--all")
- local_nonpersistent_flags+=("--all")
- flags+=("--all-namespaces")
- flags+=("-A")
- local_nonpersistent_flags+=("--all-namespaces")
- flags+=("--allow-missing-template-keys")
- local_nonpersistent_flags+=("--allow-missing-template-keys")
- flags+=("--field-selector=")
- local_nonpersistent_flags+=("--field-selector=")
- flags+=("--filename=")
- flags_with_completion+=("--filename")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- two_word_flags+=("-f")
- flags_with_completion+=("-f")
- flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
- local_nonpersistent_flags+=("--filename=")
- flags+=("--for=")
- local_nonpersistent_flags+=("--for=")
- flags+=("--output=")
- two_word_flags+=("-o")
- local_nonpersistent_flags+=("--output=")
- flags+=("--recursive")
- flags+=("-R")
- local_nonpersistent_flags+=("--recursive")
- flags+=("--selector=")
- two_word_flags+=("-l")
- local_nonpersistent_flags+=("--selector=")
- flags+=("--template=")
- flags_with_completion+=("--template")
- flags_completion+=("_filedir")
- local_nonpersistent_flags+=("--template=")
- flags+=("--timeout=")
- local_nonpersistent_flags+=("--timeout=")
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-_kubectl_root_command()
-{
- last_command="kubectl"
- commands=()
- commands+=("annotate")
- commands+=("api-resources")
- commands+=("api-versions")
- commands+=("apply")
- commands+=("attach")
- commands+=("auth")
- commands+=("autoscale")
- commands+=("certificate")
- commands+=("cluster-info")
- commands+=("completion")
- commands+=("config")
- commands+=("convert")
- commands+=("cordon")
- commands+=("cp")
- commands+=("create")
- commands+=("delete")
- commands+=("describe")
- commands+=("diff")
- commands+=("drain")
- commands+=("edit")
- commands+=("exec")
- commands+=("explain")
- commands+=("expose")
- commands+=("get")
- commands+=("kustomize")
- commands+=("label")
- commands+=("logs")
- commands+=("options")
- commands+=("patch")
- commands+=("plugin")
- commands+=("port-forward")
- commands+=("proxy")
- commands+=("replace")
- commands+=("rollout")
- commands+=("run")
- commands+=("scale")
- commands+=("set")
- commands+=("taint")
- commands+=("top")
- commands+=("uncordon")
- commands+=("version")
- commands+=("wait")
-
- flags=()
- two_word_flags=()
- local_nonpersistent_flags=()
- flags_with_completion=()
- flags_completion=()
-
- flags+=("--alsologtostderr")
- flags+=("--as=")
- flags+=("--as-group=")
- flags+=("--cache-dir=")
- flags+=("--certificate-authority=")
- flags+=("--client-certificate=")
- flags+=("--client-key=")
- flags+=("--cluster=")
- flags_with_completion+=("--cluster")
- flags_completion+=("__kubectl_config_get_clusters")
- flags+=("--context=")
- flags_with_completion+=("--context")
- flags_completion+=("__kubectl_config_get_contexts")
- flags+=("--insecure-skip-tls-verify")
- flags+=("--kubeconfig=")
- flags+=("--log-backtrace-at=")
- flags+=("--log-dir=")
- flags+=("--log-file=")
- flags+=("--log-flush-frequency=")
- flags+=("--logtostderr")
- flags+=("--match-server-version")
- flags+=("--namespace=")
- flags_with_completion+=("--namespace")
- flags_completion+=("__kubectl_get_resource_namespace")
- two_word_flags+=("-n")
- flags_with_completion+=("-n")
- flags_completion+=("__kubectl_get_resource_namespace")
- flags+=("--password=")
- flags+=("--profile=")
- flags+=("--profile-output=")
- flags+=("--request-timeout=")
- flags+=("--server=")
- two_word_flags+=("-s")
- flags+=("--skip-headers")
- flags+=("--stderrthreshold=")
- flags+=("--token=")
- flags+=("--user=")
- flags_with_completion+=("--user")
- flags_completion+=("__kubectl_config_get_users")
- flags+=("--username=")
- flags+=("--v=")
- two_word_flags+=("-v")
- flags+=("--vmodule=")
-
- must_have_one_flag=()
- must_have_one_noun=()
- noun_aliases=()
-}
-
-__start_kubectl()
-{
- local cur prev words cword
- declare -A flaghash 2>/dev/null || :
- if declare -F _init_completion >/dev/null 2>&1; then
- _init_completion -s || return
- else
- __kubectl_init_completion -n "=" || return
- fi
-
- local c=0
- local flags=()
- local two_word_flags=()
- local local_nonpersistent_flags=()
- local flags_with_completion=()
- local flags_completion=()
- local commands=("kubectl")
- local must_have_one_flag=()
- local must_have_one_noun=()
- local last_command
- local nouns=()
-
- __kubectl_handle_word
-}
-
-if [[ $(type -t compopt) = "builtin" ]]; then
- complete -o default -F __start_kubectl kubectl
-else
- complete -o default -o nospace -F __start_kubectl kubectl
-fi
-
-# ex: ts=4 sw=4 et filetype=sh
-
-BASH_COMPLETION_EOF
-}
-
-__kubectl_bash_source <(__kubectl_convert_bash_to_zsh)
-_complete kubectl 2>/dev/null
users/vincent/core/zsh/_rg
@@ -1,608 +0,0 @@
-#compdef rg
-
-##
-# zsh completion function for ripgrep
-#
-# Run ci/test_complete.sh after building to ensure that the options supported by
-# this function stay in synch with the `rg` binary.
-#
-# For convenience, a completion reference guide is included at the bottom of
-# this file.
-#
-# Originally based on code from the zsh-users project — see copyright notice
-# below.
-
-_rg() {
- local curcontext=$curcontext no='!' descr ret=1
- local -a context line state state_descr args tmp suf
- local -A opt_args
-
- # ripgrep has many options which negate the effect of a more common one — for
- # example, `--no-column` to negate `--column`, and `--messages` to negate
- # `--no-messages`. There are so many of these, and they're so infrequently
- # used, that some users will probably find it irritating if they're completed
- # indiscriminately, so let's not do that unless either the current prefix
- # matches one of those negation options or the user has the `complete-all`
- # style set. Note that this prefix check has to be updated manually to account
- # for all of the potential negation options listed below!
- if
- # We also want to list all of these options during testing
- [[ $_RG_COMPLETE_LIST_ARGS == (1|t*|y*) ]] ||
- # (--[imnp]* => --ignore*, --messages, --no-*, --pcre2-unicode)
- [[ $PREFIX$SUFFIX == --[imnp]* ]] ||
- zstyle -t ":complete:$curcontext:*" complete-all
- then
- no=
- fi
-
- # We make heavy use of argument groups here to prevent the option specs from
- # growing unwieldy. These aren't supported in zsh <5.4, though, so we'll strip
- # them out below if necessary. This makes the exclusions inaccurate on those
- # older versions, but oh well — it's not that big a deal
- args=(
- + '(exclusive)' # Misc. fully exclusive options
- '(: * -)'{-h,--help}'[display help information]'
- '(: * -)'{-V,--version}'[display version information]'
- '(: * -)'--pcre2-version'[print the version of PCRE2 used by ripgrep, if available]'
-
- + '(buffered)' # buffering options
- '--line-buffered[force line buffering]'
- $no"--no-line-buffered[don't force line buffering]"
- '--block-buffered[force block buffering]'
- $no"--no-block-buffered[don't force block buffering]"
-
- + '(case)' # Case-sensitivity options
- {-i,--ignore-case}'[search case-insensitively]'
- {-s,--case-sensitive}'[search case-sensitively]'
- {-S,--smart-case}'[search case-insensitively if pattern is all lowercase]'
-
- + '(context-a)' # Context (after) options
- '(context-c)'{-A+,--after-context=}'[specify lines to show after each match]:number of lines'
-
- + '(context-b)' # Context (before) options
- '(context-c)'{-B+,--before-context=}'[specify lines to show before each match]:number of lines'
-
- + '(context-c)' # Context (combined) options
- '(context-a context-b)'{-C+,--context=}'[specify lines to show before and after each match]:number of lines'
-
- + '(column)' # Column options
- '--column[show column numbers for matches]'
- $no"--no-column[don't show column numbers for matches]"
-
- + '(count)' # Counting options
- {-c,--count}'[only show count of matching lines for each file]'
- '--count-matches[only show count of individual matches for each file]'
-
- + '(encoding)' # Encoding options
- {-E+,--encoding=}'[specify text encoding of files to search]: :_rg_encodings'
- $no'--no-encoding[use default text encoding]'
-
- + file # File-input options
- '(1)*'{-f+,--file=}'[specify file containing patterns to search for]: :_files'
-
- + '(file-match)' # Files with/without match options
- '(stats)'{-l,--files-with-matches}'[only show names of files with matches]'
- '(stats)--files-without-match[only show names of files without matches]'
-
- + '(file-name)' # File-name options
- {-H,--with-filename}'[show file name for matches]'
- {-I,--no-filename}"[don't show file name for matches]"
-
- + '(file-system)' # File system options
- "--one-file-system[don't descend into directories on other file systems]"
- $no'--no-one-file-system[descend into directories on other file systems]'
-
- + '(fixed)' # Fixed-string options
- {-F,--fixed-strings}'[treat pattern as literal string instead of regular expression]'
- $no"--no-fixed-strings[don't treat pattern as literal string]"
-
- + '(follow)' # Symlink-following options
- {-L,--follow}'[follow symlinks]'
- $no"--no-follow[don't follow symlinks]"
-
- + glob # File-glob options
- '*'{-g+,--glob=}'[include/exclude files matching specified glob]:glob'
- '*--iglob=[include/exclude files matching specified case-insensitive glob]:glob'
-
- + '(heading)' # Heading options
- '(pretty-vimgrep)--heading[show matches grouped by file name]'
- "(pretty-vimgrep)--no-heading[don't show matches grouped by file name]"
-
- + '(hidden)' # Hidden-file options
- '--hidden[search hidden files and directories]'
- $no"--no-hidden[don't search hidden files and directories]"
-
- + '(hybrid)' # hybrid regex options
- '--auto-hybrid-regex[dynamically use PCRE2 if necessary]'
- $no"--no-auto-hybrid-regex[don't dynamically use PCRE2 if necessary]"
-
- + '(ignore)' # Ignore-file options
- "(--no-ignore-global --no-ignore-parent --no-ignore-vcs --no-ignore-dot)--no-ignore[don't respect ignore files]"
- $no'(--ignore-global --ignore-parent --ignore-vcs --ignore-dot)--ignore[respect ignore files]'
-
- + '(ignore-file-case-insensitive)' # Ignore-file case sensitivity options
- '--ignore-file-case-insensitive[process ignore files case insensitively]'
- $no'--no-ignore-file-case-insensitive[process ignore files case sensitively]'
-
- + '(ignore-global)' # Global ignore-file options
- "--no-ignore-global[don't respect global ignore files]"
- $no'--ignore-global[respect global ignore files]'
-
- + '(ignore-parent)' # Parent ignore-file options
- "--no-ignore-parent[don't respect ignore files in parent directories]"
- $no'--ignore-parent[respect ignore files in parent directories]'
-
- + '(ignore-vcs)' # VCS ignore-file options
- "--no-ignore-vcs[don't respect version control ignore files]"
- $no'--ignore-vcs[respect version control ignore files]'
-
- + '(ignore-dot)' # .ignore-file options
- "--no-ignore-dot[don't respect .ignore files]"
- $no'--ignore-dot[respect .ignore files]'
-
- + '(json)' # JSON options
- '--json[output results in JSON Lines format]'
- $no"--no-json[don't output results in JSON Lines format]"
-
- + '(line-number)' # Line-number options
- {-n,--line-number}'[show line numbers for matches]'
- {-N,--no-line-number}"[don't show line numbers for matches]"
-
- + '(line-terminator)' # Line-terminator options
- '--crlf[use CRLF as line terminator]'
- $no"--no-crlf[don't use CRLF as line terminator]"
- '(text)--null-data[use NUL as line terminator]'
-
- + '(max-columns-preview)' # max column preview options
- '--max-columns-preview[show preview for long lines (with -M)]'
- $no"--no-max-columns-preview[don't show preview for long lines (with -M)]"
-
- + '(max-depth)' # Directory-depth options
- '--max-depth=[specify max number of directories to descend]:number of directories'
- '!--maxdepth=:number of directories'
-
- + '(messages)' # Error-message options
- '(--no-ignore-messages)--no-messages[suppress some error messages]'
- $no"--messages[don't suppress error messages affected by --no-messages]"
-
- + '(messages-ignore)' # Ignore-error message options
- "--no-ignore-messages[don't show ignore-file parse error messages]"
- $no'--ignore-messages[show ignore-file parse error messages]'
-
- + '(mmap)' # mmap options
- '--mmap[search using memory maps when possible]'
- "--no-mmap[don't search using memory maps]"
-
- + '(multiline)' # Multiline options
- {-U,--multiline}'[permit matching across multiple lines]'
- $no'(multiline-dotall)--no-multiline[restrict matches to at most one line each]'
-
- + '(multiline-dotall)' # Multiline DOTALL options
- '(--no-multiline)--multiline-dotall[allow "." to match newline (with -U)]'
- $no"(--no-multiline)--no-multiline-dotall[don't allow \".\" to match newline (with -U)]"
-
- + '(only)' # Only-match options
- {-o,--only-matching}'[show only matching part of each line]'
-
- + '(passthru)' # Pass-through options
- '(--vimgrep)--passthru[show both matching and non-matching lines]'
- '!(--vimgrep)--passthrough'
-
- + '(pcre2)' # PCRE2 options
- {-P,--pcre2}'[enable matching with PCRE2]'
- $no'(pcre2-unicode)--no-pcre2[disable matching with PCRE2]'
-
- + '(pcre2-unicode)' # PCRE2 Unicode options
- $no'(--no-pcre2 --no-pcre2-unicode)--pcre2-unicode[enable PCRE2 Unicode mode (with -P)]'
- '(--no-pcre2 --pcre2-unicode)--no-pcre2-unicode[disable PCRE2 Unicode mode (with -P)]'
-
- + '(pre)' # Preprocessing options
- '(-z --search-zip)--pre=[specify preprocessor utility]:preprocessor utility:_command_names -e'
- $no'--no-pre[disable preprocessor utility]'
-
- + pre-glob # Preprocessing glob options
- '*--pre-glob[include/exclude files for preprocessing with --pre]'
-
- + '(pretty-vimgrep)' # Pretty/vimgrep display options
- '(heading)'{-p,--pretty}'[alias for --color=always --heading -n]'
- '(heading passthru)--vimgrep[show results in vim-compatible format]'
-
- + regexp # Explicit pattern options
- '(1 file)*'{-e+,--regexp=}'[specify pattern]:pattern'
-
- + '(replace)' # Replacement options
- {-r+,--replace=}'[specify string used to replace matches]:replace string'
-
- + '(sort)' # File-sorting options
- '(threads)--sort=[sort results in ascending order (disables parallelism)]:sort method:((
- none\:"no sorting"
- path\:"sort by file path"
- modified\:"sort by last modified time"
- accessed\:"sort by last accessed time"
- created\:"sort by creation time"
- ))'
- '(threads)--sortr=[sort results in descending order (disables parallelism)]:sort method:((
- none\:"no sorting"
- path\:"sort by file path"
- modified\:"sort by last modified time"
- accessed\:"sort by last accessed time"
- created\:"sort by creation time"
- ))'
- '!(threads)--sort-files[sort results by file path (disables parallelism)]'
-
- + '(stats)' # Statistics options
- '(--files file-match)--stats[show search statistics]'
- $no"--no-stats[don't show search statistics]"
-
- + '(text)' # Binary-search options
- {-a,--text}'[search binary files as if they were text]'
- "--binary[search binary files, don't print binary data]"
- $no"--no-binary[don't search binary files]"
- $no"(--null-data)--no-text[don't search binary files as if they were text]"
-
- + '(threads)' # Thread-count options
- '(sort)'{-j+,--threads=}'[specify approximate number of threads to use]:number of threads'
-
- + '(trim)' # Trim options
- '--trim[trim any ASCII whitespace prefix from each line]'
- $no"--no-trim[don't trim ASCII whitespace prefix from each line]"
-
- + type # Type options
- '*'{-t+,--type=}'[only search files matching specified type]: :_rg_types'
- '*--type-add=[add new glob for specified file type]: :->typespec'
- '*--type-clear=[clear globs previously defined for specified file type]: :_rg_types'
- # This should actually be exclusive with everything but other type options
- '(: *)--type-list[show all supported file types and their associated globs]'
- '*'{-T+,--type-not=}"[don't search files matching specified file type]: :_rg_types"
-
- + '(word-line)' # Whole-word/line match options
- {-w,--word-regexp}'[only show matches surrounded by word boundaries]'
- {-x,--line-regexp}'[only show matches surrounded by line boundaries]'
-
- + '(zip)' # Compression options
- '(--pre)'{-z,--search-zip}'[search in compressed files]'
- $no"--no-search-zip[don't search in compressed files]"
-
- + misc # Other options — no need to separate these at the moment
- '(-b --byte-offset)'{-b,--byte-offset}'[show 0-based byte offset for each matching line]'
- '--color=[specify when to use colors in output]:when:((
- never\:"never use colors"
- auto\:"use colors or not based on stdout, TERM, etc."
- always\:"always use colors"
- ansi\:"always use ANSI colors (even on Windows)"
- ))'
- '*--colors=[specify color and style settings]: :->colorspec'
- '--context-separator=[specify string used to separate non-continuous context lines in output]:separator'
- '--debug[show debug messages]'
- '--dfa-size-limit=[specify upper size limit of generated DFA]:DFA size (bytes)'
- "(1 stats)--files[show each file that would be searched (but don't search)]"
- '*--ignore-file=[specify additional ignore file]:ignore file:_files'
- '(-v --invert-match)'{-v,--invert-match}'[invert matching]'
- '(-M --max-columns)'{-M+,--max-columns=}'[specify max length of lines to print]:number of bytes'
- '(-m --max-count)'{-m+,--max-count=}'[specify max number of matches per file]:number of matches'
- '--max-filesize=[specify size above which files should be ignored]:file size (bytes)'
- "--no-config[don't load configuration files]"
- '(-0 --null)'{-0,--null}'[print NUL byte after file names]'
- '--path-separator=[specify path separator to use when printing file names]:separator'
- '(-q --quiet)'{-q,--quiet}'[suppress normal output]'
- '--regex-size-limit=[specify upper size limit of compiled regex]:regex size (bytes)'
- '*'{-u,--unrestricted}'[reduce level of "smart" searching]'
-
- + operand # Operands
- '(--files --type-list file regexp)1: :_guard "^-*" pattern'
- '(--type-list)*: :_files'
- )
-
- # This is used with test_complete.sh to verify that there are no options
- # listed in the help output that aren't also defined here
- [[ $_RG_COMPLETE_LIST_ARGS == (1|t*|y*) ]] && {
- print -rl - $args
- return 0
- }
-
- # Strip out argument groups where unsupported (see above)
- [[ $ZSH_VERSION == (4|5.<0-3>)(.*)# ]] &&
- args=( ${(@)args:#(#i)(+|[a-z0-9][a-z0-9_-]#|\([a-z0-9][a-z0-9_-]#\))} )
-
- _arguments -C -s -S : $args && ret=0
-
- case $state in
- colorspec)
- if [[ ${IPREFIX#--*=}$PREFIX == [^:]# ]]; then
- suf=( -qS: )
- tmp=(
- 'column:specify coloring for column numbers'
- 'line:specify coloring for line numbers'
- 'match:specify coloring for match text'
- 'path:specify coloring for file names'
- )
- descr='color/style type'
- elif [[ ${IPREFIX#--*=}$PREFIX == (column|line|match|path):[^:]# ]]; then
- suf=( -qS: )
- tmp=(
- 'none:clear color/style for type'
- 'bg:specify background color'
- 'fg:specify foreground color'
- 'style:specify text style'
- )
- descr='color/style attribute'
- elif [[ ${IPREFIX#--*=}$PREFIX == [^:]##:(bg|fg):[^:]# ]]; then
- tmp=( black blue green red cyan magenta yellow white )
- descr='color name or r,g,b'
- elif [[ ${IPREFIX#--*=}$PREFIX == [^:]##:style:[^:]# ]]; then
- tmp=( {,no}bold {,no}intense {,no}underline )
- descr='style name'
- else
- _message -e colorspec 'no more arguments'
- fi
-
- (( $#tmp )) && {
- compset -P '*:'
- _describe -t colorspec $descr tmp $suf && ret=0
- }
- ;;
-
- typespec)
- if compset -P '[^:]##:include:'; then
- _sequence -s , _rg_types && ret=0
- # @todo This bit in particular could be better, but it's a little
- # complex, and attempting to solve it seems to run us up against a crash
- # bug — zsh # 40362
- elif compset -P '[^:]##:'; then
- _message 'glob or include directive' && ret=1
- elif [[ ! -prefix *:* ]]; then
- _rg_types -qS : && ret=0
- fi
- ;;
- esac
-
- return ret
-}
-
-# Complete encodings
-_rg_encodings() {
- local -a expl
- local -aU _encodings
-
- # This is impossible to read, but these encodings rarely if ever change, so it
- # probably doesn't matter. They are derived from the list given here:
- # https://encoding.spec.whatwg.org/#concept-encoding-get
- _encodings=(
- {{,us-}ascii,arabic,chinese,cyrillic,greek{,8},hebrew,korean}
- logical visual mac {,cs}macintosh x-mac-{cyrillic,roman,ukrainian}
- 866 ibm{819,866} csibm866
- big5{,-hkscs} {cn-,cs}big5 x-x-big5
- cp{819,866,125{0..8}} x-cp125{0..8}
- csiso2022{jp,kr} csiso8859{6,8}{e,i}
- csisolatin{{1..6},9} csisolatin{arabic,cyrillic,greek,hebrew}
- ecma-{114,118} asmo-708 elot_928 sun_eu_greek
- euc-{jp,kr} x-euc-jp cseuckr cseucpkdfmtjapanese
- {,x-}gbk csiso58gb231280 gb18030 {,cs}gb2312 gb_2312{,-80} hz-gb-2312
- iso-2022-{cn,cn-ext,jp,kr}
- iso8859{,-}{{1..11},13,14,15}
- iso-8859-{{1..11},{6,8}-{e,i},13,14,15,16} iso_8859-{{1..9},15}
- iso_8859-{1,2,6,7}:1987 iso_8859-{3,4,5,8}:1988 iso_8859-9:1989
- iso-ir-{58,100,101,109,110,126,127,138,144,148,149,157}
- koi{,8,8-r,8-ru,8-u,8_r} cskoi8r
- ks_c_5601-{1987,1989} ksc{,_}5691 csksc56011987
- latin{1..6} l{{1..6},9}
- shift{-,_}jis csshiftjis {,x-}sjis ms_kanji ms932
- utf{,-}8 utf-16{,be,le} unicode-1-1-utf-8
- windows-{31j,874,949,125{0..8}} dos-874 tis-620 ansi_x3.4-1968
- x-user-defined auto none
- )
-
- _wanted encodings expl encoding compadd -a "$@" - _encodings
-}
-
-# Complete file types
-_rg_types() {
- local -a expl
- local -aU _types
-
- _types=( ${(@)${(f)"$( _call_program types rg --type-list )"}%%:*} )
-
- _wanted types expl 'file type' compadd -a "$@" - _types
-}
-
-_rg "$@"
-
-################################################################################
-# ZSH COMPLETION REFERENCE
-#
-# For the convenience of developers who aren't especially familiar with zsh
-# completion functions, a brief reference guide follows. This is in no way
-# comprehensive; it covers just enough of the basic structure, syntax, and
-# conventions to help someone make simple changes like adding new options. For
-# more complete documentation regarding zsh completion functions, please see the
-# following:
-#
-# * http://zsh.sourceforge.net/Doc/Release/Completion-System.html
-# * https://github.com/zsh-users/zsh/blob/master/Etc/completion-style-guide
-#
-# OVERVIEW
-#
-# Most zsh completion functions are defined in terms of `_arguments`, which is a
-# shell function that takes a series of argument specifications. The specs for
-# `rg` are stored in an array, which is common for more complex functions; the
-# elements of the array are passed to `_arguments` on invocation.
-#
-# ARGUMENT-SPECIFICATION SYNTAX
-#
-# The following is a contrived example of the argument specs for a simple tool:
-#
-# '(: * -)'{-h,--help}'[display help information]'
-# '(-q -v --quiet --verbose)'{-q,--quiet}'[decrease output verbosity]'
-# '!(-q -v --quiet --verbose)--silent'
-# '(-q -v --quiet --verbose)'{-v,--verbose}'[increase output verbosity]'
-# '--color=[specify when to use colors]:when:(always never auto)'
-# '*:example file:_files'
-#
-# Although there may appear to be six specs here, there are actually nine; we
-# use brace expansion to combine specs for options that go by multiple names,
-# like `-q` and `--quiet`. This is customary, and ties in with the fact that zsh
-# merges completion possibilities together when they have the same description.
-#
-# The first line defines the option `-h`/`--help`. With most tools, it isn't
-# useful to complete anything after `--help` because it effectively overrides
-# all others; the `(: * -)` at the beginning of the spec tells zsh not to
-# complete any other operands (`:` and `*`) or options (`-`) after this one has
-# been used. The `[...]` at the end associates a description with `-h`/`--help`;
-# as mentioned, zsh will see the identical descriptions and merge these options
-# together when offering completion possibilities.
-#
-# The next line defines `-q`/`--quiet`. Here we don't want to suppress further
-# completions entirely, but we don't want to offer `-q` if `--quiet` has been
-# given (since they do the same thing), nor do we want to offer `-v` (since it
-# doesn't make sense to be quiet and verbose at the same time). We don't need to
-# tell zsh not to offer `--quiet` a second time, since that's the default
-# behaviour, but since this line expands to two specs describing `-q` *and*
-# `--quiet` we do need to explicitly list all of them here.
-#
-# The next line defines a hidden option `--silent` — maybe it's a deprecated
-# synonym for `--quiet`. The leading `!` indicates that zsh shouldn't offer this
-# option during completion. The benefit of providing a spec for an option that
-# shouldn't be completed is that, if someone *does* use it, we can correctly
-# suppress completion of other options afterwards.
-#
-# The next line defines `-v`/`--verbose`; this works just like `-q`/`--quiet`.
-#
-# The next line defines `--color`. In this example, `--color` doesn't have a
-# corresponding short option, so we don't need to use brace expansion. Further,
-# there are no other options it's exclusive with (just itself), so we don't need
-# to define those at the beginning. However, it does take a mandatory argument.
-# The `=` at the end of `--color=` indicates that the argument may appear either
-# like `--color always` or like `--color=always`; this is how most GNU-style
-# command-line tools work. The corresponding short option would normally use `+`
-# — for example, `-c+` would allow either `-c always` or `-calways`. For this
-# option, the arguments are known ahead of time, so we can simply list them in
-# parentheses at the end (`when` is used as the description for the argument).
-#
-# The last line defines an operand (a non-option argument). In this example, the
-# operand can be used any number of times (the leading `*`), and it should be a
-# file path, so we tell zsh to call the `_files` function to complete it. The
-# `example file` in the middle is the description to use for this operand; we
-# could use a space instead to accept the default provided by `_files`.
-#
-# GROUPING ARGUMENT SPECIFICATIONS
-#
-# Newer versions of zsh support grouping argument specs together. All specs
-# following a `+` and then a group name are considered to be members of the
-# named group. Grouping is useful mostly for organisational purposes; it makes
-# the relationship between different options more obvious, and makes it easier
-# to specify exclusions.
-#
-# We could rewrite our example above using grouping as follows:
-#
-# '(: * -)'{-h,--help}'[display help information]'
-# '--color=[specify when to use colors]:when:(always never auto)'
-# '*:example file:_files'
-# + '(verbosity)'
-# {-q,--quiet}'[decrease output verbosity]'
-# '!--silent'
-# {-v,--verbose}'[increase output verbosity]'
-#
-# Here we take advantage of a useful feature of spec grouping — when the group
-# name is surrounded by parentheses, as in `(verbosity)`, it tells zsh that all
-# of the options in that group are exclusive with each other. As a result, we
-# don't need to manually list out the exclusions at the beginning of each
-# option.
-#
-# Groups can also be referred to by name in other argument specs; for example:
-#
-# '(xyz)--aaa' '*: :_files'
-# + xyz --xxx --yyy --zzz
-#
-# Here we use the group name `xyz` to tell zsh that `--xxx`, `--yyy`, and
-# `--zzz` are not to be completed after `--aaa`. This makes the exclusion list
-# much more compact and reusable.
-#
-# CONVENTIONS
-#
-# zsh completion functions generally adhere to the following conventions:
-#
-# * Use two spaces for indentation
-# * Combine specs for options with different names using brace expansion
-# * In combined specs, list the short option first (as in `{-a,--text}`)
-# * Use `+` or `=` as described above for options that take arguments
-# * Provide a description for all options, option-arguments, and operands
-# * Capitalise/punctuate argument descriptions as phrases, not complete
-# sentences — 'display help information', never 'Display help information.'
-# (but still capitalise acronyms and proper names)
-# * Write argument descriptions as verb phrases — 'display x', 'enable y',
-# 'use z'
-# * Word descriptions to make it clear when an option expects an argument;
-# usually this is done with the word 'specify', as in 'specify x' or
-# 'use specified x')
-# * Write argument descriptions as tersely as possible — for example, articles
-# like 'a' and 'the' should be omitted unless it would be confusing
-#
-# Other conventions currently used by this function:
-#
-# * Order argument specs alphabetically by group name, then option name
-# * Group options that are directly related, mutually exclusive, or frequently
-# referenced by other argument specs
-# * Use only characters in the set [a-z0-9_-] in group names
-# * Order exclusion lists as follows: short options, long options, groups
-# * Use American English in descriptions
-# * Use 'don't' in descriptions instead of 'do not'
-# * Word descriptions for related options as similarly as possible. For example,
-# `--foo[enable foo]` and `--no-foo[disable foo]`, or `--foo[use foo]` and
-# `--no-foo[don't use foo]`
-# * Word descriptions to make it clear when an option only makes sense with
-# another option, usually by adding '(with -x)' to the end
-# * Don't quote strings or variables unnecessarily. When quotes are required,
-# prefer single-quotes to double-quotes
-# * Prefix option specs with `$no` when the option serves only to negate the
-# behaviour of another option that must be provided explicitly by the user.
-# This prevents rarely used options from cluttering up the completion menu
-################################################################################
-
-# ------------------------------------------------------------------------------
-# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# * Neither the name of the zsh-users nor the
-# names of its contributors may be used to endorse or promote products
-# derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# ------------------------------------------------------------------------------
-# Description
-# -----------
-#
-# Completion script for ripgrep
-#
-# ------------------------------------------------------------------------------
-# Authors
-# -------
-#
-# * arcizan <ghostrevery@gmail.com>
-# * MaskRay <i@maskray.me>
-#
-# ------------------------------------------------------------------------------
-
-# Local Variables:
-# mode: shell-script
-# coding: utf-8-unix
-# indent-tabs-mode: nil
-# sh-indentation: 2
-# sh-basic-offset: 2
-# End:
-# vim: ft=zsh sw=2 ts=2 et
users/vincent/core/zsh/_tkn
@@ -1,518 +0,0 @@
-#compdef _tkn tkn
-
-
-
-
-function _tkn {
- local -a commands
-
- _arguments -C \
- "1: :->cmnds" \
- "*::arg:->args"
-
- case $state in
- cmnds)
- commands=(
- "clustertask:Manage clustertasks"
- "completion:Prints shell completion scripts"
- "help:Help about any command"
- "pipeline:Manage pipelines"
- "pipelinerun:Manage pipelineruns"
- "resource:Manage pipeline resources"
- "task:Manage tasks"
- "taskrun:Manage taskruns"
- "version:Prints version information"
- )
- _describe "command" commands
- ;;
- esac
-
- case "$words[1]" in
- clustertask)
- _tkn_clustertask
- ;;
- completion)
- _tkn_completion
- ;;
- help)
- _tkn_help
- ;;
- pipeline)
- _tkn_pipeline
- ;;
- pipelinerun)
- _tkn_pipelinerun
- ;;
- resource)
- _tkn_resource
- ;;
- task)
- _tkn_task
- ;;
- taskrun)
- _tkn_taskrun
- ;;
- version)
- _tkn_version
- ;;
- esac
-}
-
-
-function _tkn_clustertask {
- local -a commands
-
- _arguments -C \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- "1: :->cmnds" \
- "*::arg:->args"
-
- case $state in
- cmnds)
- commands=(
- "delete:Delete a clustertask resource in a cluster"
- "list:Lists clustertasks in a namespace"
- )
- _describe "command" commands
- ;;
- esac
-
- case "$words[1]" in
- delete)
- _tkn_clustertask_delete
- ;;
- list)
- _tkn_clustertask_list
- ;;
- esac
-}
-
-function _tkn_clustertask_delete {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_clustertasks'
-}
-
-function _tkn_clustertask_list {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-function _tkn_completion {
- _arguments \
- '(-h --help)'{-h,--help}'[help for completion]' \
- '1: :("bash" "zsh")'
-}
-
-function _tkn_help {
- _arguments
-}
-
-
-function _tkn_pipeline {
- local -a commands
-
- _arguments -C \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- "1: :->cmnds" \
- "*::arg:->args"
-
- case $state in
- cmnds)
- commands=(
- "delete:Delete a pipeline in a namespace"
- "describe:Describes a pipeline in a namespace"
- "list:Lists pipelines in a namespace"
- "logs:Show pipeline logs"
- "start:Start pipelines"
- )
- _describe "command" commands
- ;;
- esac
-
- case "$words[1]" in
- delete)
- _tkn_pipeline_delete
- ;;
- describe)
- _tkn_pipeline_describe
- ;;
- list)
- _tkn_pipeline_list
- ;;
- logs)
- _tkn_pipeline_logs
- ;;
- start)
- _tkn_pipeline_start
- ;;
- esac
-}
-
-function _tkn_pipeline_delete {
- _arguments \
- '(-a --all)'{-a,--all}'[Whether to delete related resources (pipelineruns) (default: false)]' \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipeline'
-}
-
-function _tkn_pipeline_describe {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipeline'
-}
-
-function _tkn_pipeline_list {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-function _tkn_pipeline_logs {
- _arguments \
- '(-a --all)'{-a,--all}'[show all logs including init steps injected by tekton]' \
- '(-f --follow)'{-f,--follow}'[stream live logs]' \
- '(-l --last)'{-l,--last}'[show logs for last run]' \
- '(-L --limit)'{-L,--limit}'[lists number of pipelineruns]:()' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipeline'
-}
-
-function _tkn_pipeline_start {
- _arguments \
- '(-l --last)'{-l,--last}'[re-run the pipeline using last pipelinerun values]' \
- '(*-p *--param)'{\*-p,\*--param}'[pass the param as key=value]:()' \
- '(*-r *--resource)'{\*-r,\*--resource}'[pass the resource name and ref as name=ref]:()' \
- '(-s --serviceaccount)'{-s,--serviceaccount}'[pass the serviceaccount name]: :__kubectl_get_serviceaccount' \
- '*--task-serviceaccount[pass the service account corresponding to the task]: :__kubectl_get_serviceaccount' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipeline'
-}
-
-
-function _tkn_pipelinerun {
- local -a commands
-
- _arguments -C \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- "1: :->cmnds" \
- "*::arg:->args"
-
- case $state in
- cmnds)
- commands=(
- "cancel:Cancel the PipelineRun"
- "delete:Delete a pipelinerun in a namespace"
- "describe:Describe a pipelinerun in a namespace"
- "list:Lists pipelineruns in a namespace"
- "logs:Show the logs of PipelineRun"
- )
- _describe "command" commands
- ;;
- esac
-
- case "$words[1]" in
- cancel)
- _tkn_pipelinerun_cancel
- ;;
- delete)
- _tkn_pipelinerun_delete
- ;;
- describe)
- _tkn_pipelinerun_describe
- ;;
- list)
- _tkn_pipelinerun_list
- ;;
- logs)
- _tkn_pipelinerun_logs
- ;;
- esac
-}
-
-function _tkn_pipelinerun_cancel {
- _arguments \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipelinerun'
-}
-
-function _tkn_pipelinerun_delete {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipelinerun'
-}
-
-function _tkn_pipelinerun_describe {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipelinerun'
-}
-
-function _tkn_pipelinerun_list {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-l --limit)'{-l,--limit}'[limit pipelineruns listed (default: return all pipelineruns)]:()' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-function _tkn_pipelinerun_logs {
- _arguments \
- '(-a --all)'{-a,--all}'[show all logs including init steps injected by tekton]' \
- '(-f --follow)'{-f,--follow}'[stream live logs]' \
- '(*-t *--only-tasks)'{\*-t,\*--only-tasks}'[show logs for mentioned tasks only]:()' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipelinerun'
-}
-
-
-function _tkn_resource {
- local -a commands
-
- _arguments -C \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- "1: :->cmnds" \
- "*::arg:->args"
-
- case $state in
- cmnds)
- commands=(
- "delete:Delete a pipeline resource in a namespace"
- "describe:Describes a pipeline resource in a namespace"
- "list:Lists pipeline resources in a namespace"
- )
- _describe "command" commands
- ;;
- esac
-
- case "$words[1]" in
- delete)
- _tkn_resource_delete
- ;;
- describe)
- _tkn_resource_describe
- ;;
- list)
- _tkn_resource_list
- ;;
- esac
-}
-
-function _tkn_resource_delete {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipelineresource'
-}
-
-function _tkn_resource_describe {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_pipelineresource'
-}
-
-function _tkn_resource_list {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-t --type)'{-t,--type}'[Pipeline resource type]:()' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-
-function _tkn_task {
- local -a commands
-
- _arguments -C \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- "1: :->cmnds" \
- "*::arg:->args"
-
- case $state in
- cmnds)
- commands=(
- "delete:Delete a task resource in a namespace"
- "list:Lists tasks in a namespace"
- )
- _describe "command" commands
- ;;
- esac
-
- case "$words[1]" in
- delete)
- _tkn_task_delete
- ;;
- list)
- _tkn_task_list
- ;;
- esac
-}
-
-function _tkn_task_delete {
- _arguments \
- '(-a --all)'{-a,--all}'[Whether to delete related resources (taskruns) (default: false)]' \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_task'
-}
-
-function _tkn_task_list {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-
-function _tkn_taskrun {
- local -a commands
-
- _arguments -C \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- "1: :->cmnds" \
- "*::arg:->args"
-
- case $state in
- cmnds)
- commands=(
- "delete:Delete a taskrun in a namespace"
- "list:Lists taskruns in a namespace"
- "logs:Show taskruns logs"
- )
- _describe "command" commands
- ;;
- esac
-
- case "$words[1]" in
- delete)
- _tkn_taskrun_delete
- ;;
- list)
- _tkn_taskrun_list
- ;;
- logs)
- _tkn_taskrun_logs
- ;;
- esac
-}
-
-function _tkn_taskrun_delete {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_taskrun'
-}
-
-function _tkn_taskrun_list {
- _arguments \
- '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
- '(-l --limit)'{-l,--limit}'[limit taskruns listed (default: return all taskruns)]:()' \
- '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
- '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-function _tkn_taskrun_logs {
- _arguments \
- '(-a --all)'{-a,--all}'[show all logs including init steps injected by tekton]' \
- '(-f --follow)'{-f,--follow}'[stream live logs]' \
- '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
- '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
- '1: :__tkn_get_taskrun'
-}
-
-function _tkn_version {
- _arguments \
- '(-c --check)'{-c,--check}'[check if a newer version is available]'
-}
-
-
-# Custom function for Completions
-function __tkn_get_object() {
- local type=$1
- local util=$2
- local template begin tkn_out
- template="{{ range .items }}{{ .metadata.name }} {{ end }}"
-
- if [[ ${util} == "kubectl" ]];then
- tkn_out=($(kubectl get ${type} -o template --template="${template}" 2>/dev/null))
- elif [[ ${util} == "tkn" ]];then
- tkn_out=($(tkn ${type} ls -o template --template="${template}" 2>/dev/null))
- fi
-
- if [[ -n ${tkn_out} ]]; then
- [[ -n ${BASH_VERSION} ]] && COMPREPLY=( $( compgen -W "${tkn_out}" -- "$cur" ) )
- [[ -n ${ZSH_VERSION} ]] && compadd ${tkn_out}
- fi
-}
-
-function __kubectl_get_namespace() { __tkn_get_object namespace kubectl ;}
-function __kubectl_get_serviceaccount() { __tkn_get_object serviceaccount kubectl ;}
-function __tkn_get_pipeline() { __tkn_get_object pipeline tkn ;}
-function __tkn_get_pipelinerun() { __tkn_get_object pipelinerun tkn ;}
-function __tkn_get_taskrun() { __tkn_get_object taskrun tkn ;}
-function __tkn_get_pipelineresource() { __tkn_get_object resource tkn ;}
-function __tkn_get_clustertasks() { __tkn_get_object clustertasks tkn ;}
users/vincent/core/zsh/auto-expanding-aliases.zsh
@@ -1,127 +0,0 @@
-# Definition of abbrev-alias for auto-expanding aliases
-# Autoexpand some aliases
-typeset -ga _vbe_abbrevations
-abbrev-alias() {
- alias $1
- _vbe_abbrevations+=(${1%%\=*})
-}
-_vbe_zle-autoexpand() {
- local -a words; words=(${(z)LBUFFER})
- if (( ${#_vbe_abbrevations[(r)${words[-1]}]} )); then
- zle _expand_alias
- fi
- zle magic-space
-}
-zle -N _vbe_zle-autoexpand
-bindkey -M emacs " " _vbe_zle-autoexpand
-bindkey -M emacs "^ " magic-space
-bindkey -M isearch " " magic-space
-
-# Correct common typos
-(( $+commands[git] )) && abbrev-alias gti=git
-(( $+commands[grep] )) && abbrev-alias grpe=grep
-(( $+commands[sudo] )) && abbrev-alias suod=sudo
-(( $+commands[ssh] )) && abbrev-alias shs=ssh
-
-# Save a few keystrokes
-(( $+commands[git] )) && abbrev-alias gls="git ls-files"
-(( $+commands[ip] )) && {
- abbrev-alias ip6='ip -6'
- abbrev-alias ipb='ip -brief'
-}
-
-abbrev-alias tailf="tail -F"
-
-(( $+commands[mpv] )) && abbrev-alias mpva="mpv --no-video"
-
-# System init-related aliases
-() {
- local cmd
- local -a cmds
- cmds=(start stop reload restart status)
-
- if [[ -d /run/systemd/system ]]; then
- # systemd
- for cmd ($cmds) {
- abbrev-alias $cmd="${(%):-%(#..sudo )}systemctl $cmd"
- abbrev-alias u$cmd="systemctl --user $cmd"
- }
- else
- # generic service
- for cmd ($cmds) {
- function $cmd() {
- name=$1 ; shift
- ${(%):-%(#..sudo)} service $name $0 "$@"
- }
- (( $+functions[compdef] )) && compdef _services $cmd
- }
- fi
-}
-
-# grep aliases
-() {
- # If GNU grep is available, use it
- local grep=grep
- (( $+commands[ggrep] )) && grep=ggrep # GNU grep
-
- # Check if grep supports colors
- local colors="--color=auto"
- $grep -q $colors . <<< yes 2> /dev/null || colors=""
-
- # Declare aliases
- alias grep="command ${grep} ${colors}"
- abbrev-alias rgrep="grep -r"
- abbrev-alias egrep="grep -E"
- abbrev-alias fgrep="grep -F"
- # --color=auto doesn't work. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=792135
- (( $+commands[zgrep] )) && alias zgrep="GREP=${grep} command zgrep ${colors}"
-}
-
-# (( $+commands[emacsclient] * $+commands[git] )) && magit() {
-# local root=$(git rev-parse --show-toplevel)
-# [[ -n $root ]] || return
-# emacsclient -e "(progn
-# (select-frame-set-input-focus
-# (window-frame
-# (get-buffer-window
-# (magit-status \"${root}\"))))
-# (delete-other-windows))"
-# }
-
-(( $+commands[nix] )) && nixpkgs() {
- cmd=$1
- shift
- nix run nixpkgs\#${cmd} -- "$@"
-}
-
-v() {
- case $(file --brief --mime-type $1 2> /dev/null) in
- image/svg+xml) ;;
- image/*)
- (( $+commands[nsxiv] )) && ${I3SOCK+i3-tabbed} nsxiv $1
- return
- ;;
- video/*)
- (( $+commands[mpv] )) && ${I3SOCK+i3-tabbed} mpv --no-fs $1
- return
- esac
- if (( $+commands[bat] )); then
- if (( ! $# )); then
- gzip -cdfq | bat
- else
- for f in "$@"; do
- gzip -cdfq -- $f | bat --file-name ${f%.gz}
- done
- fi
- elif (( $+commands[less] )); then
- gzip -cdfq -- "$@" | less -FX
- elif (( $+commands[zmore] )); then
- zmore "$@"
- elif (( $+commands[more] )); then
- gzip -cdfq -- "$@" | more
- else
- gzip -cdfq -- "$@"
- fi
-}
-
-function clean() {}
users/vincent/core/zsh/completion.zsh
@@ -1,85 +0,0 @@
-zstyle ':completion:*' menu select
-# Use caching to make completion for commands such as dpkg and apt usable.
-zstyle ':completion::complete:*' use-cache on
-zstyle ':completion::complete:*' cache-path "$ZSH_CACHE/zcompcache"
-
-# Case-insensitive (all), partial-word, and then substring completion.
-zstyle ':completion:*' matcher-list '' \
- 'm:{a-z\-}={A-Z\_}' \
- 'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
- 'r:[[:ascii:]]||[[:ascii:]]=** r:|=* m:{a-z\-}={A-Z\_}'
-
-# Group matches and describe.
-zstyle ':completion:*:*:*:*:*' menu select
-zstyle ':completion:*:matches' group 'yes'
-zstyle ':completion:*:options' description 'yes'
-zstyle ':completion:*:options' auto-description '%d'
-zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'
-zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'
-zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
-zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
-zstyle ':completion:*:default' list-prompt '%S%M matches%s'
-zstyle ':completion:*' format ' %F{yellow}-- %d --%f'
-zstyle ':completion:*' group-name ''
-zstyle ':completion:*' verbose yes
-
-# Fuzzy match mistyped completions.
-zstyle ':completion:*' completer _complete _list _match _approximate
-zstyle ':completion:*:match:*' original only
-zstyle ':completion:*:approximate:*' max-errors 1 numeric
-
-# Increase the number of errors based on the length of the typed word.
-zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))numeric)'
-
-# Don't complete unavailable commands.
-zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'
-
-# Array completion element sorting.
-zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
-
-# Directories
-zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
-zstyle ':completion:*:*:cd:*' ignore-parents parent pwd
-zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
-zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
-zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
-zstyle ':completion:*' squeeze-slashes true
-zstyle ':completion:*' special-dirs true
-# Environmental Variables
-zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}
-
-# Populate hostname completion.
-zstyle -e ':completion:*:hosts' hosts 'reply=(
- ${=${=${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) 2>/dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ }
- ${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2>/dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}}
-)'
-
-# Don't complete uninteresting users...
-zstyle ':completion:*:*:*:users' ignored-patterns \
- adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
- dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
- hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
- mailman mailnull mldonkey mysql nagios \
- named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
- operator pcap postfix postgres privoxy pulse pvm quagga radvd \
- rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*'
-
-# ... unless we really want to.
-zstyle '*' single-ignored show
-
-# Ignore multiple entries.
-zstyle ':completion:*:(rm|kill|diff):*' ignore-line other
-zstyle ':completion:*:rm:*' file-patterns '*:all-files'
-
-# Man
-zstyle ':completion:*:manuals' separate-sections true
-zstyle ':completion:*:manuals.(^1*)' insert-sections true
-
-# SSH/SCP/RSYNC
-zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
-zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr
-zstyle ':completion:*:ssh:*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
-zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr
-zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
-zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*'
-zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'
users/vincent/core/zsh/j
@@ -1,30 +0,0 @@
-local root=~/src/
-local res results args
-
-while getopts "np" opt; do
- if [[ $opt = "?" ]]; then
- print -r -- "$myname: unrecognized option: -$OPTARG" >&2
- return 1
- fi
- eval "opt_$opt=\${OPTARG:--\$opt}"
-done
-(( OPTIND > 1 )) && shift $(( OPTIND - 1 ))
-
-local fnd=$1
-type -f zshz 2>/dev/null >/dev/null || opt_n=true
-
-if [[ -n ${fnd} ]];then
-
- [[ -z ${opt_n} ]] && {
- local zz=$(zshz -e ${fnd})
- [[ -n ${zz} ]] && { echo "ZSHZ: ${zz}"; [[ -z ${opt_p} ]] && cd ${zz}; return;}
- }
-
- local results=($(fd -d 3 -t d . ${root}|egrep -i "${fnd}"))
- [[ ${#results} == 1 ]] && { echo ${results}; [[ -z ${opt_p} ]] && cd ${results} ; return;}
- [[ ${#results} == 0 ]] && { echo "No results found for ${fnd}"; return 1;}
- args="-q ${fnd}"
-fi
-
-res=$(fd -d 3 -t d . ${root}|sed "s,${root},,"|fzf --height 50% --border ${args})
-[[ -n ${res} ]] && {echo ${root}${res}; [[ -z ${opt_p} ]] && cd ${root}${res} ; }
users/vincent/core/zsh/prompt.zsh
@@ -1,907 +0,0 @@
-# Config for Powerlevel10k with lean prompt style. Type `p10k configure` to generate
-# your own config based on it.
-#
-# Tip: Looking for a nice color? Here's a one-liner to print colormap.
-#
-# for i in {0..255}; do print -Pn "%${i}F${(l:3::0:)i}%f " ${${(M)$((i%8)):#7}:+$'\n'}; done
-
-# Temporarily change options.
-'builtin' 'local' '-a' 'p10k_config_opts'
-[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
-[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
-[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
-'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
-
-() {
- emulate -L zsh
- setopt no_unset extended_glob
- zmodload zsh/langinfo
- if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then
- local LC_ALL=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8}
- fi
-
- # Unset all configuration options. This allows you to apply configiguration changes without
- # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
- unset -m 'POWERLEVEL9K_*'
-
- # The list of segments shown on the left. Fill it with the most important segments.
- typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
- # =========================[ Line #1 ]=========================
- # os_icon # os identifier
- status # exit code of the last command
- context # user@hostname
- dir # current directory
- vcs # git status
- go_version # go version (https://golang.org)
- rust_version # rustc version (https://www.rust-lang.org)
- background_jobs # presence of background jobs
- direnv # direnv status (https://direnv.net/)
- virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html)
- in_nix_shell
- docker_host
- kubecontext # current kubernetes context (https://kubernetes.io/)
- prompt_char # prompt symbol
- )
-
- # The list of segments shown on the right. Fill it with less important segments.
- # Right prompt on the last prompt line (where you are typing your commands) gets
- # automatically hidden when the input line reaches it. Right prompt above the
- # last prompt line gets hidden if it would overlap with left prompt.
- typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
- # =========================[ Line #1 ]=========================
- # command_execution_time # duration of the last command
- #anaconda # conda environment (https://conda.io/)
- # pyenv # python environment (https://github.com/pyenv/pyenv)
- #nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv)
- #nvm # node.js version from nvm (https://github.com/nvm-sh/nvm)
- #nodeenv # node.js environment (https://github.com/ekalinin/nodeenv)
- # node_version # node.js version
- # dotnet_version # .NET version (https://dotnet.microsoft.com)
- #rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv)
- #rvm # ruby version from rvm (https://rvm.io)
- # terraform # terraform workspace (https://www.terraform.io)
- #aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
- # aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
- # azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
- #nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
- #ranger # ranger shell (https://github.com/ranger/ranger)
- # vpn_ip # virtual private network indicator
- # ram # free RAM
- # load # CPU load
- # time # current time
- # =========================[ Line #2 ]=========================
- #newline
- # public_ip # public IP address
- # proxy # system-wide http/https/ftp proxy
- #battery # internal battery
- # example # example user-defined segment (see prompt_example function below)
- )
-
- # Basic style options that define the overall look of your prompt. You probably don't want to
- # change them.
- typeset -g POWERLEVEL9K_BACKGROUND= # transparent background
- typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace
- typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space
- typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
-
- # To disable default icons for all segments, set POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION=''.
- #
- # To enable default icons for all segments, don't define POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION
- # or set it to '${P9K_VISUAL_IDENTIFIER}'.
- #
- # To remove spaces from all default icons, set POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION
- # to '${P9K_VISUAL_IDENTIFIER// }'. You'll know that you you need this option if you see extra
- # spaces after icons.
- #
- # To enable default icons for one segment (e.g., dir), set
- # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'.
- #
- # To assign a specific icon to one segment (e.g., dir), set
- # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='⭐'.
- #
- # To assign a specific icon to a segment in a given state (e.g., dir in state NOT_WRITABLE),
- # set POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'.
- #
- # Note: You can use $'\u2B50' instead of '⭐'. It's especially convenient when specifying
- # icons that your text editor cannot render. Don't forget to put $ and use single quotes when
- # defining icons via Unicode codepoints.
- #
- # Note: Many default icons cannot be displayed with system fonts. You'll need to install a
- # capable font to use them. See POWERLEVEL9K_MODE below.
- typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION=
-
- # This option makes a difference only when default icons are enabled for all or some prompt
- # segments (see POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION above). LOCK_ICON can be printed as
- # $'\uE0A2', $'\uE138' or $'\uF023' depending on POWERLEVEL9K_MODE. The correct value of this
- # parameter depends on the provider of the font your terminal is using.
- #
- # Font Provider | POWERLEVEL9K_MODE
- # ---------------------------------+-------------------
- # Powerline | powerline
- # Font Awesome | awesome-fontconfig
- # Adobe Source Code Pro | awesome-fontconfig
- # Source Code Pro | awesome-fontconfig
- # Awesome-Terminal Fonts (regular) | awesome-fontconfig
- # Awesome-Terminal Fonts (patched) | awesome-patched
- # Nerd Fonts | nerdfont-complete
- # Other | compatible
- #
- # If this looks overwhelming, either stick with a preinstalled system font and set
- # POWERLEVEL9K_MODE=compatible, or install the recommended Powerlevel10k font from
- # https://github.com/romkatv/powerlevel10k/#recommended-meslo-nerd-font-patched-for-powerlevel10k
- # and set POWERLEVEL9K_MODE=nerdfont-complete.
- typeset -g POWERLEVEL9K_MODE=nerdfont-complete
-
- # When set to true, icons appear before content on both sides of the prompt. When set
- # to false, icons go after content. If empty or not set, icons go before content in the left
- # prompt and after content in the right prompt.
- #
- # You can also override it for a specific segment:
- #
- # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
- #
- # Or for a specific segment in specific state:
- #
- # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
- typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true
-
- # Add an empty line before each prompt.
- typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
-
- # Connect left prompt lines with these symbols.
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=
- typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX=
- typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=
- # Connect right prompt lines with these symbols.
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=
- typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=
- typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=
-
- # The left end of left prompt.
- typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
- # The right end of right prompt.
- typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=
-
- # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll
- # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and
- # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below.
- typeset -g POWERLEVEL9K_SHOW_RULER=false
- typeset -g POWERLEVEL9K_RULER_CHAR='─' # reasonable alternative: '·'
- typeset -g POWERLEVEL9K_RULER_FOREGROUND=240
-
- # Filler between left and right prompt on the first prompt line. You can set it to '·' or '─'
- # to make it easier to see the alignment between left and right prompt and to separate prompt
- # from command output. It serves the same purpose as ruler (see above) without increasing
- # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false
- # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact
- # prompt.
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
- if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
- # The color of the filler.
- typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=240
- # Add a space between the end of left prompt and the filler.
- typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' '
- # Add a space between the filler and the start of right prompt.
- typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' '
- # Start filler from the edge of the screen if there are no left segments on the first line.
- typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
- # End filler on the edge of the screen if there are no right segments on the first line.
- typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
- fi
-
- #################################[ os_icon: os identifier ]##################################
- # OS identifier color.
- typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=
- # Make the icon bold.
- typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='%B${P9K_CONTENT}'
-
- ################################[ prompt_char: prompt symbol ]################################
- # Green prompt symbol if the last command succeeded.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
- # Red prompt symbol if the last command failed.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
- # Default prompt symbol.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='$'
- # Prompt symbol in command vi mode.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
- # Prompt symbol in visual vi mode.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='Ⅴ'
- # Prompt symbol in overwrite vi mode.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
- typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
- typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
-
- ##################################[ dir: current directory ]##################################
- # Default current directory color.
- typeset -g POWERLEVEL9K_DIR_FOREGROUND=31
- # If directory is too long, shorten some of its segments to the shortest possible unique
- # prefix. The shortened directory can be tab-completed to the original.
- typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_from_right # truncate_to_unique
- # typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
- # Replace removed segment suffixes with this symbol.
- typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
- # Color of the shortened directory segments.
- typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
- # Color of the anchor directory segments. Anchor segments are never shortened. The first
- # segment is always an anchor.
- typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39
- # Display anchor directory segments in bold.
- typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
- # Don't shorten directories that contain any of these files. They are anchors.
- local anchor_files=(
- .bzr
- .citc
- .git
- .hg
- .node-version
- .python-version
- .ruby-version
- .shorten_folder_marker
- .svn
- .terraform
- CVS
- Cargo.toml
- composer.json
- go.mod
- package.json
- )
- typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
- # Don't shorten this many last directory segments. They are anchors.
- typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
- # Shorten directory if it's longer than this even if there is space for it. The value can
- # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
- # directory will be shortened only when prompt doesn't fit or when other parameters demand it
- # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
- typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
- # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
- # many columns for typing commands.
- typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
- # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
- # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
- typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
- # If set to true, embed a hyperlink into the directory. Useful for quickly
- # opening a directory in the file manager simply by clicking the link.
- # Can also be handy when the directory is shortened, as it allows you to see
- # the full directory that was used in previous commands.
- typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
-
- # Enable special styling for non-writable directories.
- typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true
- # Show this icon when the current directory is not writable. POWERLEVEL9K_DIR_SHOW_WRITABLE
- # above must be set to true for this parameter to have effect.
- # typeset -g POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- # Custom prefix.
- # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '
-
- # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons for different directories.
- # It must be an array with 3 * N elements. Each triplet consists of:
- #
- # 1. A pattern against which the current directory is matched. Matching is done with
- # extended_glob option enabled.
- # 2. Directory class for the purpose of styling.
- # 3. Icon.
- #
- # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. If there
- # are no matches, the directory will have no icon.
- #
- # Example:
- #
- # typeset -g POWERLEVEL9K_DIR_CLASSES=(
- # '~/work(/*)#' WORK '(╯°□°)╯︵ ┻━┻'
- # '~(/*)#' HOME '⌂'
- # '*' DEFAULT '')
- #
- # With these settings, the current directory in the prompt may look like this:
- #
- # (╯°□°)╯︵ ┻━┻ ~/work/projects/important/urgent
- #
- # Or like this:
- #
- # ⌂ ~/best/powerlevel10k
- #
- # You can also set different colors for directories of different classes. Remember to override
- # FOREGROUND, SHORTENED_FOREGROUND and ANCHOR_FOREGROUND for every directory class that you wish
- # to have its own color.
- #
- # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
- # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103
- # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39
- #
- # typeset -g POWERLEVEL9K_DIR_CLASSES=()
-
- #####################################[ vcs: git status ]######################################
- # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon.
- typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
- POWERLEVEL9K_VCS_BRANCH_ICON=${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}
-
- # Untracked files icon. It's really a question mark, your font isn't broken.
- # Change the value of this parameter to show a different icon.
- typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
- POWERLEVEL9K_VCS_UNTRACKED_ICON=${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}
-
- # Formatter for Git status.
- #
- # Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
- #
- # You can edit the function to customize how Git status looks.
- #
- # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
- # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
- function my_git_formatter() {
- emulate -L zsh
-
- if [[ -n $P9K_CONTENT ]]; then
- # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
- # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
- typeset -g my_git_format=$P9K_CONTENT
- return
- fi
-
- if (( $1 )); then
- # Styling for up-to-date Git status.
- local meta='%f' # default foreground
- local clean='%76F' # green foreground
- local modified='%178F' # yellow foreground
- local untracked='%39F' # blue foreground
- local conflicted='%196F' # red foreground
- else
- # Styling for incomplete and stale Git status.
- local meta='%244F' # grey foreground
- local clean='%244F' # grey foreground
- local modified='%244F' # grey foreground
- local untracked='%244F' # grey foreground
- local conflicted='%244F' # grey foreground
- fi
-
- local res
- local where # branch name, tag or commit
- if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
- res+="${clean}${POWERLEVEL9K_VCS_BRANCH_ICON}"
- where=${(V)VCS_STATUS_LOCAL_BRANCH}
- elif [[ -n $VCS_STATUS_TAG ]]; then
- res+="${meta}#"
- where=${(V)VCS_STATUS_TAG}
- else
- res+="${meta}@"
- where=${VCS_STATUS_COMMIT[1,8]}
- fi
-
- # If local branch name or tag is at most 32 characters long, show it in full.
- # Otherwise show the first 12 … the last 12.
- (( $#where > 32 )) && where[13,-13]="…"
- res+="${clean}${where//\%/%%}" # escape %
-
- # Show tracking branch name if it differs from local branch.
- if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
- res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" # escape %
- fi
-
- # ⇣42 if behind the remote.
- (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
- # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
- (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
- (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
- # *42 if have stashes.
- (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
- # 'merge' if the repo is in an unusual state.
- [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
- # ~42 if have merge conflicts.
- (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
- # +42 if have staged changes.
- (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
- # !42 if have unstaged changes.
- (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
- # ?42 if have untracked files. It's really a question mark, your font isn't broken.
- # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
- # Remove the next line if you don't want to see untracked files at all.
- (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
-
- typeset -g my_git_format=$res
- }
- functions -M my_git_formatter 2>/dev/null
-
- # Disable the default Git status formatting.
- typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
- # Install our own Git status formatter.
- typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
- typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
- # Enable counters for staged, unstaged, etc.
- typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
-
- # Icon color.
- typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76
- typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244
- # Custom icon.
- # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # Custom prefix.
- # typeset -g POWERLEVEL9K_VCS_PREFIX='%fon '
-
- # Show status of repositories of these types. You can add svn and/or hg if you are
- # using them. If you do, your prompt may become slow even when your current directory
- # isn't in an svn or hg reposotiry.
- typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
-
- # These settings are used for respositories other than Git or when gitstatusd fails and
- # Powerlevel10k has to fall back to using vcs_info.
- typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
- typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
- typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178
-
- ##########################[ status: exit code of the last command ]###########################
- # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
- # style them independently from the regular OK and ERROR state.
- typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
-
- # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
- # it will signify success by turning green.
- typeset -g POWERLEVEL9K_STATUS_OK=false
- typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70
- typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔'
-
- # Status when some part of a pipe command fails but the overall exit status is zero. It may look
- # like this: 1|0.
- typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
- typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70
- typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔'
-
- # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
- # it will signify error by turning red.
- typeset -g POWERLEVEL9K_STATUS_ERROR=false
- typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160
- typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘'
-
- # Status when the last command was terminated by a signal.
- typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
- typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160
- # Use terse signal names: "INT" instead of "SIGINT(2)".
- typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
- typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘'
-
- # Status when some part of a pipe command fails and the overall exit status is also non-zero.
- # It may look like this: 1|0.
- typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
- typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160
- typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
-
- ###################[ command_execution_time: duration of the last command ]###################
- # Show duration of the last command if takes longer than this many seconds.
- typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
- # Show this many fractional digits. Zero means round to seconds.
- typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
- # Execution time color.
- typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=101
- # Duration format: 1d 2h 3m 4s.
- typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
- # Custom icon.
- # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # Custom prefix.
- # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%ftook '
-
- #######################[ background_jobs: presence of background jobs ]#######################
- # Don't show the number of background jobs.
- typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
- # Background jobs color.
- typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=70
- # Icon to show when there are background jobs.
- typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⇶'
-
- #######################[ direnv: direnv status (https://direnv.net/) ]########################
- # Direnv color.
- typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178
- # Icon to show when direnv is active.
- typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'
-
- ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
- # NordVPN connection indicator color.
- typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39
- # Hide NordVPN connection indicator when not connected.
- typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
- typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
- # Custom icon.
- # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
- # Ranger shell color.
- typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178
- # Custom icon.
- # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ######################################[ ram: free RAM ]#######################################
- # RAM color.
- typeset -g POWERLEVEL9K_RAM_FOREGROUND=66
- # Custom icon.
- # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ######################################[ load: CPU load ]######################################
- # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
- typeset -g POWERLEVEL9K_LOAD_WHICH=5
- # Load color when load is under 50%.
- typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66
- # Load color when load is between 50% and 70%.
- typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178
- # Load color when load is over 70%.
- typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166
- # Custom icon.
- # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ##################################[ context: user@hostname ]##################################
- # Default context color.
- typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180
- # Default context format: %n is username, %m is hostname.
- typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
-
- # Context color when running with privileges.
- typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178
- # Context format when running with privileges: bold user@hostname.
- typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m'
-
- # Don't show context unless running with privileges or in SSH.
- # Tip: Remove the next line to always show context.
- typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
-
- # Custom icon.
- # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # Custom prefix.
- # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%fwith '
-
- ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
- # Python virtual environment color.
- typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37
- # Don't show Python version next to the virtual environment name.
- typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
- # Separate environment name from Python version only with a space.
- typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
- # Custom icon.
- # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #####################[ anaconda: conda environment (https://conda.io/) ]######################
- # Anaconda environment color.
- typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37
- # Don't show Python version next to the anaconda environment name.
- typeset -g POWERLEVEL9K_ANACONDA_SHOW_PYTHON_VERSION=false
- # Separate environment name from Python version only with a space.
- typeset -g POWERLEVEL9K_ANACONDA_{LEFT,RIGHT}_DELIMITER=
- # Custom icon.
- # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
- # Pyenv color.
- typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37
- # Don't show the current Python version if it's the same as global.
- typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
- # Custom icon.
- # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
- # Nodenv color.
- typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70
- # Don't show node version if it's the same as global: $(nodenv version-name) == $(nodenv global).
- typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
- # Custom icon.
- # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
- # Nvm color.
- typeset -g POWERLEVEL9K_NVM_FOREGROUND=70
- # Custom icon.
- # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
- # Nodeenv color.
- typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70
- # Don't show Node version next to the environment name.
- typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
- # Separate environment name from Node version only with a space.
- typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
- # Custom icon.
- # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ##############################[ node_version: node.js version ]###############################
- # Node version color.
- typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70
- # Show node version only when in a directory tree containing package.json.
- typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
- # Custom icon.
- # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #######################[ go_version: go version (https://golang.org) ]########################
- # Go version color.
- typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37
- # Show go version only when in a go project subdirectory.
- typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
- # Custom icon.
- # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
- # Rust version color.
- typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37
- # Show rust version only when in a rust project subdirectory.
- typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
- # Custom icon.
- # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
- # .NET version color.
- typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134
- # Show .NET version only when in a .NET project subdirectory.
- typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
- # Custom icon.
- # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
- # Rbenv color.
- typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168
- # Hide ruby version if it doesn't come from one of these sources.
- typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
- # If set to false, hide ruby version if it's the same as global:
- # $(rbenv version-name) == $(rbenv global).
- typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
- # Custom icon.
- # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
- # Rvm color.
- typeset -g POWERLEVEL9K_RVM_FOREGROUND=168
- # Don't show @gemset at the end.
- typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
- # Don't show ruby- at the front.
- typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
- # Custom icon.
- # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
- # Kubernetes context classes for the purpose of using different colors, icons and expansions with
- # different contexts.
- #
- # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
- # in each pair defines a pattern against which the current kubernetes context gets matched.
- # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
- # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
- # you'll see this value in your prompt. The second element of each pair in
- # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
- # first match wins.
- #
- # For example, given these settings:
- #
- # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
- # '*prod*' PROD
- # '*test*' TEST
- # '*' DEFAULT)
- #
- # If your current kubernetes context is "deathray-testing/default", its class is TEST
- # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
- #
- # You can define different colors, icons and content expansions for different classes:
- #
- # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28
- # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
- typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
- # '*prod*' PROD # These values are examples that are unlikely
- # '*test*' TEST # to match your needs. Customize them as needed.
- '*' DEFAULT)
- typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134
-
- # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
- # segment. Parameter expansions are very flexible and fast, too. See reference:
- # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
- #
- # Within the expansion the following parameters are always available:
- #
- # - P9K_CONTENT The content that would've been displayed if there was no content
- # expansion defined.
- # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the
- # output of `kubectl config get-contexts`.
- # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the
- # output of `kubectl config get-contexts`.
- # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE
- # in the output of `kubectl config get-contexts`. If there is no
- # namespace, the parameter is set to "default".
- #
- # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
- # the following extra parameters are available:
- #
- # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks".
- # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID.
- # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone.
- # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster.
- #
- # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
- # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
- #
- # - P9K_KUBECONTEXT_CLOUD_NAME=gke
- # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
- # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
- # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
- #
- # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
- #
- # - P9K_KUBECONTEXT_CLOUD_NAME=eks
- # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
- # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
- # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
- typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION='%F{13}${${${:-$KCS_PROFILE}:-$P9K_KUBECONTEXT_CLUSTER}}%f'
- # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
- # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
- # POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
- POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='/%F{3}${${:-$P9K_KUBECONTEXT_NAMESPACE}:-default}%f'
- # Append the current context's namespace if it's not "default".
- # POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
-
- # Custom prefix.
- # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat '
-
- ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
- # Terraform color.
- typeset -g POWERLEVEL9K_TERRAFORM_FOREGROUND=38
- # Custom icon.
- # typeset -g POWERLEVEL9K_TERRAFORM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
- # AWS profile color.
- typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208
- # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
- # in each pair defines a pattern against which the current AWS profile gets matched.
- # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
- # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
- # you'll see this value in your prompt. The second element of each pair in
- # POWERLEVEL9K_AWS_CLASSES defines the context class. Patterns are tried in order. The
- # first match wins.
- #
- # For example, given these settings:
- #
- # typeset -g POWERLEVEL9K_AWS_CLASSES=(
- # '*prod*' PROD
- # '*test*' TEST
- # '*' DEFAULT)
- #
- # If your current AWS profile is "company_test", its class is TEST
- # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
- #
- # You can define different colors, icons and content expansions for different classes:
- #
- # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
- # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
- typeset -g POWERLEVEL9K_AWS_CLASSES=(
- # '*prod*' PROD # These values are examples that are unlikely
- # '*test*' TEST # to match your needs. Customize them as needed.
- '*' DEFAULT)
- # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
- # AWS Elastic Beanstalk environment color.
- typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70
- # Custom icon.
- # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
- # Azure account name color.
- typeset -g POWERLEVEL9K_AZURE_FOREGROUND=32
- # Custom icon.
- # typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ###############################[ public_ip: public IP address ]###############################
- # Public IP color.
- typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94
- # Custom icon.
- # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ########################[ vpn_ip: virtual private network indicator ]#########################
- # VPN IP color.
- typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81
- # When on VPN, show just an icon without the IP address.
- typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
- # Regular expression for the VPN network interface. Run ifconfig while on VPN to see the
- # name of the interface.
- typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(wg|(.*tun))[0-9]*'
- # Icon to show when on VPN.
- typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'
-
- #########################[ proxy: system-wide http/https/ftp proxy ]##########################
- # Proxy color.
- typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68
- # Custom icon.
- # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- ################################[ battery: internal battery ]#################################
- # Show battery in red when it's below this level and not connected to power supply.
- typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
- typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160
- # Show battery in green when it's charging or fully charged.
- typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70
- # Show battery in yellow when it's discharging.
- typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178
- # Battery pictograms going from low to high level of charge.
- typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█')
- # Don't show the remaining time to charge/discharge.
- typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
-
- ####################################[ time: current time ]####################################
- # Current time color.
- typeset -g POWERLEVEL9K_TIME_FOREGROUND=66
- # Format for the current time: 09:51:02. See `man 3 strftime`.
- typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
- # If set to true, time will update when you hit enter. This way prompts for the past
- # commands will contain the start times of their commands as opposed to the default
- # behavior where they contain the end times of their preceding commands.
- typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
- # Custom icon.
- # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # Custom prefix.
- # typeset -g POWERLEVEL9K_TIME_PREFIX='%fat '
-
- function prompt_in_nix_shell() {
- if test -n "${IN_NIX_SHELL}"; then
- if test -n "${NIX_SHELL_PACKAGES}"; then
- p10k segment -f yellow -i '🛡' -t "{ ${NIX_SHELL_PACKAGES} }"
- else
- p10k segment -f yellow -t "🛡"
- fi
- fi
- }
-
- function prompt_docker_host() {
- if test -n "${DOCKER_HOST}"; then
- p10k segment -f blue -i '🐋' -t "${DOCKER_HOST}"
- fi
- }
- # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
- # is to generate the prompt segment for display in instant prompt. See
- # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
- #
- # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
- # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
- # will replay these calls without actually calling instant_prompt_*. It is imperative that
- # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
- # rule is not observed, the content of instant prompt will be incorrect.
-
- function instant_prompt_in_nix_shell() {
- prompt_in_nix_shell
- }
-
- function instant_prompt_docker_host() {
- prompt_docker_host
- }
-
- # User-defined prompt segments can be customized the same way as built-in segments.
- # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208
- # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
- # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
- # when accepting a command line. Supported values:
- #
- # - off: Don't change prompt when accepting a command line.
- # - always: Trim down prompt when accepting a command line.
- # - same-dir: Trim down prompt when accepting a command line unless this is the first command
- # typed after changing current working directory.
- typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off
-
- # Instant prompt mode.
- #
- # - off: Disable instant prompt. Choose this if you've tried instant prompt and found
- # it incompatible with your zsh configuration files.
- # - quiet: Enable instant prompt and don't print warnings when detecting console output
- # during zsh initialization. Choose this if you've read and understood
- # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
- # - verbose: Enable instant prompt and print a warning when detecting console output during
- # zsh initialization. Choose this if you've never tried instant prompt, haven't
- # seen the warning, or if you are unsure what this all means.
- typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
-
- # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
- # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
- # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
- # really need it.
- typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
-
- # If p10k is already loaded, reload configuration.
- # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
- #(( ! $+functions[p10k] )) || p10k reload
-}
-
-(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
-'builtin' 'unset' 'p10k_config_opts'
users/vincent/core/bash.nix
@@ -1,22 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-let
- shellConfig = import ./shell.nix { inherit config lib pkgs; };
-in
-{
- programs.bash = {
- enable = true;
- historyControl = [
- "erasedups"
- "ignorespace"
- ];
- historyFile = "${config.xdg.dataHome}/bash_history";
- historyFileSize = shellConfig.historySize;
- inherit (shellConfig) historySize;
- shellAliases = shellConfig.aliases;
- };
-}
users/vincent/core/default.nix
@@ -1,90 +0,0 @@
-{ pkgs, ... }:
-
-{
- imports = [
- ./bash.nix
- ./direnv.nix
- ./fzf.nix
- ./git.nix
- ./gpg.nix
- ./htop.nix
- ./ssh.nix
- ./tmux.nix
- ./xdg.nix
- ./zsh.nix
- ];
-
- home = {
- stateVersion = "22.05";
- packages = with pkgs; [
- enchive
- entr
- # exa # TODO: switch to eza in 2024
- fd
- htop
- mosh
- ncurses
- pciutils
- ripgrep
- ugrep
- scripts
- tree
- broot
- lf
- usbutils
- ];
- };
-
- programs.atuin = {
- enable = true;
- flags = [ "--disable-up-arrow" ];
- settings = {
- auto_sync = true;
- sync_frequency = "10m";
- sync_address = "http://sakhalin.sbr.pm:8888";
- search_mode = "skim";
- filter_mode = "global";
- enter_accept = false;
- prefers_reduced_motion = true;
- common_prefix = [ "sudo" ];
- ignored_commands = [
- "cd"
- "fg"
- "ls"
- "rm"
- "vi"
- "vim"
- "p"
- "d"
- "ll"
- "j"
- "g"
- ":"
- "mv"
- "cat"
- "echo"
- ];
- # history_filter = [
- # "^curl"
- # "^wget"
- # "^monolith"
- # "^sherlock"
- # "^yt-dlp"
- # "^yt-dl"
- # "^gallery-dl"
- # "^archivebox"
- # "^fanficfare"
- # ];
- };
- };
-
- # manpages are broken on 21.05 and home-manager (for some reason..)
- # (versionOlder nixosConfig.system.nixos.release "21.11");
- manual.manpages.enable = true;
-
- xdg.configFile."nixpkgs/config.nix".text = ''
- {
- allowUnfree = true;
- }
- '';
-}
users/vincent/core/direnv.nix
@@ -1,13 +0,0 @@
-{ pkgs, ... }:
-
-{
- programs.direnv = {
- enable = true;
- stdlib = ''
- mkdir -p $HOME/.cache/direnv/layouts
- pwd_hash=$(echo -n $PWD | shasum | cut -d ' ' -f 1)
- direnv_layout_dir=$HOME/.cache/direnv/layouts/$pwd_hash
- source ${pkgs.nix-direnv}/share/nix-direnv/direnvrc
- '';
- };
-}
users/vincent/core/fzf.nix
@@ -1,7 +0,0 @@
-{
- programs.fzf = {
- enable = true;
- enableZshIntegration = true;
- defaultOptions = [ "--bind=ctrl-j:accept" ];
- };
-}
users/vincent/core/git.nix
@@ -1,248 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- ca-bundle_crt = "/etc/ssl/certs/ca-bundle.crt";
- redhat_folders = [
- "src/github.com/containers"
- "src/github.com/google"
- "src/github.com/knative"
- "src/github.com/kubernetes"
- "src/github.com/openshift"
- "src/github.com/openshift-knative"
- "src/github.com/openshift-pipelines"
- "src/github.com/operator-framework"
- "src/github.com/redhat-developer"
- "src/github.com/tektoncd"
- "src/gitlab.cee.redhat.com"
- "src/gitlab.corp.redhat.com"
- "src/k8s.io"
- "src/osp"
- "src/pkg.devel.redhat.com"
- "src/tektoncd"
- "src/backstage"
- "src/knative.dev"
- "src/knative-sandbox"
- ];
-in
-{
- home.packages = with pkgs; [
- gist
- git-lfs
- # git-review
- # gitAndTools.hub
- gitAndTools.gh
- gitAndTools.git-appraise
- codeberg-cli
- mr
- delta
- difftastic
- ];
- programs.git = {
- enable = true;
- package = pkgs.git;
-
- userName = "Vincent Demeester";
- userEmail = "vincent@sbr.pm";
-
- signing = {
- # key = "6EB699A3";
- # FIXME: This should change depending on the host (could be different yubikey, …)
- key = "${pkgs.writeText "yubikey5-c1" "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGHMa4rHuBbQQYv+8jvlkFCD2VYRGA4+5fnZAhLx8iDirzfEPqHB60UJWcDeixnJCUlpJjzFbS4crNOXhfCTCTE="}";
- signByDefault = false;
- };
-
- aliases = {
- b = "branch - -color - v";
- br = "branch";
- ca = "commit --amend";
- ci = "commit --signoff";
- co = "checkout";
- conflicts = "!git ls-files --unmerged | cut -c51- | sort -u | xargs $EDITOR";
- dft = "difftool";
- lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative";
- lga = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --branches --remotes";
- lol = "log --pretty=oneline --abbrev-commit --graph --decorate";
- ls-ignored = "ls-files --exclude-standard --ignored --others";
- resolve = "!git ls-files --unmerged | cut -c51- | sort -u | xargs git add";
- st = "status";
- su = "submodule update --init --recursive";
- unstage = "reset HEAD";
- w = "status -sb";
- wdiff = "diff --color-words";
- kdiff = "difftool --tool=kitty --no-symlinks --dir-diff";
- };
- attributes = [
- "*.org diff=org"
- ];
- extraConfig = {
- core = {
- pager = "${pkgs.delta}/bin/delta";
- abbrev = 12;
- # pager = "${pkgs.delta}/bin/delta --syntax-theme GitHub";
- # editor = "${pkgs.emacs}/bin/emacsclient -t";
- };
- gpg = {
- format = "ssh";
- };
- commit = {
- gpgSign = true;
- };
- tag = {
- gpgSign = true;
- };
- init = {
- defaultBranch = "main";
- };
- color = {
- status = "auto";
- diff = "auto";
- branch = "auto";
- interactive = "auto";
- ui = "auto";
- sh = "auto";
- };
- "color.branch" = {
- current = "cyan reverse";
- local = "cyan";
- remote = "green";
- };
- "color.diff" = {
- current = "white reverse";
- frag = "magenta reverse";
- old = "red";
- new = "green";
- };
- "color.status" = {
- added = "green";
- changed = "yellow";
- untracked = "red";
- };
- # Either use this *or* git maintenance
- # fetch = {
- # writeCommitGraph = true;
- # };
- diff = {
- algorithm = "histogram";
- colormoved = "default";
- colormovedws = "allow-indentation-change";
- # external = "difft";
- # tool = "difftastic";
- };
- "diff.org" = {
- xfuncname = "\"^\\\\*+.*\"";
- };
- difftool = {
- prompt = false;
- trustExitCode = true;
- };
- "difftool.difftastic" = {
- cmd = "difft \"$LOCAL\" \"$REMOTE\"";
- };
- "difftool.kitty" = {
- cmd = "kitten diff $LOCAL $REMOTE";
- };
- pager = {
- difftool = true;
- };
- pretty = {
- fixes = "Fixes: %h (\"%s\")";
- };
- forge = {
- remote = "upstream";
- };
- rerere = {
- enabled = true;
- };
- hub = {
- protocol = true;
- };
- pull = {
- rebase = true;
- };
- push = {
- default = "upstream";
- recurseSubmodules = "check";
- };
- rebase = {
- autosquash = true;
- };
- status = {
- short = true;
- branch = true;
- };
- branch = {
- sort = "-committerdate";
- };
- advice = {
- statusHints = false;
- pushNonFastForward = false;
- };
- http = {
- sslCAinfo = "${ca-bundle_crt}";
- sslverify = true;
- };
- delta = {
- syntax-theme = "GitHub";
- features = "decorations";
- };
-
- "delta \"decorations\"" = {
- commit-decoration-style = "blue ol";
- commit-style = "raw";
- file-style = "omit";
- hunk-header-decoration-style = "blue box";
- hunk-header-file-style = "red";
- hunk-header-line-number-style = "#067a00";
- hunk-header-style = "file line-number syntax";
- navigate = true;
- };
-
- credential = {
- "https://github.com" = {
- helper = "!${pkgs.gh}/bin/gh auth git-credential";
- };
- "https://gist.github.com" = {
- helper = "!${pkgs.gh}/bin/gh auth git-credential";
- };
- };
- github.user = "vdemeester";
- "filter \"lfs\"" = {
- clean = "${pkgs.git-lfs}/bin/git-lfs clean -- %f";
- smudge = "${pkgs.git-lfs}/bin/git-lfs smudge --skip -- %f";
- required = true;
- };
- "url \"git@github.com:\"".insteadOf = "git://github.com/";
- };
-
- includes = lists.forEach redhat_folders (x: {
- path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
- condition = "gitdir:${config.home.homeDirectory}/${x}/**";
- });
- ignores = [
- "*.elc"
- "*.vo"
- "*.aux"
- "*.v.d"
- "*.o"
- "*.a"
- "*.la"
- "*.so"
- "*.dylib"
- "*.pyc"
- "*.pyo"
- ".idea"
- "*.iml"
- "*~"
- "#*#"
- ".makefile"
- ".clean"
- ];
- };
- xdg.configFile."git/config.d/redhat.gitconfig".source = ./git/redhat.gitconfig;
-}
users/vincent/core/gpg.nix
@@ -1,41 +0,0 @@
-{
- pkgs,
- lib,
- nixosConfig,
- ...
-}:
-
-let
- stable = lib.versionOlder nixosConfig.system.nixos.release "24.05";
-in
-{
- home.packages = with pkgs; [ gnupg ];
- programs.gpg = {
- enable = true;
-
- # https://support.yubico.com/hc/en-us/articles/4819584884124-Resolving-GPG-s-CCID-conflicts
- scdaemonSettings = {
- disable-ccid = true;
- };
- };
- services = {
- gpg-agent =
- {
- enable = true;
- # enableSshSupport = true;
- enableExtraSocket = true;
- # defaultCacheTtlSsh = 7200;
- }
- // (
- if stable then
- {
- pinentryFlavor = if nixosConfig.modules.desktop.enable then "gnome3" else "tty";
- }
- else
- {
- pinentryPackage =
- if nixosConfig.modules.desktop.enable then pkgs.pinentry-gnome3 else pkgs.pinentry-tty;
- }
- );
- };
-}
users/vincent/core/htop.nix
@@ -1,31 +0,0 @@
-{ config, ... }:
-
-{
- programs.htop = {
- enable = true;
- settings =
- {
- delay = 10;
- }
- // (
- with config.lib.htop;
- leftMeters [
- (bar "AllCPUs2")
- (bar "Memory")
- (bar "Swap")
- ]
- )
- // (
- with config.lib.htop;
- rightMeters [
- (text "Clock")
- (text "Hostname")
- (text "Tasks")
- (text "LoadAverage")
- (text "Uptime")
- (text "Battery")
- (text "Systemd")
- ]
- );
- };
-}
users/vincent/core/shell.nix
@@ -1,32 +0,0 @@
-{ config, ... }:
-{
- aliases = {
- mkdir = ''mkdir --parents --verbose'';
- rm = ''rm --interactive'';
- cp = ''cp --interactive'';
- mv = ''mv --interactive'';
- gcd = ''cd (git root)'';
- # ls = ''exa'';
- ll = ''ls -l'';
- la = ''ls -a'';
- l = ''ls -lah'';
- # t = ''exa --tree --level=2'';
- map = ''xargs -n1'';
- k = ''kubectl'';
- wget = ''wget -c --hsts-file=${config.xdg.dataHome}/wget-hsts'';
- };
-
- env = ''
- export PATH=$HOME/bin:$PATH
- export LESSHISTFILE="${config.xdg.dataHome}/less_history"
- export WEBKIT_DISABLE_COMPOSITING_MODE=1;
- export PATH=$HOME/bin:$PATH
- if [ -d $HOME/.krew/bin ]; then
- export PATH=$HOME/.krew/bin:$PATH
- fi
- # TODO Move somewhere else
- export TLDR_CACHE_DIR="$XDG_CACHE_HOME"/tldr
- '';
-
- historySize = 10000;
-}
users/vincent/core/ssh.nix
@@ -1,144 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- gpgRemoteForward = {
- bind.address = "/run/user/1000/gnupg/S.gpg-agent";
- host.address = "/run/user/1000/gnupg/S.gpg-agent.extra";
- };
- gpgSSHRemoteForward = {
- bind.address = "/run/user/1000/gnupg/S.gpg-agent.ssh";
- host.address = "/run/user/1000/gnupg/S.gpg-agent.ssh";
- };
-
- inherit (lib)
- importTOML
- hasAttr
- attrsets
- mkIf
- ;
- metadata = importTOML ../../../ops/hosts.toml;
-
- hasWireguard = _name: value: hasAttr "wireguard" value;
- hasAddrs = _name: value: hasAttr "addrs" value;
- hasSShAndRemoteForward = v: (hasAttr "ssh" v) && (hasAttr "gpgRemoteForward" v.ssh);
-
- hostWireguardIP = v: "${v.wireguard.addrs.v4}";
- hostIP = v: "${v.addrs.v4}";
-
- hostToSSHConfigItem = value: ipfn: {
- hostname = ipfn value;
- remoteForwards = mkIf (hasSShAndRemoteForward value) [
- gpgRemoteForward
- gpgSSHRemoteForward
- ];
- # FIXME: need support for RemoteCommand in home-manager
- # RemoteCommand = mkIf (hasCommand value) hostRemoteCommand value;
- };
- hostToSSHConfig =
- suffix: ipfn: name: value:
- attrsets.nameValuePair (toString "${name}${suffix}") (hostToSSHConfigItem value ipfn);
-
- vpnConfig = attrsets.mapAttrs' (hostToSSHConfig "\.vpn" hostWireguardIP) (
- attrsets.filterAttrs hasWireguard metadata.hosts
- );
- homeConfig = attrsets.mapAttrs' (hostToSSHConfig "\.home" hostIP) (
- attrsets.filterAttrs hasAddrs metadata.hosts
- );
-in
-{
- home.packages = [
- pkgs.openssh
- pkgs.sshfs
- ];
- home.file.".ssh/sockets/.placeholder".text = '''';
- xdg.configFile."ssh/.placeholder".text = '''';
- programs.ssh = {
- enable = true;
-
- serverAliveInterval = 60;
- hashKnownHosts = true;
- userKnownHostsFile = "${config.xdg.configHome}/ssh/known_hosts";
- controlMaster = "auto";
- controlPersist = "10m";
- controlPath = "${config.home.homeDirectory}/.ssh/sockets/%u-%l-%r@%h:%p";
- matchBlocks =
- {
- "github.com" = {
- hostname = "github.com";
- user = "git";
- extraOptions = {
- controlMaster = "auto";
- controlPersist = "360";
- };
- };
- "gitlab.com" = {
- hostname = "gitlab.com";
- user = "git";
- extraOptions = {
- controlMaster = "auto";
- controlPersist = "360";
- };
- };
- "git.sr.ht" = {
- hostname = "git.sr.ht";
- user = "git";
- extraOptions = {
- controlMaster = "auto";
- controlPersist = "360";
- };
- };
- "*.redhat.com" = {
- user = "vdemeest";
- };
- "bootstrap.ospqa.com" = {
- forwardAgent = true;
- };
- "192.168.1.*" = {
- forwardAgent = true;
- extraOptions = {
- StrictHostKeyChecking = "no";
- UserKnownHostsFile = "/dev/null";
- };
- };
- "10.100.0.*" = {
- forwardAgent = true;
- };
- }
- // homeConfig
- // vpnConfig;
- extraConfig = ''
- GlobalKnownHostsFile ~/.config/ssh/ssh_known_hosts ~/.config/ssh/ssh_known_hosts.redhat ~/.config/ssh/ssh_known_hosts.mutable
- StrictHostKeyChecking yes
- PreferredAuthentications gssapi-with-mic,publickey,password
- GSSAPIAuthentication yes
- GSSAPIDelegateCredentials yes
- StreamLocalBindUnlink yes
- IdentityFile ~/.ssh/keys/%h
- IdentityFile ~/.ssh/id_ed25519
- IdentityFile ~/.ssh/id_rsa
- '';
- };
- # FIXME generate this file as well
- xdg.configFile."ssh/ssh_known_hosts".text = ''
- # Home ()
- wakasu.home,wakasu.vpn,wakasu.sbr.pm,10.100.0.8,192.168.1.77 wakasu.vpn ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrAh07USjRnAdS3mMNGdKee1KumjYDLzgXaiZ5LYi2D
- aomi.home,aomi.sbr.pm,aomi.vpn,10.100.0.17,192.168.1.23 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFQVlSrUKU0xlM9E+sJ8qgdgqCW6ePctEBD2Yf+OnyME
- sakhalin.home,sakhalin.sbr.pm,sakhalin.vpn,10.100.0.16,192.168.1.70 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/PMBThi4DhgZR8VywbRDzzMVh2Qp3T6NJAcPubfXz6
- shikoku.home,shikoku.sbr.pm,shikoku.vpn,10.100.0.2,192.168.1.24 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH18c6kcorVbK2TwCgdewL6nQf29Cd5BVTeq8nRYUigm
- kerkouane.vpn,kerkouane.sbr.pm,10.100.0.1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJguVoQYObRLyNxELFc3ai2yDJ25+naiM3tKrBGuxwwA
- synodine.home,synodine.sbr.pm,192.168.1.20 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDWdnPJg0Y4kd4lHPAGE4xgMAK2qvMg3oBxh0t+xO+7O
- demeter.home,demeter.vpn,demeter.sbr.pm,192.168.1.182 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGqQfEyHyjIGglayB9FtCqL7bnYfNSQlBXks2IuyCPmd
- athena.home,athena.vpn,athena.sbr.pm,192.168.1.183 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM/4KRP1rzOwyA2zP1Nf1WlLRHqAGutLtOHYWfH732xh
- aion.home,aion.vpn,aion.sbr.pm,10.100.0.49,192.168.1.49 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMs2o62unBFN/LHRg3q2N4QyZW0+DC/gjw3yzRbWdzx5
- '';
- xdg.configFile."ssh/ssh_known_hosts.redhat".text = ''
- # Red Hat
- gitlab.cee.redhat.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICBgflBIyju1LV/29PmFDw0GLdB9h0JUXglNrvWjBQ2u
- code.engineering.redhat.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYZZXmzm14TUL02Qe5SCMw48OfrphoIzi4qXSEK9Hiq
- '';
-}
users/vincent/core/tmux.nix
@@ -1,20 +0,0 @@
-{ config, ... }:
-
-{
- programs.tmux = {
- enable = true;
- #sensibleOnTop = true;
- #aggressiveResize = true;
- clock24 = true;
- escapeTime = 0;
- newSession = true;
- #plugins = with pkgs.tmuxPlugins; [ prefix-highlight ];
- #secureSocket = false;
- terminal = "tmux-256color";
- #historyLimit = 30000;
- extraConfig = ''
- source-file ${config.xdg.configHome}/tmux/tmux.conf
- '';
- };
- xdg.configFile."tmux/tmux.conf".source = ./tmux/tmux.conf;
-}
users/vincent/core/xdg.nix
@@ -1,16 +0,0 @@
-{
- xdg = {
- enable = true;
- userDirs = {
- enable = true;
- desktop = "$HOME/desktop";
- documents = "$HOME/desktop/documents";
- download = "$HOME/desktop/downloads";
- music = "$HOME/desktop/music";
- pictures = "$HOME/desktop/pictures";
- publicShare = "$HOME/desktop/sites";
- templates = "$HOME/desktop/documents/templates";
- videos = "$HOME/desktop/videos";
- };
- };
-}
users/vincent/core/zsh.nix
@@ -1,200 +0,0 @@
-{
- config,
- lib,
- nixosConfig,
- pkgs,
- ...
-}:
-let
- shellConfig = import ./shell.nix { inherit config lib pkgs; };
- stable = lib.versionOlder nixosConfig.system.nixos.release "24.05";
-in
-{
- home.packages = with pkgs; [
- zsh-syntax-highlighting
- nix-zsh-completions
- ];
-
- home.file."${config.programs.zsh.dotDir}/completion.zsh".source = ./zsh/completion.zsh;
- home.file."${config.programs.zsh.dotDir}/prompt.zsh".source = ./zsh/prompt.zsh;
- home.file."${config.programs.zsh.dotDir}/functions/j".source = ./zsh/j;
- home.file."${config.programs.zsh.dotDir}/auto-expanding-aliases.zsh".source =
- ./zsh/auto-expanding-aliases.zsh;
-
- programs = {
- direnv.enableZshIntegration = true;
- };
-
- programs.zsh =
- {
- enable = true;
- enableCompletion = true;
- autocd = true;
- dotDir = ".config/zsh";
- defaultKeymap = "emacs";
- history = {
- expireDuplicatesFirst = true;
- extended = true;
- ignoreDups = true;
- path = "${config.xdg.dataHome}/zsh_history";
- save = shellConfig.historySize;
- share = true;
- };
- envExtra = shellConfig.env;
- # TODO Extract this to files.
- initExtra = ''
- # c.f. https://wiki.gnupg.org/AgentForwarding
- # gpgconf --create-socketdir &!
- path+="$HOME/${config.programs.zsh.dotDir}/functions"
- fpath+="$HOME/.nix-profile/share/zsh/site-functions"
- fpath+="$HOME/${config.programs.zsh.dotDir}/functions"
- for func ($HOME/${config.programs.zsh.dotDir}/functions) autoload -U $func/*(x:t)
- autoload -Uz select-word-style; select-word-style bash
- if [ -e /home/vincent/.nix-profile/etc/profile.d/nix.sh ]; then . /home/vincent/.nix-profile/etc/profile.d/nix.sh; fi
- #if [ -n "$INSIDE_EMACS" ]; then
- # chpwd() { print -P "\033AnSiTc %d" }
- # print -P "\033AnSiTu %n"
- # print -P "\033AnSiTc %d"
- #fi
- if [[ "$TERM" == "dumb" || "$TERM" == "emacs" ]]
- then
- TERM=eterm-color
- unsetopt zle
- unsetopt prompt_cr
- unsetopt prompt_subst
- unfunction precmd
- unfunction preexec
- PS1='$ '
- return
- fi
- # eval "$(${config.programs.atuin.package}/bin/atuin init zsh)"
- # make sure navigation using emacs keybindings works on all non-alphanumerics
- # syntax highlighting
- source $HOME/${config.programs.zsh.dotDir}/plugins/zsh-nix-shell/nix-shell.plugin.zsh
- source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
- ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
- ZSH_HIGHLIGHT_PATTERNS+=('rm -fR *' 'fg=white,bold,bg=red')
- ZSH_HIGHLIGHT_PATTERNS+=('rm -fr *' 'fg=white,bold,bg=red')
- source $HOME/${config.programs.zsh.dotDir}/completion.zsh
- source $HOME/${config.programs.zsh.dotDir}/plugins/powerlevel10k/powerlevel10k.zsh-theme
- source $HOME/${config.programs.zsh.dotDir}/prompt.zsh
- source $HOME/${config.programs.zsh.dotDir}/plugins/kubectl-config-switcher/kubectl-config-switcher.plugin.zsh
- source $HOME/${config.programs.zsh.dotDir}/auto-expanding-aliases.zsh
- setopt HIST_IGNORE_SPACE
- alias -g L="|less"
- alias -g EEL=' 2>&1 | less'
- alias -g GB='`git rev-parse --abbrev-ref HEAD`'
- alias -g GR='`git rev-parse --show-toplevel`'
- alias -s {ape,avi,flv,m4a,mkv,mov,mp3,mp4,mpeg,mpg,ogg,ogm,wav,webm}=mpv
- alias -s org=emacs
- (( $+commands[jq] )) && alias -g MJ="| jq -C '.'" || alias -g MJ="| ${pkgs.python3}/bin/python -mjson.tool"
- (( $+functions[zshz] )) && compdef _zshz j
- [[ -n $INSIDE_EMACS ]] && \
- function ff () {
- print "\e]51;Efind-file $(readlink -f $1)\e\\"
- }
-
- export _Z_DATA="${config.xdg.dataHome}/z"
-
-
- [ -n "$EAT_SHELL_INTEGRATION_DIR" ] && \
- source "$EAT_SHELL_INTEGRATION_DIR/zsh"
- '';
- loginExtra = ''
- if [[ -z $DISPLAY && $TTY = /dev/tty1 ]]; then
- exec dbus-run-session sway
- fi
- '';
- profileExtra = ''
- if [ -e /home/vincent/.nix-profile/etc/profile.d/nix.sh ]; then . /home/vincent/.nix-profile/etc/profile.d/nix.sh; fi
- '';
- localVariables = {
- EMOJI_CLI_KEYBIND = "^n";
- EMOJI_CLI_USE_EMOJI = "yes";
- ZSH_HIGHLIGHT_HIGHLIGHTERS = [
- "main"
- "brackets"
- "pattern"
- ];
- };
- sessionVariables = {
- RPROMPT = "";
- };
- plugins = [
- {
- name = "kubectl-config-switcher";
- src = pkgs.fetchFromGitHub {
- owner = "chmouel";
- repo = "kubectl-config-switcher";
- rev = "faccc5d3c1f98170c38d3889f50fe74f3f6fe2cc";
- sha256 = "sha256-BOMvC/r6uN9Hewp8OxPIp38+V9Usp6XbMvNoDim0qmc=";
- };
- }
- {
- name = "emoji-cli";
- src = pkgs.fetchFromGitHub {
- owner = "b4b4r07";
- repo = "emoji-cli";
- rev = "0fbb2e48e07218c5a2776100a4c708b21cb06688";
- sha256 = "sha256-ii7RDTK/m+IqK7N+Xb6cEbziLPUQh7ZsbvQiX56F0sE=";
- };
- }
- {
- name = "zsh-z";
- src = pkgs.fetchFromGitHub {
- owner = "agkozak";
- repo = "zsh-z";
- rev = "aaafebcd97424c570ee247e2aeb3da30444299cd";
- sha256 = "sha256-9Wr4uZLk2CvINJilg4o72x0NEAl043lP30D3YnHk+ZA=";
- };
- }
- {
- name = "async";
- src = pkgs.fetchFromGitHub {
- owner = "mafredri";
- repo = "zsh-async";
- rev = "v1.8.5";
- sha256 = "sha256-mpXT3Hoz0ptVOgFMBCuJa0EPkqP4wZLvr81+1uHDlCc=";
- };
- }
- {
- name = "zsh-completions";
- src = pkgs.fetchFromGitHub {
- owner = "zsh-users";
- repo = "zsh-completions";
- rev = "0.34.0";
- sha256 = "sha256-qSobM4PRXjfsvoXY6ENqJGI9NEAaFFzlij6MPeTfT0o=";
- };
- }
- {
- name = "powerlevel10k";
- src = pkgs.fetchFromGitHub {
- owner = "romkatv";
- repo = "powerlevel10k";
- rev = "v1.16.1";
- sha256 = "sha256-DLiKH12oqaaVChRqY0Q5oxVjziZdW/PfnRW1fCSCbjo=";
- };
- }
- {
- name = "zsh-nix-shell";
- src = pkgs.fetchFromGitHub {
- owner = "chisui";
- repo = "zsh-nix-shell";
- rev = "v0.5.0";
- sha256 = "sha256-IT3wpfw8zhiNQsrw59lbSWYh0NQ1CUdUtFzRzHlURH0=";
- };
- }
- ];
- shellAliases = shellConfig.aliases;
- }
- // (
- if stable then
- {
- enableAutosuggestions = true;
- }
- else
- {
- autosuggestion.enable = true;
- }
- );
-}
users/vincent/desktop/xorg/capture.desktop
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/emacs/capture.desktop
\ No newline at end of file
users/vincent/desktop/xorg/ec.desktop
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/emacs/ec.desktop
\ No newline at end of file
users/vincent/desktop/xorg/emoji.compose
@@ -1,2459 +0,0 @@
-## Convention: capitalize first letter of longer element to avoid prefixing.
-## Or capitalize last letter of shorter element (or perhaps closing it with
-## another press of <Multi_key>) if that is not desired.
-## (like, trying not to alter the "main" dotXCompose file).
-## Use two #s for ordinary comments, #- for quotes from UnicodeData.txt,
-## and three #s to comment out XCompose lines.
-## How about using 4 #s to comment out things that are only commented out
-## to avoid duplicates with the main dotXCompose file?
-##
-## Anything whose full Unicode name fits inside 7 characters gets that for
-## its keys (usually). Otherwise maybe get creative, and no need to stick
-## to just one per symbol. There's much to be said for truncating in
-## mid-word: if you type the word, you'll still get your symbol, just with
-## some extra letters you can backspace over. So that will often be an
-## option.
-#### <MM> {bogus}: "X" U00000 # BOGUS ENTRY TO ENSURE SORTING
-## Some characters from other blocks will need to be added by hand...
-## Many of these have entries elsewhere.
-#- 2700;BLACK SAFETY SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {black safety scissors} : "✀" U2700 # BLACK SAFETY SCISSORS
-#- 2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {upper blade scissors} : "✁" U2701 # UPPER BLADE SCISSORS
-#- 2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {black scissors} : "✂" U2702 # BLACK SCISSORS
-#- 2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {lower blade scissors} : "✃" U2703 # LOWER BLADE SCISSORS
-#- 2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {white scissors} : "✄" U2704 # WHITE SCISSORS
-#- 2705;WHITE HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
-### <MM> {white heavy check mark} : "✅" U2705 # WHITE HEAVY CHECK MARK
-#- 2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {telephone location sign} : "✆" U2706 # TELEPHONE LOCATION SIGN
-#- 2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
-### <MM> {tape drive} : "✇" U2707 # TAPE DRIVE
-#- 2708;AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {airplane} : "✈" U2708 # AIRPLANE
-#- 2709;ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {envelope} : "✉" U2709 # ENVELOPE
-#- 270A;RAISED FIST;So;0;ON;;;;;N;;;;;
-### <MM> {raised fist} : "✊" U270A # RAISED FIST
-#- 270B;RAISED HAND;So;0;ON;;;;;N;;;;;
-### <MM> {raised hand} : "✋" U270B # RAISED HAND
-#- 270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <v> <i> <c> <t> <o> <r> <y> : "✌" U270C # VICTORY HAND
-#- 270D;WRITING HAND;So;0;ON;;;;;N;;;;;
-### <MM> {writing hand} : "✍" U270D # WRITING HAND
-#- 270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-### <MM> {lower right pencil} : "✎" U270E # LOWER RIGHT PENCIL
-#- 270F;PENCIL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <e> <n> <c> <i> <l> : "✏" U270F # PENCIL
-#- 2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-### <MM> {upper right pencil} : "✐" U2710 # UPPER RIGHT PENCIL
-#- 2711;WHITE NIB;So;0;ON;;;;;N;;;;;
-### <MM> {white nib} : "✑" U2711 # WHITE NIB
-#- 2712;BLACK NIB;So;0;ON;;;;;N;;;;;
-### <MM> {black nib} : "✒" U2712 # BLACK NIB
-#- 2713;CHECK MARK;So;0;ON;;;;;N;;;;;
-### <MM> {check mark} : "✓" U2713 # CHECK MARK
-#- 2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy check mark} : "✔" U2714 # HEAVY CHECK MARK
-#- 2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-### <MM> {multiplication x} : "✕" U2715 # MULTIPLICATION X
-#- 2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-### <MM> {heavy multiplication x} : "✖" U2716 # HEAVY MULTIPLICATION X
-#- 2717;BALLOT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot x} : "✗" U2717 # BALLOT X
-#- 2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
-### <MM> {heavy ballot x} : "✘" U2718 # HEAVY BALLOT X
-#- 2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {outlined greek cross} : "✙" U2719 # OUTLINED GREEK CROSS
-#- 271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {heavy greek cross} : "✚" U271A # HEAVY GREEK CROSS
-#- 271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
-### <MM> {open centre cross} : "✛" U271B # OPEN CENTRE CROSS
-#- 271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
-### <MM> {heavy open centre cross} : "✜" U271C # HEAVY OPEN CENTRE CROSS
-#- 271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {latin cross} : "✝" U271D # LATIN CROSS
-#- 271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {shadowed white latin cross} : "✞" U271E # SHADOWED WHITE LATIN CROSS
-#- 271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {outlined latin cross} : "✟" U271F # OUTLINED LATIN CROSS
-#- 2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {maltese cross} : "✠" U2720 # MALTESE CROSS
-#- 2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <asterisk> <d> <a> <v> <i> <d> : "✡" U2721 # STAR OF DAVID
-#- 2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {four teardrop-spoked asterisk} : "✢" U2722 # FOUR TEARDROP-SPOKED ASTERISK
-#- 2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {four balloon-spoked asterisk} : "✣" U2723 # FOUR BALLOON-SPOKED ASTERISK
-#- 2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy four balloon-spoked asterisk} : "✤" U2724 # HEAVY FOUR BALLOON-SPOKED ASTERISK
-#- 2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {four club-spoked asterisk} : "✥" U2725 # FOUR CLUB-SPOKED ASTERISK
-#- 2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <asterisk> <4> <B> : "✦" U2726 # BLACK FOUR POINTED STAR
-#- 2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <asterisk> <4> <W> : "✧" U2727 # WHITE FOUR POINTED STAR
-#- 2728;SPARKLES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <a> <r> <k> <l> <y> : "✨" U2728 # SPARKLES
-#- 2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
-### <MM> {stress outlined white star} : "✩" U2729 # STRESS OUTLINED WHITE STAR
-## Not to be confused with single-multi-key (*)
-#- 272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <asterisk> <parenright> : "✪" U272A # CIRCLED WHITE STAR
-#- 272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
-### <MM> {open centre black star} : "✫" U272B # OPEN CENTRE BLACK STAR
-#- 272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
-### <MM> {black centre white star} : "✬" U272C # BLACK CENTRE WHITE STAR
-#- 272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {outlined black star} : "✭" U272D # OUTLINED BLACK STAR
-#- 272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {heavy outlined black star} : "✮" U272E # HEAVY OUTLINED BLACK STAR
-#- 272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-### <MM> {pinwheel star} : "✯" U272F # PINWHEEL STAR
-#- 2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
-### <MM> {shadowed white star} : "✰" U2730 # SHADOWED WHITE STAR
-#- 2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy asterisk} : "✱" U2731 # HEAVY ASTERISK
-#- 2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
-### <MM> {open centre asterisk} : "✲" U2732 # OPEN CENTRE ASTERISK
-#- 2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {eight spoked asterisk} : "✳" U2733 # EIGHT SPOKED ASTERISK
-#- 2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {eight pointed black star} : "✴" U2734 # EIGHT POINTED BLACK STAR
-#- 2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-### <MM> {eight pointed pinwheel star} : "✵" U2735 # EIGHT POINTED PINWHEEL STAR
-#- 2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {six pointed black star} : "✶" U2736 # SIX POINTED BLACK STAR
-#- 2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {eight pointed rectilinear black star} : "✷" U2737 # EIGHT POINTED RECTILINEAR BLACK STAR
-#- 2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {heavy eight pointed rectilinear black star} : "✸" U2738 # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-#- 2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {twelve pointed black star} : "✹" U2739 # TWELVE POINTED BLACK STAR
-#- 273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {sixteen pointed asterisk} : "✺" U273A # SIXTEEN POINTED ASTERISK
-#- 273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {teardrop-spoked asterisk} : "✻" U273B # TEARDROP-SPOKED ASTERISK
-#- 273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
-### <MM> {open centre teardrop-spoked asterisk} : "✼" U273C # OPEN CENTRE TEARDROP-SPOKED ASTERISK
-#- 273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy teardrop-spoked asterisk} : "✽" U273D # HEAVY TEARDROP-SPOKED ASTERISK
-#- 273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-### <MM> {six petalled black and white florette} : "✾" U273E # SIX PETALLED BLACK AND WHITE FLORETTE
-#- 273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-### <MM> {black florette} : "✿" U273F # BLACK FLORETTE
-#- 2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-### <MM> {white florette} : "❀" U2740 # WHITE FLORETTE
-#- 2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-### <MM> {eight petalled outlined black florette} : "❁" U2741 # EIGHT PETALLED OUTLINED BLACK FLORETTE
-#- 2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
-### <MM> {circled open centre eight pointed star} : "❂" U2742 # CIRCLED OPEN CENTRE EIGHT POINTED STAR
-#- 2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy teardrop-spoked pinwheel asterisk} : "❃" U2743 # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-#- 2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <n> <o> <w> <f> <l> <a> : "❄" U2744 # SNOWFLAKE
-#- 2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
-### <MM> {tight trifoliate snowflake} : "❅" U2745 # TIGHT TRIFOLIATE SNOWFLAKE
-#- 2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
-### <MM> {heavy chevron snowflake} : "❆" U2746 # HEAVY CHEVRON SNOWFLAKE
-#- 2747;SPARKLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <1> <s> <p> <a> <r> <k> <l> : "❇" U2747 # SPARKLE
-#- 2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <s> <p> <a> <r> <k> <l> : "❈" U2748 # HEAVY SPARKLE
-#- 2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {balloon-spoked asterisk} : "❉" U2749 # BALLOON-SPOKED ASTERISK
-#- 274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {eight teardrop-spoked propeller asterisk} : "❊" U274A # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-#- 274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy eight teardrop-spoked propeller asterisk} : "❋" U274B # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-#- 274C;CROSS MARK;So;0;ON;;;;;N;;;;;
-### <MM> {cross mark} : "❌" U274C # CROSS MARK
-#- 274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {shadowed white circle} : "❍" U274D # SHADOWED WHITE CIRCLE
-#- 274E;NEGATIVE SQUARED CROSS MARK;So;0;ON;;;;;N;;;;;
-### <MM> {negative squared cross mark} : "❎" U274E # NEGATIVE SQUARED CROSS MARK
-#- 274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {lower right drop-shadowed white square} : "❏" U274F # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-#- 2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {upper right drop-shadowed white square} : "❐" U2750 # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-#- 2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {lower right shadowed white square} : "❑" U2751 # LOWER RIGHT SHADOWED WHITE SQUARE
-#- 2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {upper right shadowed white square} : "❒" U2752 # UPPER RIGHT SHADOWED WHITE SQUARE
-#- 2753;BLACK QUESTION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {black question mark ornament} : "❓" U2753 # BLACK QUESTION MARK ORNAMENT
-#- 2754;WHITE QUESTION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {white question mark ornament} : "❔" U2754 # WHITE QUESTION MARK ORNAMENT
-#- 2755;WHITE EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {white exclamation mark ornament} : "❕" U2755 # WHITE EXCLAMATION MARK ORNAMENT
-#- 2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
-### <MM> {black diamond minus white x} : "❖" U2756 # BLACK DIAMOND MINUS WHITE X
-#- 2757;HEAVY EXCLAMATION MARK SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {heavy exclamation mark symbol} : "❗" U2757 # HEAVY EXCLAMATION MARK SYMBOL
-#- 2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
-### <MM> {light vertical bar} : "❘" U2758 # LIGHT VERTICAL BAR
-#- 2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
-### <MM> {medium vertical bar} : "❙" U2759 # MEDIUM VERTICAL BAR
-#- 275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
-### <MM> {heavy vertical bar} : "❚" U275A # HEAVY VERTICAL BAR
-#- 275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy single turned comma quotation mark ornament} : "❛" U275B # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
-#- 275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy single comma quotation mark ornament} : "❜" U275C # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
-#- 275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy double turned comma quotation mark ornament} : "❝" U275D # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-#- 275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy double comma quotation mark ornament} : "❞" U275E # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-#- 275F;HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy low single comma quotation mark ornament} : "❟" U275F # HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT
-#- 2760;HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy low double comma quotation mark ornament} : "❠" U2760 # HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
-#- 2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {curved stem paragraph sign ornament} : "❡" U2761 # CURVED STEM PARAGRAPH SIGN ORNAMENT
-#- 2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy exclamation mark ornament} : "❢" U2762 # HEAVY EXCLAMATION MARK ORNAMENT
-#- 2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy heart exclamation mark ornament} : "❣" U2763 # HEAVY HEART EXCLAMATION MARK ORNAMENT
-#- 2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
-### <MM> {heavy black heart} : "❤" U2764 # HEAVY BLACK HEART
-#- 2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
-### <MM> {rotated heavy black heart bullet} : "❥" U2765 # ROTATED HEAVY BLACK HEART BULLET
-#- 2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
-### <MM> {floral heart} : "❦" U2766 # FLORAL HEART
-#- 2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-### <MM> {rotated floral heart bullet} : "❧" U2767 # ROTATED FLORAL HEART BULLET
-#- 2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {medium left parenthesis ornament} : "❨" U2768 # MEDIUM LEFT PARENTHESIS ORNAMENT
-#- 2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {medium right parenthesis ornament} : "❩" U2769 # MEDIUM RIGHT PARENTHESIS ORNAMENT
-#- 276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {medium flattened left parenthesis ornament} : "❪" U276A # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-#- 276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {medium flattened right parenthesis ornament} : "❫" U276B # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-#- 276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {medium left-pointing angle bracket ornament} : "❬" U276C # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-#- 276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {medium right-pointing angle bracket ornament} : "❭" U276D # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-#- 276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {heavy left-pointing angle quotation mark ornament} : "❮" U276E # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-#- 276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {heavy right-pointing angle quotation mark ornament} : "❯" U276F # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-#- 2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {heavy left-pointing angle bracket ornament} : "❰" U2770 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-#- 2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {heavy right-pointing angle bracket ornament} : "❱" U2771 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-#- 2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {light left tortoise shell bracket ornament} : "❲" U2772 # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-#- 2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {light right tortoise shell bracket ornament} : "❳" U2773 # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-#- 2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {medium left curly bracket ornament} : "❴" U2774 # MEDIUM LEFT CURLY BRACKET ORNAMENT
-#- 2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {medium right curly bracket ornament} : "❵" U2775 # MEDIUM RIGHT CURLY BRACKET ORNAMENT
-#- 2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
-#- 1F300;CYCLONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <y> <c> <l> <o> <n> <e> : "🌀" U1F300 # CYCLONE
-#- 1F301;FOGGY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <F> <o> <g> <g> <y> : "🌁" U1F301 # FOGGY
-#- 1F302;CLOSED UMBRELLA;So;0;ON;;;;;N;;;;;
-### <MM> {closed umbrella} : "🌂" U1F302 # CLOSED UMBRELLA
-#- 1F303;NIGHT WITH STARS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <n> <i> <g> <h> <t> : "🌃" U1F303 # NIGHT WITH STARS
-#- 1F304;SUNRISE OVER MOUNTAINS;So;0;ON;;;;;N;;;;;
-### <MM> {sunrise over mountains} : "🌄" U1F304 # SUNRISE OVER MOUNTAINS
-#- 1F305;SUNRISE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <S> <u> <n> <r> <i> <s> <e> : "🌅" U1F305 # SUNRISE
-#- 1F306;CITYSCAPE AT DUSK;So;0;ON;;;;;N;;;;;
-### <MM> {cityscape at dusk} : "🌆" U1F306 # CITYSCAPE AT DUSK
-#- 1F307;SUNSET OVER BUILDINGS;So;0;ON;;;;;N;;;;;
-### <MM> {sunset over buildings} : "🌇" U1F307 # SUNSET OVER BUILDINGS
-#- 1F308;RAINBOW;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <a> <i> <n> <b> <o> <w> : "🌈" U1F308 # RAINBOW
-#- 1F309;BRIDGE AT NIGHT;So;0;ON;;;;;N;;;;;
-### <MM> {bridge at night} : "🌉" U1F309 # BRIDGE AT NIGHT
-#- 1F30A;WATER WAVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <a> <v> <e> : "🌊" U1F30A # WATER WAVE
-#- 1F30B;VOLCANO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <v> <o> <l> <c> <a> <n> <o> : "🌋" U1F30B # VOLCANO
-#- 1F30C;MILKY WAY;So;0;ON;;;;;N;;;;;
-### <MM> {milky way} : "🌌" U1F30C # MILKY WAY
-#- 1F30D;EARTH GLOBE EUROPE-AFRICA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <E> <a> <r> <t> <h> <E> <U> : "🌍" U1F30D # EARTH GLOBE EUROPE-AFRICA
-#- 1F30E;EARTH GLOBE AMERICAS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <E> <a> <r> <t> <h> <A> <M> : "🌎" U1F30E # EARTH GLOBE AMERICAS
-#- 1F30F;EARTH GLOBE ASIA-AUSTRALIA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <E> <a> <r> <t> <h> <A> <S> : "🌏" U1F30F # EARTH GLOBE ASIA-AUSTRALIA
-#- 1F310;GLOBE WITH MERIDIANS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <l> <o> <b> <e> : "🌐" U1F310 # GLOBE WITH MERIDIANS
-<Multi_key> <Multi_key> <E> <a> <r> <t> <h> <bar> <minus> : "🌐" U1F310 # GLOBE WITH MERIDIANS
-#- 1F311;NEW MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {new moon symbol} : "🌑" U1F311 # NEW MOON SYMBOL
-#- 1F312;WAXING CRESCENT MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {waxing crescent moon symbol} : "🌒" U1F312 # WAXING CRESCENT MOON SYMBOL
-#- 1F313;FIRST QUARTER MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {first quarter moon symbol} : "🌓" U1F313 # FIRST QUARTER MOON SYMBOL
-#- 1F314;WAXING GIBBOUS MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {waxing gibbous moon symbol} : "🌔" U1F314 # WAXING GIBBOUS MOON SYMBOL
-#- 1F315;FULL MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {full moon symbol} : "🌕" U1F315 # FULL MOON SYMBOL
-#- 1F316;WANING GIBBOUS MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {waning gibbous moon symbol} : "🌖" U1F316 # WANING GIBBOUS MOON SYMBOL
-#- 1F317;LAST QUARTER MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {last quarter moon symbol} : "🌗" U1F317 # LAST QUARTER MOON SYMBOL
-#- 1F318;WANING CRESCENT MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {waning crescent moon symbol} : "🌘" U1F318 # WANING CRESCENT MOON SYMBOL
-#- 1F319;CRESCENT MOON;So;0;ON;;;;;N;;;;;
-### <MM> {crescent moon} : "🌙" U1F319 # CRESCENT MOON
-#- 1F31A;NEW MOON WITH FACE;So;0;ON;;;;;N;;;;;
-### <MM> {new moon with face} : "🌚" U1F31A # NEW MOON WITH FACE
-#- 1F31B;FIRST QUARTER MOON WITH FACE;So;0;ON;;;;;N;;;;;
-### <MM> {first quarter moon with face} : "🌛" U1F31B # FIRST QUARTER MOON WITH FACE
-#- 1F31C;LAST QUARTER MOON WITH FACE;So;0;ON;;;;;N;;;;;
-### <MM> {last quarter moon with face} : "🌜" U1F31C # LAST QUARTER MOON WITH FACE
-#- 1F31D;FULL MOON WITH FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <m> <o> <o> <n> : "🌝" U1F31D # FULL MOON WITH FACE
-#- 1F31E;SUN WITH FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <s> <u> <n> : "🌞" U1F31E # SUN WITH FACE
-<Multi_key> <Multi_key> <S> <u> <n> <f> <a> <c> <e> : "🌞" U1F31E # SUN WITH FACE
-#- 1F31F;GLOWING STAR;So;0;ON;;;;;N;;;;;
-### <MM> {glowing star} : "🌟" U1F31F # GLOWING STAR
-#- 1F320;SHOOTING STAR;So;0;ON;;;;;N;;;;;
-### <MM> {shooting star} : "🌠" U1F320 # SHOOTING STAR
-#- 1F321;THERMOMETER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <h> <e> <r> <m> <o> <m> : "🌡" U1F321 # THERMOMETER
-#- 1F322;BLACK DROPLET;So;0;ON;;;;;N;;;;;
-### <MM> {black droplet} : "🌢" U1F322 # BLACK DROPLET
-#- 1F323;WHITE SUN;So;0;ON;;;;;N;;;;;
-### <MM> {white sun} : "🌣" U1F323 # WHITE SUN
-#- 1F324;WHITE SUN WITH SMALL CLOUD;So;0;ON;;;;;N;;;;;
-### <MM> {white sun with small cloud} : "🌤" U1F324 # WHITE SUN WITH SMALL CLOUD
-#- 1F325;WHITE SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;;
-### <MM> {white sun behind cloud} : "🌥" U1F325 # WHITE SUN BEHIND CLOUD
-#- 1F326;WHITE SUN BEHIND CLOUD WITH RAIN;So;0;ON;;;;;N;;;;;
-### <MM> {white sun behind cloud with rain} : "🌦" U1F326 # WHITE SUN BEHIND CLOUD WITH RAIN
-#- 1F327;CLOUD WITH RAIN;So;0;ON;;;;;N;;;;;
-### <MM> {cloud with rain} : "🌧" U1F327 # CLOUD WITH RAIN
-#- 1F328;CLOUD WITH SNOW;So;0;ON;;;;;N;;;;;
-### <MM> {cloud with snow} : "🌨" U1F328 # CLOUD WITH SNOW
-#- 1F329;CLOUD WITH LIGHTNING;So;0;ON;;;;;N;;;;;
-### <MM> {cloud with lightning} : "🌩" U1F329 # CLOUD WITH LIGHTNING
-#- 1F32A;CLOUD WITH TORNADO;So;0;ON;;;;;N;;;;;
-### <MM> {cloud with tornado} : "🌪" U1F32A # CLOUD WITH TORNADO
-#- 1F32B;FOG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <o> <g> : "🌫" U1F32B # FOG
-#- 1F32C;WIND BLOWING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <W> <i> <n> <d> : "🌬" U1F32C # WIND BLOWING FACE
-<Multi_key> <Multi_key> <b> <l> <o> <w> <e> <r> : "🌬" U1F32C # WIND BLOWING FACE
-#- 1F32D;HOT DOG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <t> <d> <o> <g> : "🌭" U1F32D # HOT DOG
-<Multi_key> <Multi_key> <h> <o> <t> <space> <d> <o> <g> : "🌭" U1F32D # HOT DOG
-#- 1F32E;TACO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <c> <o> : "🌮" U1F32E # TACO
-#- 1F32F;BURRITO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <u> <r> <r> <i> <t> <o> : "🌯" U1F32F # BURRITO
-#- 1F330;CHESTNUT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <e> <s> <t> <n> <u> : "🌰" U1F330 # CHESTNUT
-<Multi_key> <Multi_key> <c> <h> <s> <t> <n> <u> <t> : "🌰" U1F330 # CHESTNUT
-#- 1F331;SEEDLING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <e> <e> <d> <l> <n> <g> : "🌱" U1F331 # SEEDLING
-#- 1F332;EVERGREEN TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <i> <n> <e> <t> <r> <e> : "🌲" U1F332 # EVERGREEN TREE
-#- 1F333;DECIDUOUS TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <r> <e> <e> : "🌳" U1F333 # DECIDUOUS TREE
-#- 1F334;PALM TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <P> <a> <l> <m> <t> <r> <e> : "🌴" U1F334 # PALM TREE
-<Multi_key> <Multi_key> <p> <a> <l> <m> : "🌴" U1F334 # PALM TREE
-#- 1F335;CACTUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <c> <t> <u> <s> : "🌵" U1F335 # CACTUS
-#- 1F336;HOT PEPPER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <i> <l> <e> : "🌶" U1F336 # HOT PEPPER
-#- 1F337;TULIP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <u> <l> <i> <p> : "🌷" U1F337 # TULIP
-#- 1F338;CHERRY BLOSSOM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <e> <r> <r> <y> <f> : "🌸" U1F338 # CHERRY BLOSSOM
-#- 1F339;ROSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <o> <s> <e> : "🌹" U1F339 # ROSE
-#- 1F33A;HIBISCUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <i> <b> <i> <s> <c> : "🌺" U1F33A # HIBISCUS
-#- 1F33B;SUNFLOWER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <S> <u> <n> <f> <l> <w> <r> : "🌻" U1F33B # SUNFLOWER
-#- 1F33C;BLOSSOM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <l> <o> <s> <s> <o> <m> : "🌼" U1F33C # BLOSSOM
-#- 1F33D;EAR OF MAIZE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <a> <i> <z> <e> : "🌽" U1F33D # EAR OF MAIZE
-#- 1F33E;EAR OF RICE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <i> <c> <e> <e> <a> <r> : "🌾" U1F33E # EAR OF RICE
-#- 1F33F;HERB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <e> <r> <b> : "🌿" U1F33F # HERB
-#- 1F340;FOUR LEAF CLOVER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <l> <o> <v> <e> <r> : "🍀" U1F340 # FOUR LEAF CLOVER
-#- 1F341;MAPLE LEAF;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <a> <p> <l> <e> : "🍁" U1F341 # MAPLE LEAF
-#- 1F342;FALLEN LEAF;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <a> <l> <l> <e> <a> <f> : "🍂" U1F342 # FALLEN LEAF
-#- 1F343;LEAF FLUTTERING IN WIND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <n> <d> <l> <e> <a> <f> : "🍃" U1F343 # LEAF FLUTTERING IN WIND
-#- 1F344;MUSHROOM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <s> <h> <r> <m> : "🍄" U1F344 # MUSHROOM
-#- 1F345;TOMATO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <o> <m> <a> <t> <o> : "🍅" U1F345 # TOMATO
-#- 1F346;AUBERGINE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <u> <b> <e> <r> <g> <i> : "🍆" U1F346 # AUBERGINE
-<Multi_key> <Multi_key> <a> <u> <b> <r> <g> <i> <n> : "🍆" U1F346 # AUBERGINE
-#- 1F347;GRAPES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <r> <a> <p> <e> <s> : "🍇" U1F347 # GRAPES
-#- 1F348;MELON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <e> <l> <o> <n> : "🍈" U1F348 # MELON
-#- 1F349;WATERMELON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <t> <r> <m> <l> <n> : "🍉" U1F349 # WATERMELON
-#- 1F34A;TANGERINE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <n> <g> <e> <r> <i> : "🍊" U1F34A # TANGERINE
-<Multi_key> <Multi_key> <t> <a> <n> <g> <e> <r> <n> : "🍊" U1F34A # TANGERINE
-#- 1F34B;LEMON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <e> <m> <o> <n> : "🍋" U1F34B # LEMON
-#- 1F34C;BANANA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <n> <a> <n> <a> : "🍌" U1F34C # BANANA
-#- 1F34D;PINEAPPLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <i> <n> <e> <a> <p> <p> : "🍍" U1F34D # PINEAPPLE
-<Multi_key> <Multi_key> <p> <n> <a> <p> <p> <l> <e> : "🍍" U1F34D # PINEAPPLE
-#- 1F34E;RED APPLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <e> <d> <a> <p> <p> <l> : "🍎" U1F34E # RED APPLE
-<Multi_key> <Multi_key> <r> <d> <a> <p> <p> <l> <e> : "🍎" U1F34E # RED APPLE
-#- 1F34F;GREEN APPLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <r> <e> <e> <n> <a> <p> : "🍏" U1F34F # GREEN APPLE
-<Multi_key> <Multi_key> <g> <n> <a> <p> <p> <l> <e> : "🍏" U1F34F # GREEN APPLE
-#- 1F350;PEAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <e> <a> <r> : "🍐" U1F350 # PEAR
-#- 1F351;PEACH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <e> <a> <c> <h> : "🍑" U1F351 # PEACH
-#- 1F352;CHERRIES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <e> <r> <r> <y> <s> : "🍒" U1F352 # CHERRIES
-<Multi_key> <Multi_key> <c> <h> <e> <r> <r> <i> <e> : "🍒" U1F352 # CHERRIES
-<Multi_key> <Multi_key> <c> <h> <e> <r> <r> <i> <s> : "🍒" U1F352 # CHERRIES
-#- 1F353;STRAWBERRY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <t> <r> <a> <w> <b> <e> : "🍓" U1F353 # STRAWBERRY
-<Multi_key> <Multi_key> <s> <t> <r> <w> <b> <r> <y> : "🍓" U1F353 # STRAWBERRY
-#- 1F354;HAMBURGER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <a> <m> <b> <u> <r> <g> : "🍔" U1F354 # HAMBURGER
-<Multi_key> <Multi_key> <h> <a> <m> <b> <r> <g> <r> : "🍔" U1F354 # HAMBURGER
-#- 1F355;SLICE OF PIZZA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <i> <z> <z> <a> : "🍕" U1F355 # SLICE OF PIZZA
-#- 1F356;MEAT ON BONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <e> <a> <t> : "🍖" U1F356 # MEAT ON BONE
-<Multi_key> <Multi_key> <b> <o> <n> <e> : "🍖" U1F356 # MEAT ON BONE
-#- 1F357;POULTRY LEG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <C> <h> <k> <n> <l> <e> <g> : "🍗" U1F357 # POULTRY LEG
-#- 1F358;RICE CRACKER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <r> <a> <c> <k> <e> <r> : "🍘" U1F358 # RICE CRACKER
-#- 1F359;RICE BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <i> <c> <e> <b> <l> <l> : "🍙" U1F359 # RICE BALL
-#- 1F35A;COOKED RICE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <i> <c> <e> : "🍚" U1F35A # COOKED RICE
-#- 1F35B;CURRY AND RICE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <u> <r> <r> <y> : "🍛" U1F35B # CURRY AND RICE
-#- 1F35C;STEAMING BOWL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <w> <l> : "🍜" U1F35C # STEAMING BOWL
-#- 1F35D;SPAGHETTI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <a> <s> <t> <a> : "🍝" U1F35D # SPAGHETTI
-#- 1F35E;BREAD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <r> <e> <a> <d> : "🍞" U1F35E # BREAD
-#- 1F35F;FRENCH FRIES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <i> <p> <s> : "🍟" U1F35F # FRENCH FRIES
-<Multi_key> <Multi_key> <f> <r> <i> <e> <s> : "🍟" U1F35F # FRENCH FRIES
-#- 1F360;ROASTED SWEET POTATO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <y> <a> <m> : "🍠" U1F360 # ROASTED SWEET POTATO
-#- 1F361;DANGO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <a> <n> <g> <o> : "🍡" U1F361 # DANGO
-#- 1F362;ODEN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <d> <e> <n> : "🍢" U1F362 # ODEN
-#- 1F363;SUSHI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <u> <s> <h> <i> : "🍣" U1F363 # SUSHI
-#- 1F364;FRIED SHRIMP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <F> <s> <h> <r> <i> <m> <p> : "🍤" U1F364 # FRIED SHRIMP
-#- 1F365;FISH CAKE WITH SWIRL DESIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <w> <i> <r> <l> : "🍥" U1F365 # FISH CAKE WITH SWIRL DESIGN
-#- 1F366;SOFT ICE CREAM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <o> <f> <t> <i> <c> <e> : "🍦" U1F366 # SOFT ICE CREAM
-#- 1F367;SHAVED ICE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <a> <v> <i> <c> <e> : "🍧" U1F367 # SHAVED ICE
-#- 1F368;ICE CREAM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <i> <c> <e> <c> <r> <e> <a> : "🍨" U1F368 # ICE CREAM
-<Multi_key> <Multi_key> <i> <c> <e> <c> <r> <m> : "🍨" U1F368 # ICE CREAM
-#- 1F369;DOUGHNUT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <o> <n> <u> <t> : "🍩" U1F369 # DOUGHNUT
-#- 1F36A;COOKIE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <o> <k> <i> <e> : "🍪" U1F36A # COOKIE
-#- 1F36B;CHOCOLATE BAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <o> <c> <b> <a> <r> : "🍫" U1F36B # CHOCOLATE BAR
-#- 1F36C;CANDY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <n> <d> <y> : "🍬" U1F36C # CANDY
-#- 1F36D;LOLLIPOP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <o> <l> <l> <y> : "🍭" U1F36D # LOLLIPOP
-<Multi_key> <Multi_key> <l> <o> <l> <p> <o> <p> : "🍭" U1F36D # LOLLIPOP
-#- 1F36E;CUSTARD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <u> <s> <t> <a> <r> <d> : "🍮" U1F36E # CUSTARD
-#- 1F36F;HONEY POT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <n> <e> <y> : "🍯" U1F36F # HONEY POT
-#- 1F370;SHORTCAKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <r> <t> <c> <k> <e> : "🍰" U1F370 # SHORTCAKE
-#- 1F371;BENTO BOX;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <e> <n> <t> <o> : "🍱" U1F371 # BENTO BOX
-#- 1F372;POT OF FOOD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <o> <t> : "🍲" U1F372 # POT OF FOOD
-#- 1F373;COOKING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <o> <k> <i> <n> <g> : "🍳" U1F373 # COOKING
-#- 1F374;FORK AND KNIFE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <r> <k> <k> <n> <f> <e> : "🍴" U1F374 # FORK AND KNIFE
-#- 1F375;TEACUP WITHOUT HANDLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <c> <u> <p> : "🍵" U1F375 # TEACUP WITHOUT HANDLE
-#- 1F376;SAKE BOTTLE AND CUP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <a> <k> <e> : "🍶" U1F376 # SAKE BOTTLE AND CUP
-#- 1F377;WINE GLASS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <i> <n> <e> : "🍷" U1F377 # WINE GLASS
-#- 1F378;COCKTAIL GLASS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <c> <k> <t> <a> <i> : "🍸" U1F378 # COCKTAIL GLASS
-#- 1F379;TROPICAL DRINK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <r> <o> <p> <i> <c> : "🍹" U1F379 # TROPICAL DRINK
-#- 1F37A;BEER MUG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <e> <e> <r> : "🍺" U1F37A # BEER MUG
-#- 1F37B;CLINKING BEER MUGS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <l> <i> <n> <k> : "🍻" U1F37B # CLINKING BEER MUGS
-#- 1F37C;BABY BOTTLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <t> <t> <l> <e> : "🍼" U1F37C # BABY BOTTLE
-#- 1F37D;FORK AND KNIFE WITH PLATE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <e> <t> <t> <i> <n> <g> : "🍽" U1F37D # FORK AND KNIFE WITH PLATE
-#- 1F37E;BOTTLE WITH POPPING CORK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <o> <p> <c> <o> <r> <k> : "🍾" U1F37E # BOTTLE WITH POPPING CORK
-#- 1F37F;POPCORN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <o> <p> <c> <o> <r> <n> : "🍿" U1F37F # POPCORN
-#- 1F380;RIBBON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <i> <b> <b> <o> <n> : "🎀" U1F380 # RIBBON
-#- 1F381;WRAPPED PRESENT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <r> <e> <s> <e> <n> <t> : "🎁" U1F381 # WRAPPED PRESENT
-#- 1F382;BIRTHDAY CAKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <i> <r> <t> <h> <d> <a> : "🎂" U1F382 # BIRTHDAY CAKE
-#- 1F383;JACK-O-LANTERN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <u> <m> <p> <k> <i> <n> : "🎃" U1F383 # JACK-O-LANTERN
-#- 1F384;CHRISTMAS TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <x> <m> <s> <t> <r> <e> <e> : "🎄" U1F384 # CHRISTMAS TREE
-#- 1F385;FATHER CHRISTMAS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <a> <n> <t> <a> : "🎅" U1F385 # FATHER CHRISTMAS
-#- 1F386;FIREWORKS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <F> <i> <r> <e> <w> <r> <k> : "🎆" U1F386 # FIREWORKS
-#- 1F387;FIREWORK SPARKLER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <a> <r> <k> <e> <r> : "🎇" U1F387 # FIREWORK SPARKLER
-#- 1F388;BALLOON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <l> <l> <o> <o> <n> : "🎈" U1F388 # BALLOON
-#- 1F389;PARTY POPPER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <o> <p> <p> <e> <r> : "🎉" U1F389 # PARTY POPPER
-#- 1F38A;CONFETTI BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <n> <f> <e> <t> <i> : "🎊" U1F38A # CONFETTI BALL
-#- 1F38B;TANABATA TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <n> <a> <b> <a> <t> : "🎋" U1F38B # TANABATA TREE
-#- 1F38C;CROSSED FLAGS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <X> <f> <l> <a> <g> <s> : "🎌" U1F38C # CROSSED FLAGS
-#- 1F38D;PINE DECORATION;So;0;ON;;;;;N;;;;;
-### <MM> {pine decoration} : "🎍" U1F38D # PINE DECORATION
-#- 1F38E;JAPANESE DOLLS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <j> <a> <p> <d> <o> <l> <l> : "🎎" U1F38E # JAPANESE DOLLS
-#- 1F38F;CARP STREAMER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <r> <p> : "🎏" U1F38F # CARP STREAMER
-#- 1F390;WIND CHIME;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <i> <m> <e> : "🎐" U1F390 # WIND CHIME
-#- 1F391;MOON VIEWING CEREMONY;So;0;ON;;;;;N;;;;;
-### <MM> {moon viewing ceremony} : "🎑" U1F391 # MOON VIEWING CEREMONY
-#- 1F392;SCHOOL SATCHEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <o> <o> <k> <b> <a> <g> : "🎒" U1F392 # SCHOOL SATCHEL
-#- 1F393;GRADUATION CAP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <r> <a> <d> : "🎓" U1F393 # GRADUATION CAP
-#- 1F394;HEART WITH TIP ON THE LEFT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <less> <less> <3> : "🎔" U1F394 # HEART WITH TIP ON THE LEFT
-#- 1F395;BOUQUET OF FLOWERS;So;0;ON;;;;;N;;;;;
-### <MM> {bouquet of flowers} : "🎕" U1F395 # BOUQUET OF FLOWERS
-#- 1F396;MILITARY MEDAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <M> <e> <d> <a> <l> : "🎖" U1F396 # MILITARY MEDAL
-#- 1F397;REMINDER RIBBON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <e> <m> <i> <n> <d> : "🎗" U1F397 # REMINDER RIBBON
-<Multi_key> <Multi_key> <r> <e> <m> <e> <m> <b> <e> : "🎗" U1F397 # REMINDER RIBBON
-<Multi_key> <Multi_key> <r> <e> <m> <e> <m> <b> <r> : "🎗" U1F397 # REMINDER RIBBON
-#- 1F398;MUSICAL KEYBOARD WITH JACKS;So;0;ON;;;;;N;;;;;
-### <MM> {musical keyboard with jacks} : "🎘" U1F398 # MUSICAL KEYBOARD WITH JACKS
-#- 1F399;STUDIO MICROPHONE;So;0;ON;;;;;N;;;;;
-### <MM> {mic} : "🎙" U1F399 # STUDIO MICROPHONE
-#- 1F39A;LEVEL SLIDER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <l> <i> <d> <e> <r> : "🎚" U1F39A # LEVEL SLIDER
-#- 1F39B;CONTROL KNOBS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <k> <n> <o> <b> <s> : "🎛" U1F39B # CONTROL KNOBS
-#- 1F39C;BEAMED ASCENDING MUSICAL NOTES;So;0;ON;;;;;N;;;;;
-### <MM> {beamed ascending musical notes} : "🎜" U1F39C # BEAMED ASCENDING MUSICAL NOTES
-#- 1F39D;BEAMED DESCENDING MUSICAL NOTES;So;0;ON;;;;;N;;;;;
-### <MM> {beamed descending musical notes} : "🎝" U1F39D # BEAMED DESCENDING MUSICAL NOTES
-#- 1F39E;FILM FRAMES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <r> <a> <m> <e> <s> : "🎞" U1F39E # FILM FRAMES
-#- 1F39F;ADMISSION TICKETS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <T> <i> <c> <k> <e> <t> <s> : "🎟" U1F39F # ADMISSION TICKETS
-#- 1F3A0;CAROUSEL HORSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <r> <o> <s> <e> <l> : "🎠" U1F3A0 # CAROUSEL HORSE
-#- 1F3A1;FERRIS WHEEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <e> <r> <r> <i> <s> : "🎡" U1F3A1 # FERRIS WHEEL
-#- 1F3A2;ROLLER COASTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <a> <s> <t> <e> <r> : "🎢" U1F3A2 # ROLLER COASTER
-#- 1F3A3;FISHING POLE AND FISH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <s> <h> <p> <o> <l> <e> : "🎣" U1F3A3 # FISHING POLE AND FISH
-#- 1F3A4;MICROPHONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <i> <c> : "🎤" U1F3A4 # MICROPHONE
-#- 1F3A5;MOVIE CAMERA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <o> <v> <i> <c> <a> <m> : "🎥" U1F3A5 # MOVIE CAMERA
-#- 1F3A6;CINEMA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <i> <n> <e> <m> <a> : "🎦" U1F3A6 # CINEMA
-#- 1F3A7;HEADPHONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <e> <a> <d> <p> <h> <o> : "🎧" U1F3A7 # HEADPHONE
-<Multi_key> <Multi_key> <h> <e> <d> <p> <h> <o> <n> : "🎧" U1F3A7 # HEADPHONE
-#- 1F3A8;ARTIST PALETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <a> <l> <e> <t> <t> <e> : "🎨" U1F3A8 # ARTIST PALETTE
-#- 1F3A9;TOP HAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <o> <p> <h> <a> <t> : "🎩" U1F3A9 # TOP HAT
-#- 1F3AA;CIRCUS TENT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <i> <r> <c> <u> <s> : "🎪" U1F3AA # CIRCUS TENT
-#- 1F3AB;TICKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <i> <c> <k> <e> <t> : "🎫" U1F3AB # TICKET
-#- 1F3AC;CLAPPER BOARD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <l> <a> <p> <p> <e> <r> : "🎬" U1F3AC # CLAPPER BOARD
-#- 1F3AD;PERFORMING ARTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <parenright> <colon> <parenleft> : "🎭" U1F3AD # PERFORMING ARTS
-#- 1F3AE;VIDEO GAME;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <v> <i> <d> <g> <a> <m> <e> : "🎮" U1F3AE # VIDEO GAME
-#- 1F3AF;DIRECT HIT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <i> <t> : "🎯" U1F3AF # DIRECT HIT
-#- 1F3B0;SLOT MACHINE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <l> <o> <t> <s> : "🎰" U1F3B0 # SLOT MACHINE
-#- 1F3B1;BILLIARDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <i> <l> <l> <i> <a> <r> : "🎱" U1F3B1 # BILLIARDS
-<Multi_key> <Multi_key> <b> <i> <l> <l> <r> <d> <s> : "🎱" U1F3B1 # BILLIARDS
-#- 1F3B2;GAME DIE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <a> <m> <e> <d> <i> <e> : "🎲" U1F3B2 # GAME DIE
-## Careful not to conflict with "bowl"
-#- 1F3B3;BOWLING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <o> <w> <l> <i> <n> <g> : "🎳" U1F3B3 # BOWLING
-## These were called "hanafuda"
-#- 1F3B4;FLOWER PLAYING CARDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <a> <n> <a> <f> <d> <a> : "🎴" U1F3B4 # FLOWER PLAYING CARDS
-#- 1F3B5;MUSICAL NOTE;So;0;ON;;;;;N;;;;;
-### <MM> {musical note} : "🎵" U1F3B5 # MUSICAL NOTE
-#- 1F3B6;MULTIPLE MUSICAL NOTES;So;0;ON;;;;;N;;;;;
-### <MM> {multiple musical notes} : "🎶" U1F3B6 # MULTIPLE MUSICAL NOTES
-#- 1F3B7;SAXOPHONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <a> <x> : "🎷" U1F3B7 # SAXOPHONE
-#- 1F3B8;GUITAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <u> <i> <t> <a> <r> : "🎸" U1F3B8 # GUITAR
-#- 1F3B9;MUSICAL KEYBOARD;So;0;ON;;;;;N;;;;;
-### <MM> {musical keyboard} : "🎹" U1F3B9 # MUSICAL KEYBOARD
-#- 1F3BA;TRUMPET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <r> <u> <m> <p> <e> <t> : "🎺" U1F3BA # TRUMPET
-#- 1F3BB;VIOLIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <v> <i> <o> <l> <i> <n> : "🎻" U1F3BB # VIOLIN
-#- 1F3BC;MUSICAL SCORE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <c> <o> <r> <e> : "🎼" U1F3BC # MUSICAL SCORE
-#- 1F3BD;RUNNING SHIRT WITH SASH;So;0;ON;;;;;N;;;;;
-### <MM> {running shirt with sash} : "🎽" U1F3BD # RUNNING SHIRT WITH SASH
-#- 1F3BE;TENNIS RACQUET AND BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <e> <n> <n> <i> <s> : "🎾" U1F3BE # TENNIS RACQUET AND BALL
-#- 1F3BF;SKI AND SKI BOOT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <k> <i> <b> <o> <o> <t> : "🎿" U1F3BF # SKI AND SKI BOOT
-#- 1F3C0;BASKETBALL AND HOOP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <o> <p> <s> : "🏀" U1F3C0 # BASKETBALL AND HOOP
-#- 1F3C1;CHEQUERED FLAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <e> <k> <f> <l> <g> : "🏁" U1F3C1 # CHEQUERED FLAG
-#- 1F3C2;SNOWBOARDER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <n> <o> <w> <b> <r> <d> : "🏂" U1F3C2 # SNOWBOARDER
-#- 1F3C3;RUNNER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <u> <n> <n> <e> <r> : "🏃" U1F3C3 # RUNNER
-#- 1F3C4;SURFER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <u> <r> <f> <e> <r> : "🏄" U1F3C4 # SURFER
-#- 1F3C5;SPORTS MEDAL;So;0;ON;;;;;N;;;;;
-### <MM> {sports medal} : "🏅" U1F3C5 # SPORTS MEDAL
-#- 1F3C6;TROPHY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <r> <o> <p> <h> <y> : "🏆" U1F3C6 # TROPHY
-#- 1F3C7;HORSE RACING;So;0;ON;;;;;N;;;;;
-### <MM> {horse racing} : "🏇" U1F3C7 # HORSE RACING
-#- 1F3C8;AMERICAN FOOTBALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <a> <n> <d> <e> <g> <g> : "🏈" U1F3C8 # AMERICAN FOOTBALL
-#- 1F3C9;RUGBY FOOTBALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <u> <g> <b> <y> : "🏉" U1F3C9 # RUGBY FOOTBALL
-#- 1F3CA;SWIMMER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <w> <i> <m> <m> <e> <r> : "🏊" U1F3CA # SWIMMER
-#- 1F3CB;WEIGHT LIFTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <i> <f> <t> <e> <r> : "🏋" U1F3CB # WEIGHT LIFTER
-#- 1F3CC;GOLFER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <o> <l> <f> <e> <r> : "🏌" U1F3CC # GOLFER
-#- 1F3CD;RACING MOTORCYCLE;So;0;ON;;;;;N;;;;;
-### <MM> {racing motorcycle} : "🏍" U1F3CD # RACING MOTORCYCLE
-#- 1F3CE;RACING CAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <a> <c> <e> <c> <a> <r> : "🏎" U1F3CE # RACING CAR
-#- 1F3CF;CRICKET BAT AND BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <r> <i> <c> <k> <e> <t> : "🏏" U1F3CF # CRICKET BAT AND BALL
-#- 1F3D0;VOLLEYBALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <v> <o> <l> <l> <e> <y> : "🏐" U1F3D0 # VOLLEYBALL
-#- 1F3D1;FIELD HOCKEY STICK AND BALL;So;0;ON;;;;;N;;;;;
-### <MM> {field hockey stick and ball} : "🏑" U1F3D1 # FIELD HOCKEY STICK AND BALL
-#- 1F3D2;ICE HOCKEY STICK AND PUCK;So;0;ON;;;;;N;;;;;
-### <MM> {ice hockey stick and puck} : "🏒" U1F3D2 # ICE HOCKEY STICK AND PUCK
-#- 1F3D3;TABLE TENNIS PADDLE AND BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <i> <n> <g> <p> <o> <n> : "🏓" U1F3D3 # TABLE TENNIS PADDLE AND BALL
-#- 1F3D4;SNOW CAPPED MOUNTAIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <o> <u> <n> <t> <a> <i> : "🏔" U1F3D4 # SNOW CAPPED MOUNTAIN
-#- 1F3D5;CAMPING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <m> <p> <i> <n> <g> : "🏕" U1F3D5 # CAMPING
-#- 1F3D6;BEACH WITH UMBRELLA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <e> <a> <c> <h> : "🏖" U1F3D6 # BEACH WITH UMBRELLA
-#- 1F3D7;BUILDING CONSTRUCTION;So;0;ON;;;;;N;;;;;
-### <MM> {building construction} : "🏗" U1F3D7 # BUILDING CONSTRUCTION
-#- 1F3D8;HOUSE BUILDINGS;So;0;ON;;;;;N;;;;;
-### <MM> {house buildings} : "🏘" U1F3D8 # HOUSE BUILDINGS
-#- 1F3D9;CITYSCAPE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <i> <t> <y> : "🏙" U1F3D9 # CITYSCAPE
-#- 1F3DA;DERELICT HOUSE BUILDING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <l> <u> <m> : "🏚" U1F3DA # DERELICT HOUSE BUILDING
-#- 1F3DB;CLASSICAL BUILDING;So;0;ON;;;;;N;;;;;
-### <MM> {classical building} : "🏛" U1F3DB # CLASSICAL BUILDING
-#- 1F3DC;DESERT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <e> <s> <e> <r> <t> : "🏜" U1F3DC # DESERT
-#- 1F3DD;DESERT ISLAND;So;0;ON;;;;;N;;;;;
-### <MM> {desert island} : "🏝" U1F3DD # DESERT ISLAND
-#- 1F3DE;NATIONAL PARK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <n> <a> <t> <p> <a> <r> <k> : "🏞" U1F3DE # NATIONAL PARK
-#- 1F3DF;STADIUM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <t> <a> <d> <i> <u> <m> : "🏟" U1F3DF # STADIUM
-#- 1F3E0;HOUSE BUILDING;So;0;ON;;;;;N;;;;;
-### <MM> {house building} : "🏠" U1F3E0 # HOUSE BUILDING
-#- 1F3E1;HOUSE WITH GARDEN;So;0;ON;;;;;N;;;;;
-### <MM> {house with garden} : "🏡" U1F3E1 # HOUSE WITH GARDEN
-#- 1F3E2;OFFICE BUILDING;So;0;ON;;;;;N;;;;;
-### <MM> {office building} : "🏢" U1F3E2 # OFFICE BUILDING
-#- 1F3E3;JAPANESE POST OFFICE;So;0;ON;;;;;N;;;;;
-### <MM> {japanese post office} : "🏣" U1F3E3 # JAPANESE POST OFFICE
-#- 1F3E4;EUROPEAN POST OFFICE;So;0;ON;;;;;N;;;;;
-### <MM> {european post office} : "🏤" U1F3E4 # EUROPEAN POST OFFICE
-#- 1F3E5;HOSPITAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <s> <p> <t> <a> <l> : "🏥" U1F3E5 # HOSPITAL
-#- 1F3E6;BANK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <n> <k> : "🏦" U1F3E6 # BANK
-#- 1F3E7;AUTOMATED TELLER MACHINE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <A> <T> <M> : "🏧" U1F3E7 # AUTOMATED TELLER MACHINE
-#- 1F3E8;HOTEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <t> <e> <l> : "🏨" U1F3E8 # HOTEL
-#- 1F3E9;LOVE HOTEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <x> <h> <o> <t> <e> <l> : "🏩" U1F3E9 # LOVE HOTEL
-#- 1F3EA;CONVENIENCE STORE;So;0;ON;;;;;N;;;;;
-## Obvious culturally biased keyword below...
-### <MM> {convenience store} : "🏪" U1F3EA # CONVENIENCE STORE
-<Multi_key> <Multi_key> <7> <minus> <1> <1> : "🏪" U1F3EA # CONVENIENCE STORE
-#- 1F3EB;SCHOOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <c> <h> <o> <o> <l> : "🏫" U1F3EB # SCHOOL
-#- 1F3EC;DEPARTMENT STORE;So;0;ON;;;;;N;;;;;
-### <MM> {department store} : "🏬" U1F3EC # DEPARTMENT STORE
-#- 1F3ED;FACTORY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <a> <c> <t> <r> <y> : "🏭" U1F3ED # FACTORY
-#- 1F3EE;IZAKAYA LANTERN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <i> <z> <a> <k> <a> <y> : "🏮" U1F3EE # IZAKAYA LANTERN
-#- 1F3EF;JAPANESE CASTLE;So;0;ON;;;;;N;;;;;
-### <MM> {japanese castle} : "🏯" U1F3EF # JAPANESE CASTLE
-#- 1F3F0;EUROPEAN CASTLE;So;0;ON;;;;;N;;;;;
-### <MM> {european castle} : "🏰" U1F3F0 # EUROPEAN CASTLE
-#- 1F3F1;WHITE PENNANT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <W> <p> <e> <n> <n> <a> <n> : "🏱" U1F3F1 # WHITE PENNANT
-#- 1F3F2;BLACK PENNANT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <p> <e> <n> <n> <a> <n> : "🏲" U1F3F2 # BLACK PENNANT
-#- 1F3F3;WAVING WHITE FLAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <W> <f> <l> <a> <g> <asciitilde> : "🏳" U1F3F3 # WAVING WHITE FLAG
-#- 1F3F4;WAVING BLACK FLAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <f> <l> <a> <g> <asciitilde> : "🏴" U1F3F4 # WAVING BLACK FLAG
-#- 1F3F5;ROSETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <o> <s> <e> <t> <t> <e> : "🏵" U1F3F5 # ROSETTE
-#- 1F3F6;BLACK ROSETTE;So;0;ON;;;;;N;;;;;
-### <MM> {black rosette} : "🏶" U1F3F6 # BLACK ROSETTE
-#- 1F3F7;LABEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <a> <b> <e> <l> : "🏷" U1F3F7 # LABEL
-#- 1F3F8;BADMINTON RACQUET AND SHUTTLECOCK;So;0;ON;;;;;N;;;;;
-### <MM> {badminton racquet and shuttlecock} : "🏸" U1F3F8 # BADMINTON RACQUET AND SHUTTLECOCK
-#- 1F3F9;BOW AND ARROW;So;0;ON;;;;;N;;;;;
-### <MM> {bow and arrow} : "🏹" U1F3F9 # BOW AND ARROW
-#- 1F3FA;AMPHORA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <m> <p> <h> <o> <r> <a> : "🏺" U1F3FA # AMPHORA
-#- 1F3FB;EMOJI MODIFIER FITZPATRICK TYPE-1-2;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <k> <i> <n> <1> : "🏻" U1F3FB # EMOJI MODIFIER FITZPATRICK TYPE-1-2
-<Multi_key> <Multi_key> <s> <k> <i> <n> <2> : "🏻" U1F3FB # EMOJI MODIFIER FITZPATRICK TYPE-1-2
-#- 1F3FC;EMOJI MODIFIER FITZPATRICK TYPE-3;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <k> <i> <n> <3> : "🏼" U1F3FC # EMOJI MODIFIER FITZPATRICK TYPE-3
-#- 1F3FD;EMOJI MODIFIER FITZPATRICK TYPE-4;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <k> <i> <n> <4> : "🏽" U1F3FD # EMOJI MODIFIER FITZPATRICK TYPE-4
-#- 1F3FE;EMOJI MODIFIER FITZPATRICK TYPE-5;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <k> <i> <n> <5> : "🏾" U1F3FE # EMOJI MODIFIER FITZPATRICK TYPE-5
-#- 1F3FF;EMOJI MODIFIER FITZPATRICK TYPE-6;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <k> <i> <n> <6> : "🏿" U1F3FF # EMOJI MODIFIER FITZPATRICK TYPE-6
-#- 1F400;RAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <a> <t> : "🐀" U1F400 # RAT
-#- 1F401;MOUSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <o> <u> <s> <e> : "🐁" U1F401 # MOUSE
-#- 1F402;OX;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <x> : "🐂" U1F402 # OX
-#- 1F403;WATER BUFFALO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <u> <f> <f> <a> <l> <o> : "🐃" U1F403 # WATER BUFFALO
-#- 1F404;COW;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <w> : "🐄" U1F404 # COW
-#- 1F405;TIGER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <i> <g> <e> <r> : "🐅" U1F405 # TIGER
-## Avoid conflict with LEO
-#- 1F406;LEOPARD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <e> <p> <a> <r> <d> : "🐆" U1F406 # LEOPARD
-#- 1F407;RABBIT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <a> <b> <b> <i> <t> : "🐇" U1F407 # RABBIT
-#- 1F408;CAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <t> : "🐈" U1F408 # CAT
-#- 1F409;DRAGON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <r> <a> <g> <o> <n> : "🐉" U1F409 # DRAGON
-#- 1F40A;CROCODILE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <r> <o> <c> : "🐊" U1F40A # CROCODILE
-#- 1F40B;WHALE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <h> <a> <l> <e> : "🐋" U1F40B # WHALE
-#- 1F40C;SNAIL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <n> <a> <i> <l> : "🐌" U1F40C # SNAIL
-#- 1F40D;SNAKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <n> <a> <k> <e> : "🐍" U1F40D # SNAKE
-#- 1F40E;HORSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <r> <s> <e> : "🐎" U1F40E # HORSE
-#- 1F40F;RAM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <a> <m> : "🐏" U1F40F # RAM
-#- 1F410;GOAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <o> <a> <t> : "🐐" U1F410 # GOAT
-#- 1F411;SHEEP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <e> <e> <p> : "🐑" U1F411 # SHEEP
-#- 1F412;MONKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <o> <n> <k> <e> <y> : "🐒" U1F412 # MONKEY
-#- 1F413;ROOSTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <o> <o> <s> <t> <e> <r> : "🐓" U1F413 # ROOSTER
-#- 1F414;CHICKEN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <C> <h> <i> <c> <k> <e> <n> : "🐔" U1F414 # CHICKEN
-#- 1F415;DOG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <o> <g> : "🐕" U1F415 # DOG
-#- 1F416;PIG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <i> <g> : "🐖" U1F416 # PIG
-#- 1F417;BOAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <a> <r> : "🐗" U1F417 # BOAR
-#- 1F418;ELEPHANT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <e> <l> <e> <p> <h> <a> <n> : "🐘" U1F418 # ELEPHANT
-<Multi_key> <Multi_key> <e> <l> <e> <p> <h> <n> <t> : "🐘" U1F418 # ELEPHANT
-#- 1F419;OCTOPUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <c> <t> <o> <p> <u> <s> : "🐙" U1F419 # OCTOPUS
-#- 1F41A;SPIRAL SHELL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <e> <l> <l> : "🐚" U1F41A # SPIRAL SHELL
-#- 1F41B;BUG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <u> <g> : "🐛" U1F41B # BUG
-#- 1F41C;ANT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <n> <t> : "🐜" U1F41C # ANT
-#- 1F41D;HONEYBEE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <n> <y> <b> <e> <e> : "🐝" U1F41D # HONEYBEE
-#- 1F41E;LADY BEETLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <a> <d> <y> <b> <u> <g> : "🐞" U1F41E # LADY BEETLE
-#- 1F41F;FISH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <i> <s> <h> : "🐟" U1F41F # FISH
-#- 1F420;TROPICAL FISH;So;0;ON;;;;;N;;;;;
-### <MM> {tropical fish} : "🐠" U1F420 # TROPICAL FISH
-#- 1F421;BLOWFISH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <u> <f> <f> <e> <r> : "🐡" U1F421 # BLOWFISH
-<Multi_key> <Multi_key> <b> <l> <o> <w> <f> <i> <s> : "🐡" U1F421 # BLOWFISH
-<Multi_key> <Multi_key> <b> <l> <o> <w> <f> <s> <h> : "🐡" U1F421 # BLOWFISH
-#- 1F422;TURTLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <u> <r> <t> <l> <e> : "🐢" U1F422 # TURTLE
-#- 1F423;HATCHING CHICK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <a> <t> <c> <h> : "🐣" U1F423 # HATCHING CHICK
-#- 1F424;BABY CHICK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <i> <c> <k> : "🐤" U1F424 # BABY CHICK
-#- 1F425;FRONT-FACING BABY CHICK;So;0;ON;;;;;N;;;;;
-### <MM> {front-facing baby chick} : "🐥" U1F425 # FRONT-FACING BABY CHICK
-#- 1F426;BIRD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <i> <r> <d> : "🐦" U1F426 # BIRD
-#- 1F427;PENGUIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <e> <n> <g> <u> <i> <n> : "🐧" U1F427 # PENGUIN
-#- 1F428;KOALA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <k> <o> <a> <l> <a> : "🐨" U1F428 # KOALA
-#- 1F429;POODLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <P> <o> <o> <d> <l> <e> : "🐩" U1F429 # POODLE
-#- 1F42A;DROMEDARY CAMEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <m> <e> <l> : "🐪" U1F42A # DROMEDARY CAMEL
-#- 1F42B;BACTRIAN CAMEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <2> <c> <a> <m> <e> <l> : "🐫" U1F42B # BACTRIAN CAMEL
-#- 1F42C;DOLPHIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <o> <l> <p> <h> <i> <n> : "🐬" U1F42C # DOLPHIN
-#- 1F42D;MOUSE FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <m> <o> <u> <s> <e> : "🐭" U1F42D # MOUSE FACE
-#- 1F42E;COW FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <c> <o> <w> : "🐮" U1F42E # COW FACE
-#- 1F42F;TIGER FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <t> <i> <g> <e> <r> : "🐯" U1F42F # TIGER FACE
-#- 1F430;RABBIT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <r> <a> <b> <b> <i> : "🐰" U1F430 # RABBIT FACE
-#- 1F431;CAT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <3> : "🐱" U1F431 # CAT FACE
-<Multi_key> <Multi_key> <parenleft> <parenright> <c> <a> <t> : "🐱" U1F431 # CAT FACE
-#- 1F432;DRAGON FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <d> <r> <a> <g> <o> : "🐲" U1F432 # DRAGON FACE
-#- 1F433;SPOUTING WHALE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <o> <u> <t> <e> <r> : "🐳" U1F433 # SPOUTING WHALE
-#- 1F434;HORSE FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <h> <o> <r> <s> <e> : "🐴" U1F434 # HORSE FACE
-#- 1F435;MONKEY FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <m> <o> <n> <k> <e> : "🐵" U1F435 # MONKEY FACE
-#- 1F436;DOG FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <d> <o> <g> : "🐶" U1F436 # DOG FACE
-#- 1F437;PIG FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <p> <i> <g> : "🐷" U1F437 # PIG FACE
-#- 1F438;FROG FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <f> <r> <o> <g> : "🐸" U1F438 # FROG FACE
-#- 1F439;HAMSTER FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <h> <a> <m> <s> <t> : "🐹" U1F439 # HAMSTER FACE
-#- 1F43A;WOLF FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <w> <o> <l> <f> : "🐺" U1F43A # WOLF FACE
-#- 1F43B;BEAR FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <b> <e> <a> <r> : "🐻" U1F43B # BEAR FACE
-#- 1F43C;PANDA FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <p> <a> <n> <d> <a> : "🐼" U1F43C # PANDA FACE
-#- 1F43D;PIG NOSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <P> <i> <g> <n> <o> <s> <e> : "🐽" U1F43D # PIG NOSE
-#- 1F43E;PAW PRINTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <a> <w> <s> : "🐾" U1F43E # PAW PRINTS
-#- 1F43F;CHIPMUNK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <i> <p> <m> <u> <n> : "🐿" U1F43F # CHIPMUNK
-<Multi_key> <Multi_key> <c> <h> <p> <m> <u> <n> <k> : "🐿" U1F43F # CHIPMUNK
-#- 1F440;EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <2> <e> <y> <e> <s> : "👀" U1F440 # EYES
-#- 1F441;EYE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <e> <y> <e> : "👁" U1F441 # EYE
-#- 1F442;EAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <e> <a> <r> : "👂" U1F442 # EAR
-#- 1F443;NOSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <n> <o> <s> <e> : "👃" U1F443 # NOSE
-#- 1F444;MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <o> <u> <t> <h> : "👄" U1F444 # MOUTH
-#- 1F445;TONGUE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <o> <n> <g> <u> <e> : "👅" U1F445 # TONGUE
-#- 1F446;WHITE UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white up pointing backhand index} : "👆" U1F446 # WHITE UP POINTING BACKHAND INDEX
-#- 1F447;WHITE DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white down pointing backhand index} : "👇" U1F447 # WHITE DOWN POINTING BACKHAND INDEX
-#- 1F448;WHITE LEFT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white left pointing backhand index} : "👈" U1F448 # WHITE LEFT POINTING BACKHAND INDEX
-#- 1F449;WHITE RIGHT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white right pointing backhand index} : "👉" U1F449 # WHITE RIGHT POINTING BACKHAND INDEX
-#- 1F44A;FISTED HAND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <i> <s> <t> : "👊" U1F44A # FISTED HAND SIGN
-#- 1F44B;WAVING HAND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <a> <v> <i> <n> <g> : "👋" U1F44B # WAVING HAND SIGN
-#- 1F44C;OK HAND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <O> <K> : "👌" U1F44C # OK HAND SIGN
-#- 1F44D;THUMBS UP SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <h> <u> <m> <b> <u> <p> : "👍" U1F44D # THUMBS UP SIGN
-#- 1F44E;THUMBS DOWN SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <h> <u> <m> <b> <d> <n> : "👎" U1F44E # THUMBS DOWN SIGN
-#- 1F44F;CLAPPING HANDS SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <p> <p> <l> <a> <u> <d> : "👏" U1F44F # CLAPPING HANDS SIGN
-#- 1F450;OPEN HANDS SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {open hands sign} : "👐" U1F450 # OPEN HANDS SIGN
-#- 1F451;CROWN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <r> <o> <w> <n> : "👑" U1F451 # CROWN
-#- 1F452;WOMANS HAT;So;0;ON;;;;;N;;;;;
-### <MM> {womans hat} : "👒" U1F452 # WOMANS HAT
-#- 1F453;EYEGLASSES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <l> <a> <s> <s> <e> <s> : "👓" U1F453 # EYEGLASSES
-#- 1F454;NECKTIE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <n> <e> <c> <k> <t> <i> <e> : "👔" U1F454 # NECKTIE
-#- 1F455;T-SHIRT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <minus> <s> <h> <i> <r> <t> : "👕" U1F455 # T-SHIRT
-#- 1F456;JEANS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <j> <e> <a> <n> <s> : "👖" U1F456 # JEANS
-#- 1F457;DRESS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <r> <e> <s> <s> : "👗" U1F457 # DRESS
-#- 1F458;KIMONO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <k> <i> <m> <o> <n> <o> : "👘" U1F458 # KIMONO
-#- 1F459;BIKINI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <i> <k> <i> <n> <i> : "👙" U1F459 # BIKINI
-#- 1F45A;WOMANS CLOTHES;So;0;ON;;;;;N;;;;;
-### <MM> {womans clothes} : "👚" U1F45A # WOMANS CLOTHES
-#- 1F45B;PURSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <u> <r> <s> <e> : "👛" U1F45B # PURSE
-#- 1F45C;HANDBAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <a> <n> <d> <b> <a> <g> : "👜" U1F45C # HANDBAG
-#- 1F45D;POUCH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <o> <u> <c> <h> : "👝" U1F45D # POUCH
-#- 1F45E;MANS SHOE;So;0;ON;;;;;N;;;;;
-### <MM> {mans shoe} : "👞" U1F45E # MANS SHOE
-#- 1F45F;ATHLETIC SHOE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <n> <e> <a> <k> <e> <r> : "👟" U1F45F # ATHLETIC SHOE
-#- 1F460;HIGH-HEELED SHOE;So;0;ON;;;;;N;;;;;
-### <MM> {high-heeled shoe} : "👠" U1F460 # HIGH-HEELED SHOE
-#- 1F461;WOMANS SANDAL;So;0;ON;;;;;N;;;;;
-### <MM> {womans sandal} : "👡" U1F461 # WOMANS SANDAL
-#- 1F462;WOMANS BOOTS;So;0;ON;;;;;N;;;;;
-### <MM> {womans boots} : "👢" U1F462 # WOMANS BOOTS
-#- 1F463;FOOTPRINTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <r> <i> <n> <t> <s> : "👣" U1F463 # FOOTPRINTS
-#- 1F464;BUST IN SILHOUETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <o> <m> <e> <1> : "👤" U1F464 # BUST IN SILHOUETTE
-<Multi_key> <Multi_key> <s> <o> <m> <e> <o> <n> <e> : "👤" U1F464 # BUST IN SILHOUETTE
-#- 1F465;BUSTS IN SILHOUETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <o> <m> <e> <2> : "👥" U1F465 # BUSTS IN SILHOUETTE
-<Multi_key> <Multi_key> <s> <o> <m> <e> <p> <p> <l> : "👥" U1F465 # BUSTS IN SILHOUETTE
-#- 1F466;BOY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <y> : "👦" U1F466 # BOY
-#- 1F467;GIRL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <i> <r> <l> : "👧" U1F467 # GIRL
-#- 1F468;MAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <a> <n> : "👨" U1F468 # MAN
-#- 1F469;WOMAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <o> <m> <a> <n> : "👩" U1F469 # WOMAN
-#- 1F46A;FAMILY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <a> <m> <i> <l> <y> : "👪" U1F46A # FAMILY
-#- 1F46B;MAN AND WOMAN HOLDING HANDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <M> <W> <h> <a> <n> <d> <s> : "👫" U1F46B # MAN AND WOMAN HOLDING HANDS
-#- 1F46C;TWO MEN HOLDING HANDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <M> <M> <h> <a> <n> <d> <s> : "👬" U1F46C # TWO MEN HOLDING HANDS
-#- 1F46D;TWO WOMEN HOLDING HANDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <W> <W> <h> <a> <n> <d> <s> : "👭" U1F46D # TWO WOMEN HOLDING HANDS
-#- 1F46E;POLICE OFFICER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <o> <l> <i> <c> <e> : "👮" U1F46E # POLICE OFFICER
-#- 1F46F;WOMAN WITH BUNNY EARS;So;0;ON;;;;;N;;;;;
-### <MM> {woman with bunny ears} : "👯" U1F46F # WOMAN WITH BUNNY EARS
-#- 1F470;BRIDE WITH VEIL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <r> <i> <d> <e> : "👰" U1F470 # BRIDE WITH VEIL
-#- 1F471;PERSON WITH BLOND HAIR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <l> <o> <n> <d> : "👱" U1F471 # PERSON WITH BLOND HAIR
-#- 1F472;MAN WITH GUA PI MAO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <u> <a> <p> <m> <a> <o> : "👲" U1F472 # MAN WITH GUA PI MAO
-#- 1F473;MAN WITH TURBAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <u> <r> <b> <a> <n> : "👳" U1F473 # MAN WITH TURBAN
-#- 1F474;OLDER MAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <l> <d> <m> <a> <n> : "👴" U1F474 # OLDER MAN
-#- 1F475;OLDER WOMAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <l> <d> <w> <o> <m> : "👵" U1F475 # OLDER WOMAN
-#- 1F476;BABY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <b> <y> : "👶" U1F476 # BABY
-#- 1F477;CONSTRUCTION WORKER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <u> <i> <l> <d> <e> <r> : "👷" U1F477 # CONSTRUCTION WORKER
-#- 1F478;PRINCESS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <r> <i> <n> <c> <s> <s> : "👸" U1F478 # PRINCESS
-#- 1F479;JAPANESE OGRE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <j> <a> <p> <o> <g> <r> <e> : "👹" U1F479 # JAPANESE OGRE
-#- 1F47A;JAPANESE GOBLIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <j> <a> <p> <g> <o> <b> <l> : "👺" U1F47A # JAPANESE GOBLIN
-#- 1F47B;GHOST;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <h> <o> <s> <t> : "👻" U1F47B # GHOST
-#- 1F47C;BABY ANGEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <e> <r> <u> <b> : "👼" U1F47C # BABY ANGEL
-#- 1F47D;EXTRATERRESTRIAL ALIEN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <r> <a> <y> : "👽" U1F47D # EXTRATERRESTRIAL ALIEN
-<Multi_key> <Multi_key> <E> <period> <T> <period> : "👽" U1F47D # EXTRATERRESTRIAL ALIEN
-#- 1F47E;ALIEN MONSTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <l> <i> <e> <n> : "👾" U1F47E # ALIEN MONSTER
-#- 1F47F;IMP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <i> <m> <p> : "👿" U1F47F # IMP
-#- 1F480;SKULL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <S> <k> <u> <l> <l> : "💀" U1F480 # SKULL
-<Multi_key> <Multi_key> <s> <k> <u> <l> <l> : "💀" U1F480 # SKULL
-#- 1F481;INFORMATION DESK PERSON;So;0;ON;;;;;N;;;;;
-### <MM> {information desk person} : "💁" U1F481 # INFORMATION DESK PERSON
-#- 1F482;GUARDSMAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <u> <a> <r> <d> : "💂" U1F482 # GUARDSMAN
-#- 1F483;DANCER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <a> <n> <c> <e> <r> : "💃" U1F483 # DANCER
-#- 1F484;LIPSTICK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <L> <i> <p> <s> <t> <i> <c> : "💄" U1F484 # LIPSTICK
-<Multi_key> <Multi_key> <L> <i> <p> <s> <t> <c> <k> : "💄" U1F484 # LIPSTICK
-#- 1F485;NAIL POLISH;So;0;ON;;;;;N;;;;;
-### <MM> {nail polish} : "💅" U1F485 # NAIL POLISH
-#- 1F486;FACE MASSAGE;So;0;ON;;;;;N;;;;;
-### <MM> {face massage} : "💆" U1F486 # FACE MASSAGE
-#- 1F487;HAIRCUT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <a> <i> <r> <c> <u> <t> : "💇" U1F487 # HAIRCUT
-#- 1F488;BARBER POLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <r> <b> <e> <r> : "💈" U1F488 # BARBER POLE
-#- 1F489;SYRINGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <y> <r> <i> <n> <g> <e> : "💉" U1F489 # SYRINGE
-#- 1F48A;PILL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <i> <l> <l> : "💊" U1F48A # PILL
-#- 1F48B;KISS MARK;So;0;ON;;;;;N;;;;;
-### <MM> {kiss mark} : "💋" U1F48B # KISS MARK
-#- 1F48C;LOVE LETTER;So;0;ON;;;;;N;;;;;
-### <MM> {love letter} : "💌" U1F48C # LOVE LETTER
-#- 1F48D;RING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <i> <n> <g> : "💍" U1F48D # RING
-#- 1F48E;GEM STONE;So;0;ON;;;;;N;;;;;
-### <MM> {gem stone} : "💎" U1F48E # GEM STONE
-#- 1F48F;KISS;So;0;ON;;;;;N;;;;;
-### <MM> {kiss} : "💏" U1F48F # KISS
-#- 1F490;BOUQUET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <u> <q> <u> <e> <t> : "💐" U1F490 # BOUQUET
-#- 1F491;COUPLE WITH HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <2> <p> <p> <l> <less> <3> : "💑" U1F491 # COUPLE WITH HEART
-#- 1F492;WEDDING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <e> <d> <d> <i> <n> <g> : "💒" U1F492 # WEDDING
-#- 1F493;BEATING HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <e> <a> <t> <less> <3> : "💓" U1F493 # BEATING HEART
-#- 1F494;BROKEN HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <r> <o> <k> <e> <less> <3> : "💔" U1F494 # BROKEN HEART
-## The inequality is even correct
-#- 1F495;TWO HEARTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <2> <h> <e> <a> <r> <t> : "💕" U1F495 # TWO HEARTS
-<Multi_key> <Multi_key> <2> <less> <3> : "💕" U1F495 # TWO HEARTS
-#- 1F496;SPARKLING HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <a> <r> <k> <less> <3> : "💖" U1F496 # SPARKLING HEART
-#- 1F497;GROWING HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <r> <o> <w> <less> <3> : "💗" U1F497 # GROWING HEART
-#- 1F498;HEART WITH ARROW;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <minus> <greater> <less> <3> : "💘" U1F498 # HEART WITH ARROW
-<Multi_key> <Multi_key> <minus> <greater> <h> <e> <a> <r> <t> : "💘" U1F498 # HEART WITH ARROW
-#- 1F499;BLUE HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <l> <u> <e> <less> <3> : "💙" U1F499 # BLUE HEART
-#- 1F49A;GREEN HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <r> <e> <e> <n> <less> <3> : "💚" U1F49A # GREEN HEART
-#- 1F49B;YELLOW HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <y> <e> <l> <l> <o> <less> <3> : "💛" U1F49B # YELLOW HEART
-#- 1F49C;PURPLE HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <u> <r> <p> <l> <less> <3> : "💜" U1F49C # PURPLE HEART
-#- 1F49D;HEART WITH RIBBON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <i> <b> <o> <n> <less> <3> : "💝" U1F49D # HEART WITH RIBBON
-#- 1F49E;REVOLVING HEARTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <u> <r> <n> <less> <3> : "💞" U1F49E # REVOLVING HEARTS
-#- 1F49F;HEART DECORATION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <at> <less> <3> : "💟" U1F49F # HEART DECORATION
-#- 1F4A0;DIAMOND SHAPE WITH A DOT INSIDE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <less> <period> <greater> : "💠" U1F4A0 # DIAMOND SHAPE WITH A DOT INSIDE
-#- 1F4A1;ELECTRIC LIGHT BULB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <i> <d> <e> <a> : "💡" U1F4A1 # ELECTRIC LIGHT BULB
-<Multi_key> <Multi_key> <b> <u> <l> <b> : "💡" U1F4A1 # ELECTRIC LIGHT BULB
-#- 1F4A2;ANGER SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <n> <g> <e> <r> : "💢" U1F4A2 # ANGER SYMBOL
-#- 1F4A3;BOMB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <m> <b> : "💣" U1F4A3 # BOMB
-#- 1F4A4;SLEEPING SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <Z> <z> <z> <z> : "💤" U1F4A4 # SLEEPING SYMBOL
-#- 1F4A5;COLLISION SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <n> <g> : "💥" U1F4A5 # COLLISION SYMBOL
-#- 1F4A6;SPLASHING SWEAT SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <l> <a> <s> <h> : "💦" U1F4A6 # SPLASHING SWEAT SYMBOL
-#- 1F4A7;DROPLET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <r> <o> <p> : "💧" U1F4A7 # DROPLET
-#- 1F4A8;DASH SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <a> <s> <h> : "💨" U1F4A8 # DASH SYMBOL
-#- 1F4A9;PILE OF POO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <i> <t> : "💩" U1F4A9 # PILE OF POO
-<Multi_key> <Multi_key> <p> <o> <o> : "💩" U1F4A9 # PILE OF POO
-#- 1F4AA;FLEXED BICEPS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <i> <c> <e> <p> <s> : "💪" U1F4AA # FLEXED BICEPS
-#- 1F4AB;DIZZY SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <i> <z> <z> <y> : "💫" U1F4AB # DIZZY SYMBOL
-#- 1F4AC;SPEECH BALLOON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <e> <e> <c> <h> : "💬" U1F4AC # SPEECH BALLOON
-#- 1F4AD;THOUGHT BALLOON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <h> <o> <u> <g> <h> <t> : "💭" U1F4AD # THOUGHT BALLOON
-#- 1F4AE;WHITE FLOWER;So;0;ON;;;;;N;;;;;
-### <MM> {white flower} : "💮" U1F4AE # WHITE FLOWER
-#- 1F4AF;HUNDRED POINTS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <1> <0> <0> <percent> : "💯" U1F4AF # HUNDRED POINTS SYMBOL
-#- 1F4B0;MONEY BAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <dollar> <b> <a> <g> : "💰" U1F4B0 # MONEY BAG
-#- 1F4B1;CURRENCY EXCHANGE;So;0;ON;;;;;N;;;;;
-### <MM> {currency exchange} : "💱" U1F4B1 # CURRENCY EXCHANGE
-#- 1F4B2;HEAVY DOLLAR SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <dollar> <exclam> : "💲" U1F4B2 # HEAVY DOLLAR SIGN
-#- 1F4B3;CREDIT CARD;So;0;ON;;;;;N;;;;;
-### <MM> {credit card} : "💳" U1F4B3 # CREDIT CARD
-#- 1F4B4;BANKNOTE WITH YEN SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {banknote with yen sign} : "💴" U1F4B4 # BANKNOTE WITH YEN SIGN
-#- 1F4B5;BANKNOTE WITH DOLLAR SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <dollar> <b> <i> <l> <l> : "💵" U1F4B5 # BANKNOTE WITH DOLLAR SIGN
-#- 1F4B6;BANKNOTE WITH EURO SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <e> <u> <r> <o> <b> <i> <l> : "💶" U1F4B6 # BANKNOTE WITH EURO SIGN
-<Multi_key> <Multi_key> <e> <u> <r> <b> <i> <l> <l> : "💶" U1F4B6 # BANKNOTE WITH EURO SIGN
-#- 1F4B7;BANKNOTE WITH POUND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <L> <b> <i> <l> <l> : "💷" U1F4B7 # BANKNOTE WITH POUND SIGN
-<Multi_key> <Multi_key> <G> <B> <b> <i> <l> <l> : "💷" U1F4B7 # BANKNOTE WITH POUND SIGN
-#- 1F4B8;MONEY WITH WINGS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <l> <y> <i> <n> <g> <dollar> : "💸" U1F4B8 # MONEY WITH WINGS
-#- 1F4B9;CHART WITH UPWARDS TREND AND YEN SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {chart with upwards trend and yen sign} : "💹" U1F4B9 # CHART WITH UPWARDS TREND AND YEN SIGN
-#- 1F4BA;SEAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <e> <a> <t> : "💺" U1F4BA # SEAT
-#- 1F4BB;PERSONAL COMPUTER;So;0;ON;;;;;N;;;;;
-### <MM> {personal computer} : "💻" U1F4BB # PERSONAL COMPUTER
-#- 1F4BC;BRIEFCASE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <t> <t> <a> <c> <h> <e> : "💼" U1F4BC # BRIEFCASE
-#- 1F4BD;MINIDISC;So;0;ON;;;;;N;;;;;
-### <MM> {minidisc} : "💽" U1F4BD # MINIDISC
-#- 1F4BE;FLOPPY DISK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <l> <o> <p> <p> <y> : "💾" U1F4BE # FLOPPY DISK
-#- 1F4BF;OPTICAL DISC;So;0;ON;;;;;N;;;;;
-### <MM> {optical disc} : "💿" U1F4BF # OPTICAL DISC
-#- 1F4C0;DVD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <D> <V> <D> : "📀" U1F4C0 # DVD
-#- 1F4C1;FILE FOLDER;So;0;ON;;;;;N;;;;;
-### <MM> {file folder} : "📁" U1F4C1 # FILE FOLDER
-#- 1F4C2;OPEN FILE FOLDER;So;0;ON;;;;;N;;;;;
-### <MM> {open file folder} : "📂" U1F4C2 # OPEN FILE FOLDER
-#- 1F4C3;PAGE WITH CURL;So;0;ON;;;;;N;;;;;
-### <MM> {page with curl} : "📃" U1F4C3 # PAGE WITH CURL
-#- 1F4C4;PAGE FACING UP;So;0;ON;;;;;N;;;;;
-### <MM> {page facing up} : "📄" U1F4C4 # PAGE FACING UP
-#- 1F4C5;CALENDAR;So;0;ON;;;;;N;;;;;
-### <MM> {calendar} : "📅" U1F4C5 # CALENDAR
-#- 1F4C6;TEAR-OFF CALENDAR;So;0;ON;;;;;N;;;;;
-### <MM> {tear-off calendar} : "📆" U1F4C6 # TEAR-OFF CALENDAR
-#- 1F4C7;CARD INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {card index} : "📇" U1F4C7 # CARD INDEX
-#- 1F4C8;CHART WITH UPWARDS TREND;So;0;ON;;;;;N;;;;;
-### <MM> {chart with upwards trend} : "📈" U1F4C8 # CHART WITH UPWARDS TREND
-#- 1F4C9;CHART WITH DOWNWARDS TREND;So;0;ON;;;;;N;;;;;
-### <MM> {chart with downwards trend} : "📉" U1F4C9 # CHART WITH DOWNWARDS TREND
-#- 1F4CA;BAR CHART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <r> <c> <h> <a> <r> : "📊" U1F4CA # BAR CHART
-#- 1F4CB;CLIPBOARD;So;0;ON;;;;;N;;;;;
-### <MM> {clipboard} : "📋" U1F4CB # CLIPBOARD
-#- 1F4CC;PUSHPIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <u> <s> <h> <p> <i> <n> : "📌" U1F4CC # PUSHPIN
-#- 1F4CD;ROUND PUSHPIN;So;0;ON;;;;;N;;;;;
-### <MM> {round pushpin} : "📍" U1F4CD # ROUND PUSHPIN
-#- 1F4CE;PAPERCLIP;So;0;ON;;;;;N;;;;;
-### <MM> {paperclip} : "📎" U1F4CE # PAPERCLIP
-#- 1F4CF;STRAIGHT RULER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <u> <l> <e> <r> : "📏" U1F4CF # STRAIGHT RULER
-#- 1F4D0;TRIANGULAR RULER;So;0;ON;;;;;N;;;;;
-### <MM> {triangular ruler} : "📐" U1F4D0 # TRIANGULAR RULER
-#- 1F4D1;BOOKMARK TABS;So;0;ON;;;;;N;;;;;
-### <MM> {bookmark tabs} : "📑" U1F4D1 # BOOKMARK TABS
-#- 1F4D2;LEDGER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <e> <d> <g> <e> <r> : "📒" U1F4D2 # LEDGER
-#- 1F4D3;NOTEBOOK;So;0;ON;;;;;N;;;;;
-### <MM> {notebook} : "📓" U1F4D3 # NOTEBOOK
-#- 1F4D4;NOTEBOOK WITH DECORATIVE COVER;So;0;ON;;;;;N;;;;;
-### <MM> {notebook with decorative cover} : "📔" U1F4D4 # NOTEBOOK WITH DECORATIVE COVER
-#- 1F4D5;CLOSED BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {closed book} : "📕" U1F4D5 # CLOSED BOOK
-#- 1F4D6;OPEN BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {open book} : "📖" U1F4D6 # OPEN BOOK
-#- 1F4D7;GREEN BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {green book} : "📗" U1F4D7 # GREEN BOOK
-#- 1F4D8;BLUE BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {blue book} : "📘" U1F4D8 # BLUE BOOK
-#- 1F4D9;ORANGE BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {orange book} : "📙" U1F4D9 # ORANGE BOOK
-#- 1F4DA;BOOKS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <o> <o> <k> <s> : "📚" U1F4DA # BOOKS
-#- 1F4DB;NAME BADGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <I> <D> <b> <a> <d> <g> <e> : "📛" U1F4DB # NAME BADGE
-#- 1F4DC;SCROLL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <c> <r> <o> <l> <l> : "📜" U1F4DC # SCROLL
-#- 1F4DD;MEMO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <e> <m> <o> : "📝" U1F4DD # MEMO
-#- 1F4DE;TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;
-### <MM> {telephone receiver} : "📞" U1F4DE # TELEPHONE RECEIVER
-#- 1F4DF;PAGER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <P> <a> <g> <e> <r> : "📟" U1F4DF # PAGER
-#- 1F4E0;FAX MACHINE;So;0;ON;;;;;N;;;;;
-### <MM> {fax machine} : "📠" U1F4E0 # FAX MACHINE
-#- 1F4E1;SATELLITE ANTENNA;So;0;ON;;;;;N;;;;;
-### <MM> {satellite antenna} : "📡" U1F4E1 # SATELLITE ANTENNA
-#- 1F4E2;PUBLIC ADDRESS LOUDSPEAKER;So;0;ON;;;;;N;;;;;
-### <MM> {public address loudspeaker} : "📢" U1F4E2 # PUBLIC ADDRESS LOUDSPEAKER
-#- 1F4E3;CHEERING MEGAPHONE;So;0;ON;;;;;N;;;;;
-### <MM> {cheering megaphone} : "📣" U1F4E3 # CHEERING MEGAPHONE
-#- 1F4E4;OUTBOX TRAY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <u> <t> <b> <o> <x> : "📤" U1F4E4 # OUTBOX TRAY
-#- 1F4E5;INBOX TRAY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <i> <n> <b> <o> <x> : "📥" U1F4E5 # INBOX TRAY
-#- 1F4E6;PACKAGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <a> <c> <k> <a> <g> <e> : "📦" U1F4E6 # PACKAGE
-#- 1F4E7;E-MAIL SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <e> <minus> <m> <a> <i> <l> : "📧" U1F4E7 # E-MAIL SYMBOL
-<Multi_key> <Multi_key> <e> <m> <a> <i> <l> : "📧" U1F4E7 # E-MAIL SYMBOL
-#- 1F4E8;INCOMING ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {incoming envelope} : "📨" U1F4E8 # INCOMING ENVELOPE
-#- 1F4E9;ENVELOPE WITH DOWNWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-### <MM> {envelope with downwards arrow above} : "📩" U1F4E9 # ENVELOPE WITH DOWNWARDS ARROW ABOVE
-#- 1F4EA;CLOSED MAILBOX WITH LOWERED FLAG;So;0;ON;;;;;N;;;;;
-### <MM> {closed mailbox with lowered flag} : "📪" U1F4EA # CLOSED MAILBOX WITH LOWERED FLAG
-#- 1F4EB;CLOSED MAILBOX WITH RAISED FLAG;So;0;ON;;;;;N;;;;;
-### <MM> {closed mailbox with raised flag} : "📫" U1F4EB # CLOSED MAILBOX WITH RAISED FLAG
-#- 1F4EC;OPEN MAILBOX WITH RAISED FLAG;So;0;ON;;;;;N;;;;;
-### <MM> {open mailbox with raised flag} : "📬" U1F4EC # OPEN MAILBOX WITH RAISED FLAG
-#- 1F4ED;OPEN MAILBOX WITH LOWERED FLAG;So;0;ON;;;;;N;;;;;
-### <MM> {open mailbox with lowered flag} : "📭" U1F4ED # OPEN MAILBOX WITH LOWERED FLAG
-#- 1F4EE;POSTBOX;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <o> <s> <t> <b> <o> <x> : "📮" U1F4EE # POSTBOX
-#- 1F4EF;POSTAL HORN;So;0;ON;;;;;N;;;;;
-### <MM> {postal horn} : "📯" U1F4EF # POSTAL HORN
-#- 1F4F0;NEWSPAPER;So;0;ON;;;;;N;;;;;
-### <MM> {newspaper} : "📰" U1F4F0 # NEWSPAPER
-#- 1F4F1;MOBILE PHONE;So;0;ON;;;;;N;;;;;
-### <MM> {mobile phone} : "📱" U1F4F1 # MOBILE PHONE
-#- 1F4F2;MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT;So;0;ON;;;;;N;;;;;
-### <MM> {mobile phone with rightwards arrow at left} : "📲" U1F4F2 # MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT
-#- 1F4F3;VIBRATION MODE;So;0;ON;;;;;N;;;;;
-### <MM> {vibration mode} : "📳" U1F4F3 # VIBRATION MODE
-#- 1F4F4;MOBILE PHONE OFF;So;0;ON;;;;;N;;;;;
-### <MM> {mobile phone off} : "📴" U1F4F4 # MOBILE PHONE OFF
-#- 1F4F5;NO MOBILE PHONES;So;0;ON;;;;;N;;;;;
-### <MM> {no mobile phones} : "📵" U1F4F5 # NO MOBILE PHONES
-#- 1F4F6;ANTENNA WITH BARS;So;0;ON;;;;;N;;;;;
-### <MM> {antenna with bars} : "📶" U1F4F6 # ANTENNA WITH BARS
-#- 1F4F7;CAMERA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <m> <e> <r> <a> : "📷" U1F4F7 # CAMERA
-#- 1F4F8;CAMERA WITH FLASH;So;0;ON;;;;;N;;;;;
-### <MM> {camera with flash} : "📸" U1F4F8 # CAMERA WITH FLASH
-#- 1F4F9;VIDEO CAMERA;So;0;ON;;;;;N;;;;;
-### <MM> {video camera} : "📹" U1F4F9 # VIDEO CAMERA
-#- 1F4FA;TELEVISION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <T> <V> : "📺" U1F4FA # TELEVISION
-#- 1F4FB;RADIO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <a> <d> <i> <o> : "📻" U1F4FB # RADIO
-#- 1F4FC;VIDEOCASSETTE;So;0;ON;;;;;N;;;;;
-### <MM> {videocassette} : "📼" U1F4FC # VIDEOCASSETTE
-#- 1F4FD;FILM PROJECTOR;So;0;ON;;;;;N;;;;;
-### <MM> {film projector} : "📽" U1F4FD # FILM PROJECTOR
-#- 1F4FE;PORTABLE STEREO;So;0;ON;;;;;N;;;;;
-### <MM> {portable stereo} : "📾" U1F4FE # PORTABLE STEREO
-#- 1F4FF;PRAYER BEADS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <o> <s> <a> <r> <y> : "📿" U1F4FF # PRAYER BEADS
-#- 1F500;TWISTED RIGHTWARDS ARROWS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <u> <f> <f> <l> <e> : "🔀" U1F500 # TWISTED RIGHTWARDS ARROWS
-#- 1F501;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <e> <p> <e> <a> <t> : "🔁" U1F501 # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS
-#- 1F502;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <1> <r> <e> <p> <e> <a> <t> : "🔂" U1F502 # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY
-#- 1F503;CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;
-### <MM> {clockwise downwards and upwards open circle arrows} : "🔃" U1F503 # CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
-#- 1F504;ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;
-### <MM> {anticlockwise downwards and upwards open circle arrows} : "🔄" U1F504 # ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
-#- 1F505;LOW BRIGHTNESS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <i> <m> : "🔅" U1F505 # LOW BRIGHTNESS SYMBOL
-#- 1F506;HIGH BRIGHTNESS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <r> <i> <g> <h> <t> : "🔆" U1F506 # HIGH BRIGHTNESS SYMBOL
-#- 1F507;SPEAKER WITH CANCELLATION STROKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <u> <t> <e> : "🔇" U1F507 # SPEAKER WITH CANCELLATION STROKE
-#- 1F508;SPEAKER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <e> <a> <k> <e> <r> : "🔈" U1F508 # SPEAKER
-#- 1F509;SPEAKER WITH ONE SOUND WAVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <o> <f> <t> <e> <r> : "🔉" U1F509 # SPEAKER WITH ONE SOUND WAVE
-#- 1F50A;SPEAKER WITH THREE SOUND WAVES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <o> <u> <d> <e> <r> : "🔊" U1F50A # SPEAKER WITH THREE SOUND WAVES
-#- 1F50B;BATTERY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <t> <t> <e> <r> <y> : "🔋" U1F50B # BATTERY
-#- 1F50C;ELECTRIC PLUG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <l> <u> <g> : "🔌" U1F50C # ELECTRIC PLUG
-#- 1F50D;LEFT-POINTING MAGNIFYING GLASS;So;0;ON;;;;;N;;;;;
-### <MM> {left-pointing magnifying glass} : "🔍" U1F50D # LEFT-POINTING MAGNIFYING GLASS
-#- 1F50E;RIGHT-POINTING MAGNIFYING GLASS;So;0;ON;;;;;N;;;;;
-### <MM> {right-pointing magnifying glass} : "🔎" U1F50E # RIGHT-POINTING MAGNIFYING GLASS
-#- 1F50F;LOCK WITH INK PEN;So;0;ON;;;;;N;;;;;
-### <MM> {lock with ink pen} : "🔏" U1F50F # LOCK WITH INK PEN
-#- 1F510;CLOSED LOCK WITH KEY;So;0;ON;;;;;N;;;;;
-### <MM> {closed lock with key} : "🔐" U1F510 # CLOSED LOCK WITH KEY
-#- 1F511;KEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <k> <e> <y> : "🔑" U1F511 # KEY
-#- 1F512;LOCK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <o> <c> <k> : "🔒" U1F512 # LOCK
-#- 1F513;OPEN LOCK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <u> <n> <l> <o> <c> <k> : "🔓" U1F513 # OPEN LOCK
-#- 1F514;BELL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <e> <l> <l> : "🔔" U1F514 # BELL
-#- 1F515;BELL WITH CANCELLATION STROKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <b> <e> <l> <l> : "🔕" U1F515 # BELL WITH CANCELLATION STROKE
-<Multi_key> <Multi_key> <n> <o> <b> <e> <l> <l> : "🔕" U1F515 # BELL WITH CANCELLATION STROKE
-#- 1F516;BOOKMARK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <o> <o> <k> <m> <a> <r> : "🔖" U1F516 # BOOKMARK
-#- 1F517;LINK SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <i> <n> <k> : "🔗" U1F517 # LINK SYMBOL
-#- 1F518;RADIO BUTTON;So;0;ON;;;;;N;;;;;
-### <MM> {radio button} : "🔘" U1F518 # RADIO BUTTON
-#- 1F519;BACK WITH LEFTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <A> <C> <K> : "🔙" U1F519 # BACK WITH LEFTWARDS ARROW ABOVE
-#- 1F51A;END WITH LEFTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <E> <N> <D> : "🔚" U1F51A # END WITH LEFTWARDS ARROW ABOVE
-#- 1F51B;ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <O> <N> : "🔛" U1F51B # ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE
-#- 1F51C;SOON WITH RIGHTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <S> <O> <O> <N> : "🔜" U1F51C # SOON WITH RIGHTWARDS ARROW ABOVE
-#- 1F51D;TOP WITH UPWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <T> <O> <P> : "🔝" U1F51D # TOP WITH UPWARDS ARROW ABOVE
-#- 1F51E;NO ONE UNDER EIGHTEEN SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <1> <8> : "🔞" U1F51E # NO ONE UNDER EIGHTEEN SYMBOL
-<Multi_key> <Multi_key> <exclam> <less> <1> <8> : "🔞" U1F51E # NO ONE UNDER EIGHTEEN SYMBOL
-<Multi_key> <Multi_key> <n> <o> <less> <1> <8> : "🔞" U1F51E # NO ONE UNDER EIGHTEEN SYMBOL
-<Multi_key> <Multi_key> <n> <o> <1> <8> : "🔞" U1F51E # NO ONE UNDER EIGHTEEN SYMBOL
-#- 1F51F;KEYCAP TEN;So;0;ON;;;;;N;;;;;
-### <MM> {keycap ten} : "🔟" U1F51F # KEYCAP TEN
-#- 1F520;INPUT SYMBOL FOR LATIN CAPITAL LETTERS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for latin capital letters} : "🔠" U1F520 # INPUT SYMBOL FOR LATIN CAPITAL LETTERS
-#- 1F521;INPUT SYMBOL FOR LATIN SMALL LETTERS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for latin small letters} : "🔡" U1F521 # INPUT SYMBOL FOR LATIN SMALL LETTERS
-#- 1F522;INPUT SYMBOL FOR NUMBERS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for numbers} : "🔢" U1F522 # INPUT SYMBOL FOR NUMBERS
-#- 1F523;INPUT SYMBOL FOR SYMBOLS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for symbols} : "🔣" U1F523 # INPUT SYMBOL FOR SYMBOLS
-#- 1F524;INPUT SYMBOL FOR LATIN LETTERS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for latin letters} : "🔤" U1F524 # INPUT SYMBOL FOR LATIN LETTERS
-#- 1F525;FIRE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <i> <r> <e> : "🔥" U1F525 # FIRE
-#- 1F526;ELECTRIC TORCH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <o> <r> <c> <h> : "🔦" U1F526 # ELECTRIC TORCH
-#- 1F527;WRENCH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <r> <e> <n> <c> <h> : "🔧" U1F527 # WRENCH
-#- 1F528;HAMMER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <a> <m> <m> <e> <r> : "🔨" U1F528 # HAMMER
-#- 1F529;NUT AND BOLT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <l> <t> : "🔩" U1F529 # NUT AND BOLT
-#- 1F52A;HOCHO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <c> <h> <o> : "🔪" U1F52A # HOCHO
-#- 1F52B;PISTOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <i> <s> <t> <o> <l> : "🔫" U1F52B # PISTOL
-#- 1F52C;MICROSCOPE;So;0;ON;;;;;N;;;;;
-### <MM> {microscope} : "🔬" U1F52C # MICROSCOPE
-#- 1F52D;TELESCOPE;So;0;ON;;;;;N;;;;;
-### <MM> {telescope} : "🔭" U1F52D # TELESCOPE
-#- 1F52E;CRYSTAL BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <o> <r> <t> <u> <n> <e> : "🔮" U1F52E # CRYSTAL BALL
-#- 1F52F;SIX POINTED STAR WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
-### <MM> {six pointed star with middle dot} : "🔯" U1F52F # SIX POINTED STAR WITH MIDDLE DOT
-#- 1F530;JAPANESE SYMBOL FOR BEGINNER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <e> <g> <i> <n> <n> <r> : "🔰" U1F530 # JAPANESE SYMBOL FOR BEGINNER
-#- 1F531;TRIDENT EMBLEM;So;0;ON;;;;;N;;;;;
-### <MM> {trident emblem} : "🔱" U1F531 # TRIDENT EMBLEM
-#- 1F532;BLACK SQUARE BUTTON;So;0;ON;;;;;N;;;;;
-### <MM> {black square button} : "🔲" U1F532 # BLACK SQUARE BUTTON
-#- 1F533;WHITE SQUARE BUTTON;So;0;ON;;;;;N;;;;;
-### <MM> {white square button} : "🔳" U1F533 # WHITE SQUARE BUTTON
-#- 1F534;LARGE RED CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {large red circle} : "🔴" U1F534 # LARGE RED CIRCLE
-#- 1F535;LARGE BLUE CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {large blue circle} : "🔵" U1F535 # LARGE BLUE CIRCLE
-#- 1F536;LARGE ORANGE DIAMOND;So;0;ON;;;;;N;;;;;
-### <MM> {large orange diamond} : "🔶" U1F536 # LARGE ORANGE DIAMOND
-#- 1F537;LARGE BLUE DIAMOND;So;0;ON;;;;;N;;;;;
-### <MM> {large blue diamond} : "🔷" U1F537 # LARGE BLUE DIAMOND
-#- 1F538;SMALL ORANGE DIAMOND;So;0;ON;;;;;N;;;;;
-### <MM> {small orange diamond} : "🔸" U1F538 # SMALL ORANGE DIAMOND
-#- 1F539;SMALL BLUE DIAMOND;So;0;ON;;;;;N;;;;;
-### <MM> {small blue diamond} : "🔹" U1F539 # SMALL BLUE DIAMOND
-#- 1F53A;UP-POINTING RED TRIANGLE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing red triangle} : "🔺" U1F53A # UP-POINTING RED TRIANGLE
-#- 1F53B;DOWN-POINTING RED TRIANGLE;So;0;ON;;;;;N;;;;;
-### <MM> {down-pointing red triangle} : "🔻" U1F53B # DOWN-POINTING RED TRIANGLE
-#- 1F53C;UP-POINTING SMALL RED TRIANGLE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing small red triangle} : "🔼" U1F53C # UP-POINTING SMALL RED TRIANGLE
-#- 1F53D;DOWN-POINTING SMALL RED TRIANGLE;So;0;ON;;;;;N;;;;;
-### <MM> {down-pointing small red triangle} : "🔽" U1F53D # DOWN-POINTING SMALL RED TRIANGLE
-#- 1F53E;LOWER RIGHT SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {lower right shadowed white circle} : "🔾" U1F53E # LOWER RIGHT SHADOWED WHITE CIRCLE
-#- 1F53F;UPPER RIGHT SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {upper right shadowed white circle} : "🔿" U1F53F # UPPER RIGHT SHADOWED WHITE CIRCLE
-#- 1F540;CIRCLED CROSS POMMEE;So;0;ON;;;;;N;;;;;
-### <MM> {circled cross pommee} : "🕀" U1F540 # CIRCLED CROSS POMMEE
-#- 1F541;CROSS POMMEE WITH HALF-CIRCLE BELOW;So;0;ON;;;;;N;;;;;
-### <MM> {cross pommee with half-circle below} : "🕁" U1F541 # CROSS POMMEE WITH HALF-CIRCLE BELOW
-#- 1F542;CROSS POMMEE;So;0;ON;;;;;N;;;;;
-### <MM> {cross pommee} : "🕂" U1F542 # CROSS POMMEE
-#- 1F543;NOTCHED LEFT SEMICIRCLE WITH THREE DOTS;So;0;ON;;;;;N;;;;;
-### <MM> {notched left semicircle with three dots} : "🕃" U1F543 # NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
-#- 1F544;NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS;So;0;ON;;;;;N;;;;;
-### <MM> {notched right semicircle with three dots} : "🕄" U1F544 # NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS
-#- 1F545;SYMBOL FOR MARKS CHAPTER;So;0;ON;;;;;N;;;;;
-### <MM> {symbol for marks chapter} : "🕅" U1F545 # SYMBOL FOR MARKS CHAPTER
-#- 1F546;WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {white latin cross} : "🕆" U1F546 # WHITE LATIN CROSS
-#- 1F547;HEAVY LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {heavy latin cross} : "🕇" U1F547 # HEAVY LATIN CROSS
-#- 1F548;CELTIC CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {celtic cross} : "🕈" U1F548 # CELTIC CROSS
-#- 1F549;OM SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <O> <M> : "🕉" U1F549 # OM SYMBOL
-#- 1F54A;DOVE OF PEACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <o> <v> <e> : "🕊" U1F54A # DOVE OF PEACE
-#- 1F54B;KAABA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <k> <a> <a> <b> <a> : "🕋" U1F54B # KAABA
-#- 1F54C;MOSQUE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <o> <s> <q> <u> <e> : "🕌" U1F54C # MOSQUE
-#- 1F54D;SYNAGOGUE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <u> <l> : "🕍" U1F54D # SYNAGOGUE
-## Worry about MENORAH WITH SEVEN BRANCHES when it comes along.
-#- 1F54E;MENORAH WITH NINE BRANCHES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <e> <n> <o> <r> <a> <h> : "🕎" U1F54E # MENORAH WITH NINE BRANCHES
-#- 1F54F;BOWL OF HYGIEIA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <y> <g> <i> <e> <i> <a> : "🕏" U1F54F # BOWL OF HYGIEIA
-#- 1F568;RIGHT SPEAKER;So;0;ON;;;;;N;;;;;
-### <MM> {right speaker} : "🕨" U1F568 # RIGHT SPEAKER
-#- 1F569;RIGHT SPEAKER WITH ONE SOUND WAVE;So;0;ON;;;;;N;;;;;
-### <MM> {right speaker with one sound wave} : "🕩" U1F569 # RIGHT SPEAKER WITH ONE SOUND WAVE
-#- 1F56A;RIGHT SPEAKER WITH THREE SOUND WAVES;So;0;ON;;;;;N;;;;;
-### <MM> {right speaker with three sound waves} : "🕪" U1F56A # RIGHT SPEAKER WITH THREE SOUND WAVES
-#- 1F56B;BULLHORN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <u> <l> <l> <h> <o> <r> : "🕫" U1F56B # BULLHORN
-#- 1F56C;BULLHORN WITH SOUND WAVES;So;0;ON;;;;;N;;;;;
-### <MM> {bullhorn with sound waves} : "🕬" U1F56C # BULLHORN WITH SOUND WAVES
-## You KNOW these next three were put together in this order on purpose.
-#- 1F56D;RINGING BELL;So;0;ON;;;;;N;;;;;
-### <MM> {ringing bell} : "🕭" U1F56D # RINGING BELL
-#- 1F56E;BOOK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <o> <k> : "🕮" U1F56E # BOOK
-#- 1F56F;CANDLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <n> <d> <l> <e> : "🕯" U1F56F # CANDLE
-#- 1F570;MANTELPIECE CLOCK;So;0;ON;;;;;N;;;;;
-### <MM> {mantelpiece clock} : "🕰" U1F570 # MANTELPIECE CLOCK
-#- 1F571;BLACK SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
-### <MM> {black skull and crossbones} : "🕱" U1F571 # BLACK SKULL AND CROSSBONES
-#- 1F572;NO PIRACY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <p> <i> <r> <a> <t> <e> : "🕲" U1F572 # NO PIRACY
-<Multi_key> <Multi_key> <exclam> <p> <i> <r> <a> <c> <y> : "🕲" U1F572 # NO PIRACY
-<Multi_key> <Multi_key> <n> <o> <p> <i> <r> <a> <t> : "🕲" U1F572 # NO PIRACY
-#- 1F573;HOLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <h> <o> <l> <e> : "🕳" U1F573 # HOLE
-#- 1F574;MAN IN BUSINESS SUIT LEVITATING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <e> <v> <i> <t> <a> <t> : "🕴" U1F574 # MAN IN BUSINESS SUIT LEVITATING
-#- 1F575;SLEUTH OR SPY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <y> : "🕵" U1F575 # SLEUTH OR SPY
-#- 1F576;DARK SUNGLASSES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <a> <d> <e> <s> : "🕶" U1F576 # DARK SUNGLASSES
-#- 1F577;SPIDER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <i> <d> <e> <r> : "🕷" U1F577 # SPIDER
-#- 1F578;SPIDER WEB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <e> <b> : "🕸" U1F578 # SPIDER WEB
-#- 1F579;JOYSTICK;So;0;ON;;;;;N;;;;;
-### <MM> {joystick} : "🕹" U1F579 # JOYSTICK
-#- 1F57B;LEFT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;
-### <MM> {left hand telephone receiver} : "🕻" U1F57B # LEFT HAND TELEPHONE RECEIVER
-#- 1F57C;TELEPHONE RECEIVER WITH PAGE;So;0;ON;;;;;N;;;;;
-### <MM> {telephone receiver with page} : "🕼" U1F57C # TELEPHONE RECEIVER WITH PAGE
-#- 1F57D;RIGHT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;
-### <MM> {right hand telephone receiver} : "🕽" U1F57D # RIGHT HAND TELEPHONE RECEIVER
-#- 1F57E;WHITE TOUCHTONE TELEPHONE;So;0;ON;;;;;N;;;;;
-### <MM> {white touchtone telephone} : "🕾" U1F57E # WHITE TOUCHTONE TELEPHONE
-#- 1F57F;BLACK TOUCHTONE TELEPHONE;So;0;ON;;;;;N;;;;;
-### <MM> {black touchtone telephone} : "🕿" U1F57F # BLACK TOUCHTONE TELEPHONE
-#- 1F580;TELEPHONE ON TOP OF MODEM;So;0;ON;;;;;N;;;;;
-### <MM> {telephone on top of modem} : "🖀" U1F580 # TELEPHONE ON TOP OF MODEM
-#- 1F581;CLAMSHELL MOBILE PHONE;So;0;ON;;;;;N;;;;;
-### <MM> {clamshell mobile phone} : "🖁" U1F581 # CLAMSHELL MOBILE PHONE
-#- 1F582;BACK OF ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {back of envelope} : "🖂" U1F582 # BACK OF ENVELOPE
-#- 1F583;STAMPED ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {stamped envelope} : "🖃" U1F583 # STAMPED ENVELOPE
-#- 1F584;ENVELOPE WITH LIGHTNING;So;0;ON;;;;;N;;;;;
-### <MM> {envelope with lightning} : "🖄" U1F584 # ENVELOPE WITH LIGHTNING
-#- 1F585;FLYING ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {flying envelope} : "🖅" U1F585 # FLYING ENVELOPE
-#- 1F586;PEN OVER STAMPED ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {pen over stamped envelope} : "🖆" U1F586 # PEN OVER STAMPED ENVELOPE
-#- 1F587;LINKED PAPERCLIPS;So;0;ON;;;;;N;;;;;
-### <MM> {linked paperclips} : "🖇" U1F587 # LINKED PAPERCLIPS
-#- 1F588;BLACK PUSHPIN;So;0;ON;;;;;N;;;;;
-### <MM> {black pushpin} : "🖈" U1F588 # BLACK PUSHPIN
-#- 1F589;LOWER LEFT PENCIL;So;0;ON;;;;;N;;;;;
-### <MM> {lower left pencil} : "🖉" U1F589 # LOWER LEFT PENCIL
-#- 1F58A;LOWER LEFT BALLPOINT PEN;So;0;ON;;;;;N;;;;;
-### <MM> {lower left ballpoint pen} : "🖊" U1F58A # LOWER LEFT BALLPOINT PEN
-#- 1F58B;LOWER LEFT FOUNTAIN PEN;So;0;ON;;;;;N;;;;;
-### <MM> {lower left fountain pen} : "🖋" U1F58B # LOWER LEFT FOUNTAIN PEN
-#- 1F58C;LOWER LEFT PAINTBRUSH;So;0;ON;;;;;N;;;;;
-### <MM> {lower left paintbrush} : "🖌" U1F58C # LOWER LEFT PAINTBRUSH
-#- 1F58D;LOWER LEFT CRAYON;So;0;ON;;;;;N;;;;;
-### <MM> {lower left crayon} : "🖍" U1F58D # LOWER LEFT CRAYON
-#- 1F58E;LEFT WRITING HAND;So;0;ON;;;;;N;;;;;
-### <MM> {left writing hand} : "🖎" U1F58E # LEFT WRITING HAND
-#- 1F58F;TURNED OK HAND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <at> <O> <K> : "🖏" U1F58F # TURNED OK HAND SIGN
-#- 1F590;RAISED HAND WITH FINGERS SPLAYED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <5> <h> <a> <n> <d> : "🖐" U1F590 # RAISED HAND WITH FINGERS SPLAYED
-#- 1F591;REVERSED RAISED HAND WITH FINGERS SPLAYED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <at> <5> <h> <a> <n> <d> : "🖑" U1F591 # REVERSED RAISED HAND WITH FINGERS SPLAYED
-#- 1F592;REVERSED THUMBS UP SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {reversed thumbs up sign} : "🖒" U1F592 # REVERSED THUMBS UP SIGN
-#- 1F593;REVERSED THUMBS DOWN SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {reversed thumbs down sign} : "🖓" U1F593 # REVERSED THUMBS DOWN SIGN
-## Might as well insert this one for better mnemonic; it'll screw up the sort though.
-#- 270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <v> <i> <c> <t> <o> <r> <y> : "✌" U270C # VICTORY HAND
-#- 1F594;REVERSED VICTORY HAND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <2> <f> <u> <c> <k> <u> : "🖔" U1F594 # REVERSED VICTORY HAND
-<Multi_key> <Multi_key> <2> <F> <U> : "🖔" U1F594 # REVERSED VICTORY HAND
-#- 1F595;REVERSED HAND WITH MIDDLE FINGER EXTENDED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <u> <c> <k> <u> : "🖕" U1F595 # REVERSED HAND WITH MIDDLE FINGER EXTENDED
-## Live Long and Prosper...
-#- 1F596;RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <L> <L> <A> <P> : "🖖" U1F596 # RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
-<Multi_key> <Multi_key> <s> <p> <o> <c> <k> : "🖖" U1F596 # RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
-#- 1F597;WHITE DOWN POINTING LEFT HAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white down pointing left hand index} : "🖗" U1F597 # WHITE DOWN POINTING LEFT HAND INDEX
-#- 1F598;SIDEWAYS WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways white left pointing index} : "🖘" U1F598 # SIDEWAYS WHITE LEFT POINTING INDEX
-#- 1F599;SIDEWAYS WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways white right pointing index} : "🖙" U1F599 # SIDEWAYS WHITE RIGHT POINTING INDEX
-#- 1F59A;SIDEWAYS BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways black left pointing index} : "🖚" U1F59A # SIDEWAYS BLACK LEFT POINTING INDEX
-#- 1F59B;SIDEWAYS BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways black right pointing index} : "🖛" U1F59B # SIDEWAYS BLACK RIGHT POINTING INDEX
-#- 1F59C;BLACK LEFT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {black left pointing backhand index} : "🖜" U1F59C # BLACK LEFT POINTING BACKHAND INDEX
-#- 1F59D;BLACK RIGHT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {black right pointing backhand index} : "🖝" U1F59D # BLACK RIGHT POINTING BACKHAND INDEX
-#- 1F59E;SIDEWAYS WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways white up pointing index} : "🖞" U1F59E # SIDEWAYS WHITE UP POINTING INDEX
-#- 1F59F;SIDEWAYS WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways white down pointing index} : "🖟" U1F59F # SIDEWAYS WHITE DOWN POINTING INDEX
-#- 1F5A0;SIDEWAYS BLACK UP POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways black up pointing index} : "🖠" U1F5A0 # SIDEWAYS BLACK UP POINTING INDEX
-#- 1F5A1;SIDEWAYS BLACK DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways black down pointing index} : "🖡" U1F5A1 # SIDEWAYS BLACK DOWN POINTING INDEX
-#- 1F5A2;BLACK UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {black up pointing backhand index} : "🖢" U1F5A2 # BLACK UP POINTING BACKHAND INDEX
-#- 1F5A3;BLACK DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {black down pointing backhand index} : "🖣" U1F5A3 # BLACK DOWN POINTING BACKHAND INDEX
-#- 1F5A5;DESKTOP COMPUTER;So;0;ON;;;;;N;;;;;
-### <MM> {desktop computer} : "🖥" U1F5A5 # DESKTOP COMPUTER
-#- 1F5A6;KEYBOARD AND MOUSE;So;0;ON;;;;;N;;;;;
-### <MM> {keyboard and mouse} : "🖦" U1F5A6 # KEYBOARD AND MOUSE
-#- 1F5A7;THREE NETWORKED COMPUTERS;So;0;ON;;;;;N;;;;;
-### <MM> {three networked computers} : "🖧" U1F5A7 # THREE NETWORKED COMPUTERS
-#- 1F5A8;PRINTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <r> <i> <n> <t> <e> <r> : "🖨" U1F5A8 # PRINTER
-#- 1F5A9;POCKET CALCULATOR;So;0;ON;;;;;N;;;;;
-### <MM> {pocket calculator} : "🖩" U1F5A9 # POCKET CALCULATOR
-#- 1F5AA;BLACK HARD SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;
-### <MM> {black hard shell floppy disk} : "🖪" U1F5AA # BLACK HARD SHELL FLOPPY DISK
-#- 1F5AB;WHITE HARD SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;
-### <MM> {white hard shell floppy disk} : "🖫" U1F5AB # WHITE HARD SHELL FLOPPY DISK
-#- 1F5AC;SOFT SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;
-### <MM> {soft shell floppy disk} : "🖬" U1F5AC # SOFT SHELL FLOPPY DISK
-#- 1F5AD;TAPE CARTRIDGE;So;0;ON;;;;;N;;;;;
-### <MM> {tape cartridge} : "🖭" U1F5AD # TAPE CARTRIDGE
-#- 1F5AE;WIRED KEYBOARD;So;0;ON;;;;;N;;;;;
-### <MM> {wired keyboard} : "🖮" U1F5AE # WIRED KEYBOARD
-#- 1F5AF;ONE BUTTON MOUSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <1> <m> <o> <u> <s> <e> : "🖯" U1F5AF # ONE BUTTON MOUSE
-#- 1F5B0;TWO BUTTON MOUSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <2> <m> <o> <u> <s> <e> : "🖰" U1F5B0 # TWO BUTTON MOUSE
-#- 1F5B1;THREE BUTTON MOUSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <3> <m> <o> <u> <s> <e> : "🖱" U1F5B1 # THREE BUTTON MOUSE
-#- 1F5B2;TRACKBALL;So;0;ON;;;;;N;;;;;
-### <MM> {trackbal} : "🖲" U1F5B2 # TRACKBALL
-#- 1F5B3;OLD PERSONAL COMPUTER;So;0;ON;;;;;N;;;;;
-### <MM> {old personal computer} : "🖳" U1F5B3 # OLD PERSONAL COMPUTER
-#- 1F5B4;HARD DISK;So;0;ON;;;;;N;;;;;
-### <MM> {hard disk} : "🖴" U1F5B4 # HARD DISK
-#- 1F5B5;SCREEN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <c> <r> <e> <e> <n> : "🖵" U1F5B5 # SCREEN
-#- 1F5B6;PRINTER ICON;So;0;ON;;;;;N;;;;;
-### <MM> {printer icon} : "🖶" U1F5B6 # PRINTER ICON
-#- 1F5B7;FAX ICON;So;0;ON;;;;;N;;;;;
-### <MM> {fax icon} : "🖷" U1F5B7 # FAX ICON
-#- 1F5B8;OPTICAL DISC ICON;So;0;ON;;;;;N;;;;;
-### <MM> {optical disc icon} : "🖸" U1F5B8 # OPTICAL DISC ICON
-#- 1F5B9;DOCUMENT WITH TEXT;So;0;ON;;;;;N;;;;;
-### <MM> {document with text} : "🖹" U1F5B9 # DOCUMENT WITH TEXT
-#- 1F5BA;DOCUMENT WITH TEXT AND PICTURE;So;0;ON;;;;;N;;;;;
-### <MM> {document with text and picture} : "🖺" U1F5BA # DOCUMENT WITH TEXT AND PICTURE
-#- 1F5BB;DOCUMENT WITH PICTURE;So;0;ON;;;;;N;;;;;
-### <MM> {document with picture} : "🖻" U1F5BB # DOCUMENT WITH PICTURE
-#- 1F5BC;FRAME WITH PICTURE;So;0;ON;;;;;N;;;;;
-### <MM> {frame with picture} : "🖼" U1F5BC # FRAME WITH PICTURE
-#- 1F5BD;FRAME WITH TILES;So;0;ON;;;;;N;;;;;
-### <MM> {frame with tiles} : "🖽" U1F5BD # FRAME WITH TILES
-#- 1F5BE;FRAME WITH AN X;So;0;ON;;;;;N;;;;;
-### <MM> {frame with an x} : "🖾" U1F5BE # FRAME WITH AN X
-#- 1F5BF;BLACK FOLDER;So;0;ON;;;;;N;;;;;
-### <MM> {black folder} : "🖿" U1F5BF # BLACK FOLDER
-#- 1F5C0;FOLDER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <o> <l> <d> <e> <r> : "🗀" U1F5C0 # FOLDER
-#- 1F5C1;OPEN FOLDER;So;0;ON;;;;;N;;;;;
-### <MM> {open folder} : "🗁" U1F5C1 # OPEN FOLDER
-#- 1F5C2;CARD INDEX DIVIDERS;So;0;ON;;;;;N;;;;;
-### <MM> {card index dividers} : "🗂" U1F5C2 # CARD INDEX DIVIDERS
-#- 1F5C3;CARD FILE BOX;So;0;ON;;;;;N;;;;;
-### <MM> {card file box} : "🗃" U1F5C3 # CARD FILE BOX
-#- 1F5C4;FILE CABINET;So;0;ON;;;;;N;;;;;
-### <MM> {file cabinet} : "🗄" U1F5C4 # FILE CABINET
-#- 1F5C5;EMPTY NOTE;So;0;ON;;;;;N;;;;;
-### <MM> {empty note} : "🗅" U1F5C5 # EMPTY NOTE
-#- 1F5C6;EMPTY NOTE PAGE;So;0;ON;;;;;N;;;;;
-### <MM> {empty note page} : "🗆" U1F5C6 # EMPTY NOTE PAGE
-#- 1F5C7;EMPTY NOTE PAD;So;0;ON;;;;;N;;;;;
-### <MM> {empty note pad} : "🗇" U1F5C7 # EMPTY NOTE PAD
-#- 1F5C8;NOTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <n> <o> <t> <e> : "🗈" U1F5C8 # NOTE
-#- 1F5C9;NOTE PAGE;So;0;ON;;;;;N;;;;;
-### <MM> {note page} : "🗉" U1F5C9 # NOTE PAGE
-#- 1F5CA;NOTE PAD;So;0;ON;;;;;N;;;;;
-### <MM> {note pad} : "🗊" U1F5CA # NOTE PAD
-#- 1F5CB;EMPTY DOCUMENT;So;0;ON;;;;;N;;;;;
-### <MM> {empty document} : "🗋" U1F5CB # EMPTY DOCUMENT
-#- 1F5CC;EMPTY PAGE;So;0;ON;;;;;N;;;;;
-### <MM> {empty page} : "🗌" U1F5CC # EMPTY PAGE
-#- 1F5CD;EMPTY PAGES;So;0;ON;;;;;N;;;;;
-### <MM> {empty pages} : "🗍" U1F5CD # EMPTY PAGES
-#- 1F5CE;DOCUMENT;So;0;ON;;;;;N;;;;;
-### <MM> {document} : "🗎" U1F5CE # DOCUMENT
-#- 1F5CF;PAGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <a> <g> <e> : "🗏" U1F5CF # PAGE
-#- 1F5D0;PAGES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <P> <a> <g> <e> <s> : "🗐" U1F5D0 # PAGES
-#- 1F5D1;WASTEBASKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <r> <a> <s> <h> : "🗑" U1F5D1 # WASTEBASKET
-#- 1F5D2;SPIRAL NOTE PAD;So;0;ON;;;;;N;;;;;
-### <MM> {spiral note pad} : "🗒" U1F5D2 # SPIRAL NOTE PAD
-#- 1F5D3;SPIRAL CALENDAR PAD;So;0;ON;;;;;N;;;;;
-### <MM> {spiral calendar pad} : "🗓" U1F5D3 # SPIRAL CALENDAR PAD
-#- 1F5D4;DESKTOP WINDOW;So;0;ON;;;;;N;;;;;
-### <MM> {desktop window} : "🗔" U1F5D4 # DESKTOP WINDOW
-#- 1F5D5;MINIMIZE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <i> <n> <i> <m> <i> <z> : "🗕" U1F5D5 # MINIMIZE
-#- 1F5D6;MAXIMIZE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <a> <x> <i> <m> <i> <z> : "🗖" U1F5D6 # MAXIMIZE
-#- 1F5D7;OVERLAP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <v> <e> <r> <l> <a> <p> : "🗗" U1F5D7 # OVERLAP
-#- 1F5D8;CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS;So;0;ON;;;;;N;;;;;
-### <MM> {clockwise right and left semicircle arrows} : "🗘" U1F5D8 # CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS
-#- 1F5D9;CANCELLATION X;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <X> <o> <u> <t> : "🗙" U1F5D9 # CANCELLATION X
-#- 1F5DA;INCREASE FONT SIZE SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {increase font size symbol} : "🗚" U1F5DA # INCREASE FONT SIZE SYMBOL
-#- 1F5DB;DECREASE FONT SIZE SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {decrease font size symbol} : "🗛" U1F5DB # DECREASE FONT SIZE SYMBOL
-#- 1F5DC;COMPRESSION;So;0;ON;;;;;N;;;;;
-### <MM> {compression} : "🗜" U1F5DC # COMPRESSION
-#- 1F5DD;OLD KEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <l> <d> <k> <e> <y> : "🗝" U1F5DD # OLD KEY
-#- 1F5DE;ROLLED-UP NEWSPAPER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <d> <d> <o> <g> : "🗞" U1F5DE # ROLLED-UP NEWSPAPER
-### <MM> {rolled-up newspaper} : "🗞" U1F5DE # ROLLED-UP NEWSPAPER
-#- 1F5DF;PAGE WITH CIRCLED TEXT;So;0;ON;;;;;N;;;;;
-### <MM> {page with circled text} : "🗟" U1F5DF # PAGE WITH CIRCLED TEXT
-#- 1F5E0;STOCK CHART;So;0;ON;;;;;N;;;;;
-### <MM> {stock chart} : "🗠" U1F5E0 # STOCK CHART
-#- 1F5E1;DAGGER KNIFE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <a> <g> <g> <e> <r> : "🗡" U1F5E1 # DAGGER KNIFE
-#- 1F5E2;LIPS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <i> <p> <s> : "🗢" U1F5E2 # LIPS
-#- 1F5E3;SPEAKING HEAD IN SILHOUETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <l> <k> <e> <r> : "🗣" U1F5E3 # SPEAKING HEAD IN SILHOUETTE
-## Arguably the wrong way around.
-#- 1F5E4;THREE RAYS ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <l> <k> <d> <w> <n> : "🗤" U1F5E4 # THREE RAYS ABOVE
-#- 1F5E5;THREE RAYS BELOW;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <l> <k> <u> <p> : "🗥" U1F5E5 # THREE RAYS BELOW
-#- 1F5E6;THREE RAYS LEFT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <l> <k> <r> <t> : "🗦" U1F5E6 # THREE RAYS LEFT
-#- 1F5E7;THREE RAYS RIGHT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <l> <k> <l> <f> <t> : "🗧" U1F5E7 # THREE RAYS RIGHT
-#- 1F5E8;LEFT SPEECH BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {left speech bubble} : "🗨" U1F5E8 # LEFT SPEECH BUBBLE
-#- 1F5E9;RIGHT SPEECH BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {right speech bubble} : "🗩" U1F5E9 # RIGHT SPEECH BUBBLE
-#- 1F5EA;TWO SPEECH BUBBLES;So;0;ON;;;;;N;;;;;
-### <MM> {two speech bubbles} : "🗪" U1F5EA # TWO SPEECH BUBBLES
-#- 1F5EB;THREE SPEECH BUBBLES;So;0;ON;;;;;N;;;;;
-### <MM> {three speech bubbles} : "🗫" U1F5EB # THREE SPEECH BUBBLES
-#- 1F5EC;LEFT THOUGHT BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {left thought bubble} : "🗬" U1F5EC # LEFT THOUGHT BUBBLE
-#- 1F5ED;RIGHT THOUGHT BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {right thought bubble} : "🗭" U1F5ED # RIGHT THOUGHT BUBBLE
-#- 1F5EE;LEFT ANGER BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {left anger bubble} : "🗮" U1F5EE # LEFT ANGER BUBBLE
-#- 1F5EF;RIGHT ANGER BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {right anger bubble} : "🗯" U1F5EF # RIGHT ANGER BUBBLE
-#- 1F5F0;MOOD BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {mood bubble} : "🗰" U1F5F0 # MOOD BUBBLE
-#- 1F5F1;LIGHTNING MOOD BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {lightning mood bubble} : "🗱" U1F5F1 # LIGHTNING MOOD BUBBLE
-#- 1F5F2;LIGHTNING MOOD;So;0;ON;;;;;N;;;;;
-### <MM> {lightning mood} : "🗲" U1F5F2 # LIGHTNING MOOD
-#- 1F5F3;BALLOT BOX WITH BALLOT;So;0;ON;;;;;N;;;;;
-### <MM> {ballot box with ballot} : "🗳" U1F5F3 # BALLOT BOX WITH BALLOT
-#- 1F5F4;BALLOT SCRIPT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot script x} : "🗴" U1F5F4 # BALLOT SCRIPT X
-#- 1F5F5;BALLOT BOX WITH SCRIPT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot box with script x} : "🗵" U1F5F5 # BALLOT BOX WITH SCRIPT X
-#- 1F5F6;BALLOT BOLD SCRIPT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot bold script x} : "🗶" U1F5F6 # BALLOT BOLD SCRIPT X
-#- 1F5F7;BALLOT BOX WITH BOLD SCRIPT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot box with bold script x} : "🗷" U1F5F7 # BALLOT BOX WITH BOLD SCRIPT X
-#- 1F5F8;LIGHT CHECK MARK;So;0;ON;;;;;N;;;;;
-### <MM> {light check mark} : "🗸" U1F5F8 # LIGHT CHECK MARK
-#- 1F5F9;BALLOT BOX WITH BOLD CHECK;So;0;ON;;;;;N;;;;;
-### <MM> {ballot box with bold check} : "🗹" U1F5F9 # BALLOT BOX WITH BOLD CHECK
-#- 1F5FA;WORLD MAP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <o> <r> <l> <d> : "🗺" U1F5FA # WORLD MAP
-#- 1F5FB;MOUNT FUJI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <u> <j> <i> : "🗻" U1F5FB # MOUNT FUJI
-#- 1F5FC;TOKYO TOWER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <o> <k> <y> <o> : "🗼" U1F5FC # TOKYO TOWER
-#- 1F5FD;STATUE OF LIBERTY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <i> <b> <e> <r> <t> <y> : "🗽" U1F5FD # STATUE OF LIBERTY
-#- 1F5FE;SILHOUETTE OF JAPAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <j> <a> <p> <a> <n> : "🗾" U1F5FE # SILHOUETTE OF JAPAN
-#- 1F5FF;MOYAI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <o> <y> <a> <i> : "🗿" U1F5FF # MOYAI
-#- 1F600;GRINNING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <g> <r> <i> <n> : "😀" U1F600 # GRINNING FACE
-## Extra right paren for smiling eyes? Keys for all these faces will be
-## tough.
-#- 1F601;GRINNING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <parenright> <g> <r> <i> <n> : "😁" U1F601 # GRINNING FACE WITH SMILING EYES
-#- 1F602;FACE WITH TEARS OF JOY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <j> <o> <y> : "😂" U1F602 # FACE WITH TEARS OF JOY
-<Multi_key> <Multi_key> <colon> <apostrophe> <minus> <D> : "😂" U1F602 # FACE WITH TEARS OF JOY
-<Multi_key> <Multi_key> <colon> <comma> <minus> <D> : "😂" U1F602 # FACE WITH TEARS OF JOY
-#- 1F603;SMILING FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <D> : "😃" U1F603 # SMILING FACE WITH OPEN MOUTH
-<Multi_key> <Multi_key> <parenleft> <parenright> <D> <s> <m> <i> <l> : "😃" U1F603 # SMILING FACE WITH OPEN MOUTH
-#- 1F604;SMILING FACE WITH OPEN MOUTH AND SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <semicolon> <minus> <D> : "😄" U1F604 # SMILING FACE WITH OPEN MOUTH AND SMILING EYES
-## Cold sweat is above eyes, tears below?
-#- 1F605;SMILING FACE WITH OPEN MOUTH AND COLD SWEAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <apostrophe> <colon> <minus> <D> : "😅" U1F605 # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
-<Multi_key> <Multi_key> <comma> <colon> <minus> <D> : "😅" U1F605 # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
-#- 1F606;SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <bar> <minus> <D> : "😆" U1F606 # SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
-#- 1F607;SMILING FACE WITH HALO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <O> <colon> <minus> <parenright> : "😇" U1F607 # SMILING FACE WITH HALO
-<Multi_key> <Multi_key> <O> <colon> <parenright> : "😇" U1F607 # SMILING FACE WITH HALO
-#- 1F608;SMILING FACE WITH HORNS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <greater> <colon> <minus> <parenright> : "😈" U1F608 # SMILING FACE WITH HORNS
-#- 1F609;WINKING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <semicolon> <minus> <parenright> : "😉" U1F609 # WINKING FACE
-#- 1F60A;SMILING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <parenright> <s> <m> <i> <l> : "😊" U1F60A # SMILING FACE WITH SMILING EYES
-<Multi_key> <Multi_key> <parenright> <colon> <minus> <parenright> : "😊" U1F60A # SMILING FACE WITH SMILING EYES
-#- 1F60B;FACE SAVOURING DELICIOUS FOOD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <9> : "😋" U1F60B # FACE SAVOURING DELICIOUS FOOD
-<Multi_key> <Multi_key> <colon> <9> : "😋" U1F60B # FACE SAVOURING DELICIOUS FOOD
-#- 1F60C;RELIEVED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <w> <h> <e> <w> : "😌" U1F60C # RELIEVED FACE
-<Multi_key> <Multi_key> <parenleft> <parenright> <r> <e> <l> <i> <e> : "😌" U1F60C # RELIEVED FACE
-#- 1F60D;SMILING FACE WITH HEART-SHAPED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <less> <3> <colon> <minus> <parenright> : "😍" U1F60D # SMILING FACE WITH HEART-SHAPED EYES
-#- 1F60E;SMILING FACE WITH SUNGLASSES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <minus> <parenright> : "😎" U1F60E # SMILING FACE WITH SUNGLASSES
-<Multi_key> <Multi_key> <B> <parenright> : "😎" U1F60E # SMILING FACE WITH SUNGLASSES
-#- 1F60F;SMIRKING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <s> <m> <i> <r> <k> : "😏" U1F60F # SMIRKING FACE
-#- 1F610;NEUTRAL FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <bar> : "😐" U1F610 # NEUTRAL FACE
-#- 1F611;EXPRESSIONLESS FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <bar> <minus> <bar> : "😑" U1F611 # EXPRESSIONLESS FACE
-#- 1F612;UNAMUSED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <exclam> <a> <m> <u> <s> : "😒" U1F612 # UNAMUSED FACE
-#- 1F613;FACE WITH COLD SWEAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <apostrophe> <colon> <minus> <parenright> : "😓" U1F613 # FACE WITH COLD SWEAT
-<Multi_key> <Multi_key> <comma> <colon> <minus> <parenright> : "😓" U1F613 # FACE WITH COLD SWEAT
-#- 1F614;PENSIVE FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <p> <e> <n> <s> <i> : "😔" U1F614 # PENSIVE FACE
-#- 1F615;CONFUSED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <h> <u> <h> <question> : "😕" U1F615 # CONFUSED FACE
-#- 1F616;CONFOUNDED FACE;So;0;ON;;;;;N;;;;;
-### <MM> {confounded face} : "😖" U1F616 # CONFOUNDED FACE
-#- 1F617;KISSING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <k> <i> <s> <s> : "😗" U1F617 # KISSING FACE
-#- 1F618;FACE THROWING A KISS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <minus> <k> <i> <s> <s> : "😘" U1F618 # FACE THROWING A KISS
-#- 1F619;KISSING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <parenright> <k> <i> <s> <s> : "😙" U1F619 # KISSING FACE WITH SMILING EYES
-#- 1F61A;KISSING FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <bar> <k> <i> <s> <s> : "😚" U1F61A # KISSING FACE WITH CLOSED EYES
-#- 1F61B;FACE WITH STUCK-OUT TONGUE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <P> : "😛" U1F61B # FACE WITH STUCK-OUT TONGUE
-#- 1F61C;FACE WITH STUCK-OUT TONGUE AND WINKING EYE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <semicolon> <minus> <P> : "😜" U1F61C # FACE WITH STUCK-OUT TONGUE AND WINKING EYE
-#- 1F61D;FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <bar> <minus> <P> : "😝" U1F61D # FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES
-#- 1F61E;DISAPPOINTED FACE;So;0;ON;;;;;N;;;;;
-### <MM> {()disap} : "😞" U1F61E # DISAPPOINTED FACE
-#- 1F61F;WORRIED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <w> <o> <r> <r> <i> : "😟" U1F61F # WORRIED FACE
-<Multi_key> <Multi_key> <parenleft> <parenright> <w> <o> <r> <r> <y> : "😟" U1F61F # WORRIED FACE
-#- 1F620;ANGRY FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <a> <n> <g> <r> <y> : "😠" U1F620 # ANGRY FACE
-#- 1F621;POUTING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <p> <o> <u> <t> : "😡" U1F621 # POUTING FACE
-#- 1F622;CRYING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <c> <r> <y> : "😢" U1F622 # CRYING FACE
-#- 1F623;PERSEVERING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <p> <e> <r> <s> <e> : "😣" U1F623 # PERSEVERING FACE
-#- 1F624;FACE WITH LOOK OF TRIUMPH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <t> <r> <i> <u> <m> : "😤" U1F624 # FACE WITH LOOK OF TRIUMPH
-<Multi_key> <Multi_key> <parenleft> <parenright> <w> <i> <n> : "😤" U1F624 # FACE WITH LOOK OF TRIUMPH
-#- 1F625;DISAPPOINTED BUT RELIEVED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <o> <w> <e> <l> <l> : "😥" U1F625 # DISAPPOINTED BUT RELIEVED FACE
-<Multi_key> <Multi_key> <parenleft> <parenright> <o> <h> <w> <e> <l> : "😥" U1F625 # DISAPPOINTED BUT RELIEVED FACE
-#- 1F626;FROWNING FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <D> <minus> <colon> : "😦" U1F626 # FROWNING FACE WITH OPEN MOUTH
-#- 1F627;ANGUISHED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <a> <n> <g> <u> <i> : "😧" U1F627 # ANGUISHED FACE
-#- 1F628;FEARFUL FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <f> <e> <a> <r> <f> : "😨" U1F628 # FEARFUL FACE
-#- 1F629;WEARY FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <w> <e> <a> <r> <y> : "😩" U1F629 # WEARY FACE
-#- 1F62A;SLEEPY FACE;So;0;ON;;;;;N;;;;;
-### <MM> {sleepy face} : "😪" U1F62A # SLEEPY FACE
-#- 1F62B;TIRED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <t> <i> <r> <e> <d> : "😫" U1F62B # TIRED FACE
-#- 1F62C;GRIMACING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <g> <r> <i> <m> <a> : "😬" U1F62C # GRIMACING FACE
-#- 1F62D;LOUDLY CRYING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <l> <o> <u> <d> : "😭" U1F62D # LOUDLY CRYING FACE
-#- 1F62E;FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <O> : "😮" U1F62E # FACE WITH OPEN MOUTH
-#- 1F62F;HUSHED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <h> <u> <s> <h> : "😯" U1F62F # HUSHED FACE
-#- 1F630;FACE WITH OPEN MOUTH AND COLD SWEAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <comma> <colon> <minus> <O> : "😰" U1F630 # FACE WITH OPEN MOUTH AND COLD SWEAT
-<Multi_key> <Multi_key> <apostrophe> <colon> <minus> <O> : "😰" U1F630 # FACE WITH OPEN MOUTH AND COLD SWEAT
-#- 1F631;FACE SCREAMING IN FEAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <s> <c> <r> <e> <a> : "😱" U1F631 # FACE SCREAMING IN FEAR
-#- 1F632;ASTONISHED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <a> <s> <t> <o> <n> : "😲" U1F632 # ASTONISHED FACE
-#- 1F633;FLUSHED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <b> <l> <u> <s> <h> : "😳" U1F633 # FLUSHED FACE
-<Multi_key> <Multi_key> <parenleft> <parenright> <f> <l> <u> <s> <h> : "😳" U1F633 # FLUSHED FACE
-#- 1F634;SLEEPING FACE;So;0;ON;;;;;N;;;;;
-### <MM> {sleeping face} : "😴" U1F634 # SLEEPING FACE
-#- 1F635;DIZZY FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <d> <i> <z> <z> <y> : "😵" U1F635 # DIZZY FACE
-#- 1F636;FACE WITHOUT MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <space> : "😶" U1F636 # FACE WITHOUT MOUTH
-#- 1F637;FACE WITH MEDICAL MASK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <m> <a> <s> <k> : "😷" U1F637 # FACE WITH MEDICAL MASK
-<Multi_key> <Multi_key> <colon> <minus> <bracketleft> <bracketright> : "😷" U1F637 # FACE WITH MEDICAL MASK
-## Cat faces now?? Um. ] for ears?
-#- 1F638;GRINNING CAT FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <parenright> <bracketright> <g> <r> <i> : "😸" U1F638 # GRINNING CAT FACE WITH SMILING EYES
-#- 1F639;CAT FACE WITH TEARS OF JOY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <bracketright> <j> <o> <y> : "😹" U1F639 # CAT FACE WITH TEARS OF JOY
-<Multi_key> <Multi_key> <bracketright> <colon> <comma> <minus> <parenright> : "😹" U1F639 # CAT FACE WITH TEARS OF JOY
-#- 1F63A;SMILING CAT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <bracketright> <colon> <minus> <D> : "😺" U1F63A # SMILING CAT FACE WITH OPEN MOUTH
-#- 1F63B;SMILING CAT FACE WITH HEART-SHAPED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <less> <3> <bracketright> <colon> <minus> <parenright> : "😻" U1F63B # SMILING CAT FACE WITH HEART-SHAPED EYES
-#- 1F63C;CAT FACE WITH WRY SMILE;So;0;ON;;;;;N;;;;;
-### <MM> {cat face with wry smile} : "😼" U1F63C # CAT FACE WITH WRY SMILE
-#- 1F63D;KISSING CAT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
-### <MM> {kissing cat face with closed eyes} : "😽" U1F63D # KISSING CAT FACE WITH CLOSED EYES
-#- 1F63E;POUTING CAT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <bracketright> <p> <o> <u> <t> : "😾" U1F63E # POUTING CAT FACE
-#- 1F63F;CRYING CAT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <bracketright> <c> <r> <y> : "😿" U1F63F # CRYING CAT FACE
-#- 1F640;WEARY CAT FACE;So;0;ON;;;;;N;;;;;
-### <MM> {weary cat face} : "🙀" U1F640 # WEARY CAT FACE
-## Doing /2 at the end would have led to prefix problems.
-#- 1F641;SLIGHTLY FROWNING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <period> <5> <colon> <minus> <parenleft> : "🙁" U1F641 # SLIGHTLY FROWNING FACE
-#- 1F642;SLIGHTLY SMILING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <period> <5> <colon> <minus> <parenright> : "🙂" U1F642 # SLIGHTLY SMILING FACE
-#- 1F643;UPSIDE-DOWN FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <minus> <colon> : "🙃" U1F643 # UPSIDE-DOWN FACE
-#- 1F644;FACE WITH ROLLING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <8> <minus> <parenright> : "🙄" U1F644 # FACE WITH ROLLING EYES
-#- 1F645;FACE WITH NO GOOD GESTURE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <N> <G> : "🙅" U1F645 # FACE WITH NO GOOD GESTURE
-<Multi_key> <Multi_key> <parenleft> <parenright> <exclam> <g> <o> <o> <d> : "🙅" U1F645 # FACE WITH NO GOOD GESTURE
-#- 1F646;FACE WITH OK GESTURE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <O> <K> : "🙆" U1F646 # FACE WITH OK GESTURE
-#- 1F647;PERSON BOWING DEEPLY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <o> <w> <i> <n> <g> : "🙇" U1F647 # PERSON BOWING DEEPLY
-<Multi_key> <Multi_key> <b> <o> <w> <e> <r> : "🙇" U1F647 # PERSON BOWING DEEPLY
-#- 1F648;SEE-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <s> <e> <e> : "🙈" U1F648 # SEE-NO-EVIL MONKEY
-#- 1F649;HEAR-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <h> <e> <a> <r> : "🙉" U1F649 # HEAR-NO-EVIL MONKEY
-#- 1F64A;SPEAK-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <s> <p> <e> <a> <k> : "🙊" U1F64A # SPEAK-NO-EVIL MONKEY
-#- 1F64B;HAPPY PERSON RAISING ONE HAND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <slash> : "🙋" U1F64B # HAPPY PERSON RAISING ONE HAND
-#- 1F64C;PERSON RAISING BOTH HANDS IN CELEBRATION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <backslash> <o> <slash> : "🙌" U1F64C # PERSON RAISING BOTH HANDS IN CELEBRATION
-#- 1F64D;PERSON FROWNING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <r> <o> <w> <n> <e> <r> : "🙍" U1F64D # PERSON FROWNING
-#- 1F64E;PERSON WITH POUTING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <o> <u> <t> <e> <r> : "🙎" U1F64E # PERSON WITH POUTING FACE
-#- 1F64F;PERSON WITH FOLDED HANDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <l> <e> <a> <d> : "🙏" U1F64F # PERSON WITH FOLDED HANDS
-<Multi_key> <Multi_key> <p> <l> <e> <a> <s> <e> : "🙏" U1F64F # PERSON WITH FOLDED HANDS
-#- 1F650;NORTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {north west pointing leaf} : "🙐" U1F650 # NORTH WEST POINTING LEAF
-#- 1F651;SOUTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {south west pointing leaf} : "🙑" U1F651 # SOUTH WEST POINTING LEAF
-#- 1F652;NORTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {north east pointing leaf} : "🙒" U1F652 # NORTH EAST POINTING LEAF
-#- 1F653;SOUTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {south east pointing leaf} : "🙓" U1F653 # SOUTH EAST POINTING LEAF
-#- 1F654;TURNED NORTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {turned north west pointing leaf} : "🙔" U1F654 # TURNED NORTH WEST POINTING LEAF
-#- 1F655;TURNED SOUTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {turned south west pointing leaf} : "🙕" U1F655 # TURNED SOUTH WEST POINTING LEAF
-#- 1F656;TURNED NORTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {turned north east pointing leaf} : "🙖" U1F656 # TURNED NORTH EAST POINTING LEAF
-#- 1F657;TURNED SOUTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {turned south east pointing leaf} : "🙗" U1F657 # TURNED SOUTH EAST POINTING LEAF
-#- 1F658;NORTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {north west pointing vine leaf} : "🙘" U1F658 # NORTH WEST POINTING VINE LEAF
-#- 1F659;SOUTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {south west pointing vine leaf} : "🙙" U1F659 # SOUTH WEST POINTING VINE LEAF
-#- 1F65A;NORTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {north east pointing vine leaf} : "🙚" U1F65A # NORTH EAST POINTING VINE LEAF
-#- 1F65B;SOUTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {south east pointing vine leaf} : "🙛" U1F65B # SOUTH EAST POINTING VINE LEAF
-#- 1F65C;HEAVY NORTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {heavy north west pointing vine leaf} : "🙜" U1F65C # HEAVY NORTH WEST POINTING VINE LEAF
-#- 1F65D;HEAVY SOUTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {heavy south west pointing vine leaf} : "🙝" U1F65D # HEAVY SOUTH WEST POINTING VINE LEAF
-#- 1F65E;HEAVY NORTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {heavy north east pointing vine leaf} : "🙞" U1F65E # HEAVY NORTH EAST POINTING VINE LEAF
-#- 1F65F;HEAVY SOUTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {heavy south east pointing vine leaf} : "🙟" U1F65F # HEAVY SOUTH EAST POINTING VINE LEAF
-#- 1F660;NORTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {north west pointing bud} : "🙠" U1F660 # NORTH WEST POINTING BUD
-#- 1F661;SOUTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {south west pointing bud} : "🙡" U1F661 # SOUTH WEST POINTING BUD
-#- 1F662;NORTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {north east pointing bud} : "🙢" U1F662 # NORTH EAST POINTING BUD
-#- 1F663;SOUTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {south east pointing bud} : "🙣" U1F663 # SOUTH EAST POINTING BUD
-#- 1F664;HEAVY NORTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {heavy north west pointing bud} : "🙤" U1F664 # HEAVY NORTH WEST POINTING BUD
-#- 1F665;HEAVY SOUTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {heavy south west pointing bud} : "🙥" U1F665 # HEAVY SOUTH WEST POINTING BUD
-#- 1F666;HEAVY NORTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {heavy north east pointing bud} : "🙦" U1F666 # HEAVY NORTH EAST POINTING BUD
-#- 1F667;HEAVY SOUTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {heavy south east pointing bud} : "🙧" U1F667 # HEAVY SOUTH EAST POINTING BUD
-#- 1F668;HOLLOW QUILT SQUARE ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {hollow quilt square ornament} : "🙨" U1F668 # HOLLOW QUILT SQUARE ORNAMENT
-#- 1F669;HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {hollow quilt square ornament in black square} : "🙩" U1F669 # HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE
-#- 1F66A;SOLID QUILT SQUARE ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {solid quilt square ornament} : "🙪" U1F66A # SOLID QUILT SQUARE ORNAMENT
-#- 1F66B;SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {solid quilt square ornament in black square} : "🙫" U1F66B # SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE
-#- 1F66C;LEFTWARDS ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <o> <c> <k> <e> <t> <less> : "🙬" U1F66C # LEFTWARDS ROCKET
-#- 1F66D;UPWARDS ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <o> <c> <k> <e> <t> <asciicircum> : "🙭" U1F66D # UPWARDS ROCKET
-#- 1F66E;RIGHTWARDS ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <o> <c> <k> <e> <t> <greater> : "🙮" U1F66E # RIGHTWARDS ROCKET
-#- 1F66F;DOWNWARDS ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <o> <c> <k> <e> <t> <v> : "🙯" U1F66F # DOWNWARDS ROCKET
-#- 1F670;SCRIPT LIGATURE ET ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {script ligature et ornament} : "🙰" U1F670 # SCRIPT LIGATURE ET ORNAMENT
-#- 1F671;HEAVY SCRIPT LIGATURE ET ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy script ligature et ornament} : "🙱" U1F671 # HEAVY SCRIPT LIGATURE ET ORNAMENT
-#- 1F672;LIGATURE OPEN ET ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {ligature open et ornament} : "🙲" U1F672 # LIGATURE OPEN ET ORNAMENT
-#- 1F673;HEAVY LIGATURE OPEN ET ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy ligature open et ornament} : "🙳" U1F673 # HEAVY LIGATURE OPEN ET ORNAMENT
-#- 1F674;HEAVY AMPERSAND ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy ampersand ornament} : "🙴" U1F674 # HEAVY AMPERSAND ORNAMENT
-#- 1F675;SWASH AMPERSAND ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {swash ampersand ornament} : "🙵" U1F675 # SWASH AMPERSAND ORNAMENT
-#- 1F676;SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {sans-serif heavy double turned comma quotation mark ornament} : "🙶" U1F676 # SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-#- 1F677;SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {sans-serif heavy double comma quotation mark ornament} : "🙷" U1F677 # SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-#- 1F678;SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {sans-serif heavy low double comma quotation mark ornament} : "🙸" U1F678 # SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
-#- 1F679;HEAVY INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy interrobang ornament} : "🙹" U1F679 # HEAVY INTERROBANG ORNAMENT
-#- 1F67A;SANS-SERIF INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {sans-serif interrobang ornament} : "🙺" U1F67A # SANS-SERIF INTERROBANG ORNAMENT
-#- 1F67B;HEAVY SANS-SERIF INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy sans-serif interrobang ornament} : "🙻" U1F67B # HEAVY SANS-SERIF INTERROBANG ORNAMENT
-#- 1F67C;VERY HEAVY SOLIDUS;So;0;ON;;;;;N;;;;;
-### <MM> {very heavy solidus} : "🙼" U1F67C # VERY HEAVY SOLIDUS
-#- 1F67D;VERY HEAVY REVERSE SOLIDUS;So;0;ON;;;;;N;;;;;
-### <MM> {very heavy reverse solidus} : "🙽" U1F67D # VERY HEAVY REVERSE SOLIDUS
-#- 1F67E;CHECKER BOARD;So;0;ON;;;;;N;;;;;
-### <MM> {checker board} : "🙾" U1F67E # CHECKER BOARD
-#- 1F67F;REVERSE CHECKER BOARD;So;0;ON;;;;;N;;;;;
-### <MM> {reverse checker board} : "🙿" U1F67F # REVERSE CHECKER BOARD
-#- 1F680;ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <o> <c> <k> <e> <t> : "🚀" U1F680 # ROCKET
-#- 1F681;HELICOPTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <p> <t> <e> <r> : "🚁" U1F681 # HELICOPTER
-#- 1F682;STEAM LOCOMOTIVE;So;0;ON;;;;;N;;;;;
-### <MM> {steam locomotive} : "🚂" U1F682 # STEAM LOCOMOTIVE
-#- 1F683;RAILWAY CAR;So;0;ON;;;;;N;;;;;
-### <MM> {railway car} : "🚃" U1F683 # RAILWAY CAR
-#- 1F684;HIGH-SPEED TRAIN;So;0;ON;;;;;N;;;;;
-### <MM> {high-speed train} : "🚄" U1F684 # HIGH-SPEED TRAIN
-#- 1F685;HIGH-SPEED TRAIN WITH BULLET NOSE;So;0;ON;;;;;N;;;;;
-### <MM> {high-speed train with bullet nose} : "🚅" U1F685 # HIGH-SPEED TRAIN WITH BULLET NOSE
-#- 1F686;TRAIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <r> <a> <i> <n> : "🚆" U1F686 # TRAIN
-#- 1F687;METRO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <e> <t> <r> <o> : "🚇" U1F687 # METRO
-#- 1F688;LIGHT RAIL;So;0;ON;;;;;N;;;;;
-### <MM> {light rail} : "🚈" U1F688 # LIGHT RAIL
-#- 1F689;STATION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <t> <a> <t> <i> <o> <n> : "🚉" U1F689 # STATION
-#- 1F68A;TRAM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <r> <a> <m> : "🚊" U1F68A # TRAM
-#- 1F68B;TRAM CAR;So;0;ON;;;;;N;;;;;
-### <MM> {tram car} : "🚋" U1F68B # TRAM CAR
-#- 1F68C;BUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <u> <s> : "🚌" U1F68C # BUS
-#- 1F68D;ONCOMING BUS;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming bus} : "🚍" U1F68D # ONCOMING BUS
-#- 1F68E;TROLLEYBUS;So;0;ON;;;;;N;;;;;
-### <MM> {trolleybus} : "🚎" U1F68E # TROLLEYBUS
-#- 1F68F;BUS STOP;So;0;ON;;;;;N;;;;;
-### <MM> {bus stop} : "🚏" U1F68F # BUS STOP
-#- 1F690;MINIBUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <i> <n> <i> <b> <u> <s> : "🚐" U1F690 # MINIBUS
-#- 1F691;AMBULANCE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <m> <b> <u> <l> <a> <n> : "🚑" U1F691 # AMBULANCE
-#- 1F692;FIRE ENGINE;So;0;ON;;;;;N;;;;;
-### <MM> {fire engine} : "🚒" U1F692 # FIRE ENGINE
-#- 1F693;POLICE CAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <p> <c> <a> <r> : "🚓" U1F693 # POLICE CAR
-#- 1F694;ONCOMING POLICE CAR;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming police car} : "🚔" U1F694 # ONCOMING POLICE CAR
-#- 1F695;TAXI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <x> <i> : "🚕" U1F695 # TAXI
-#- 1F696;ONCOMING TAXI;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming taxi} : "🚖" U1F696 # ONCOMING TAXI
-#- 1F697;AUTOMOBILE;So;0;ON;;;;;N;;;;;
-### <MM> {automobile} : "🚗" U1F697 # AUTOMOBILE
-#- 1F698;ONCOMING AUTOMOBILE;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming automobile} : "🚘" U1F698 # ONCOMING AUTOMOBILE
-#- 1F699;RECREATIONAL VEHICLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <V> : "🚙" U1F699 # RECREATIONAL VEHICLE
-#- 1F69A;DELIVERY TRUCK;So;0;ON;;;;;N;;;;;
-### <MM> {delivery truck} : "🚚" U1F69A # DELIVERY TRUCK
-#- 1F69B;ARTICULATED LORRY;So;0;ON;;;;;N;;;;;
-### <MM> {articulated lorry} : "🚛" U1F69B # ARTICULATED LORRY
-#- 1F69C;TRACTOR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <r> <a> <c> <t> <o> <r> : "🚜" U1F69C # TRACTOR
-#- 1F69D;MONORAIL;So;0;ON;;;;;N;;;;;
-### <MM> {monorail} : "🚝" U1F69D # MONORAIL
-#- 1F69E;MOUNTAIN RAILWAY;So;0;ON;;;;;N;;;;;
-### <MM> {mountain railway} : "🚞" U1F69E # MOUNTAIN RAILWAY
-#- 1F69F;SUSPENSION RAILWAY;So;0;ON;;;;;N;;;;;
-### <MM> {suspension railway} : "🚟" U1F69F # SUSPENSION RAILWAY
-#- 1F6A0;MOUNTAIN CABLEWAY;So;0;ON;;;;;N;;;;;
-### <MM> {mountain cableway} : "🚠" U1F6A0 # MOUNTAIN CABLEWAY
-#- 1F6A1;AERIAL TRAMWAY;So;0;ON;;;;;N;;;;;
-### <MM> {aerial tramway} : "🚡" U1F6A1 # AERIAL TRAMWAY
-#- 1F6A2;SHIP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <i> <p> : "🚢" U1F6A2 # SHIP
-#- 1F6A3;ROWBOAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <o> <w> <b> <o> <a> <t> : "🚣" U1F6A3 # ROWBOAT
-#- 1F6A4;SPEEDBOAT;So;0;ON;;;;;N;;;;;
-### <MM> {speedboat} : "🚤" U1F6A4 # SPEEDBOAT
-#- 1F6A5;HORIZONTAL TRAFFIC LIGHT;So;0;ON;;;;;N;;;;;
-### <MM> {horizontal traffic light} : "🚥" U1F6A5 # HORIZONTAL TRAFFIC LIGHT
-#- 1F6A6;VERTICAL TRAFFIC LIGHT;So;0;ON;;;;;N;;;;;
-### <MM> {vertical traffic light} : "🚦" U1F6A6 # VERTICAL TRAFFIC LIGHT
-#- 1F6A7;CONSTRUCTION SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {construction sign} : "🚧" U1F6A7 # CONSTRUCTION SIGN
-#- 1F6A8;POLICE CARS REVOLVING LIGHT;So;0;ON;;;;;N;;;;;
-### <MM> {police cars revolving light} : "🚨" U1F6A8 # POLICE CARS REVOLVING LIGHT
-#- 1F6A9;TRIANGULAR FLAG ON POST;So;0;ON;;;;;N;;;;;
-### <MM> {triangular flag on post} : "🚩" U1F6A9 # TRIANGULAR FLAG ON POST
-#- 1F6AA;DOOR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <o> <o> <r> : "🚪" U1F6AA # DOOR
-#- 1F6AB;NO ENTRY SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {no entry sign} : "🚫" U1F6AB # NO ENTRY SIGN
-#- 1F6AC;SMOKING SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <m> <o> <k> <e> : "🚬" U1F6AC # SMOKING SYMBOL
-#- 1F6AD;NO SMOKING SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <n> <o> <s> <m> <o> <k> <e> : "🚭" U1F6AD # NO SMOKING SYMBOL
-<Multi_key> <Multi_key> <exclam> <s> <m> <o> <k> <e> : "🚭" U1F6AD # NO SMOKING SYMBOL
-## Capitalize to avoid conflicts
-#- 1F6AE;PUT LITTER IN ITS PLACE SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <I> <n> <T> <r> <a> <s> <h> : "🚮" U1F6AE # PUT LITTER IN ITS PLACE SYMBOL
-#- 1F6AF;DO NOT LITTER SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <l> <i> <t> <t> <e> <r> : "🚯" U1F6AF # DO NOT LITTER SYMBOL
-#- 1F6B0;POTABLE WATER SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <r> <i> <n> <k> : "🚰" U1F6B0 # POTABLE WATER SYMBOL
-#- 1F6B1;NON-POTABLE WATER SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <n> <o> <d> <r> <i> <n> <k> : "🚱" U1F6B1 # NON-POTABLE WATER SYMBOL
-<Multi_key> <Multi_key> <exclam> <d> <r> <i> <n> <k> : "🚱" U1F6B1 # NON-POTABLE WATER SYMBOL
-#- 1F6B2;BICYCLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <i> <c> <y> <c> <l> <e> : "🚲" U1F6B2 # BICYCLE
-#- 1F6B3;NO BICYCLES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <b> <i> <c> <y> <c> <l> : "🚳" U1F6B3 # NO BICYCLES
-#- 1F6B4;BICYCLIST;So;0;ON;;;;;N;;;;;
-### <MM> {bicyclist} : "🚴" U1F6B4 # BICYCLIST
-#- 1F6B5;MOUNTAIN BICYCLIST;So;0;ON;;;;;N;;;;;
-### <MM> {mountain bicyclist} : "🚵" U1F6B5 # MOUNTAIN BICYCLIST
-#- 1F6B6;PEDESTRIAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <a> <l> <k> <e> <r> : "🚶" U1F6B6 # PEDESTRIAN
-#- 1F6B7;NO PEDESTRIANS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <exclam> <w> <a> <l> <k> <e> <r> : "🚷" U1F6B7 # NO PEDESTRIANS
-#- 1F6B8;CHILDREN CROSSING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <k> <i> <d> <s> <X> : "🚸" U1F6B8 # CHILDREN CROSSING
-<Multi_key> <Multi_key> <k> <i> <d> <x> <i> <n> <g> : "🚸" U1F6B8 # CHILDREN CROSSING
-#- 1F6B9;MENS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <m> <e> <n> <s> : "🚹" U1F6B9 # MENS SYMBOL
-#- 1F6BA;WOMENS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <w> <o> <m> <e> <n> <s> : "🚺" U1F6BA # WOMENS SYMBOL
-<Multi_key> <Multi_key> <l> <a> <d> <i> <e> <s> : "🚺" U1F6BA # WOMENS SYMBOL
-#- 1F6BB;RESTROOM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <e> <s> <t> <r> <m> : "🚻" U1F6BB # RESTROOM
-<Multi_key> <Multi_key> <l> <o> <o> : "🚻" U1F6BB # RESTROOM
-#- 1F6BC;BABY SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {baby symbol} : "🚼" U1F6BC # BABY SYMBOL
-#- 1F6BD;TOILET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <o> <i> <l> <e> <t> : "🚽" U1F6BD # TOILET
-#- 1F6BE;WATER CLOSET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <W> <C> : "🚾" U1F6BE # WATER CLOSET
-#- 1F6BF;SHOWER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <o> <w> <e> <r> : "🚿" U1F6BF # SHOWER
-#- 1F6C0;BATH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <t> <h> : "🛀" U1F6C0 # BATH
-#- 1F6C1;BATHTUB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <a> <t> <h> <t> <u> <b> : "🛁" U1F6C1 # BATHTUB
-#- 1F6C2;PASSPORT CONTROL;So;0;ON;;;;;N;;;;;
-### <MM> {passport control} : "🛂" U1F6C2 # PASSPORT CONTROL
-#- 1F6C3;CUSTOMS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <u> <s> <t> <o> <m> <s> : "🛃" U1F6C3 # CUSTOMS
-#- 1F6C4;BAGGAGE CLAIM;So;0;ON;;;;;N;;;;;
-### <MM> {baggage claim} : "🛄" U1F6C4 # BAGGAGE CLAIM
-#- 1F6C5;LEFT LUGGAGE;So;0;ON;;;;;N;;;;;
-### <MM> {left luggage} : "🛅" U1F6C5 # LEFT LUGGAGE
-#- 1F6C6;TRIANGLE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
-### <MM> {triangle with rounded corners} : "🛆" U1F6C6 # TRIANGLE WITH ROUNDED CORNERS
-#- 1F6C7;PROHIBITED SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <n> <o> <w> <a> <y> : "🛇" U1F6C7 # PROHIBITED SIGN
-#- 1F6C8;CIRCLED INFORMATION SOURCE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <i> <n> <f> <o> <parenright> : "🛈" U1F6C8 # CIRCLED INFORMATION SOURCE
-## careful for conflicts with {boy} and {girl}
-#- 1F6C9;BOYS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <O> <Y> <S> : "🛉" U1F6C9 # BOYS SYMBOL
-#- 1F6CA;GIRLS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <G> <I> <R> <L> <S> : "🛊" U1F6CA # GIRLS SYMBOL
-#- 1F6CB;COUCH AND LAMP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <o> <u> <c> <h> : "🛋" U1F6CB # COUCH AND LAMP
-#- 1F6CC;SLEEPING ACCOMMODATION;So;0;ON;;;;;N;;;;;
-### <MM> {sleeping accommodation} : "🛌" U1F6CC # SLEEPING ACCOMMODATION
-#- 1F6CD;SHOPPING BAGS;So;0;ON;;;;;N;;;;;
-### <MM> {shopping bags} : "🛍" U1F6CD # SHOPPING BAGS
-#- 1F6CE;BELLHOP BELL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <B> <e> <l> <l> <b> <o> <y> : "🛎" U1F6CE # BELLHOP BELL
-<Multi_key> <Multi_key> <B> <e> <l> <l> <h> <o> <p> : "🛎" U1F6CE # BELLHOP BELL
-#- 1F6CF;BED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <e> <d> : "🛏" U1F6CF # BED
-#- 1F6D0;PLACE OF WORSHIP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <r> <i> <n> <e> : "🛐" U1F6D0 # PLACE OF WORSHIP
-#- 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <o> <o> <l> <s> : "🛠" U1F6E0 # HAMMER AND WRENCH
-#- 1F6E1;SHIELD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <i> <e> <l> <d> : "🛡" U1F6E1 # SHIELD
-#- 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <i> <l> <d> <r> <u> <m> : "🛢" U1F6E2 # OIL DRUM
-#- 1F6E3;MOTORWAY;So;0;ON;;;;;N;;;;;
-### <MM> {motorway} : "🛣" U1F6E3 # MOTORWAY
-#- 1F6E4;RAILWAY TRACK;So;0;ON;;;;;N;;;;;
-### <MM> {railway track} : "🛤" U1F6E4 # RAILWAY TRACK
-#- 1F6E5;MOTOR BOAT;So;0;ON;;;;;N;;;;;
-### <MM> {motor boat} : "🛥" U1F6E5 # MOTOR BOAT
-#- 1F6E6;UP-POINTING MILITARY AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing military airplane} : "🛦" U1F6E6 # UP-POINTING MILITARY AIRPLANE
-#- 1F6E7;UP-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing airplane} : "🛧" U1F6E7 # UP-POINTING AIRPLANE
-#- 1F6E8;UP-POINTING SMALL AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing small airplane} : "🛨" U1F6E8 # UP-POINTING SMALL AIRPLANE
-#- 1F6E9;SMALL AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {small airplane} : "🛩" U1F6E9 # SMALL AIRPLANE
-#- 1F6EA;NORTHEAST-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {northeast-pointing airplane} : "🛪" U1F6EA # NORTHEAST-POINTING AIRPLANE
-#- 1F6EB;AIRPLANE DEPARTURE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <a> <k> <e> <o> <f> <f> : "🛫" U1F6EB # AIRPLANE DEPARTURE
-#- 1F6EC;AIRPLANE ARRIVING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <a> <n> <d> <i> <n> <g> : "🛬" U1F6EC # AIRPLANE ARRIVING
-#- 1F6F0;SATELLITE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <u> <t> <n> <i> <k> : "🛰" U1F6F0 # SATELLITE
-#- 1F6F1;ONCOMING FIRE ENGINE;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming fire engine} : "🛱" U1F6F1 # ONCOMING FIRE ENGINE
-#- 1F6F2;DIESEL LOCOMOTIVE;So;0;ON;;;;;N;;;;;
-### <MM> {diesel locomotive} : "🛲" U1F6F2 # DIESEL LOCOMOTIVE
-#- 1F6F3;PASSENGER SHIP;So;0;ON;;;;;N;;;;;
-### <MM> {passenger ship} : "🛳" U1F6F3 # PASSENGER SHIP
-#- 1F910;ZIPPER-MOUTH FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <numbersign> : "🤐" U1F910 # ZIPPER-MOUTH FACE
-<Multi_key> <Multi_key> <colon> <minus> <plus> : "🤐" U1F910 # ZIPPER-MOUTH FACE
-<Multi_key> <Multi_key> <parenleft> <parenright> <z> <i> <p> : "🤐" U1F910 # ZIPPER-MOUTH FACE
-#- 1F911;MONEY-MOUTH FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <colon> <minus> <dollar> : "🤑" U1F911 # MONEY-MOUTH FACE
-#- 1F912;FACE WITH THERMOMETER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <t> <h> <e> <r> <m> : "🤒" U1F912 # FACE WITH THERMOMETER
-#- 1F913;NERD FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <n> <e> <r> <d> : "🤓" U1F913 # NERD FACE
-#- 1F914;THINKING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <t> <h> <i> <n> <k> : "🤔" U1F914 # THINKING FACE
-#- 1F915;FACE WITH HEAD-BANDAGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <b> <a> <n> <d> : "🤕" U1F915 # FACE WITH HEAD-BANDAGE
-<Multi_key> <Multi_key> <at> <colon> <minus> <parenright> : "🤕" U1F915 # FACE WITH HEAD-BANDAGE
-#- 1F916;ROBOT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <r> <o> <b> <o> <t> : "🤖" U1F916 # ROBOT FACE
-<Multi_key> <Multi_key> <colon> <minus> <bracketright> : "🤖" U1F916 # ROBOT FACE
-#- 1F917;HUGGING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <h> <u> <g> : "🤗" U1F917 # HUGGING FACE
-#- 1F918;SIGN OF THE HORNS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <o> <c> <k> <o> <n> : "🤘" U1F918 # SIGN OF THE HORNS
-#- 1F980;CRAB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <r> <a> <b> : "🦀" U1F980 # CRAB
-#- 1F981;LION FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <l> <i> <o> <n> : "🦁" U1F981 # LION FACE
-#- 1F982;SCORPION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <S> <c> <o> <r> <p> <i> <o> : "🦂" U1F982 # SCORPION
-#- 1F983;TURKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <u> <r> <k> <e> <y> : "🦃" U1F983 # TURKEY
-#- 1F984;UNICORN FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <1> <h> <o> <r> <n> : "🦄" U1F984 # UNICORN FACE
-<Multi_key> <Multi_key> <parenleft> <parenright> <u> <n> <i> <c> <o> : "🦄" U1F984 # UNICORN FACE
-#- 1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <h> <e> <e> <s> <e> : "🧀" U1F9C0 # CHEESE WEDGE
-#- 1F919;CALL ME HAND;So;0;ON;;;;;N;;;;;
-## Unicode 9.0 additions
-<Multi_key> <Multi_key> <c> <a> <l> <l> <m> <e> : "🤙" U1F919 # CALL ME HAND
-#- 1F91A;RAISED BACK OF HAND;So;0;ON;;;;;N;;;;;
-### <MM> {raised back of hand} : "🤚" U1F91A # RAISED BACK OF HAND
-#- 1F91B;LEFT-FACING FIST;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <L> <f> <i> <s> <t> : "🤛" U1F91B # LEFT-FACING FIST
-#- 1F91C;RIGHT-FACING FIST;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <f> <i> <s> <t> : "🤜" U1F91C # RIGHT-FACING FIST
-#- 1F91D;HANDSHAKE;So;0;ON;;;;;N;;;;;
-### <MM> {handshak} : "🤝" U1F91D # HANDSHAKE
-#- 1F91E;HAND WITH INDEX AND MIDDLE FINGERS CROSSED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <i> <n> <g> <e> <r> <X> : "🤞" U1F91E # HAND WITH INDEX AND MIDDLE FINGERS CROSSED
-#- 1F920;FACE WITH COWBOY HAT;So;0;ON;;;;;N;;;;;
-### <MM> {face with cowboy hat} : "🤠" U1F920 # FACE WITH COWBOY HAT
-#- 1F921;CLOWN FACE;So;0;ON;;;;;N;;;;;
-### <MM> {clown face} : "🤡" U1F921 # CLOWN FACE
-#- 1F922;NAUSEATED FACE;So;0;ON;;;;;N;;;;;
-### <MM> {nauseated face} : "🤢" U1F922 # NAUSEATED FACE
-#- 1F923;ROLLING ON THE FLOOR LAUGHING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <R> <O> <F> <L> : "🤣" U1F923 # ROLLING ON THE FLOOR LAUGHING
-#- 1F924;DROOLING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <d> <r> <o> <o> <l> : "🤤" U1F924 # DROOLING FACE
-#- 1F925;LYING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <l> <y> <i> <n> <g> : "🤥" U1F925 # LYING FACE
-#- 1F926;FACE PALM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <p> <a> <l> <m> : "🤦" U1F926 # FACE PALM
-<Multi_key> <Multi_key> <D> <apostrophe> <o> <h> : "🤦" U1F926 # FACE PALM
-#- 1F927;SNEEZING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <parenleft> <parenright> <s> <n> <e> <e> <z> : "🤧" U1F927 # SNEEZING FACE
-#- 1F930;PREGNANT WOMAN;So;0;ON;;;;;N;;;;;
-### <MM> {pregnant woman} : "🤰" U1F930 # PREGNANT WOMAN
-#- 1F933;SELFIE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <e> <l> <f> <i> <e> : "🤳" U1F933 # SELFIE
-#- 1F934;PRINCE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <r> <i> <n> <c> <e> : "🤴" U1F934 # PRINCE
-#- 1F935;MAN IN TUXEDO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <t> <u> <x> <e> <d> <o> : "🤵" U1F935 # MAN IN TUXEDO
-#- 1F936;MOTHER CHRISTMAS;So;0;ON;;;;;N;;;;;
-### <MM> {mother christmas} : "🤶" U1F936 # MOTHER CHRISTMAS
-#- 1F937;SHRUG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <r> <u> <g> : "🤷" U1F937 # SHRUG
-#- 1F938;PERSON DOING CARTWHEEL;So;0;ON;;;;;N;;;;;
-### <MM> {person doing cartwheel} : "🤸" U1F938 # PERSON DOING CARTWHEEL
-#- 1F939;JUGGLING;So;0;ON;;;;;N;;;;;
-### <MM> {juggling} : "🤹" U1F939 # JUGGLING
-#- 1F93A;FENCER;So;0;ON;;;;;N;;;;;
-### <MM> {fencer} : "🤺" U1F93A # FENCER
-#- 1F93B;MODERN PENTATHLON;So;0;ON;;;;;N;;;;;
-### <MM> {modern pentathlon} : "🤻" U1F93B # MODERN PENTATHLON
-#- 1F93C;WRESTLERS;So;0;ON;;;;;N;;;;;
-### <MM> {wrestlers} : "🤼" U1F93C # WRESTLERS
-#- 1F93D;WATER POLO;So;0;ON;;;;;N;;;;;
-### <MM> {water polo} : "🤽" U1F93D # WATER POLO
-#- 1F93E;HANDBALL;So;0;ON;;;;;N;;;;;
-### <MM> {handball} : "🤾" U1F93E # HANDBALL
-#- 1F940;WILTED FLOWER;So;0;ON;;;;;N;;;;;
-### <MM> {wilted flower} : "🥀" U1F940 # WILTED FLOWER
-#- 1F941;DRUM WITH DRUMSTICKS;So;0;ON;;;;;N;;;;;
-### <MM> {drum with drumsticks} : "🥁" U1F941 # DRUM WITH DRUMSTICKS
-#- 1F942;CLINKING GLASSES;So;0;ON;;;;;N;;;;;
-### <MM> {clinking glasses} : "🥂" U1F942 # CLINKING GLASSES
-#- 1F943;TUMBLER GLASS;So;0;ON;;;;;N;;;;;
-### <MM> {tumbler glass} : "🥃" U1F943 # TUMBLER GLASS
-#- 1F944;SPOON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <p> <o> <o> <n> : "🥄" U1F944 # SPOON
-#- 1F945;GOAL NET;So;0;ON;;;;;N;;;;;
-### <MM> {goal net} : "🥅" U1F945 # GOAL NET
-#- 1F946;RIFLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <i> <f> <l> <e> : "🥆" U1F946 # RIFLE
-#- 1F947;FIRST PLACE MEDAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <1> <p> <l> <a> <c> <e> : "🥇" U1F947 # FIRST PLACE MEDAL
-#- 1F948;SECOND PLACE MEDAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <2> <p> <l> <a> <c> <e> : "🥈" U1F948 # SECOND PLACE MEDAL
-#- 1F949;THIRD PLACE MEDAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <3> <p> <l> <a> <c> <e> : "🥉" U1F949 # THIRD PLACE MEDAL
-#- 1F94A;BOXING GLOVE;So;0;ON;;;;;N;;;;;
-### <MM> {boxing glove} : "🥊" U1F94A # BOXING GLOVE
-#- 1F94B;MARTIAL ARTS UNIFORM;So;0;ON;;;;;N;;;;;
-### <MM> {martial arts uniform} : "🥋" U1F94B # MARTIAL ARTS UNIFORM
-#- 1F950;CROISSANT;So;0;ON;;;;;N;;;;;
-### <MM> {croissant} : "🥐" U1F950 # CROISSANT
-#- 1F951;AVOCADO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <a> <v> <o> <c> <a> <d> <o> : "🥑" U1F951 # AVOCADO
-#- 1F952;CUCUMBER;So;0;ON;;;;;N;;;;;
-### <MM> {cucumber} : "🥒" U1F952 # CUCUMBER
-#- 1F953;BACON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <c> <o> <n> : "🥓" U1F953 # BACON
-#- 1F954;POTATO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <P> <o> <t> <a> <t> <o> : "🥔" U1F954 # POTATO
-#- 1F955;CARROT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <c> <a> <r> <r> <o> <t> : "🥕" U1F955 # CARROT
-#- 1F956;BAGUETTE BREAD;So;0;ON;;;;;N;;;;;
-### <MM> {baguette bread} : "🥖" U1F956 # BAGUETTE BREAD
-#- 1F957;GREEN SALAD;So;0;ON;;;;;N;;;;;
-### <MM> {green salad} : "🥗" U1F957 # GREEN SALAD
-#- 1F958;SHALLOW PAN OF FOOD;So;0;ON;;;;;N;;;;;
-### <MM> {shallow pan of food} : "🥘" U1F958 # SHALLOW PAN OF FOOD
-#- 1F959;STUFFED FLATBREAD;So;0;ON;;;;;N;;;;;
-### <MM> {stuffed flatbread} : "🥙" U1F959 # STUFFED FLATBREAD
-#- 1F95A;EGG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <e> <g> <g> : "🥚" U1F95A # EGG
-#- 1F95B;GLASS OF MILK;So;0;ON;;;;;N;;;;;
-### <MM> {glass of milk} : "🥛" U1F95B # GLASS OF MILK
-#- 1F95C;PEANUTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <e> <a> <n> <u> <t> <s> : "🥜" U1F95C # PEANUTS
-#- 1F95D;KIWIFRUIT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <k> <i> <w> <i> : "🥝" U1F95D # KIWIFRUIT
-#- 1F95E;PANCAKES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <p> <a> <n> <c> <a> <k> <e> : "🥞" U1F95E # PANCAKES
-#- 1F985;EAGLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <e> <a> <g> <l> <e> : "🦅" U1F985 # EAGLE
-#- 1F986;DUCK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <u> <c> <k> : "🦆" U1F986 # DUCK
-#- 1F987;BAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <b> <a> <t> <Multi_key> : "🦇" U1F987 # BAT
-#- 1F988;SHARK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <a> <r> <k> : "🦈" U1F988 # SHARK
-#- 1F989;OWL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <o> <w> <l> : "🦉" U1F989 # OWL
-#- 1F98A;FOX FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <f> <o> <x> <f> <a> <c> <e> : "🦊" U1F98A # FOX FACE
-#- 1F98B;BUTTERFLY;So;0;ON;;;;;N;;;;;
-### <MM> {butterfly} : "🦋" U1F98B # BUTTERFLY
-#- 1F98C;DEER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <d> <e> <e> <r> : "🦌" U1F98C # DEER
-#- 1F98D;GORILLA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <g> <o> <r> <i> <l> <l> <a> : "🦍" U1F98D # GORILLA
-#- 1F98E;LIZARD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <l> <i> <z> <a> <r> <d> : "🦎" U1F98E # LIZARD
-#- 1F98F;RHINOCEROS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <r> <h> <i> <n> <o> : "🦏" U1F98F # RHINOCEROS
-#- 1F990;SHRIMP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <h> <r> <i> <m> <p> : "🦐" U1F990 # SHRIMP
-#- 1F991;SQUID;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key> <s> <q> <u> <i> <d> : "🦑" U1F991 # SQUID
users/vincent/desktop/xorg/modletters.compose
@@ -1,469 +0,0 @@
-### For davka *letters*, not punctuation that looks like it.
-### Mnemonic/signal: <♫>!#, because they are not numbers.
-### Maybe #!^ for ones that are just raised letters? Those not as critical.
-#- 02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
-### <M_> {modifier letter small h} : "ʰ" U02B0 # MODIFIER LETTER SMALL H
-#- 02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
-### <M_> {modifier letter small h with hook} : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
-#- 02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
-### <M_> {modifier letter small j} : "ʲ" U02B2 # MODIFIER LETTER SMALL J
-#- 02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
-### <M_> {modifier letter small r} : "ʳ" U02B3 # MODIFIER LETTER SMALL R
-#- 02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
-### <M_> {modifier letter small turned r} : "ʴ" U02B4 # MODIFIER LETTER SMALL TURNED R
-#- 02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
-### <M_> {modifier letter small turned r with hook} : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
-#- 02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
-### <M_> {modifier letter small capital inverted r} : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
-#- 02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
-### <M_> {modifier letter small w} : "ʷ" U02B7 # MODIFIER LETTER SMALL W
-#- 02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
-### <M_> {modifier letter small y} : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
-## 7 is prime, and it looks similar, doesn't it?
-#- 02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <7> : "ʹ" U02B9 # MODIFIER LETTER PRIME
-#- 02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <2> <7> : "ʺ" U02BA # MODIFIER LETTER DOUBLE PRIME
-## I'm going to need this more than MODIFIER LETTER GRAVE
-#- 02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <grave> : "ʻ" U02BB # MODIFIER LETTER TURNED COMMA
-#- 02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <apostrophe> : "ʼ" U02BC # MODIFIER LETTER APOSTROPHE
-#- 02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <at> <apostrophe> : "ʽ" U02BD # MODIFIER LETTER REVERSED COMMA
-#- 02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <parenright> : "ʾ" U02BE # MODIFIER LETTER RIGHT HALF RING
-#- 02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <parenleft> : "ʿ" U02BF # MODIFIER LETTER LEFT HALF RING
-#- 02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <question> <period> : "ˀ" U02C0 # MODIFIER LETTER GLOTTAL STOP
-#- 02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <question> <parenleft> : "ˁ" U02C1 # MODIFIER LETTER REVERSED GLOTTAL STOP
-#- 02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <less> : "˂" U02C2 # MODIFIER LETTER LEFT ARROWHEAD
-#- 02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <greater> <greater> : "˃" U02C3 # MODIFIER LETTER RIGHT ARROWHEAD
-#- 02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <asciicircum> <asciicircum> : "˄" U02C4 # MODIFIER LETTER UP ARROWHEAD
-#- 02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <v> <v> : "˅" U02C5 # MODIFIER LETTER DOWN ARROWHEAD
-#- 02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
-<Multi_key> <exclam> <numbersign> <backslash> <asciicircum> : "ˆ" U02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
-#- 02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;;;;
-<Multi_key> <exclam> <numbersign> <backslash> <v> : "ˇ" U02C7 # CARON
-#- 02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <backslash> <bar> : "ˈ" U02C8 # MODIFIER LETTER VERTICAL LINE
-#- 02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <equal> : "ˉ" U02C9 # MODIFIER LETTER MACRON
-#- 02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;;
-<Multi_key> <exclam> <numbersign> <backslash> <apostrophe> : "ˊ" U02CA # MODIFIER LETTER ACUTE ACCENT
-#- 02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;;
-<Multi_key> <exclam> <numbersign> <backslash> <grave> : "ˋ" U02CB # MODIFIER LETTER GRAVE ACCENT
-#- 02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <bar> : "ˌ" U02CC # MODIFIER LETTER LOW VERTICAL LINE
-#- 02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <equal> : "ˍ" U02CD # MODIFIER LETTER LOW MACRON
-#- 02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <grave> : "ˎ" U02CE # MODIFIER LETTER LOW GRAVE ACCENT
-#- 02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <apostrophe> : "ˏ" U02CF # MODIFIER LETTER LOW ACUTE ACCENT
-#- 02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <greater> <colon> : "ː" U02D0 # MODIFIER LETTER TRIANGULAR COLON
-#- 02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <greater> <period> : "ˑ" U02D1 # MODIFIER LETTER HALF TRIANGULAR COLON
-#- 02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
-<Multi_key> <exclam> <numbersign> <minus> <parenright> : "˒" U02D2 # MODIFIER LETTER CENTRED RIGHT HALF RING
-#- 02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
-<Multi_key> <exclam> <numbersign> <minus> <parenleft> : "˓" U02D3 # MODIFIER LETTER CENTRED LEFT HALF RING
-#- 02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <plus> <asciicircum> : "˔" U02D4 # MODIFIER LETTER UP TACK
-#- 02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <plus> <v> : "˕" U02D5 # MODIFIER LETTER DOWN TACK
-#- 02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <plus> <plus> : "˖" U02D6 # MODIFIER LETTER PLUS SIGN
-#- 02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <minus> <minus> : "˗" U02D7 # MODIFIER LETTER MINUS SIGN
-#- 02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <r> : "˞" U02DE # MODIFIER LETTER RHOTIC HOOK
-#- 02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <backslash> <x> : "˟" U02DF # MODIFIER LETTER CROSS ACCENT
-#- 02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <g> <h> : "ˠ" U02E0 # MODIFIER LETTER SMALL GAMMA
-#- 02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
-### <M_> {modifier letter small l} : "ˡ" U02E1 # MODIFIER LETTER SMALL L
-#- 02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
-### <M_> {modifier letter small s} : "ˢ" U02E2 # MODIFIER LETTER SMALL S
-#- 02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
-### <M_> {modifier letter small x} : "ˣ" U02E3 # MODIFIER LETTER SMALL X
-#- 02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
-### <M_> {modifier letter small reversed glottal stop} : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-#- 02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <5> : "˥" U02E5 # MODIFIER LETTER EXTRA-HIGH TONE BAR
-#- 02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <4> : "˦" U02E6 # MODIFIER LETTER HIGH TONE BAR
-#- 02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <3> : "˧" U02E7 # MODIFIER LETTER MID TONE BAR
-#- 02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <2> : "˨" U02E8 # MODIFIER LETTER LOW TONE BAR
-#- 02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <1> : "˩" U02E9 # MODIFIER LETTER EXTRA-LOW TONE BAR
-#- 02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter yin departing tone mark} : "˪" U02EA # MODIFIER LETTER YIN DEPARTING TONE MARK
-#- 02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <plus> <greater> : "˫" U02EB # MODIFIER LETTER YANG DEPARTING TONE MARK
-#- 02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <v> <o> : "ˬ" U02EC # MODIFIER LETTER VOICING
-#- 02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <minus> <h> : "˭" U02ED # MODIFIER LETTER UNASPIRATED
-#- 02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <2> <apostrophe> : "ˮ" U02EE # MODIFIER LETTER DOUBLE APOSTROPHE
-#- 02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <v> : "˯" U02EF # MODIFIER LETTER LOW DOWN ARROWHEAD
-#- 02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <asciicircum> : "˰" U02F0 # MODIFIER LETTER LOW UP ARROWHEAD
-#- 02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <less> : "˱" U02F1 # MODIFIER LETTER LOW LEFT ARROWHEAD
-#- 02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <greater> : "˲" U02F2 # MODIFIER LETTER LOW RIGHT ARROWHEAD
-#- 02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <o> : "˳" U02F3 # MODIFIER LETTER LOW RING
-#- 02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <minus> <grave> : "˴" U02F4 # MODIFIER LETTER MIDDLE GRAVE ACCENT
-#- 02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <minus> <2> <grave> : "˵" U02F5 # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
-#- 02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <minus> <2> <apostrophe> : "˶" U02F6 # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
-#- 02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <asciitilde> : "˷" U02F7 # MODIFIER LETTER LOW TILDE
-#- 02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <backslash> <colon> : "˸" U02F8 # MODIFIER LETTER RAISED COLON
-#- 02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <parenleft> <H> : "˹" U02F9 # MODIFIER LETTER BEGIN HIGH TONE
-#- 02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <parenright> <H> : "˺" U02FA # MODIFIER LETTER END HIGH TONE
-#- 02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <parenleft> <L> : "˻" U02FB # MODIFIER LETTER BEGIN LOW TONE
-#- 02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <T> <parenright> <L> : "˼" U02FC # MODIFIER LETTER END LOW TONE
-#- 02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <bracketright> : "˽" U02FD # MODIFIER LETTER SHELF
-#- 02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <L> : "˾" U02FE # MODIFIER LETTER OPEN SHELF
-#- 02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <underscore> <minus> <less> : "˿" U02FF # MODIFIER LETTER LOW LEFT ARROW
-#- 0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-### <M_> {armenian modifier letter left half ring} : "ՙ" U0559 # ARMENIAN MODIFIER LETTER LEFT HALF RING
-#- 055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
-### <M_> {armenian apostrophe} : "՚" U055A # ARMENIAN APOSTROPHE
-#- 081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;;
-### <M_> {samaritan modifier letter epenthetic yut} : "ࠚ" U081A # SAMARITAN MODIFIER LETTER EPENTHETIC YUT
-#- 0824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;;
-### <M_> {samaritan modifier letter short a} : "ࠤ" U0824 # SAMARITAN MODIFIER LETTER SHORT A
-#- 0828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;;
-### <M_> {samaritan modifier letter i} : "ࠨ" U0828 # SAMARITAN MODIFIER LETTER I
-#- 10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
-### <M_> {modifier letter georgian nar} : "ჼ" U10FC # MODIFIER LETTER GEORGIAN NAR
-#- 1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
-### <M_> {modifier letter capital a} : "ᴬ" U1D2C # MODIFIER LETTER CAPITAL A
-#- 1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
-### <M_> {modifier letter capital ae} : "ᴭ" U1D2D # MODIFIER LETTER CAPITAL AE
-#- 1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
-### <M_> {modifier letter capital b} : "ᴮ" U1D2E # MODIFIER LETTER CAPITAL B
-#- 1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
-### <M_> {modifier letter capital barred b} : "ᴯ" U1D2F # MODIFIER LETTER CAPITAL BARRED B
-#- 1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
-### <M_> {modifier letter capital d} : "ᴰ" U1D30 # MODIFIER LETTER CAPITAL D
-#- 1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
-### <M_> {modifier letter capital e} : "ᴱ" U1D31 # MODIFIER LETTER CAPITAL E
-#- 1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
-### <M_> {modifier letter capital reversed e} : "ᴲ" U1D32 # MODIFIER LETTER CAPITAL REVERSED E
-#- 1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
-### <M_> {modifier letter capital g} : "ᴳ" U1D33 # MODIFIER LETTER CAPITAL G
-#- 1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
-### <M_> {modifier letter capital h} : "ᴴ" U1D34 # MODIFIER LETTER CAPITAL H
-#- 1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
-### <M_> {modifier letter capital i} : "ᴵ" U1D35 # MODIFIER LETTER CAPITAL I
-#- 1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
-### <M_> {modifier letter capital j} : "ᴶ" U1D36 # MODIFIER LETTER CAPITAL J
-#- 1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
-### <M_> {modifier letter capital k} : "ᴷ" U1D37 # MODIFIER LETTER CAPITAL K
-#- 1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
-### <M_> {modifier letter capital l} : "ᴸ" U1D38 # MODIFIER LETTER CAPITAL L
-#- 1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
-### <M_> {modifier letter capital m} : "ᴹ" U1D39 # MODIFIER LETTER CAPITAL M
-#- 1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
-### <M_> {modifier letter capital n} : "ᴺ" U1D3A # MODIFIER LETTER CAPITAL N
-#- 1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
-### <M_> {modifier letter capital reversed n} : "ᴻ" U1D3B # MODIFIER LETTER CAPITAL REVERSED N
-#- 1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
-### <M_> {modifier letter capital o} : "ᴼ" U1D3C # MODIFIER LETTER CAPITAL O
-#- 1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
-### <M_> {modifier letter capital ou} : "ᴽ" U1D3D # MODIFIER LETTER CAPITAL OU
-#- 1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
-### <M_> {modifier letter capital p} : "ᴾ" U1D3E # MODIFIER LETTER CAPITAL P
-#- 1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
-### <M_> {modifier letter capital r} : "ᴿ" U1D3F # MODIFIER LETTER CAPITAL R
-#- 1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
-### <M_> {modifier letter capital t} : "ᵀ" U1D40 # MODIFIER LETTER CAPITAL T
-#- 1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
-### <M_> {modifier letter capital u} : "ᵁ" U1D41 # MODIFIER LETTER CAPITAL U
-#- 1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
-### <M_> {modifier letter capital w} : "ᵂ" U1D42 # MODIFIER LETTER CAPITAL W
-#- 1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
-### <M_> {modifier letter small a} : "ᵃ" U1D43 # MODIFIER LETTER SMALL A
-#- 1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
-### <M_> {modifier letter small turned a} : "ᵄ" U1D44 # MODIFIER LETTER SMALL TURNED A
-#- 1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
-### <M_> {modifier letter small alpha} : "ᵅ" U1D45 # MODIFIER LETTER SMALL ALPHA
-#- 1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
-### <M_> {modifier letter small turned ae} : "ᵆ" U1D46 # MODIFIER LETTER SMALL TURNED AE
-#- 1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
-### <M_> {modifier letter small b} : "ᵇ" U1D47 # MODIFIER LETTER SMALL B
-#- 1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
-### <M_> {modifier letter small d} : "ᵈ" U1D48 # MODIFIER LETTER SMALL D
-#- 1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
-### <M_> {modifier letter small e} : "ᵉ" U1D49 # MODIFIER LETTER SMALL E
-#- 1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
-### <M_> {modifier letter small schwa} : "ᵊ" U1D4A # MODIFIER LETTER SMALL SCHWA
-#- 1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
-### <M_> {modifier letter small open e} : "ᵋ" U1D4B # MODIFIER LETTER SMALL OPEN E
-#- 1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
-### <M_> {modifier letter small turned open e} : "ᵌ" U1D4C # MODIFIER LETTER SMALL TURNED OPEN E
-#- 1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
-### <M_> {modifier letter small g} : "ᵍ" U1D4D # MODIFIER LETTER SMALL G
-#- 1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
-### <M_> {modifier letter small turned i} : "ᵎ" U1D4E # MODIFIER LETTER SMALL TURNED I
-#- 1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
-### <M_> {modifier letter small k} : "ᵏ" U1D4F # MODIFIER LETTER SMALL K
-#- 1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
-### <M_> {modifier letter small m} : "ᵐ" U1D50 # MODIFIER LETTER SMALL M
-#- 1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
-### <M_> {modifier letter small eng} : "ᵑ" U1D51 # MODIFIER LETTER SMALL ENG
-#- 1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
-### <M_> {modifier letter small o} : "ᵒ" U1D52 # MODIFIER LETTER SMALL O
-#- 1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
-### <M_> {modifier letter small open o} : "ᵓ" U1D53 # MODIFIER LETTER SMALL OPEN O
-#- 1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
-### <M_> {modifier letter small top half o} : "ᵔ" U1D54 # MODIFIER LETTER SMALL TOP HALF O
-#- 1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
-### <M_> {modifier letter small bottom half o} : "ᵕ" U1D55 # MODIFIER LETTER SMALL BOTTOM HALF O
-#- 1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
-### <M_> {modifier letter small p} : "ᵖ" U1D56 # MODIFIER LETTER SMALL P
-#- 1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
-### <M_> {modifier letter small t} : "ᵗ" U1D57 # MODIFIER LETTER SMALL T
-#- 1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
-### <M_> {modifier letter small u} : "ᵘ" U1D58 # MODIFIER LETTER SMALL U
-#- 1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
-### <M_> {modifier letter small sideways u} : "ᵙ" U1D59 # MODIFIER LETTER SMALL SIDEWAYS U
-#- 1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
-### <M_> {modifier letter small turned m} : "ᵚ" U1D5A # MODIFIER LETTER SMALL TURNED M
-#- 1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
-### <M_> {modifier letter small v} : "ᵛ" U1D5B # MODIFIER LETTER SMALL V
-#- 1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
-### <M_> {modifier letter small ain} : "ᵜ" U1D5C # MODIFIER LETTER SMALL AIN
-#- 1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
-### <M_> {modifier letter small beta} : "ᵝ" U1D5D # MODIFIER LETTER SMALL BETA
-#- 1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
-### <M_> {modifier letter small greek gamma} : "ᵞ" U1D5E # MODIFIER LETTER SMALL GREEK GAMMA
-#- 1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
-### <M_> {modifier letter small delta} : "ᵟ" U1D5F # MODIFIER LETTER SMALL DELTA
-#- 1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
-### <M_> {modifier letter small greek phi} : "ᵠ" U1D60 # MODIFIER LETTER SMALL GREEK PHI
-#- 1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
-### <M_> {modifier letter small chi} : "ᵡ" U1D61 # MODIFIER LETTER SMALL CHI
-#- 1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
-### <M_> {modifier letter cyrillic en} : "ᵸ" U1D78 # MODIFIER LETTER CYRILLIC EN
-#- 1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
-### <M_> {modifier letter small turned alpha} : "ᶛ" U1D9B # MODIFIER LETTER SMALL TURNED ALPHA
-#- 1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
-### <M_> {modifier letter small c} : "ᶜ" U1D9C # MODIFIER LETTER SMALL C
-#- 1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
-### <M_> {modifier letter small c with curl} : "ᶝ" U1D9D # MODIFIER LETTER SMALL C WITH CURL
-#- 1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
-### <M_> {modifier letter small eth} : "ᶞ" U1D9E # MODIFIER LETTER SMALL ETH
-#- 1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
-### <M_> {modifier letter small reversed open e} : "ᶟ" U1D9F # MODIFIER LETTER SMALL REVERSED OPEN E
-#- 1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
-### <M_> {modifier letter small f} : "ᶠ" U1DA0 # MODIFIER LETTER SMALL F
-#- 1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
-### <M_> {modifier letter small dotless j with stroke} : "ᶡ" U1DA1 # MODIFIER LETTER SMALL DOTLESS J WITH STROKE
-#- 1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
-### <M_> {modifier letter small script g} : "ᶢ" U1DA2 # MODIFIER LETTER SMALL SCRIPT G
-#- 1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
-### <M_> {modifier letter small turned h} : "ᶣ" U1DA3 # MODIFIER LETTER SMALL TURNED H
-#- 1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
-### <M_> {modifier letter small i with stroke} : "ᶤ" U1DA4 # MODIFIER LETTER SMALL I WITH STROKE
-#- 1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
-### <M_> {modifier letter small iota} : "ᶥ" U1DA5 # MODIFIER LETTER SMALL IOTA
-#- 1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
-### <M_> {modifier letter small capital i} : "ᶦ" U1DA6 # MODIFIER LETTER SMALL CAPITAL I
-#- 1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
-### <M_> {modifier letter small capital i with stroke} : "ᶧ" U1DA7 # MODIFIER LETTER SMALL CAPITAL I WITH STROKE
-#- 1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
-### <M_> {modifier letter small j with crossed-tail} : "ᶨ" U1DA8 # MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-#- 1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
-### <M_> {modifier letter small l with retroflex hook} : "ᶩ" U1DA9 # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
-#- 1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
-### <M_> {modifier letter small l with palatal hook} : "ᶪ" U1DAA # MODIFIER LETTER SMALL L WITH PALATAL HOOK
-#- 1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
-### <M_> {modifier letter small capital l} : "ᶫ" U1DAB # MODIFIER LETTER SMALL CAPITAL L
-#- 1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
-### <M_> {modifier letter small m with hook} : "ᶬ" U1DAC # MODIFIER LETTER SMALL M WITH HOOK
-#- 1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
-### <M_> {modifier letter small turned m with long leg} : "ᶭ" U1DAD # MODIFIER LETTER SMALL TURNED M WITH LONG LEG
-#- 1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
-### <M_> {modifier letter small n with left hook} : "ᶮ" U1DAE # MODIFIER LETTER SMALL N WITH LEFT HOOK
-#- 1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
-### <M_> {modifier letter small n with retroflex hook} : "ᶯ" U1DAF # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
-#- 1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
-### <M_> {modifier letter small capital n} : "ᶰ" U1DB0 # MODIFIER LETTER SMALL CAPITAL N
-#- 1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
-### <M_> {modifier letter small barred o} : "ᶱ" U1DB1 # MODIFIER LETTER SMALL BARRED O
-#- 1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
-### <M_> {modifier letter small phi} : "ᶲ" U1DB2 # MODIFIER LETTER SMALL PHI
-#- 1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
-### <M_> {modifier letter small s with hook} : "ᶳ" U1DB3 # MODIFIER LETTER SMALL S WITH HOOK
-#- 1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
-### <M_> {modifier letter small esh} : "ᶴ" U1DB4 # MODIFIER LETTER SMALL ESH
-#- 1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
-### <M_> {modifier letter small t with palatal hook} : "ᶵ" U1DB5 # MODIFIER LETTER SMALL T WITH PALATAL HOOK
-#- 1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
-### <M_> {modifier letter small u bar} : "ᶶ" U1DB6 # MODIFIER LETTER SMALL U BAR
-#- 1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
-### <M_> {modifier letter small upsilon} : "ᶷ" U1DB7 # MODIFIER LETTER SMALL UPSILON
-#- 1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
-### <M_> {modifier letter small capital u} : "ᶸ" U1DB8 # MODIFIER LETTER SMALL CAPITAL U
-#- 1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
-### <M_> {modifier letter small v with hook} : "ᶹ" U1DB9 # MODIFIER LETTER SMALL V WITH HOOK
-#- 1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
-### <M_> {modifier letter small turned v} : "ᶺ" U1DBA # MODIFIER LETTER SMALL TURNED V
-#- 1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
-### <M_> {modifier letter small z} : "ᶻ" U1DBB # MODIFIER LETTER SMALL Z
-#- 1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
-### <M_> {modifier letter small z with retroflex hook} : "ᶼ" U1DBC # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
-#- 1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
-### <M_> {modifier letter small z with curl} : "ᶽ" U1DBD # MODIFIER LETTER SMALL Z WITH CURL
-#- 1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
-### <M_> {modifier letter small ezh} : "ᶾ" U1DBE # MODIFIER LETTER SMALL EZH
-#- 1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
-### <M_> {modifier letter small theta} : "ᶿ" U1DBF # MODIFIER LETTER SMALL THETA
-## You're an idiot to want this; you deserve to have hard keystrokes.
-#- 212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
-<Multi_key> <exclam> <numbersign> <K> <E> <L> <V> : "K" U212A # KELVIN SIGN
-#- 2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;
-### <M_> {modifier letter capital v} : "ⱽ" U2C7D # MODIFIER LETTER CAPITAL V
-#- 2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;;;;
-### <M_> {tifinagh modifier letter labialization mark} : "ⵯ" U2D6F # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-#- A69C;MODIFIER LETTER CYRILLIC HARD SIGN;Lm;0;L;<super> 044A;;;;N;;;;;
-### <M_> {modifier letter cyrillic hard sign} : "ꚜ" UA69C # MODIFIER LETTER CYRILLIC HARD SIGN
-#- A69D;MODIFIER LETTER CYRILLIC SOFT SIGN;Lm;0;L;<super> 044C;;;;N;;;;;
-### <M_> {modifier letter cyrillic soft sign} : "ꚝ" UA69D # MODIFIER LETTER CYRILLIC SOFT SIGN
-#- A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yin ping} : "꜀" UA700 # MODIFIER LETTER CHINESE TONE YIN PING
-#- A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yang ping} : "꜁" UA701 # MODIFIER LETTER CHINESE TONE YANG PING
-#- A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yin shang} : "꜂" UA702 # MODIFIER LETTER CHINESE TONE YIN SHANG
-#- A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yang shang} : "꜃" UA703 # MODIFIER LETTER CHINESE TONE YANG SHANG
-#- A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yin qu} : "꜄" UA704 # MODIFIER LETTER CHINESE TONE YIN QU
-#- A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yang qu} : "꜅" UA705 # MODIFIER LETTER CHINESE TONE YANG QU
-#- A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yin ru} : "꜆" UA706 # MODIFIER LETTER CHINESE TONE YIN RU
-#- A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yang ru} : "꜇" UA707 # MODIFIER LETTER CHINESE TONE YANG RU
-#- A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-high dotted tone bar} : "꜈" UA708 # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
-#- A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter high dotted tone bar} : "꜉" UA709 # MODIFIER LETTER HIGH DOTTED TONE BAR
-#- A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter mid dotted tone bar} : "꜊" UA70A # MODIFIER LETTER MID DOTTED TONE BAR
-#- A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low dotted tone bar} : "꜋" UA70B # MODIFIER LETTER LOW DOTTED TONE BAR
-#- A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-low dotted tone bar} : "꜌" UA70C # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR
-#- A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-high dotted left-stem tone bar} : "꜍" UA70D # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR
-#- A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter high dotted left-stem tone bar} : "꜎" UA70E # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR
-#- A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter mid dotted left-stem tone bar} : "꜏" UA70F # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR
-#- A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low dotted left-stem tone bar} : "꜐" UA710 # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
-#- A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-low dotted left-stem tone bar} : "꜑" UA711 # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR
-#- A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-high left-stem tone bar} : "꜒" UA712 # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR
-#- A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter high left-stem tone bar} : "꜓" UA713 # MODIFIER LETTER HIGH LEFT-STEM TONE BAR
-#- A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter mid left-stem tone bar} : "꜔" UA714 # MODIFIER LETTER MID LEFT-STEM TONE BAR
-#- A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low left-stem tone bar} : "꜕" UA715 # MODIFIER LETTER LOW LEFT-STEM TONE BAR
-#- A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-low left-stem tone bar} : "꜖" UA716 # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-#- A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter dot vertical bar} : "ꜗ" UA717 # MODIFIER LETTER DOT VERTICAL BAR
-#- A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter dot slash} : "ꜘ" UA718 # MODIFIER LETTER DOT SLASH
-#- A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter dot horizontal bar} : "ꜙ" UA719 # MODIFIER LETTER DOT HORIZONTAL BAR
-#- A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter lower right corner angle} : "ꜚ" UA71A # MODIFIER LETTER LOWER RIGHT CORNER ANGLE
-#- A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <asciicircum> <minus> <asciicircum> : "ꜛ" UA71B # MODIFIER LETTER RAISED UP ARROW
-#- A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <asciicircum> <minus> <v> : "ꜜ" UA71C # MODIFIER LETTER RAISED DOWN ARROW
-#- A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <asciicircum> <exclam> : "ꜝ" UA71D # MODIFIER LETTER RAISED EXCLAMATION MARK
-#- A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter raised inverted exclamation mark} : "ꜞ" UA71E # MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK
-#- A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low inverted exclamation mark} : "ꜟ" UA71F # MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
-#- A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter stress and high tone} : "꜠" UA720 # MODIFIER LETTER STRESS AND HIGH TONE
-#- A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter stress and low tone} : "꜡" UA721 # MODIFIER LETTER STRESS AND LOW TONE
-#- A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;
-### <M_> {modifier letter us} : "ꝰ" UA770 # MODIFIER LETTER US
-#- A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low circumflex accent} : "ꞈ" UA788 # MODIFIER LETTER LOW CIRCUMFLEX ACCENT
-#- A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;
-<Multi_key> <exclam> <numbersign> <colon> : "꞉" UA789 # MODIFIER LETTER COLON
-#- A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;
-### <M_> {modifier letter short equals sign} : "꞊" UA78A # MODIFIER LETTER SHORT EQUALS SIGN
-#- A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L;<super> 0126;;;;N;;;;;
-### <M_> {modifier letter capital h with stroke} : "ꟸ" UA7F8 # MODIFIER LETTER CAPITAL H WITH STROKE
-#- A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L;<super> 0153;;;;N;;;;;
-### <M_> {modifier letter small ligature oe} : "ꟹ" UA7F9 # MODIFIER LETTER SMALL LIGATURE OE
-#- A9E6;MYANMAR MODIFIER LETTER SHAN REDUPLICATION;Lm;0;L;;;;;N;;;;;
-### <M_> {myanmar modifier letter shan reduplication} : "ꧦ" UA9E6 # MYANMAR MODIFIER LETTER SHAN REDUPLICATION
-#- AA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;;
-### <M_> {myanmar modifier letter khamti reduplication} : "ꩰ" UAA70 # MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
-#- AB5C;MODIFIER LETTER SMALL HENG;Lm;0;L;<super> A727;;;;N;;;;;
-### <M_> {modifier letter small heng} : "ꭜ" UAB5C # MODIFIER LETTER SMALL HENG
-#- AB5D;MODIFIER LETTER SMALL L WITH INVERTED LAZY S;Lm;0;L;<super> AB37;;;;N;;;;;
-### <M_> {modifier letter small l with inverted lazy s} : "ꭝ" UAB5D # MODIFIER LETTER SMALL L WITH INVERTED LAZY S
-#- AB5E;MODIFIER LETTER SMALL L WITH MIDDLE TILDE;Lm;0;L;<super> 026B;;;;N;;;;;
-### <M_> {modifier letter small l with middle tilde} : "ꭞ" UAB5E # MODIFIER LETTER SMALL L WITH MIDDLE TILDE
-#- AB5F;MODIFIER LETTER SMALL U WITH LEFT HOOK;Lm;0;L;<super> AB52;;;;N;;;;;
-### <M_> {modifier letter small u with left hook} : "ꭟ" UAB5F # MODIFIER LETTER SMALL U WITH LEFT HOOK
-#- 01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
-<Multi_key> <exclam> <numbersign> <bar> : "ǀ" U01C0 # LATIN LETTER DENTAL CLICK
-#- 01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
-<Multi_key> <exclam> <numbersign> <2> <bar> : "ǁ" U01C1 # LATIN LETTER LATERAL CLICK
-#- 01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
-<Multi_key> <exclam> <numbersign> <slash> <equal> : "ǂ" U01C2 # LATIN LETTER ALVEOLAR CLICK
-#- 01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
-<Multi_key> <exclam> <numbersign> <exclam> : "ǃ" U01C3 # LATIN LETTER RETROFLEX CLICK
-#- 0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
-### <M_> {latin letter bilabial click} : "ʘ" U0298 # LATIN LETTER BILABIAL CLICK
-<Multi_key> <exclam> <numbersign> <L> <L> : "Ỻ" U1EFA # LATIN CAPITAL LETTER MIDDLE-WELSH LL
-#- 1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA
-<Multi_key> <exclam> <numbersign> <l> <l> : "ỻ" U1EFB # LATIN SMALL LETTER MIDDLE-WELSH LL
-#- 1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;
-<Multi_key> <exclam> <numbersign> <W> <W> : "Ỽ" U1EFC # LATIN CAPITAL LETTER MIDDLE-WELSH V
-#- 1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC
-<Multi_key> <exclam> <numbersign> <w> <w> : "ỽ" U1EFD # LATIN SMALL LETTER MIDDLE-WELSH V
users/vincent/desktop/xorg/org-protocol.desktop
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/emacs/org-protocol.desktop
\ No newline at end of file
users/vincent/desktop/xorg/parens.compose
@@ -1,179 +0,0 @@
-<Multi_key> <parenleft> <period> <1> <parenright> : "⑴" U2474 # PARENTHESIZED DIGIT ONE
-<Multi_key> <parenleft> <period> <2> <parenright> : "⑵" U2475 # PARENTHESIZED DIGIT TWO
-<Multi_key> <parenleft> <period> <3> <parenright> : "⑶" U2476 # PARENTHESIZED DIGIT THREE
-<Multi_key> <parenleft> <period> <4> <parenright> : "⑷" U2477 # PARENTHESIZED DIGIT FOUR
-<Multi_key> <parenleft> <period> <5> <parenright> : "⑸" U2478 # PARENTHESIZED DIGIT FIVE
-<Multi_key> <parenleft> <period> <6> <parenright> : "⑹" U2479 # PARENTHESIZED DIGIT SIX
-<Multi_key> <parenleft> <period> <7> <parenright> : "⑺" U247A # PARENTHESIZED DIGIT SEVEN
-<Multi_key> <parenleft> <period> <8> <parenright> : "⑻" U247B # PARENTHESIZED DIGIT EIGHT
-<Multi_key> <parenleft> <period> <9> <parenright> : "⑼" U247C # PARENTHESIZED DIGIT NINE
-<Multi_key> <parenleft> <period> <1> <0> <parenright> : "⑽" U247D # PARENTHESIZED NUMBER TEN
-<Multi_key> <parenleft> <period> <1> <1> <parenright> : "⑾" U247E # PARENTHESIZED NUMBER ELEVEN
-<Multi_key> <parenleft> <period> <1> <2> <parenright> : "⑿" U247F # PARENTHESIZED NUMBER TWELVE
-<Multi_key> <parenleft> <period> <1> <3> <parenright> : "⒀" U2480 # PARENTHESIZED NUMBER THIRTEEN
-<Multi_key> <parenleft> <period> <1> <4> <parenright> : "⒁" U2481 # PARENTHESIZED NUMBER FOURTEEN
-<Multi_key> <parenleft> <period> <1> <5> <parenright> : "⒂" U2482 # PARENTHESIZED NUMBER FIFTEEN
-<Multi_key> <parenleft> <period> <1> <6> <parenright> : "⒃" U2483 # PARENTHESIZED NUMBER SIXTEEN
-<Multi_key> <parenleft> <period> <1> <7> <parenright> : "⒄" U2484 # PARENTHESIZED NUMBER SEVENTEEN
-<Multi_key> <parenleft> <period> <1> <8> <parenright> : "⒅" U2485 # PARENTHESIZED NUMBER EIGHTEEN
-<Multi_key> <parenleft> <period> <1> <9> <parenright> : "⒆" U2486 # PARENTHESIZED NUMBER NINETEEN
-<Multi_key> <parenleft> <period> <2> <0> <parenright> : "⒇" U2487 # PARENTHESIZED NUMBER TWENTY
-<Multi_key> <parenleft> <period> <a> <parenright> : "⒜" U249C # PARENTHESIZED LATIN SMALL LETTER A
-<Multi_key> <parenleft> <period> <b> <parenright> : "⒝" U249D # PARENTHESIZED LATIN SMALL LETTER B
-<Multi_key> <parenleft> <period> <c> <parenright> : "⒞" U249E # PARENTHESIZED LATIN SMALL LETTER C
-<Multi_key> <parenleft> <period> <d> <parenright> : "⒟" U249F # PARENTHESIZED LATIN SMALL LETTER D
-<Multi_key> <parenleft> <period> <e> <parenright> : "⒠" U24A0 # PARENTHESIZED LATIN SMALL LETTER E
-<Multi_key> <parenleft> <period> <f> <parenright> : "⒡" U24A1 # PARENTHESIZED LATIN SMALL LETTER F
-<Multi_key> <parenleft> <period> <g> <parenright> : "⒢" U24A2 # PARENTHESIZED LATIN SMALL LETTER G
-<Multi_key> <parenleft> <period> <h> <parenright> : "⒣" U24A3 # PARENTHESIZED LATIN SMALL LETTER H
-<Multi_key> <parenleft> <period> <i> <parenright> : "⒤" U24A4 # PARENTHESIZED LATIN SMALL LETTER I
-<Multi_key> <parenleft> <period> <j> <parenright> : "⒥" U24A5 # PARENTHESIZED LATIN SMALL LETTER J
-<Multi_key> <parenleft> <period> <k> <parenright> : "⒦" U24A6 # PARENTHESIZED LATIN SMALL LETTER K
-<Multi_key> <parenleft> <period> <l> <parenright> : "⒧" U24A7 # PARENTHESIZED LATIN SMALL LETTER L
-<Multi_key> <parenleft> <period> <m> <parenright> : "⒨" U24A8 # PARENTHESIZED LATIN SMALL LETTER M
-<Multi_key> <parenleft> <period> <n> <parenright> : "⒩" U24A9 # PARENTHESIZED LATIN SMALL LETTER N
-<Multi_key> <parenleft> <period> <o> <parenright> : "⒪" U24AA # PARENTHESIZED LATIN SMALL LETTER O
-<Multi_key> <parenleft> <period> <p> <parenright> : "⒫" U24AB # PARENTHESIZED LATIN SMALL LETTER P
-<Multi_key> <parenleft> <period> <q> <parenright> : "⒬" U24AC # PARENTHESIZED LATIN SMALL LETTER Q
-<Multi_key> <parenleft> <period> <r> <parenright> : "⒭" U24AD # PARENTHESIZED LATIN SMALL LETTER R
-<Multi_key> <parenleft> <period> <s> <parenright> : "⒮" U24AE # PARENTHESIZED LATIN SMALL LETTER S
-<Multi_key> <parenleft> <period> <t> <parenright> : "⒯" U24AF # PARENTHESIZED LATIN SMALL LETTER T
-<Multi_key> <parenleft> <period> <u> <parenright> : "⒰" U24B0 # PARENTHESIZED LATIN SMALL LETTER U
-<Multi_key> <parenleft> <period> <v> <parenright> : "⒱" U24B1 # PARENTHESIZED LATIN SMALL LETTER V
-<Multi_key> <parenleft> <period> <w> <parenright> : "⒲" U24B2 # PARENTHESIZED LATIN SMALL LETTER W
-<Multi_key> <parenleft> <period> <x> <parenright> : "⒳" U24B3 # PARENTHESIZED LATIN SMALL LETTER X
-<Multi_key> <parenleft> <period> <y> <parenright> : "⒴" U24B4 # PARENTHESIZED LATIN SMALL LETTER Y
-<Multi_key> <parenleft> <period> <z> <parenright> : "⒵" U24B5 # PARENTHESIZED LATIN SMALL LETTER Z
-<Multi_key> <parenleft> <period> <A> <parenright> : "🄐" U1F110 # PARENTHESIZED LATIN CAPITAL LETTER A
-<Multi_key> <parenleft> <period> <B> <parenright> : "🄑" U1F111 # PARENTHESIZED LATIN CAPITAL LETTER B
-<Multi_key> <parenleft> <period> <C> <parenright> : "🄒" U1F112 # PARENTHESIZED LATIN CAPITAL LETTER C
-<Multi_key> <parenleft> <period> <D> <parenright> : "🄓" U1F113 # PARENTHESIZED LATIN CAPITAL LETTER D
-<Multi_key> <parenleft> <period> <E> <parenright> : "🄔" U1F114 # PARENTHESIZED LATIN CAPITAL LETTER E
-<Multi_key> <parenleft> <period> <F> <parenright> : "🄕" U1F115 # PARENTHESIZED LATIN CAPITAL LETTER F
-<Multi_key> <parenleft> <period> <G> <parenright> : "🄖" U1F116 # PARENTHESIZED LATIN CAPITAL LETTER G
-<Multi_key> <parenleft> <period> <H> <parenright> : "🄗" U1F117 # PARENTHESIZED LATIN CAPITAL LETTER H
-<Multi_key> <parenleft> <period> <I> <parenright> : "🄘" U1F118 # PARENTHESIZED LATIN CAPITAL LETTER I
-<Multi_key> <parenleft> <period> <J> <parenright> : "🄙" U1F119 # PARENTHESIZED LATIN CAPITAL LETTER J
-<Multi_key> <parenleft> <period> <K> <parenright> : "🄚" U1F11A # PARENTHESIZED LATIN CAPITAL LETTER K
-<Multi_key> <parenleft> <period> <L> <parenright> : "🄛" U1F11B # PARENTHESIZED LATIN CAPITAL LETTER L
-<Multi_key> <parenleft> <period> <M> <parenright> : "🄜" U1F11C # PARENTHESIZED LATIN CAPITAL LETTER M
-<Multi_key> <parenleft> <period> <N> <parenright> : "🄝" U1F11D # PARENTHESIZED LATIN CAPITAL LETTER N
-<Multi_key> <parenleft> <period> <O> <parenright> : "🄞" U1F11E # PARENTHESIZED LATIN CAPITAL LETTER O
-<Multi_key> <parenleft> <period> <P> <parenright> : "🄟" U1F11F # PARENTHESIZED LATIN CAPITAL LETTER P
-<Multi_key> <parenleft> <period> <Q> <parenright> : "🄠" U1F120 # PARENTHESIZED LATIN CAPITAL LETTER Q
-<Multi_key> <parenleft> <period> <R> <parenright> : "🄡" U1F121 # PARENTHESIZED LATIN CAPITAL LETTER R
-<Multi_key> <parenleft> <period> <S> <parenright> : "🄢" U1F122 # PARENTHESIZED LATIN CAPITAL LETTER S
-<Multi_key> <parenleft> <period> <T> <parenright> : "🄣" U1F123 # PARENTHESIZED LATIN CAPITAL LETTER T
-<Multi_key> <parenleft> <period> <U> <parenright> : "🄤" U1F124 # PARENTHESIZED LATIN CAPITAL LETTER U
-<Multi_key> <parenleft> <period> <V> <parenright> : "🄥" U1F125 # PARENTHESIZED LATIN CAPITAL LETTER V
-<Multi_key> <parenleft> <period> <W> <parenright> : "🄦" U1F126 # PARENTHESIZED LATIN CAPITAL LETTER W
-<Multi_key> <parenleft> <period> <X> <parenright> : "🄧" U1F127 # PARENTHESIZED LATIN CAPITAL LETTER X
-<Multi_key> <parenleft> <period> <Y> <parenright> : "🄨" U1F128 # PARENTHESIZED LATIN CAPITAL LETTER Y
-<Multi_key> <parenleft> <period> <Z> <parenright> : "🄩" U1F129 # PARENTHESIZED LATIN CAPITAL LETTER Z
-<Multi_key> <period> <1> <period> : "⒈" U2488 # DIGIT ONE FULL STOP
-<Multi_key> <period> <2> <period> : "⒉" U2489 # DIGIT TWO FULL STOP
-<Multi_key> <period> <3> <period> : "⒊" U248A # DIGIT THREE FULL STOP
-<Multi_key> <period> <4> <period> : "⒋" U248B # DIGIT FOUR FULL STOP
-<Multi_key> <period> <5> <period> : "⒌" U248C # DIGIT FIVE FULL STOP
-<Multi_key> <period> <6> <period> : "⒍" U248D # DIGIT SIX FULL STOP
-<Multi_key> <period> <7> <period> : "⒎" U248E # DIGIT SEVEN FULL STOP
-<Multi_key> <period> <8> <period> : "⒏" U248F # DIGIT EIGHT FULL STOP
-<Multi_key> <period> <9> <period> : "⒐" U2490 # DIGIT NINE FULL STOP
-<Multi_key> <period> <1> <0> <period> : "⒑" U2491 # NUMBER TEN FULL STOP
-<Multi_key> <period> <1> <1> <period> : "⒒" U2492 # NUMBER ELEVEN FULL STOP
-<Multi_key> <period> <1> <2> <period> : "⒓" U2493 # NUMBER TWELVE FULL STOP
-<Multi_key> <period> <1> <3> <period> : "⒔" U2494 # NUMBER THIRTEEN FULL STOP
-<Multi_key> <period> <1> <4> <period> : "⒕" U2495 # NUMBER FOURTEEN FULL STOP
-<Multi_key> <period> <1> <5> <period> : "⒖" U2496 # NUMBER FIFTEEN FULL STOP
-<Multi_key> <period> <1> <6> <period> : "⒗" U2497 # NUMBER SIXTEEN FULL STOP
-<Multi_key> <period> <1> <7> <period> : "⒘" U2498 # NUMBER SEVENTEEN FULL STOP
-<Multi_key> <period> <1> <8> <period> : "⒙" U2499 # NUMBER EIGHTEEN FULL STOP
-<Multi_key> <period> <1> <9> <period> : "⒚" U249A # NUMBER NINETEEN FULL STOP
-<Multi_key> <period> <2> <0> <period> : "⒛" U249B # NUMBER TWENTY FULL STOP
-<Multi_key> <period> <0> <period> : "🄀" U1F100 # DIGIT ZERO FULL STOP
-<Multi_key> <parenleft> <B> <1> <1> <parenright> : "⓫" U24EB # NEGATIVE CIRCLED NUMBER ELEVEN
-<Multi_key> <parenleft> <B> <1> <2> <parenright> : "⓬" U24EC # NEGATIVE CIRCLED NUMBER TWELVE
-<Multi_key> <parenleft> <B> <1> <3> <parenright> : "⓭" U24ED # NEGATIVE CIRCLED NUMBER THIRTEEN
-<Multi_key> <parenleft> <B> <1> <4> <parenright> : "⓮" U24EE # NEGATIVE CIRCLED NUMBER FOURTEEN
-<Multi_key> <parenleft> <B> <1> <5> <parenright> : "⓯" U24EF # NEGATIVE CIRCLED NUMBER FIFTEEN
-<Multi_key> <parenleft> <B> <1> <6> <parenright> : "⓰" U24F0 # NEGATIVE CIRCLED NUMBER SIXTEEN
-<Multi_key> <parenleft> <B> <1> <7> <parenright> : "⓱" U24F1 # NEGATIVE CIRCLED NUMBER SEVENTEEN
-<Multi_key> <parenleft> <B> <1> <8> <parenright> : "⓲" U24F2 # NEGATIVE CIRCLED NUMBER EIGHTEEN
-<Multi_key> <parenleft> <B> <1> <9> <parenright> : "⓳" U24F3 # NEGATIVE CIRCLED NUMBER NINETEEN
-<Multi_key> <parenleft> <B> <2> <0> <parenright> : "⓴" U24F4 # NEGATIVE CIRCLED NUMBER TWENTY
-<Multi_key> <parenleft> <B> <0> <parenright> : "⓿" U24FF # NEGATIVE CIRCLED DIGIT ZERO
-<Multi_key> <parenleft> <B> <1> <parenright> : "❶" U2776 # DINGBAT NEGATIVE CIRCLED DIGIT ONE
-<Multi_key> <parenleft> <B> <2> <parenright> : "❷" U2777 # DINGBAT NEGATIVE CIRCLED DIGIT TWO
-<Multi_key> <parenleft> <B> <3> <parenright> : "❸" U2778 # DINGBAT NEGATIVE CIRCLED DIGIT THREE
-<Multi_key> <parenleft> <B> <4> <parenright> : "❹" U2779 # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-<Multi_key> <parenleft> <B> <5> <parenright> : "❺" U277A # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-<Multi_key> <parenleft> <B> <6> <parenright> : "❻" U277B # DINGBAT NEGATIVE CIRCLED DIGIT SIX
-<Multi_key> <parenleft> <B> <7> <parenright> : "❼" U277C # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-<Multi_key> <parenleft> <B> <8> <parenright> : "❽" U277D # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-<Multi_key> <parenleft> <B> <9> <parenright> : "❾" U277E # DINGBAT NEGATIVE CIRCLED DIGIT NINE
-<Multi_key> <parenleft> <B> <1> <0> <parenright> : "❿" U277F # DINGBAT NEGATIVE CIRCLED NUMBER TEN
-<Multi_key> <parenleft> <B> <A> <parenright> : "🅐" U1F150 # NEGATIVE CIRCLED LATIN CAPITAL LETTER A
-<Multi_key> <parenleft> <B> <B> <parenright> : "🅑" U1F151 # NEGATIVE CIRCLED LATIN CAPITAL LETTER B
-<Multi_key> <parenleft> <B> <C> <parenright> : "🅒" U1F152 # NEGATIVE CIRCLED LATIN CAPITAL LETTER C
-<Multi_key> <parenleft> <B> <D> <parenright> : "🅓" U1F153 # NEGATIVE CIRCLED LATIN CAPITAL LETTER D
-<Multi_key> <parenleft> <B> <E> <parenright> : "🅔" U1F154 # NEGATIVE CIRCLED LATIN CAPITAL LETTER E
-<Multi_key> <parenleft> <B> <F> <parenright> : "🅕" U1F155 # NEGATIVE CIRCLED LATIN CAPITAL LETTER F
-<Multi_key> <parenleft> <B> <G> <parenright> : "🅖" U1F156 # NEGATIVE CIRCLED LATIN CAPITAL LETTER G
-<Multi_key> <parenleft> <B> <H> <parenright> : "🅗" U1F157 # NEGATIVE CIRCLED LATIN CAPITAL LETTER H
-<Multi_key> <parenleft> <B> <I> <parenright> : "🅘" U1F158 # NEGATIVE CIRCLED LATIN CAPITAL LETTER I
-<Multi_key> <parenleft> <B> <J> <parenright> : "🅙" U1F159 # NEGATIVE CIRCLED LATIN CAPITAL LETTER J
-<Multi_key> <parenleft> <B> <K> <parenright> : "🅚" U1F15A # NEGATIVE CIRCLED LATIN CAPITAL LETTER K
-<Multi_key> <parenleft> <B> <L> <parenright> : "🅛" U1F15B # NEGATIVE CIRCLED LATIN CAPITAL LETTER L
-<Multi_key> <parenleft> <B> <M> <parenright> : "🅜" U1F15C # NEGATIVE CIRCLED LATIN CAPITAL LETTER M
-<Multi_key> <parenleft> <B> <N> <parenright> : "🅝" U1F15D # NEGATIVE CIRCLED LATIN CAPITAL LETTER N
-<Multi_key> <parenleft> <B> <O> <parenright> : "🅞" U1F15E # NEGATIVE CIRCLED LATIN CAPITAL LETTER O
-<Multi_key> <parenleft> <B> <P> <parenright> : "🅟" U1F15F # NEGATIVE CIRCLED LATIN CAPITAL LETTER P
-<Multi_key> <parenleft> <B> <Q> <parenright> : "🅠" U1F160 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Q
-<Multi_key> <parenleft> <B> <R> <parenright> : "🅡" U1F161 # NEGATIVE CIRCLED LATIN CAPITAL LETTER R
-<Multi_key> <parenleft> <B> <S> <parenright> : "🅢" U1F162 # NEGATIVE CIRCLED LATIN CAPITAL LETTER S
-<Multi_key> <parenleft> <B> <T> <parenright> : "🅣" U1F163 # NEGATIVE CIRCLED LATIN CAPITAL LETTER T
-<Multi_key> <parenleft> <B> <U> <parenright> : "🅤" U1F164 # NEGATIVE CIRCLED LATIN CAPITAL LETTER U
-<Multi_key> <parenleft> <B> <V> <parenright> : "🅥" U1F165 # NEGATIVE CIRCLED LATIN CAPITAL LETTER V
-<Multi_key> <parenleft> <B> <W> <parenright> : "🅦" U1F166 # NEGATIVE CIRCLED LATIN CAPITAL LETTER W
-<Multi_key> <parenleft> <B> <X> <parenright> : "🅧" U1F167 # NEGATIVE CIRCLED LATIN CAPITAL LETTER X
-<Multi_key> <parenleft> <B> <Y> <parenright> : "🅨" U1F168 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Y
-<Multi_key> <parenleft> <B> <Z> <parenright> : "🅩" U1F169 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-<Multi_key> <bracketleft> <B> <a> <bracketright> : "🅰" U1F170 # NEGATIVE SQUARED LATIN CAPITAL LETTER A
-<Multi_key> <bracketleft> <B> <b> <bracketright> : "🅱" U1F171 # NEGATIVE SQUARED LATIN CAPITAL LETTER B
-<Multi_key> <bracketleft> <B> <c> <bracketright> : "🅲" U1F172 # NEGATIVE SQUARED LATIN CAPITAL LETTER C
-<Multi_key> <bracketleft> <B> <d> <bracketright> : "🅳" U1F173 # NEGATIVE SQUARED LATIN CAPITAL LETTER D
-<Multi_key> <bracketleft> <B> <e> <bracketright> : "🅴" U1F174 # NEGATIVE SQUARED LATIN CAPITAL LETTER E
-<Multi_key> <bracketleft> <B> <f> <bracketright> : "🅵" U1F175 # NEGATIVE SQUARED LATIN CAPITAL LETTER F
-<Multi_key> <bracketleft> <B> <g> <bracketright> : "🅶" U1F176 # NEGATIVE SQUARED LATIN CAPITAL LETTER G
-<Multi_key> <bracketleft> <B> <h> <bracketright> : "🅷" U1F177 # NEGATIVE SQUARED LATIN CAPITAL LETTER H
-<Multi_key> <bracketleft> <B> <i> <bracketright> : "🅸" U1F178 # NEGATIVE SQUARED LATIN CAPITAL LETTER I
-<Multi_key> <bracketleft> <B> <j> <bracketright> : "🅹" U1F179 # NEGATIVE SQUARED LATIN CAPITAL LETTER J
-<Multi_key> <bracketleft> <B> <k> <bracketright> : "🅺" U1F17A # NEGATIVE SQUARED LATIN CAPITAL LETTER K
-<Multi_key> <bracketleft> <B> <l> <bracketright> : "🅻" U1F17B # NEGATIVE SQUARED LATIN CAPITAL LETTER L
-<Multi_key> <bracketleft> <B> <m> <bracketright> : "🅼" U1F17C # NEGATIVE SQUARED LATIN CAPITAL LETTER M
-<Multi_key> <bracketleft> <B> <n> <bracketright> : "🅽" U1F17D # NEGATIVE SQUARED LATIN CAPITAL LETTER N
-<Multi_key> <bracketleft> <B> <o> <bracketright> : "🅾" U1F17E # NEGATIVE SQUARED LATIN CAPITAL LETTER O
-<Multi_key> <bracketleft> <B> <p> <bracketright> : "🅿" U1F17F # NEGATIVE SQUARED LATIN CAPITAL LETTER P
-<Multi_key> <bracketleft> <B> <q> <bracketright> : "🆀" U1F180 # NEGATIVE SQUARED LATIN CAPITAL LETTER Q
-<Multi_key> <bracketleft> <B> <r> <bracketright> : "🆁" U1F181 # NEGATIVE SQUARED LATIN CAPITAL LETTER R
-<Multi_key> <bracketleft> <B> <s> <bracketright> : "🆂" U1F182 # NEGATIVE SQUARED LATIN CAPITAL LETTER S
-<Multi_key> <bracketleft> <B> <t> <bracketright> : "🆃" U1F183 # NEGATIVE SQUARED LATIN CAPITAL LETTER T
-<Multi_key> <bracketleft> <B> <u> <bracketright> : "🆄" U1F184 # NEGATIVE SQUARED LATIN CAPITAL LETTER U
-<Multi_key> <bracketleft> <B> <v> <bracketright> : "🆅" U1F185 # NEGATIVE SQUARED LATIN CAPITAL LETTER V
-<Multi_key> <bracketleft> <B> <w> <bracketright> : "🆆" U1F186 # NEGATIVE SQUARED LATIN CAPITAL LETTER W
-<Multi_key> <bracketleft> <B> <x> <bracketright> : "🆇" U1F187 # NEGATIVE SQUARED LATIN CAPITAL LETTER X
-<Multi_key> <bracketleft> <B> <y> <bracketright> : "🆈" U1F188 # NEGATIVE SQUARED LATIN CAPITAL LETTER Y
-<Multi_key> <bracketleft> <B> <z> <bracketright> : "🆉" U1F189 # NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-<Multi_key> <bracketleft> <B> <W> <C> <bracketright> : "🆏" U1F18F # NEGATIVE SQUARED WC
-### Using <parenleft> <parenleft> ... <parenright> <parenright> conflicts
-### with system entries. Using the *letter* O.
-<Multi_key> <parenleft> <O> <1> <parenright> : "⓵" U24F5 # DOUBLE CIRCLED DIGIT ONE
-<Multi_key> <parenleft> <O> <2> <parenright> : "⓶" U24F6 # DOUBLE CIRCLED DIGIT TWO
-<Multi_key> <parenleft> <O> <3> <parenright> : "⓷" U24F7 # DOUBLE CIRCLED DIGIT THREE
-<Multi_key> <parenleft> <O> <4> <parenright> : "⓸" U24F8 # DOUBLE CIRCLED DIGIT FOUR
-<Multi_key> <parenleft> <O> <5> <parenright> : "⓹" U24F9 # DOUBLE CIRCLED DIGIT FIVE
-<Multi_key> <parenleft> <O> <6> <parenright> : "⓺" U24FA # DOUBLE CIRCLED DIGIT SIX
-<Multi_key> <parenleft> <O> <7> <parenright> : "⓻" U24FB # DOUBLE CIRCLED DIGIT SEVEN
-<Multi_key> <parenleft> <O> <8> <parenright> : "⓼" U24FC # DOUBLE CIRCLED DIGIT EIGHT
-<Multi_key> <parenleft> <O> <9> <parenright> : "⓽" U24FD # DOUBLE CIRCLED DIGIT NINE
-<Multi_key> <parenleft> <O> <1> <0> <parenright> : "⓾" U24FE # DOUBLE CIRCLED NUMBER TEN
users/vincent/desktop/xorg/user-dirs.dirs
@@ -1,8 +0,0 @@
-XDG_DESKTOP_DIR="$HOME/desktop"
-XDG_DOCUMENTS_DIR="$HOME/desktop/documents"
-XDG_DOWNLOAD_DIR="$HOME/desktop/downloads"
-XDG_MUSIC_DIR="$HOME/desktop/music"
-XDG_PICTURES_DIR="$HOME/desktop/pictures"
-XDG_PUBLICSHARE_DIR="$HOME/"
-XDG_TEMPLATES_DIR="$HOME/"
-XDG_VIDEOS_DIR="$HOME/desktop/videos"
users/vincent/desktop/xorg/XCompose
@@ -1,1331 +0,0 @@
-# for Emacs: -*- coding: utf-8 -*-
-include "%L"
-include ".config/xorg/emoji.compose"
-include ".config/xorg/parens.compose"
-include ".config/xorg/modletters.compose"
-
-# def emit(keys, codepoint, word):
-# print ('<Multi_key> %s <period>\t: "%s"\tU%04X\t\t# CIRCLED DIGIT %s' %
-# (keys, unichr(codepoint), codepoint, word)).encode('utf8')
-# numbers = 'one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty'
-# words = numbers.upper().split()
-# emit('<0>', 0x24EA, "ZERO")
-# for num, word in zip(range(1, 21), words):
-# emit(' '.join("<%s>" % char for char in str(num)), 0x245f + num, word)
-
-# Custom additions: Typography
-<Multi_key> <period> <period> : "…" U2026 # HORIZONTAL ELLIPSIS
-<Multi_key> <v> <period> <period> : "⋮" U22EE # VERTICAL ELLIPSIS
-<Multi_key> <c> <period> <period> : "⋯" U22EF # MIDLINE HORIZONTAL ELLIPSIS
-<Multi_key> <slash> <period> <period> : "⋰" U22F0 # UP RIGHT DIAGONAL ELLIPSIS
-# To avoid conflict with \. for combining dot above.
-#<Multi_key> <backslash> <period> <period> : "⋱" U22F1 # DOWN RIGHT DIAGONAL ELLIPSIS
-<Multi_key> <period> <backslash> <period> : "⋱" U22F1 # DOWN RIGHT DIAGONAL ELLIPSIS
-# Will we someday regret this, wanting 2. for ⒉ ?
-<Multi_key> <2> <period> : "‥" U2025 # TWO DOT LEADER
-# This should not be needed.
-#<Multi_key> <1> <period> : "․" U2024 # ONE DOT LEADER
-<Multi_key> <c> <1> <period> : "·" U00B7 # MIDDLE DOT (maybe I can remember the keystroke better?
-<Multi_key> <period> <slash> <period> : "⁒" U2052 # COMMERCIAL MINUS SIGN
-### or && ?
-<Multi_key> <ampersand> <at> : "⅋" U214B # TURNED AMPERSAND
-# Printable sign for space. But is \<space> too useful a key combo to use
-# for this?
-<Multi_key> <backslash> <space> : "␣" U2423 # OPEN BOX
-# These two are already present for me:
-# <Multi_key> <minus> <minus> <minus> : "—" U2014 # EM DASH
-# <Multi_key> <minus> <minus> <period> : "–" U2013 # EN DASH
-<Multi_key> <minus> <minus> <space> : "– " # EN DASH (followed by space)
-<Multi_key> <minus> <asciitilde> <minus> : "―" U2015 # HORIZONTAL BAR
-<Multi_key> <minus> <2> <M> : "⸺" U2E3A # TWO-EM DASH
-<Multi_key> <minus> <3> <M> : "⸻" U2E3B # THREE-EM DASH
-<Multi_key> <backslash> <minus> : "" U00AD # SOFT HYPHEN
-# This is the recommended typographical practice for em dashes in English.
-# Unfortunately, it doesn’t work out all that well in monospace fonts,
-# where the thin spaces aren’t thin. But I think this is okay.
-# This conflicts with the default binding to “~”, which is potentially
-# a problem for non-American keyboards.
-<Multi_key> <space> <minus> : " — " # EM DASH surrounded by THIN SPACEs.
-
-
-# Quotation marks.
-<Multi_key> <comma> <space> : "‚" U201A # SINGLE LOW-9 QUOTATION MARK
-<Multi_key> <comma> <comma> : "„" U201E # DOUBLE LOW-9 QUOTATION MARK
-<Multi_key> <less> <comma> <comma> : "⹂" U2E42 # DOUBLE LOW-REVERSED-9 QUOTATION MARK
-<Multi_key> <apostrophe> <space> : "’" U2019 # RIGHT SINGLE QUOTATION MARK
-<Multi_key> <apostrophe> <apostrophe> : "”" U201D # RIGHT DOUBLE QUOTATION MARK
-<Multi_key> <grave> <space> : "‘" U2018 # LEFT SINGLE QUOTATION MARK
-<Multi_key> <grave> <grave> : "“" U201C # LEFT DOUBLE QUOTATION MARK
-<Multi_key> <6> <apostrophe> : "‘" U2018 # LEFT SINGLE QUOTATION MARK (high 6)
-<Multi_key> <6> <quotedbl> : "“" U201C # LEFT DOUBLE QUOTATION MARK (66)
-<Multi_key> <9> <apostrophe> : "’" U2019 # RIGHT SINGLE QUOTATION MARK (high 9)
-<Multi_key> <9> <quotedbl> : "”" U201D # RIGHT DOUBLE QUOTATION MARK (99)
-<Multi_key> <less> <9> <apostrophe> : "‛" U201B # SINGLE HIGH-REVERSED-9 QUOTATION MARK
-<Multi_key> <less> <9> <quotedbl> : "‟" U201F # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-<Multi_key> <comma> <apostrophe> : "‚" U201A # SINGLE LOW-9 QUOTATION MARK (quote resembling a comma)
-<Multi_key> <comma> <quotedbl> : "„" U201E # DOUBLE LOW-9 QUOTATION MARK
-
-# Convenience shortcuts for quotation marks.
-<Multi_key> <space> <quotedbl> : " “" # space followed by LEFT DOUBLE QUOTATION MARK
-<Multi_key> <quotedbl> <space> : "” " # RIGHT DOUBLE QUOTATION MARK followed by space
-<Multi_key> <space> <apostrophe> : " ‘" # space followed by LEFT SINGLE QUOTATION MARK
-# Unfortunately <apostrophe> <space> is, asymmetrically, just "’". Whatever.
-<Multi_key> <n> <t> : "n’t " # Apostrophized English “not.”
-# Some more English shortcuts:
-<Multi_key> <space> <t> : " the "
-<Multi_key> <space> <T> : " The "
-<Multi_key> <space> <a> : " and "
-<Multi_key> <i> <m> : " I’m "
-<Multi_key> <v> <e> : "’ve "
-
-<Multi_key> <comma> <at> : "⸲" U2E32 # TURNED COMMA
-# Conflicts with system def? (·)
-<Multi_key> <period> <asciicircum> : "⸳" U2E33 # RAISED DOT
-<Multi_key> <period> <asciitilde> : "⸳" U2E33 # RAISED DOT
-<Multi_key> <comma> <asciicircum> : "⸴" U2E34 # RAISED COMMA
-<Multi_key> <semicolon> <at> : "⸵" U2E35 # TURNED SEMICOLON
-# Convlicts with system def? (⍭)
-<Multi_key> <asciitilde> <bar> : "ⸯ" U2E2F # VERTICAL TILDE
-<Multi_key> <asciicircum> <bar> : "ⸯ" U2E2F # VERTICAL TILDE
-<Multi_key> <minus> <equal> : "⹀" U2E40 # DOUBLE HYPHEN
-<Multi_key> <comma> <less> : "⹁" U2E41 # REVERSED COMMA
-<Multi_key> <less> <bar> : "↵" U21B5 # DOWNWARDS ARROW WITH CORNER LEFTWARDS
-# The bullet was <o> <period>, but it clashes with ꙭ
-<Multi_key> <asterisk> <1> : "•" U2022 # BULLET
-# By default <Multi_key> <period> <period> does this, but we broke that with the ... binding.
-<Multi_key> <o> <underscore> : "⁃" U2043 # HYPHEN BULLET
-<Multi_key> <o> <comma> : "·" periodcentered # MIDDLE DOT
-# I don’t use this nearly as often as the em-dash sequence I’ve remapped it to:
-#<Multi_key> <space> <minus> : "‑" U2011 # NON-BREAKING HYPHEN
-# Already present for me:
-# <Multi_key> <space> <space> : " " U00A0 # NO-BREAK SPACE
-# Narrow no-break space, needed for some Latin languages like French
-<Multi_key> <space> <n> : " " U202f # NARROW NO-BREAK SPACE
-# Do we want/need these?
-<Multi_key> <d> <a> <g> : "†" U2020 # DAGGER
-<Multi_key> <d> <d> <a> <g> : "‡" U2021 # DOUBLE DAGGER
-# We used to have THIN SPACE as <space> <apostrophe>, but now that’s remapped
-# to " ‘", for conveniently enclosing things in proper single-quotes.
-<Multi_key> <backslash> <comma> : " " U2009 # THIN SPACE
-<Multi_key> <s> <e> <c> : "§" U00A7 # SECTION SIGN
-# It's in the Asian section, but it's a general-purpose punctuation:
-<Multi_key> <quotedbl> <quotedbl> : "〃" U3003 # DITTO MARK
-# Working with the pattern from FLOOR/CEILING
-<Multi_key> <7> <asciicircum> <bracketleft> : "⸢" U2E22 # TOP LEFT HALF BRACKET
-<Multi_key> <7> <asciicircum> <bracketright> : "⸣" U2E23 # TOP RIGHT HALF BRACKET
-<Multi_key> <L> <underscore> <bracketleft> : "⸤" U2E24 # BOTTOM LEFT HALF BRACKET
-<Multi_key> <L> <underscore> <bracketright> : "⸥" U2E25 # BOTTOM RIGHT HALF BRACKET
-# Consider <7> <less>/<greater> for ⸂⸃ maybe? <S> and <slash> for ⸉⸊⸌⸍ ...?
-# I guess we can get by with sub/superset for ⸦⸧.
-
-<Multi_key> <minus> <less> : "←" leftarrow # LEFTWARDS ARROW
-<Multi_key> <minus> <asciicircum> : "↑" uparrow # UPWARDS ARROW
-<Multi_key> <minus> <greater> : "→" rightarrow # RIGHTWARDS ARROW
-<Multi_key> <minus> <v> : "↓" downarrow # DOWNWARDS ARROW
-<Multi_key> <less> <minus> <greater> : "↔" U2194 # LEFT RIGHT ARROW (kragen's)
-
-<Multi_key> <Left> <Left> : "←" leftarrow # LEFTWARDS ARROW
-<Multi_key> <Up> <Up> : "↑" uparrow # UPWARDS ARROW
-<Multi_key> <Right> <Right> : "→" rightarrow # RIGHTWARDS ARROW
-<Multi_key> <Down> <Down> : "↓" downarrow # DOWNWARDS ARROW
-<Multi_key> <Left> <Right> : "↔" U2194 # LEFT RIGHT ARROW (kragen's)
-<Multi_key> <Right> <Left> : "↔" U2194 # LEFT RIGHT ARROW (kragen's)
-<Multi_key> <Up> <Down> : "↕" U2195 # UP DOWN ARROW (kragen's)
-<Multi_key> <Up> <ampersand> <Down> : "⇵" U21F5 # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
-<Multi_key> <Down> <Left> : "↵" U21B5 # DOWNWARDS ARROW WITH CORNER LEFTWARDS
-<Multi_key> <Left> <o> : "⟲" U27F2 # ANTICLOCKWISE GAPPED CIRCLE ARROW
-<Multi_key> <Right> <o> : "⟳" U27F3 # CLOCKWISE GAPPED CIRCLE ARROW
-<Multi_key> <Left> <c> : "↺" U21BA # ANTICLOCKWISE OPEN CIRCLE ARROW
-<Multi_key> <Right> <c> : "↻" U21BB # CLOCKWISE OPEN CIRCLE ARROW
-<Multi_key> <Left> <asciitilde> : "⇜" U21DC # LEFTWARDS SQUIGGLE ARROW
-<Multi_key> <Right> <asciitilde> : "⇝" U21DD # RIGHTWARDS SQUIGGLE ARROW
-<Multi_key> <Left> <bar> : "⇤" U21E4 # LEFTWARDS ARROW TO BAR
-<Multi_key> <Right> <bar> : "⇥" U21E5 # RIGHTWARDS ARROW TO BAR
-<Multi_key> <Left> <minus> : "⇠" U21E0 # LEFTWARDS DASHED ARROW
-<Multi_key> <Up> <minus> : "⇡" U21E1 # UPWARDS DASHED ARROW
-<Multi_key> <Right> <minus> : "⇢" U21E2 # RIGHTWARDS DASHED ARROW
-<Multi_key> <Down> <minus> : "⇣" U21E3 # DOWNWARDS DASHED ARROW
-
-# Arrow keys don't always work: some apps trap them for cursor control and
-# other boring things. The arrow symbols have alternate keystrokes. Do
-# we need others for these printer's fists? If so, what? The -= and =-
-# we had before are not necessarily the best choices.
-<Multi_key> <F> <Left> : "☚" U261A # BLACK LEFT POINTING INDEX
-<Multi_key> <F> <Right> : "☛" U261B # BLACK RIGHT POINTING INDEX
-<Multi_key> <f> <Left> : "☜" U261C # WHITE LEFT POINTING INDEX
-<Multi_key> <f> <Up> : "☝" U261D # WHITE UP POINTING INDEX
-<Multi_key> <f> <Right> : "☞" U261E # WHITE RIGHT POINTING INDEX
-<Multi_key> <f> <Down> : "☟" U261F # WHITE DOWN POINTING INDEX
-<Multi_key> <f> <v> : "✌" U270C # VICTORY HAND
-<Multi_key> <f> <w> : "✍" U270D # WRITING HAND
-<Multi_key> <f> <p> <Down> : "✎" U270E # LOWER RIGHT PENCIL
-<Multi_key> <f> <p> <Right> : "✏" U270F # PENCIL
-<Multi_key> <f> <p> <Up> : "✐" U2710 # UPPER RIGHT PENCIL
-
-# For some logical statements. I prefer doubled arrows for implication.
-<Multi_key> <equal> <greater> : "⇒" U21D2 # RIGHTWARDS DOUBLE ARROW
-<Multi_key> <equal> <less> : "⇐" U21D0 # LEFTWARDS DOUBLE ARROW
-<Multi_key> <less> <minus> <equal> <greater> : "⇔" U21D4 # LEFT RIGHT DOUBLE ARROW
-<Multi_key> <equal> <Right> <Right> : "⇒" U21D2 # RIGHTWARDS DOUBLE ARROW
-<Multi_key> <equal> <Left> <Left> : "⇐" U21D0 # LEFTWARDS DOUBLE ARROW
-<Multi_key> <equal> <Left> <Right> : "⇔" U21D4 # LEFT RIGHT DOUBLE ARROW
-<Multi_key> <equal> <Right> <Left> : "⇔" U21D4 # LEFT RIGHT DOUBLE ARROW
-<Multi_key> <equal> <Up> <Up> : "⇑" U21D1 # UPWARDS DOUBLE ARROW
-<Multi_key> <equal> <Down> <Down> : "⇓" U21D3 # DOWNWARDS DOUBLE ARROW
-<Multi_key> <equal> <Up> <Down> : "⇕" U21D5 # UP DOWN DOUBLE ARROW
-<Multi_key> <equal> <Down> <Left> : "⏎" U23CE # RETURN SYMBOL
-# These are just too cool-looking not to have (if your font supports them)
-<Multi_key> <equal> <period> <equal> : "⸎" U2E0E # EDITORIAL CORONIS
-<Multi_key> <Multi_key> <p> <a> <l> <m> : "⸙" U2E19 # PALM BRANCH
-<Multi_key> <Multi_key> <b> <r> <a> <n> <c> <h>: "⸙" U2E19 # PALM BRANCH
-
-
-<Multi_key> <f> <f> : "ff" UFB00 # LATIN SMALL LIGATURE FF
-<Multi_key> <f> <i> : "fi" UFB01 # LATIN SMALL LIGATURE FI
-<Multi_key> <F> <i> : "ffi" UFB03 # LATIN SMALL LIGATURE FFI
-<Multi_key> <f> <l> : "fl" UFB02 # LATIN SMALL LIGATURE FL
-<Multi_key> <F> <l> : "ffl" UFB04 # LATIN SMALL LIGATURE FFL
-<Multi_key> <s> <t> : "st" UFB06 # LATIN SMALL LIGATURE ST
-<Multi_key> <f> <t> : "ſt" UFB05 # LATIN SMALL LIGATURE LONG S T
-# allow me still to use my ſ key, okay?
-<Multi_key> <U017F> <t> : "ſt" UFB05 # LATIN SMALL LIGATURE LONG S T
-# ß is already available as <s><s> I think. But now it comes in industrial size!
-<Multi_key> <S> <S> : "ẞ" U1E9E # LATIN CAPITAL LETTER SHARP S
-
-# Eventually we'll have to look over the really crazy-cakes Latin letters
-# they're adding as "mediævalist extensions"
-# ꜢꜣꜤꜥ for the Egyptologists, Ꝏꝏ because they're cꝏl... Maybe some others.
-# Can't do <o> <o> for ꝏ though, since that's already °.
-# Epigraphics should not be missed:
-<Multi_key> <F> <less> : "ꟻ" UA7FB # LATIN EPIGRAPHIC LETTER REVERSED F
-<Multi_key> <P> <less> : "ꟼ" UA7FC # LATIN EPIGRAPHIC LETTER REVERSED P
-<Multi_key> <F> <BackSpace> : "ꟻ" UA7FB # LATIN EPIGRAPHIC LETTER REVERSED F
-<Multi_key> <P> <BackSpace> : "ꟼ" UA7FC # LATIN EPIGRAPHIC LETTER REVERSED P
-<Multi_key> <M> <W> : "ꟽ" UA7FD # LATIN EPIGRAPHIC LETTER INVERTED M
-<Multi_key> <I> <bar> : "ꟾ" UA7FE # LATIN EPIGRAPHIC LETTER I LONGA
-<Multi_key> <M> <slash> : "ꟿ" UA7FF # LATIN EPIGRAPHIC LETTER ARCHAIC M
-# I'd been avoiding this because we already have ∃...
-# Hey, these, being *letters* can be used as identifiers in some languages...
-<Multi_key> <E> <less> : "Ǝ" U018E # LATIN CAPITAL LETTER REVERSED E
-<Multi_key> <E> <BackSpace> : "Ǝ" U018E # LATIN CAPITAL LETTER REVERSED E
-<Multi_key> <e> <less> : "ɘ" U0258 # LATIN SMALL LETTER REVERSED E
-<Multi_key> <e> <BackSpace> : "ɘ" U0258 # LATIN SMALL LETTER REVERSED E
-# Complete the set
-<Multi_key> <A> <less> : "Ɐ" U2C6F # LATIN CAPITAL LETTER TURNED A
-# These seem too long as keystrokes; any suggestions?
-# How about 2o?
-<Multi_key> <o> <ampersand> <o> : "ꝏ" UA74F # LATIN SMALL LETTER OO
-<Multi_key> <O> <ampersand> <O> : "Ꝏ" UA74E # LATIN CAPITAL LETTER OO
-<Multi_key> <2> <o> : "ꝏ" UA74F # LATIN SMALL LETTER OO
-<Multi_key> <2> <O> : "Ꝏ" UA74E # LATIN CAPITAL LETTER OO
-# Latin-D chars I'm particularly thinking about:
-# (side note: "I" has many referents in this file.)
-# ꜲꜳꜴꜵꜶꜷꜸꜹꜼꜽꝒꝓꝔꝕꝚꝛꝜꝝꝠꝡꝪꝫꝸ
-# The ligature pairs are so easy, might as well include them (probably
-# using ampersand though). P with flourish? Squirrel tail? How
-# pretty! I like the r and rum rotunda, and et actually has something
-# close to usefulness (it was very common for abbreviations, and is the
-# source of the "z" in abbreviations like oz. and viz.) Some others
-# are a little appealing too.
-
-<Multi_key> <A> <ampersand> <A> : "Ꜳ" UA732 # LATIN CAPITAL LETTER AA
-<Multi_key> <a> <ampersand> <a> : "ꜳ" UA733 # LATIN SMALL LETTER AA
-<Multi_key> <2> <A> : "Ꜳ" UA732 # LATIN CAPITAL LETTER AA
-<Multi_key> <2> <a> : "ꜳ" UA733 # LATIN SMALL LETTER AA
-<Multi_key> <A> <ampersand> <O> : "Ꜵ" UA734 # LATIN CAPITAL LETTER AO
-<Multi_key> <a> <ampersand> <o> : "ꜵ" UA735 # LATIN SMALL LETTER AO
-<Multi_key> <A> <ampersand> <U> : "Ꜷ" UA736 # LATIN CAPITAL LETTER AU
-<Multi_key> <a> <ampersand> <u> : "ꜷ" UA737 # LATIN SMALL LETTER AU
-<Multi_key> <A> <ampersand> <V> : "Ꜹ" UA738 # LATIN CAPITAL LETTER AV
-<Multi_key> <a> <ampersand> <v> : "ꜹ" UA739 # LATIN SMALL LETTER AV
-<Multi_key> <A> <ampersand> <Y> : "Ꜽ" UA73C # LATIN CAPITAL LETTER AY
-<Multi_key> <a> <ampersand> <y> : "ꜽ" UA73D # LATIN SMALL LETTER AY
-<Multi_key> <slash> <ampersand> <L> : "Ꝇ" UA746 # LATIN CAPITAL LETTER BROKEN L
-<Multi_key> <slash> <ampersand> <l> : "ꝇ" UA747 # LATIN SMALL LETTER BROKEN L
-# (See above for reason behind keystrokes)
-<Multi_key> <Z> <period> : "Ꝫ" UA76A # LATIN CAPITAL LETTER ET
-<Multi_key> <z> <period> : "ꝫ" UA76B # LATIN SMALL LETTER ET
-<Multi_key> <V> <ampersand> <Y> : "Ꝡ" UA760 # LATIN CAPITAL LETTER VY
-<Multi_key> <v> <ampersand> <y> : "ꝡ" UA761 # LATIN SMALL LETTER VY
-<Multi_key> <C> <Z> : "Ꝣ" UA762 # LATIN CAPITAL LETTER VISIGOTHIC Z
-<Multi_key> <c> <z> : "ꝣ" UA763 # LATIN SMALL LETTER VISIGOTHIC Z
-<Multi_key> <L> <ampersand> <L> : "Ỻ" U1EFA # LATIN CAPITAL LETTER MIDDLE-WELSH LL
-<Multi_key> <l> <ampersand> <l> : "ỻ" U1EFB # LATIN SMALL LETTER MIDDLE-WELSH LL
-<Multi_key> <V> <ampersand> <V> : "Ỽ" U1EFC # LATIN CAPITAL LETTER MIDDLE-WELSH V
-<Multi_key> <v> <ampersand> <v> : "ỽ" U1EFD # LATIN SMALL LETTER MIDDLE-WELSH V
-<Multi_key> <d> <ampersand> <b> : "ȸ" U0238 # LATIN SMALL LETTER DB DIGRAPH
-<Multi_key> <q> <ampersand> <p> : "ȹ" U0239 # LATIN SMALL LETTER QP DIGRAPH
-<Multi_key> <w> <y> : "ƿ" U01BF # LATIN LETTER WYNN
-<Multi_key> <W> <Y> : "Ƿ" U01F7 # LATIN CAPITAL LETTER WYNN
-<Multi_key> <O> <U> : "Ȣ" U0222 # LATIN CAPITAL LETTER OU
-<Multi_key> <o> <u> : "ȣ" U0223 # LATIN SMALL LETTER OU
-<Multi_key> <y> <r> : "Ʀ" U01A6 # LATIN LETTER YR
-
-# Custom additions: Mathematical symbols
-<Multi_key> <exclam> <equal> : "≠" U2260 # NOT EQUAL TO
-<Multi_key> <slash> <equal> : "≠" U2260 # NOT EQUAL TO
-<Multi_key> <less> <equal> : "≤" U2264 # LESS-THAN OR EQUAL TO
-<Multi_key> <greater> <equal> : "≥" U2265 # GREATER-THAN OR EQUAL TO
-<Multi_key> <exclam> <less> <greater> : "≸" U2278 # NEITHER LESS-THAN NOR GREATER-THAN
-# MUCH is usually enough for me. No need for VERY.
-<Multi_key> <plus> <less> : "≪" U226A # MUCH LESS-THAN
-<Multi_key> <plus> <greater> : "≫" U226B # MUCH GREATER-THAN
-# Damn. That makes this conflict with the standard plus plus -> #
-<Multi_key> <plus> <plus> <less> : "⋘" U22D8 # VERY MUCH LESS-THAN
-<Multi_key> <plus> <plus> <greater> : "⋙" U22D9 # VERY MUCH GREATER-THAN
-<Multi_key> <3> <greater> : "⋙" U22D9 # VERY MUCH GREATER-THAN
-<Multi_key> <3> <less> : "⋘" U22D8 # VERY MUCH LESS-THAN
-<Multi_key> <i> <n> : "∈" U2208 # ELEMENT OF
-<Multi_key> <exclam> <i> <n> : "∉" U2209 # NOT AN ELEMENT OF
-<Multi_key> <U2208> <slash> : "∉" U2209 # NOT AN ELEMENT OF (I have ∈ on my keyboard...)
-<Multi_key> <n> <i> : "∋" U220B # CONTAINS AS MEMBER (I hope this doesn't conflict)
-<Multi_key> <slash> <n> <i> : "∌" U220C # DOES NOT CONTAIN AS MEMBER
-# <exclam><n><i> would conflict, with <exclam> <n> for N WITH UNDERDOT, etc.
-<Multi_key> <U220B> <slash> : "∌" U220C # DOES NOT CONTAIN AS MEMBER
-<Multi_key> <asciitilde> <equal> : "≅" U2245 # APPROXIMATELY EQUAL TO (It actually means "congruent"!)
-<Multi_key> <equal> <question> : "≟" U225f # QUESTIONED EQUAL TO
-<Multi_key> <equal> <d> <e> <f> : "≝" U225D # EQUAL TO BY DEFINITION
-<Multi_key> <d> <e> <f> <equal> : "≝" U225D # EQUAL TO BY DEFINITION
-<Multi_key> <equal> <equal> : "≡" U2261 # IDENTICAL TO
-<Multi_key> <colon> <equal> : "≔" U2254 # COLON EQUALS
-<Multi_key> <equal> <colon> : "≕" U2255 # EQUALS COLON
-# Using <slash> conflicts.
-<Multi_key> <equal> <bar> <equal> : "≢" U2262 # NOT IDENTICAL TO
-# We already have ±
-<Multi_key> <minus> <plus> : "∓" U2213 # MINUS OR PLUS SIGN
-<Multi_key> <s> <q> : "√" U221A # SQUARE ROOT
-# keystrokes might not make the most sense, but you know what they mean...
-<Multi_key> <3> <s> <q> : "∛" U221B # CUBE ROOT
-<Multi_key> <4> <s> <q> : "∜" U221C # FOURTH ROOT
- # “(Note: I had put the backslash in position 5/15. It enabled the
- # ALGOL “and” to be “/\” and the “or” to be “\/”.)” --- Bob Bemer,
- # http://home.ccil.org/~remlaps/www.bobbemer.com/BRACES.HTM, quoting
- # himself in “A view of the history of the ISO character code”, 1972
-<Multi_key> <slash> <backslash> : "∧" U2227 # LOGICAL AND
-<Multi_key> <backslash> <slash> : "∨" U2228 # LOGICAL OR
-<Multi_key> <backslash> <underscore> <slash> : "⊻" U22BB # XOR
-<Multi_key> <minus> <comma> : "¬" U00AC # NOT SIGN
-<Multi_key> <Multi_key> <asterisk> <o> : "∘" U2218 # RING OPERATOR (function composition)
-<Multi_key> <Multi_key> <asterisk> <x> : "⨯" U2A2F # CROSS PRODUCT
-<Multi_key> <Multi_key> <asterisk> <period> : "⋅" U22C5 # DOT OPERATOR (dot product)
-<Multi_key> <0> <slash> : "∅" U2205 # EMPTY SET (thanks jsled!)
-<Multi_key> <slash> <0> : "∅" U2205 # EMPTY SET
-# I'm hoping { can work as a set mnemonic
-<Multi_key> <braceleft> <U> : "∪" U222A # UNION
-<Multi_key> <braceleft> <asciicircum> : "∩" U2229 # INTERSECTION
-<Multi_key> <braceleft> <parenleft> : "⊂" U2282 # SUBSET OF
-<Multi_key> <braceleft> <equal> <parenleft> : "⊆" U2286 # SUBSET OF OR EQUAL TO
-<Multi_key> <exclam> <braceleft> <parenleft> : "⊄" U2284 # NOT A SUBSET OF
-<Multi_key> <slash> <braceleft> <parenleft> : "⊄" U2284 # NOT A SUBSET OF
-<Multi_key> <braceleft> <parenright> : "⊃" U2283 # SUPERSET OF
-<Multi_key> <braceleft> <equal> <parenright> : "⊇" U2287 # SUPERSET OF OR EQUAL TO
-<Multi_key> <E> <E> : "∃" U2203 # THERE EXISTS
-# We can't use ! E E, because ! E maps to E-WITH-UNDERDOT.
-<Multi_key> <slash> <E> <E> : "∄" U2204 # THERE DOES NOT EXIST
-<Multi_key> <A> <A> : "∀" U2200 # FOR ALL
-<Multi_key> <Multi_key> <Q> <E> <D> : "∎" U220E # END OF PROOF
-<Multi_key> <8> <8> : "∞" U221E # INFINITY
-<Multi_key> <Multi_key> <a> <l> <e> <p> <h> : "ℵ" U2135 # ALEF SYMBOL
-<Multi_key> <Multi_key> <a> <l> <e> <p> <0> : "ℵ₀" # ALEF Null
-<Multi_key> <Multi_key> <a> <l> <e> <p> <1> : "ℵ₁" # ALEF One
-<Multi_key> <Multi_key> <a> <l> <e> <f> : "ℵ" U2135 # ALEF SYMBOL
-<Multi_key> <KP_Multiply> <KP_Multiply> : "∗" U2217 # ASTERISK OPERATOR
-<Multi_key> <parenleft> <plus> <parenright> : "⊕" U2295 # CIRCLED PLUS
-<Multi_key> <parenleft> <minus> <parenright> : "⊖" U2296 # CIRCLED MINUS
-<Multi_key> <parenleft> <x> <x> <parenright> : "⊗" U2297 # CIRCLED TIMES
-<Multi_key> <parenleft> <slash> <parenright> : "⊘" U2298 # CIRCLED DIVISION SLASH
-<Multi_key> <parenleft> <asterisk> <parenright> : "⊛" U229B # CIRCLED ASTERISK OPERATOR
-# )- conflicts with system for }.
-<Multi_key> <parenright> <underscore> : "⟌" U27CC # LONG DIVISION
-<Multi_key> <period> <quotedbl> : "∴" U2234 # THEREFORE
-<Multi_key> <quotedbl> <period> : "∵" U2235 # BECAUSE
-<Multi_key> <Multi_key> <b> <e> <c> <a> <u> <s> <e> : "∵" U2235 # BECAUSE
-<Multi_key> <percent> <percent> : "‱" U2031 # PER TEN THOUSAND (basis points)
-<Multi_key> <slash> <u> : "µ" U00B5 # MICRO SIGN
-# Ordinal indicators, for femenine and masculine, used in Romance languages
-<Multi_key> <minus> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
-<Multi_key> <minus> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
-
-# See also U03A3 (Greek capital sigma)
-<Multi_key> <Multi_key> <s> <u> <m> : "∑" U2211 # N-ARY SUMMATION
-# OK, absolutely cannot believe we made it this long without NABLA or INTEGRAL
-# or PARTIAL DIFFERENTIAL
-<Multi_key> <Multi_key> <i> <n> <t> : "∫" U222B # INTEGRAL
-<Multi_key> <Multi_key> <u> <i> <n> <t> : "⨛" U2A1B # UPPER INTEGRAL
-<Multi_key> <Multi_key> <l> <i> <n> <t> : "⨜" U2A1C # LOWER INTEGRAL
-<Multi_key> <Multi_key> <i> <i> <n> <t> : "∬" U222C # DOUBLE INTEGRAL
-<Multi_key> <Multi_key> <i> <i> <i> <n> <t> : "∭" U222D # TRIPLE INTEGRAL
-<Multi_key> <Multi_key> <i> <i> <i> <i> <n> <t> : "⨌" U2A0C # QUADRUPLE INTEGRAL
-<Multi_key> <Multi_key> <o> <i> <n> <t> : "∮" U222E # CONTOUR INTEGRAL
-<Multi_key> <Multi_key> <p> <i> <n> <t> : "⨕" U2A15 # SEMICIRCULAR POLE INTEGRAL
-<Multi_key> <Multi_key> <c> <P> <i> <n> <t> : "⨓" U2A13 # INTEGRAL AROUND POINT
-<Multi_key> <Multi_key> <o> <i> <i> <n> <t> : "∯" U222F # SURFACE INTEGRAL
-<Multi_key> <Multi_key> <o> <i> <i> <i> <n> <t> : "∰" U2230 # VOLUME INTEGRAL
-<Multi_key> <Multi_key> <g> <i> <n> <t> : "⨘" U2A18 # GEOMETRIC INTEGRAL
-<Multi_key> <Multi_key> <s> <i> <n> <t> : "⨋" U2A0B # SUM/INTEGRAL
-#Now for some WTF integrals: ⨙ ⨚
-<Multi_key> <Multi_key> <d> <e> <l> : "∇" U2207 # NABLA
-<Multi_key> <Multi_key> <p> <a> <r> <t> : "∂" U2202 # PARTIAL DIFFERENTIAL
-<Multi_key> <asterisk> <period> <period> <d> : "∂" U2202 # PARTIAL DIFFERENTIAL
-<Multi_key> <R> <e> : "ℜ" U211C # BLACK-LETTER CAPITAL R (Real Part)
-<Multi_key> <I> <m> : "ℑ" U2111 # BLACK-LETTER CAPTIAL I (Imaginary Part)
-<Multi_key> <Multi_key> <h> <b> <a> <r> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
-<Multi_key> <h> <minus> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
-<Multi_key> <h> <p> : "ℎ" U210E # PLANCK CONSTANT
-<Multi_key> <Multi_key> <e> <x> <p> : "ℯ" U212F # SCRIPT SMALL E
-<Multi_key> <e> <1> <0> : "⏨" U23E8 # DECIMAL EXPONENT SYMBOL
-<Multi_key> <w> <p> : "℘" U2118 # SCRIPT CAPITAL P
-# Would we prefer 20D1 COMBINING RIGHT HARPOON ABOVE?
-<Multi_key> <asciicircum> <greater> : "⃗" U20D7 # COMBINING RIGHT ARROW ABOVE (vector)
-# There's a whole passel of these guys starting at U+1D538 but I have no fonts for those.
-<Multi_key> <bar> <C> : "ℂ" U2102 # DOUBLE-STRUCK CAPITAL C (set of complex numbers)
-<Multi_key> <bar> <N> : "ℕ" U2115 # DOUBLE-STRUCK CAPITAL N (natural number)
-<Multi_key> <bar> <P> : "ℙ" U2119 # DOUBLE-STRUCK CAPITAL P
-<Multi_key> <bar> <Q> : "ℚ" U211A # DOUBLE-STRUCK CAPITAL Q (set of rational numbers)
-<Multi_key> <bar> <R> : "ℝ" U211D # DOUBLE-STRUCK CAPITAL R (set of real numbers)
-<Multi_key> <bar> <Z> : "ℤ" U2124 # DOUBLE-STRUCK CAPITAL Z (set of integers)
-<Multi_key> <bar> <H> : "ℍ" U210d # DOUBLE-STRUCK CAPITAL H
-<Multi_key> <bar> <e> : "ⅇ" U2147 # DOUBLE-STRUCK ITALIC SMALL E
-<Multi_key> <bar> <i> : "ⅈ" U2148 # DOUBLE-STRUCK ITALIC SMALL I
-<Multi_key> <bar> <j> : "ⅉ" U2149 # DOUBLE-STRUCK ITALIC SMALL J
-<Multi_key> <bar> <asterisk> <p> : "ℼ" U213C # DOUBLE-STRUCK SMALL PI
-<Multi_key> <bar> <Greek_pi> : "ℼ" U213C # DOUBLE-STRUCK SMALL PI
-<Multi_key> <bar> <asterisk> <P> : "ℿ" U213F # DOUBLE-STRUCK CAPITAL PI
-<Multi_key> <bar> <Greek_PI> : "ℿ" U213F # DOUBLE-STRUCK CAPITAL PI
-<Multi_key> <bar> <asterisk> <S> : "⅀" U2140 # DOUBLE-STRUCK N-ARY SUMMATION
-<Multi_key> <bar> <Greek_SIGMA> : "⅀" U2140 # DOUBLE-STRUCK N-ARY SUMMATION
-<Multi_key> <bar> <colon> : "⦂" U2982 # Z NOTATION TYPE COLON
-# Apparently it is only for historical reasons that this is not unified with
-# ⨟ U+2A1F Z NOTATION SCHEMA COMPOSITION
-<Multi_key> <bar> <semicolon> : "⨾" U2A3E # Z NOTATION RELATIONAL COMPOSITION
-# The *look* double-struck.
-<Multi_key> <bar> <braceleft> : "⦃" U2983 # LEFT WHITE CURLY BRACKET
-<Multi_key> <bar> <braceright> : "⦄" U2984 # RIGHT WHITE CURLY BRACKET
-# ⦅⦆⦇⦈⦉⦊ too?
-# The rest of that block? Some there may be worth it.
-# Ooh. There are lots of nice brackets to consider:
-# ⟅⟆⟨⟩⟪⟫⟬⟭⟮⟯⦑⦒⦓⦔⦕⦖⦗⦘⧼⧽⧘⧙⧚⧛⸢⸣⸤⸥⸨⸩「」『』
-# Others too, of course, but these to start with. Some are likely worthy.
-<Multi_key> <S> <parenleft> : "⟅" U27C5 # LEFT S-SHAPED BAG DELIMITER
-<Multi_key> <S> <parenright> : "⟆" U27C6 # RIGHT S-SHAPED BAG DELIMITER
-<Multi_key> <E> <bracketleft> : "⁅" U2045 # LEFT SQUARE BRACKET WITH QUILL
-<Multi_key> <E> <bracketright> : "⁆" U2046 # RIGHT SQUARE BRACKET WITH QUILL
-# There are a lot of angle brackets (3008/9, 27E8/9, 2329/A). I'm deciding
-# to go with the mathematical brackets from now on, since they seem to be
-# better supported.
-<Multi_key> <less> <parenleft> : "⟨" U27E8 # MATHEMATICAL LEFT ANGLE BRACKET
-<Multi_key> <greater> <parenright>: "⟩" U27E9 # MATHEMATICAL RIGHT ANGLE BRACKET
-<Multi_key> <bar> <bracketleft> : "⟦" U27E6 # MATHEMATICAL LEFT WHITE SQUARE BRACKET
-<Multi_key> <bar> <bracketright>: "⟧" U27E7 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-<Multi_key> <2> <greater> <parenleft> : "⟪" U27EA # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-<Multi_key> <2> <less> <parenright> : "⟫" U27EB # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-# Keystrokes inconsistent.
-<Multi_key> <bar> <bar> <parenleft> : "⟬" U27EC # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
-<Multi_key> <bar> <bar> <parenright>: "⟭" U27ED # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
-<Multi_key> <underscore> <underscore> <parenleft> : "⟮" U27EE # MATHEMATICAL LEFT FLATTENED PARENTHESIS
-<Multi_key> <underscore> <underscore> <parenright>: "⟯" U27EF # MATHEMATICAL RIGHT FLATTENED PARENTHESIS
-<Multi_key> <parenleft> <bracketleft> : "⦗" U2997 # LEFT BLACK TORTOISE SHELL BRACKET
-<Multi_key> <parenright> <bracketright> : "⦘" U2998 # RIGHT BLACK TORTOISE SHELL BRACKET
-# Do the underlined brackets, ones with ticks, dots, etc?
-<Multi_key> <percent> <parenleft>: "⧘" U29D8 # LEFT WIGGLY FENCE
-<Multi_key> <percent> <parenright>: "⧙" U29D9 # RIGHT WIGGLY FENCE
-<Multi_key> <2> <percent> <parenleft>: "⧚" U29DA # LEFT DOUBLE WIGGLY FENCE
-<Multi_key> <2> <percent> <parenright>: "⧛" U29DB # RIGHT DOUBLE WIGGLY FENCE
-<Multi_key> <parenleft> <ampersand> <parenleft>: "⸨" U2E28 # LEFT DOUBLE PARENTHESIS
-<Multi_key> <parenright> <ampersand> <parenright>: "⸩" U2E29 # RIGHT DOUBLE PARENTHESIS
-<Multi_key> <2> <parenleft>: "⸨" U2E28 # LEFT DOUBLE PARENTHESIS
-<Multi_key> <2> <parenright>: "⸩" U2E29 # RIGHT DOUBLE PARENTHESIS
-<Multi_key> <Z> <parenleft> : "༼" U0F3C # TIBETAN MARK ANG KHANG GYON
-<Multi_key> <Z> <parenright> : "༽" U0F3D # TIBETAN MARK ANG KHANG GYAS
-# I'm thinking shape-mnemonics for these, somehow:
-<Multi_key> <L> <bracketleft> : "⌊" U230A # LEFT FLOOR
-<Multi_key> <L> <bracketright> : "⌋" U230B # RIGHT FLOOR
-<Multi_key> <7> <bracketleft> : "⌈" U2308 # LEFT CEILING
-<Multi_key> <7> <bracketright> : "⌉" U2309 # RIGHT CEILING
-# These are actually quotes, hence the mnemonic.
-<Multi_key> <7> <apostrophe> : "「" UFF62 # HALFWIDTH LEFT CORNER BRACKET
-<Multi_key> <L> <apostrophe> : "」" UFF63 # HALFWIDTH RIGHT CORNER BRACKET
-<Multi_key> <7> <quotedbl> : "『" U300E # LEFT WHITE CORNER BRACKET
-<Multi_key> <L> <quotedbl> : "』" U300F # RIGHT WHITE CORNER BRACKET
-<Multi_key> <parenleft> <ampersand> <parenright> : "≬" U226C # BETWEEN
-<Multi_key> <l> <l> : "ℓ" U2113 # SCRIPT SMALL L
-<Multi_key> <bracketleft> <bracketleft> : "⊏" U228F # SQUARE IMAGE OF
-<Multi_key> <bracketleft> <equal> : "⊑" U2291 # SQUARE IMAGE OF OR EQUAL TO
-<Multi_key> <bracketleft> <underscore> : "⊑" U2291 # SQUARE IMAGE OF OR EQUAL TO
-<Multi_key> <bracketright> <bracketright>: "⊐" U2290 # SQUARE ORIGINAL OF
-<Multi_key> <bracketright> <equal> : "⊒" U2292 # SQUARE ORIGINAL OF OR EQUAL TO
-<Multi_key> <bracketright> <underscore> : "⊒" U2292 # SQUARE ORIGINAL OF OR EQUAL TO
-# If I did more Haskell, I'd want this more:
-<Multi_key> <underscore> <bar> <underscore>: "⊥" U22A5 # UP TACK (bottom) or should we use U27C2 PERPENDICULAR?
-<Multi_key> <underscore> <exclam> <underscore>: "⊤" U22A4 # DOWN TACK (opposite of False)
-<Multi_key> <underscore> <greater> <underscore>: "⊢" U22A2 # RIGHT TACK
-<Multi_key> <underscore> <less> <underscore>: "⊣" U22A3 # LEFT TACK
-# Handy for UNIX filenames... but XXX conflicts with standard <Multi_key> <slash> <slash> → "\"
-<Multi_key> <slash> <slash> : "⁄" U2044 # FRACTION SLASH
-
-# The system file gives us subscript numbers, plus/minus, and parens. But
-# there are letters missing. It would be nice to have at least a few of them.
-
-# block U+208x
-<Multi_key> <underscore> <0> : "₀" U2080 # SUBSCRIPT ZERO
-<Multi_key> <underscore> <1> : "₁" U2081 # SUBSCRIPT ONE
-<Multi_key> <underscore> <2> : "₂" U2082 # SUBSCRIPT TWO
-<Multi_key> <underscore> <3> : "₃" U2083 # SUBSCRIPT THREE
-<Multi_key> <underscore> <4> : "₄" U2084 # SUBSCRIPT FOUR
-<Multi_key> <underscore> <5> : "₅" U2085 # SUBSCRIPT FIVE
-<Multi_key> <underscore> <6> : "₆" U2086 # SUBSCRIPT SIX
-<Multi_key> <underscore> <7> : "₇" U2087 # SUBSCRIPT SEVEN
-<Multi_key> <underscore> <8> : "₈" U2088 # SUBSCRIPT EIGHT
-<Multi_key> <underscore> <9> : "₉" U2089 # SUBSCRIPT NONE
-<Multi_key> <underscore> <plus> : "₊" U208A # SUBSCRIPT PLUS
-<Multi_key> <underscore> <minus> : "₋" U208B # SUBSCRIPT MINUS
-<Multi_key> <underscore> <equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
-<Multi_key> <underscore> <parenleft> : "₍" U208D # SUBSCRIPT LEFT PARENTHESIS
-<Multi_key> <underscore> <parenright> : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS
-
-# block U+209x
-<Multi_key> <underscore> <a> : "ₐ" U2090 # LATIN SUBSCRIPT SMALL LETTER A
-<Multi_key> <underscore> <e> : "ₑ" U2091 # LATIN SUBSCRIPT SMALL LETTER E
-<Multi_key> <underscore> <o> : "ₒ" U2092 # LATIN SUBSCRIPT SMALL LETTER O
-<Multi_key> <underscore> <x> : "ₓ" U2093 # LATIN SUBSCRIPT SMALL LETTER X
-<Multi_key> <underscore> <h> : "ₕ" U2095 # LATIN SUBSCRIPT SMALL LETTER H
-<Multi_key> <underscore> <k> : "ₖ" U2096 # LATIN SUBSCRIPT SMALL LETTER K
-<Multi_key> <underscore> <l> : "ₗ" U2097 # LATIN SUBSCRIPT SMALL LETTER L
-<Multi_key> <underscore> <m> : "ₘ" U2098 # LATIN SUBSCRIPT SMALL LETTER M
-<Multi_key> <underscore> <n> : "ₙ" U2099 # LATIN SUBSCRIPT SMALL LETTER N
-<Multi_key> <underscore> <p> : "ₚ" U209A # LATIN SUBSCRIPT SMALL LETTER P
-<Multi_key> <underscore> <s> : "ₛ" U209B # LATIN SUBSCRIPT SMALL LETTER S
-<Multi_key> <underscore> <t> : "ₜ" U209C # LATIN SUBSCRIPT SMALL LETTER T
-
-# subscripts in other blocks
-<Multi_key> <underscore> <i> : "ᵢ" U1D62 # LATIN SUBSCRIPT SMALL LETTER I
-<Multi_key> <underscore> <j> : "ⱼ" U2C7C # LATIN SUBSCRIPT SMALL LETTER J
-<Multi_key> <underscore> <r> : "ᵣ" U1D63 # LATIN SUBSCRIPT SMALL LETTER R
-<Multi_key> <underscore> <u> : "ᵤ" U1D64 # LATIN SUBSCRIPT SMALL LETTER U
-<Multi_key> <underscore> <v> : "ᵥ" U1D65 # LATIN SUBSCRIPT SMALL LETTER V
-<Multi_key> <underscore> <asterisk> <b> : "ᵦ" U1D66 # GREEK SUBSCRIPT SMALL LETTER BETA
-<Multi_key> <underscore> <asterisk> <g> : "ᵧ" U1D67 # GREEK SUBSCRIPT SMALL LETTER GAMMA
-<Multi_key> <underscore> <asterisk> <r> : "ᵨ" U1D68 # GREEK SUBSCRIPT SMALL LETTER RHO
-<Multi_key> <underscore> <asterisk> <f> : "ᵩ" U1D69 # GREEK SUBSCRIPT SMALL LETTER PHI
-<Multi_key> <underscore> <asterisk> <x> : "ᵪ" U1D6A # GREEK SUBSCRIPT SMALL LETTER CHI
-
-# Custom additions: Greek letters. Mapping corresponds to Emacs Greek
-# input method. Aristotle Pagaltzis informs me that this is the
-# standard Greek keyboard layout, which is good.
-<Multi_key> <asterisk> <a> : "α" U03B1 # GREEK SMALL LETTER ALPHA
-<Multi_key> <asterisk> <b> : "β" U03B2 # GREEK SMALL LETTER BETA
-<Multi_key> <asterisk> <c> : "ψ" U03C8 # GREEK SMALL LETTER PSI
-<Multi_key> <asterisk> <d> : "δ" U03B4 # GREEK SMALL LETTER DELTA
-<Multi_key> <asterisk> <e> : "ε" U03B5 # GREEK SMALL LETTER EPSILON
-<Multi_key> <asterisk> <f> : "φ" U03C6 # GREEK SMALL LETTER PHI
-<Multi_key> <asterisk> <g> : "γ" U03B3 # GREEK SMALL LETTER GAMMA
-<Multi_key> <asterisk> <h> : "η" U03B7 # GREEK SMALL LETTER ΕΤΑ
-<Multi_key> <asterisk> <i> : "ι" U03B9 # GREEK SMALL LETTER ΙΟΤΑ
-<Multi_key> <asterisk> <j> : "ξ" U03BE # GREEK SMALL LETTER XI
-<Multi_key> <asterisk> <k> : "κ" U03BA # GREEK SMALL LETTER KAPPA
-<Multi_key> <asterisk> <l> : "λ" U03BB # GREEK SMALL LETTER LAMBDA
-<Multi_key> <asterisk> <m> : "μ" U03BC # GREEK SMALL LETTER MU
-<Multi_key> <asterisk> <n> : "ν" U03BD # GREEK SMALL LETTER NU
-<Multi_key> <asterisk> <o> : "ο" U03BF # GREEK SMALL LETTER OMICRON
-<Multi_key> <asterisk> <p> : "π" U03C0 # GREEK SMALL LETTER PI
-# no mapping for q; in Emacs that's ";"
-# U037E GREEK QUESTION MARK is canonically equivalent to U003B SEMICOLON.
-# ... But that won't stop us from doing it anyway!!!
-<Multi_key> <asterisk> <period> <question> : ";" U037E # GREEK QUESTION MARK
-<Multi_key> <asterisk> <r> : "ρ" U03C1 # GREEK SMALL LETTER RHO
-<Multi_key> <asterisk> <s> : "σ" U03C3 # GREEK SMALL LETTER SIGMA
-<Multi_key> <asterisk> <t> : "τ" U03C4 # GREEK SMALL LETTER TAU
-<Multi_key> <asterisk> <u> : "θ" U03B8 # GREEK SMALL LETTER THETA
-<Multi_key> <asterisk> <v> : "ω" U03C9 # GREEK SMALL LETTER OMEGA
-<Multi_key> <asterisk> <w> : "ς" U03C2 # GREEK SMALL LETTER FINAL SIGMA
-<Multi_key> <asterisk> <x> : "χ" U03C7 # GREEK SMALL LETTER CHI
-<Multi_key> <asterisk> <y> : "υ" U03C5 # GREEK SMALL LETTER UPSILON
-<Multi_key> <asterisk> <z> : "ζ" U03B6 # GREEK SMALL LETTER ZETA
-
-# Capital greek letters.
-<Multi_key> <asterisk> <A> : "Α" U0391 # GREEK CAPITAL LETTER ALPHA
-<Multi_key> <asterisk> <B> : "Β" U0392 # GREEK CAPITAL LETTER BETA
-<Multi_key> <asterisk> <C> : "Ψ" U03A8 # GREEK CAPITAL LETTER PSI
-<Multi_key> <asterisk> <D> : "Δ" U0394 # GREEK CAPITAL LETTER DELTA
-<Multi_key> <asterisk> <E> : "Ε" U0395 # GREEK CAPITAL LETTER EPSILON
-<Multi_key> <asterisk> <F> : "Φ" U03A6 # GREEK CAPITAL LETTER PHI
-<Multi_key> <asterisk> <G> : "Γ" U0393 # GREEK CAPITAL LETTER GAMMA
-<Multi_key> <asterisk> <H> : "Η" U0397 # GREEK CAPITAL LETTER ΕΤΑ
-<Multi_key> <asterisk> <I> : "Ι" U0399 # GREEK CAPITAL LETTER ΙΟΤΑ
-<Multi_key> <asterisk> <J> : "Ξ" U039E # GREEK CAPITAL LETTER XI
-<Multi_key> <asterisk> <K> : "Κ" U039A # GREEK CAPITAL LETTER KAPPA
-<Multi_key> <asterisk> <L> : "Λ" U039B # GREEK CAPITAL LETTER LAMBDA
-<Multi_key> <asterisk> <M> : "Μ" U039C # GREEK CAPITAL LETTER MU
-<Multi_key> <asterisk> <N> : "Ν" U039D # GREEK CAPITAL LETTER NU
-<Multi_key> <asterisk> <O> : "Ο" U039F # GREEK CAPITAL LETTER OMICRON
-<Multi_key> <asterisk> <P> : "Π" U03A0 # GREEK CAPITAL LETTER PI
-# see below for Q qoppa; in Emacs Q is “:”
-<Multi_key> <asterisk> <R> : "Ρ" U03A1 # GREEK CAPITAL LETTER RHO
-<Multi_key> <asterisk> <S> : "Σ" U03A3 # GREEK CAPITAL LETTER SIGMA
-<Multi_key> <asterisk> <T> : "Τ" U03A4 # GREEK CAPITAL LETTER TAU
-<Multi_key> <asterisk> <U> : "Θ" U0398 # GREEK CAPITAL LETTER THETA
-<Multi_key> <asterisk> <V> : "Ω" U03A9 # GREEK CAPITAL LETTER OMEGA
-# Emacs maps W to "Σ", but I think that’s stupid
-# I think that's from the Greek keyboard.
-<Multi_key> <asterisk> <X> : "Χ" U03A7 # GREEK CAPITAL LETTER CHI
-<Multi_key> <asterisk> <Y> : "Υ" U03A5 # GREEK CAPITAL LETTER UPSILON
-<Multi_key> <asterisk> <Z> : "Ζ" U0396 # GREEK CAPITAL LETTER ZETA
-
-# Some archaic Greek. If we only wanted *normal* characters we wouldn't be
-# doing this at all!
-# "period" will indicate a sort of variant of some kind; asterisk is still the "greek" marker
-<Multi_key> <asterisk> <period> <p> : "ϖ" U03D6 # GREEK PI SYMBOL
-# Reserving .f in case we want PHI SYMBOL. Digamma was "w" sound anyway.
-<Multi_key> <asterisk> <period> <w> : "ϝ" U03DD # GREEK SMALL LETTER DIGAMMA
-<Multi_key> <asterisk> <period> <W> : "Ϝ" U03DC # GREEK CAPITAL LETTER DIGAMMA
-<Multi_key> <asterisk> <Q> : "Ϟ" U03DE # GREEK LETTER QOPPA
-<Multi_key> <asterisk> <q> : "ϟ" U03DF # GREEK SMALL LETTER QOPPA
-<Multi_key> <asterisk> <period> <Q> : "Ϙ" U03D8 # GREEK LETTER ARCHAIC QOPPA
-<Multi_key> <asterisk> <period> <q> : "ϙ" U03D9 # GREEK SMALL LETTER ARCHAIC QOPPA
-<Multi_key> <asterisk> <ampersand> : "ϗ" U03D7 # GREEK KAI SYMBOL
-<Multi_key> <asterisk> <period> <Z> : "Ϡ" U03E0 # GREEK LETTER SAMPI
-<Multi_key> <asterisk> <period> <z> : "ϡ" U03E1 # GREEK SMALL LETTER SAMPI
-<Multi_key> <asterisk> <period> <period> <Z> : "Ͳ" U0372 # GREEK CAPITAL LETTER ARCHAIC SAMPI
-<Multi_key> <asterisk> <period> <period> <z> : "ͳ" U0373 # GREEK SMALL LETTER ARCHAIC SAMPI
-# Sorry, couldn't think of better ones for these. Might want .s for SAN.
-<Multi_key> <asterisk> <question> : "Ϛ" U03DA # GREEK LETTER STIGMA
-<Multi_key> <asterisk> <slash> : "ϛ" U03DB # GREEK SMALL LETTER STIGMA
-<Multi_key> <asterisk> <apostrophe> : "ʹ" U02B9 # MODIFIER LETTER PRIME, canonically equivalent to U0374 GREEK NUMERAL SIGN
-# While we're at it...
-<Multi_key> <asterisk> <period> <apostrophe> : "′" U2032 # PRIME
-<Multi_key> <asterisk> <period> <quotedbl> : "″" U2033 # DOUBLE PRIME
-<Multi_key> <asterisk> <comma> : "͵" U0375 # GREEK LOWER NUMERAL SIGN (for thousands)
-# Do we want BETA SYMBOL, RHO SYMBOL, KAPPA SYMBOL, PHI SYMBOL, THETA SYMBOL?
-# The format makes them obvious enough I guess. PI SYMBOL is different enough
-# that there's no question, and it is separate from these.
-<Multi_key> <asterisk> <period> <b> : "ϐ" U03D0 # GREEK BETA SYMBOL
-<Multi_key> <asterisk> <period> <u> : "ϑ" U03D1 # GREEK THETA SYMBOL
-<Multi_key> <asterisk> <period> <Y> : "ϒ" U03D2 # GREEK UPSILON WITH HOOK SYMBOL
-<Multi_key> <asterisk> <period> <f> : "ϕ" U03D5 # GREEK PHI SYMBOL
-<Multi_key> <asterisk> <period> <k> : "ϰ" U03F0 # GREEK KAPPA SYMBOL
-<Multi_key> <asterisk> <period> <r> : "ϱ" U03F1 # GREEK RHO SYMBOL
-<Multi_key> <asterisk> <period> <U> : "ϴ" U03F4 # GREEK CAPITAL THETA SYMBOL
-<Multi_key> <asterisk> <period> <e> : "ϵ" U03F5 # GREEK LUNATE EPSILON SYMBOL
-# Not doing the lunate sigmas and dotted versions thereof... What about SAN, which is at least a letter?
-<Multi_key> <asterisk> <period> <s> : "ϻ" U03FB # GREEK SMALL LETTER SAN
-<Multi_key> <asterisk> <period> <S> : "Ϻ" U03FA # GREEK CAPITAL LETTER SAN
-
-# If you wanted to actually type in Greek, you would also need άίέ
-# etc. But you would probably just switch to a Greek keyboard layout.
-
-# Custom additions: fractions
-<Multi_key> <1> <3> : "⅓" U2153 # VULGAR FRACTION ONE THIRD
-<Multi_key> <2> <3> : "⅔" U2154 # VULGAR FRACTION TWO THIRDS
-# more extensive fractions from jsled
-<Multi_key> <1> <5> : "⅕" U2155 # VULGAR FRACTION ONE FIFTH
-<Multi_key> <2> <5> : "⅖" U2156 # VULGAR FRACTION TWO FIFTHS
-<Multi_key> <3> <5> : "⅗" U2157 # VULGAR FRACTION THREE FIFTHS
-<Multi_key> <4> <5> : "⅘" U2158 # VULGAR FRACTION FOUR FIFTHS
-<Multi_key> <1> <6> : "⅙" U2159 # VULGAR FRACTION ONE SIXTH
-<Multi_key> <5> <6> : "⅚" U215A # VULGAR FRACTION FIVE SIXTHS
-<Multi_key> <1> <8> : "⅛" U215B # VULGAR FRACTION ONE EIGHTH
-<Multi_key> <3> <8> : "⅜" U215C # VULGAR FRACTION THREE EIGHTHS
-<Multi_key> <5> <8> : "⅝" U215D # VULGAR FRACTION FIVE EIGHTHS
-<Multi_key> <7> <8> : "⅞" U215E # VULGAR FRACTION SEVEN EIGHTHS
-<Multi_key> <1> <7> : "⅐" U2150 # VULGAR FRACTION ONE SEVENTH
-<Multi_key> <1> <9> : "⅑" U2151 # VULGAR FRACTION ONE NINTH
-<Multi_key> <1> <x> : "⅒" U2152 # VULGAR FRACTION ONE TENTH
-<Multi_key> <0> <3> : "↉" U2189 # VULGAR FRACTION ZERO THIRDS
-<Multi_key> <1> <slash> : "⅟" U215F # FRACTION NUMERATOR ONE
-
-# How about roman numerals? Percent for numerical mnemonic?
-# Does this go against the spirit of this file? These symbols are accessible
-# as regular letters and would look okay. Maybe only for I-X?
-<Multi_key> <percent> <1> : "ⅰ" U2170 # SMALL ROMAN NUMERAL ONE
-<Multi_key> <percent> <2> : "ⅱ" U2171 # SMALL ROMAN NUMERAL TWO
-<Multi_key> <percent> <3> : "ⅲ" U2172 # SMALL ROMAN NUMERAL THREE
-<Multi_key> <percent> <4> : "ⅳ" U2173 # SMALL ROMAN NUMERAL FOUR
-<Multi_key> <percent> <5> : "ⅴ" U2174 # SMALL ROMAN NUMERAL FIVE
-<Multi_key> <percent> <6> : "ⅵ" U2175 # SMALL ROMAN NUMERAL SIX
-<Multi_key> <percent> <7> : "ⅶ" U2176 # SMALL ROMAN NUMERAL SEVEN
-<Multi_key> <percent> <8> : "ⅷ" U2177 # SMALL ROMAN NUMERAL EIGHT
-<Multi_key> <percent> <9> : "ⅸ" U2178 # SMALL ROMAN NUMERAL NINE
-<Multi_key> <percent> <x> : "ⅹ" U2179 # SMALL ROMAN NUMERAL TEN
-# How do we handle eleven and twelve?
-<Multi_key> <percent> <underscore> <1> : "ⅺ" U217A # SMALL ROMAN NUMERAL ELEVEN
-<Multi_key> <percent> <underscore> <2> : "ⅻ" U217B # SMALL ROMAN NUMERAL TWELVE
-# That okay?
-<Multi_key> <percent> <l> : "ⅼ" U217C # SMALL ROMAN NUMERAL FIFTY
-<Multi_key> <percent> <c> : "ⅽ" U217D # SMALL ROMAN NUMERAL ONE HUNDRED
-<Multi_key> <percent> <d> : "ⅾ" U217E # SMALL ROMAN NUMERAL FIVE HUNDRED
-<Multi_key> <percent> <m> : "ⅿ" U217F # SMALL ROMAN NUMERAL ONE THOUSAND
-###
-<Multi_key> <percent> <0> <1> : "Ⅰ" U2160 # ROMAN NUMERAL ONE
-<Multi_key> <percent> <0> <2> : "Ⅱ" U2161 # ROMAN NUMERAL TWO
-<Multi_key> <percent> <0> <3> : "Ⅲ" U2162 # ROMAN NUMERAL THREE
-<Multi_key> <percent> <0> <4> : "Ⅳ" U2163 # ROMAN NUMERAL FOUR
-<Multi_key> <percent> <0> <5> : "Ⅴ" U2164 # ROMAN NUMERAL FIVE
-<Multi_key> <percent> <0> <6> : "Ⅵ" U2165 # ROMAN NUMERAL SIX
-<Multi_key> <percent> <0> <7> : "Ⅶ" U2166 # ROMAN NUMERAL SEVEN
-<Multi_key> <percent> <0> <8> : "Ⅷ" U2167 # ROMAN NUMERAL EIGHT
-<Multi_key> <percent> <0> <9> : "Ⅸ" U2168 # ROMAN NUMERAL NINE
-<Multi_key> <percent> <0> <x> : "Ⅹ" U2169 # ROMAN NUMERAL TEN
-# How do we handle eleven and twelve?
-<Multi_key> <percent> <underscore> <0> <1> : "Ⅺ" U216A # ROMAN NUMERAL ELEVEN
-<Multi_key> <percent> <underscore> <0> <2> : "Ⅻ" U216B # ROMAN NUMERAL TWELVE
-<Multi_key> <percent> <0> <l> : "Ⅼ" U216C # ROMAN NUMERAL FIFTY
-<Multi_key> <percent> <0> <c> : "Ⅽ" U216D # ROMAN NUMERAL ONE HUNDRED
-<Multi_key> <percent> <0> <d> : "Ⅾ" U216E # ROMAN NUMERAL FIVE HUNDRED
-<Multi_key> <percent> <0> <m> : "Ⅿ" U216F # ROMAN NUMERAL ONE THOUSAND
-<Multi_key> <percent> <X> : "Ⅹ" U2169 # ROMAN NUMERAL TEN
-<Multi_key> <percent> <L> : "Ⅼ" U216C # ROMAN NUMERAL FIFTY
-<Multi_key> <percent> <C> : "Ⅽ" U216D # ROMAN NUMERAL ONE HUNDRED
-<Multi_key> <percent> <D> : "Ⅾ" U216E # ROMAN NUMERAL FIVE HUNDRED
-<Multi_key> <percent> <M> : "Ⅿ" U216F # ROMAN NUMERAL ONE THOUSAND
-<Multi_key> <percent> <0> <C> <D> : "ↀ" U2180 # ROMAN NUMERAL ONE THOUSAND C D
-<Multi_key> <percent> <0> <D> : "ↁ" U2181 # ROMAN NUMERAL FIVE THOUSAND
-<Multi_key> <percent> <0> <M> : "ↂ" U2182 # ROMAN NUMERAL TEN THOUSAND
-<Multi_key> <percent> <0> <0> <D> : "ↇ" U2187 # ROMAN NUMERAL FIFTY THOUSAND
-<Multi_key> <percent> <0> <0> <M> : "ↈ" U2188 # ROMAN NUMERAL ONE HUNDRED THOUSAND
-
-
-# Custom additions: for chat (kragen)
-<Multi_key> <parenleft> <colon> : "☻" U263B # BLACK SMILING FACE
-<Multi_key> <colon> <parenright> : "☺" U263A # WHITE SMILING FACE
-<Multi_key> <colon> <parenleft> : "☹" U2639 # WHITE FROWNING FACE
-<Multi_key> <colon> <asciitilde> : "⍨" U2368 # APL FUNCTIONAL SYMBOL TILDE DIAERESIS
-<Multi_key> <colon> <bar> : "⸚" U2E1A # HYPHEN WITH DIAERESIS
-<Multi_key> <colon> <o> <o> <parenright> : "°͜°" # Funny smiley-face.
-# Those are archaic cyrilic letters... but look so _perfect_ for use
-# in chat. And about the last, the "multiocular O"... Well, I don't
-# know what it can be used for, but given the description, how could I
-# leave it out‽
-# (I guess using U+1F440 EYES would be more straightforward, but not as funny?)
-<Multi_key> <O> <period> <O> : "Ꙭ" UA66C # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O * used in the dual of words based on the root for 'eye'
-<Multi_key> <o> <period> <o> : "ꙭ" UA66D # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
-<Multi_key> <O> <colon> : "Ꙫ" UA66A # CYRILLIC CAPITAL LETTER BINOCULAR O * used in the dual of words based on the root for 'eye'
-<Multi_key> <o> <colon> : "ꙫ" UA66B # CYRILLIC SMALL LETTER BINOCULAR O
-<Multi_key> <o> <plus> : "ꙮ" UA66E # CYRILLIC LETTER MULTIOCULAR O * used in the epithet 'many-eyed'
-# While we're doing stacks of circles with dots.
-<Multi_key> <o> <3> : "߷" U07F7 # NKO SYMBOL GBAKURUNEN
-<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG
-<Multi_key> <question> <exclam> : "⸘" U2E18 # INVERTED INTERROBANG, standard now.
-<Multi_key> <questiondown> <exclamdown> : "⸘" U2E18 # INVERTED INTERROBANG (if you have a ¡ key. Otherwise...? "?i" maybe?
-<Multi_key> <exclamdown> <questiondown> : "⸘" U2E18 # INVERTED INTERROBANG (if you have a ¡ key. Otherwise...? "?i" maybe?
-<Multi_key> <question> <less> : "⸮" U2E2E # REVERSED QUESTION MARK
-<Multi_key> <question> <BackSpace> : "⸮" U2E2E # REVERSED QUESTION MARK
-<Multi_key> <question> <ampersand> <question> : "⁇" U2047 # DOUBLE QUESTION MARK
-<Multi_key> <2> <question> : "⁇" U2047 # DOUBLE QUESTION MARK
-<Multi_key> <question> <ampersand> <exclam> : "⁈" U2048 # QUESTION EXCLAMATION MARK
-<Multi_key> <exclam> <ampersand> <question> : "⁉" U2049 # EXCLAMATION QUESTION MARK
-<Multi_key> <exclam> <ampersand> <exclam> : "‼" U203C # DOUBLE EXCLAMATION MARK
-<Multi_key> <2> <exclam> : "‼" U203C # DOUBLE EXCLAMATION MARK
-<Multi_key> <2> <colon> : "∷" U2237 # PROPORTION -- not strictly 2 times COLON
-<Multi_key> <semicolon> <less> : "⁏" U204F # REVERSED SEMICOLON
-<Multi_key> <semicolon> <BackSpace> : "⁏" U204F # REVERSED SEMICOLON
-# Keep looking into big hunks of Latin Extended-D, A720- et seq.
-<Multi_key> <less> <3> : "♥" U2665 # BLACK HEART SUIT
-<Multi_key> <3> <3> : "♣" U2663 # BLACK CLUB SUIT
-<Multi_key> <o> <8> : "♣" U2663 # BLACK CLUB SUIT
-<Multi_key> <c> <3> : "♣" U2663 # BLACK CLUB SUIT
-<Multi_key> <less> <greater> : "♢" U2662 # WHITE DIAMOND SUIT
-<Multi_key> <3> <minus> : "♠" U2660 # BLACK SPADE SUIT
-<Multi_key> <less> <braceright> : "♠" U2660 # BLACK SPADE SUIT
-<Multi_key> <E> <greater> : "♡" U2661 # WHITE HEART SUIT
-# "shamrock" is too long; there IS a limit to these!
-<Multi_key> <Multi_key> <s> <h> <m> <r> <c> <k> : "☘" U2618 # SHAMROCK
-<Multi_key> <Multi_key> <s> <h> <a> <m> <r> <o> : "☘" U2618 # SHAMROCK
-<Multi_key> <Multi_key> <p> <c> : "☮" U262E # PEACE SYMBOL
-<Multi_key> <Multi_key> <p> <e> <a> <c> <e> : "☮" U262E # PEACE SYMBOL
-<Multi_key> <Multi_key> <y> <y> : "☯" U262F # YIN YANG
-<Multi_key> <Multi_key> <y> <i> <n> <y> <a> <n> : "☯" U262F # YIN YANG
-# And now that we are into hearts...
-<Multi_key> <Left> <less> <3> : "❥" U2765 # ROTATED HEAVY BLACK HEART BULLET
-<Multi_key> <exclam> <less> <3> : "❣" U2763 # HEAVY HEART EXCLAMATION MARK ORNAMENT
-<Multi_key> <f> <less> <3> : "❦" U2766 # FLORAL HEART
-<Multi_key> <Left> <f> <less> <3> : "❧" U2767 # ROTATED FLORAL HEART BULLET
-<Multi_key> <Right> <f> <less> <3> : "☙" U2619 # REVERSED ROTATED FLORAL HEART BULLET
-<Multi_key> <Multi_key> <t> <e> <l> : "☎" U260E # BLACK TELEPHONE
-<Multi_key> <Multi_key> <t> <e> <a> : "☕" U2615 # HOT BEVERAGE
-# These last two bother me less, though they can still be improved.
-# Other possibly useful symbols:
-# 2668 HOT SPRINGS (for chat, for running off to shower?)
-# I want 2713-2714 and 2717-2718
-# We need a Dingbats prefix, for ❛❜❝❞❢
-<Multi_key> <bracketleft> <space> <bracketright> : "☐" U2610 # BALLOT BOX
-# Better keystrokes anyone? This one breaks the pattern. [c]? [v]? [y]? [/]?
-<Multi_key> <Multi_key> <c> <h> <k> : "☑" U2611 # BALLOT BOX WITH CHECK
-<Multi_key> <bracketleft> <slash> <bracketright> : "☑" U2611 # BALLOT BOX WITH CHECK
-<Multi_key> <bracketleft> <x> <bracketright> : "☒" U2612 # BALLOT BOX WITH X
-# @ for dingbats?
-<Multi_key> <at> <slash> : "✓" U2713 # CHECK MARK
-<Multi_key> <at> <at> <slash> : "✔" U2714 # HEAVY CHECK MARK
-<Multi_key> <at> <X> : "✗" U2717 # BALLOT X
-<Multi_key> <at> <at> <X> : "✘" U2718 # HEAVY BALLOT X
-<Multi_key> <at> <parenleft> : "❨" U2768 # MEDIUM LEFT PARENTHESIS ORNAMENT
-<Multi_key> <at> <parenright> : "❩" U2769 # MEDIUM RIGHT PARENTHESIS ORNAMENT
-<Multi_key> <at> <at> <parenleft> : "❪" U276A # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-<Multi_key> <at> <at> <parenright> : "❫" U276B # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-<Multi_key> <at> <less> : "❬" U276C # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-<Multi_key> <at> <greater> : "❭" U276D # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-# U276E&F ❮❯ ? Angle quotation mark ornaments?
-<Multi_key> <at> <at> <less> : "❰" U2770 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-<Multi_key> <at> <at> <greater> : "❱" U2771 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-<Multi_key> <at> <bracketleft> <parenleft> : "❲" U2772 # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-<Multi_key> <at> <bracketright> <parenright> : "❳" U2773 # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-<Multi_key> <at> <braceleft> : "❴" U2774 # MEDIUM LEFT CURLY BRACKET ORNAMENT
-<Multi_key> <at> <braceright> : "❵" U2775 # MEDIUM RIGHT CURLY BRACKET ORNAMENT
-# Will I want <at> <at> for something else?
-# Now there is such a thing as text style and emoji style. Use the
-# "dingbat prefix" in an unusual way:
-<Multi_key> <at> <Multi_key> : "️" UFE0F # Emoji selector
-<Multi_key> <exclam> <Multi_key> : "︎" UFE0E # Text selector
-# How about dice?
-<Multi_key> <bracketleft> <1> <bracketright> : "⚀" U2680 # DIE FACE-1
-<Multi_key> <bracketleft> <2> <bracketright> : "⚁" U2681 # DIE FACE-2
-<Multi_key> <bracketleft> <3> <bracketright> : "⚂" U2682 # DIE FACE-3
-<Multi_key> <bracketleft> <4> <bracketright> : "⚃" U2683 # DIE FACE-4
-<Multi_key> <bracketleft> <5> <bracketright> : "⚄" U2684 # DIE FACE-5
-<Multi_key> <bracketleft> <6> <bracketright> : "⚅" U2685 # DIE FACE-6
-# 267B BLACK UNIVERSAL RECYCLING SYMBOL
-
-# Keystrokes okay?
-<Multi_key> <Multi_key> <f> <d> <l> : "⚜" U269C # FLEUR-DE-LIS
-<Multi_key> <Multi_key> <a> <t> <o> <m> : "⚛" U269B # ATOM SYMBOL
-<Multi_key> <Multi_key> <c> <c> <c> <p> : "☭" U262D # HAMMER AND SICKLE
-<Multi_key> <slash> <exclam> <backslash> : "⚠" U26A0 # WARNING SIGN
-<Multi_key> <exclam> <asciicircum> : "⚠" U26A0 # WARNING SIGN
-<Multi_key> <Multi_key> <z> <a> <p> : "⚡" U26A1 # HIGH VOLTAGE SIGN
-# Shouldn't use just <r><a> because it's too likely to be a prefix for
-# a useful word.
-<Multi_key> <Multi_key> <r> <a> <d> : "☢" U2622 # RADIOACTIVE SIGN
-<Multi_key> <Multi_key> <b> <h> : "☣" U2623 # BIOHAZARD SIGN
-<Multi_key> <Multi_key> <b> <i> <o> <h> <a> <z> : "☣" U2623 # BIOHAZARD SIGN
-# Changing this from ⚝
-<Multi_key> <Multi_key> <A> <A> <A> <A> <A> : "⛤" U26E4 # PENTAGRAM (pentalpha, get it?)
-<Multi_key> <Multi_key> <p> <l> <a> <n> <e> : "✈" U2708 # AIRPLANE
-<Multi_key> <Multi_key> <m> <a> <i> <l> : "✉" U2709 # ENVELOPE
-<Multi_key> <Multi_key> <w> <h> <l> <c> <h> : "♿" U267F # WHEELCHAIR SYMBOL
-<Multi_key> <Multi_key> <m> <e> <d> : "☤" U2624 # CADEUCEUS
-## Don't usually do sequences, but exception made for the
-## "eyewitness" compound emoji sequence:
-<Multi_key> <Multi_key> <i> <w> <i> <t> : "👁️🗨️"
-# Something different for STAFF OF AESCULAPIUS?
-<Multi_key> <Multi_key> <1> <m> <e> <d> : "⚕" U2695 # STAFF OF AESCULAPIUS
-# 26B0 COFFIN ?
-# One of the SNOWFLAKEs?
-# SNOWMAN? COMET? ANCHOR?
-# Maybe if we go with having a "word" symbol and spelling out lots and
-# lots of whole words, we can have all the planets.
-#
-# I already have STAR OF DAVID on another map.
-# 231A, 231B -- WATCH and HOURGLASS -- one should be &-w-a-i-t
-# 23D4 METRICAL LONG OVER TWO SHORTS a.k.a. METRICAL BOOBS
-# 0950 DEVANAGARI OM?
-# 212E ESTIMATED SYMBOL?
-# 2324 UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS a.k.a. NOT AMUSED
-# 237E BELL SYMBOL a.k.a. ALIENS LANDING
-
-<Multi_key> <o> <minus> <plus> : "♀" U2640 # FEMALE SIGN
-<Multi_key> <o> <minus> <greater> : "♂" U2642 # MALE SIGN
-
-<Multi_key> <Multi_key> <g> <a> <y> : "⚣" U26A3 # DOUBLED MALE SIGN
-<Multi_key> <Multi_key> <l> <e> <s> <b> <i> <a> <n> : "⚢" U26A2 # DOUBLED FEMALE SIGN
-<Multi_key> <Multi_key> <h> <e> <t> <e> <r> <o> : "⚤" U26A4 # INTERLOCKED FEMALE AND MALE SIGN
-
-# 'trans': short for transgender/transexual
-# 'genderq': short for genderqueer.
-# Wasn't sure which to call which symbol, and wanted to include both
-<Multi_key> <Multi_key> <t> <r> <a> <n> <s> : "⚥" U26A5 # MALE AND FEMALE SIGN
-<Multi_key> <Multi_key> <g> <e> <n> <d> <e> <r> <q> : "⚧" U26A7 # MALE WITH STROKE AND MALE AND FEMALE SIGN
-
-
-<Multi_key> <O> <X>: "☠" U2620 # SKULL AND CROSSBONES
-<Multi_key> <Multi_key> <d> <e> <a> <t> <h>: "☠" U2620 # SKULL AND CROSSBONES
-<Multi_key> <Multi_key> <X> <b> <o> <n> <e> <s>: "☠" U2620 # SKULL AND CROSSBONES
-<Multi_key> <Multi_key> <k> <b> <d> : "⌨" U2328 # KEYBOARD
-<Multi_key> <Multi_key> <r> <h> <a> <n> <d> : "☞" U261E # WHITE RIGHT POINTING INDEX
-<Multi_key> <Multi_key> <l> <h> <a> <n> <d> : "☜" U261C # WHITE LEFT POINTING INDEX
-<Multi_key> <asterisk> <asterisk> :"★" U2605 # BLACK STAR
-<Multi_key> <asterisk> <0> :"☆" U2606 # WHITE STAR
-<Multi_key> <asterisk> <minus> :"✪" U272A # CIRCLED WHITE STAR
-<Multi_key> <asterisk> <3> :"⁂" U2042 # ASTERISM
-<Multi_key> <3> <asterisk> :"⁂" U2042 # ASTERISM
-<Multi_key> <2> <asterisk> :"⁑" U2051 # TWO ASTERISKS ALIGNED VERTICALLY
-<Multi_key> <asterisk> <4> :"✢" U2722 # FOUR TEARDROP-SPOKED ASTERISK
-<Multi_key> <asterisk> <6> :"✡" U2721 # STAR OF DAVID
-<Multi_key> <asterisk> <numbersign> :"✯" U272F # PINWHEEL STAR
-<Multi_key> <asterisk> <exclam> :"✱" U2731 # HEAVY ASTERISK
-<Multi_key> <less> <X> <greater> : "❖" U2756 # BLACK DIAMOND MINUS WHITE X
-<Multi_key> <at> <numbersign> : "⌘" U2318 # PLACE OF INTEREST SIGN
-# Using backslash-minus-slash etc. conflicts with combining accents.
-<Multi_key> <grave> <minus> <apostrophe> : "⚞" U269E # THREE LINES CONVERGING RIGHT
-<Multi_key> <apostrophe> <minus> <grave> : "⚟" U269F # THREE LINES CONVERGING LEFT
-<Multi_key> <Multi_key> <B> <e> <l> <l> <s> <y> <m> : "⍾" U237E # BELL SYMBOL (or ALIENS LANDING) -- &-a-l-i-e-n ?
-# Other monstery characters... ѪꙚ (alien abductions?)
-# ඏൠഋ & others from Kannada et al...?
-# Can't use -^- for this; conflicts with -^ for ↑, and getting those arrows
-# workable was complicated enough. How about this?
-<Multi_key> <underscore> <asciicircum> <underscore> : "⌤" U2324 # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS; aka ENTER KEY, aka NOT AMUSED.
-<Multi_key> <Multi_key> <w> <a> <i> <t> : "⌛" U231B # HOURGLASS
-<Multi_key> <Multi_key> <h> <o> <u> <r> : "⌛" U231B # HOURGLASS
-<Multi_key> <Multi_key> <t> <i> <m> <e> : "⌚" U231A # WATCH
-<Multi_key> <Multi_key> <w> <a> <t> <c> <h> : "⌚" U231A # WATCH
-<Multi_key> <space> <N> : " " U2002 # EN SPACE
-<Multi_key> <space> <M> : " " U2003 # EM SPACE
-<Multi_key> <space> <3> <M> : " " U2004 # THREE-PER-EM SPACE
-<Multi_key> <space> <4> <M> : " " U2005 # FOUR-PER-EM SPACE
-<Multi_key> <parenleft> <parenright>: "◌" U25CC # DOTTED CIRCLE
-<Multi_key> <bracketleft> <bracketright>: "⬚" U2B1A # DOTTED SQUARE
-<Multi_key> <asterisk> <parenleft> : "﴾" UFD3E # ORNATE LEFT PARENTHESIS
-<Multi_key> <asterisk> <parenright> : "﴿" UFD3F # ORNATE RIGHT PARENTHESIS
-<Multi_key> <k> <s> : "ʘ" U0298 # LATIN LETTER BILABIAL CLICK (kiss sound)
-<Multi_key> <bar> <greater> : "‣" U2023 # TRIANGULAR BULLET
-#SUPERSCRIPTS:
-#To avoid namespace clashes, <asciicircum> is doubled (will I regret that?)
-<Multi_key> <asciicircum> <asciicircum> <h> : "ʰ" U02B0 # SUPERSCRIPT H
-<Multi_key> <asciicircum> <asciicircum> <i> : "ⁱ" U2071 # SUPERSCRIPT I
-<Multi_key> <asciicircum> <asciicircum> <j> : "ʲ" U02B2 # SUPERSCRIPT J
-<Multi_key> <asciicircum> <asciicircum> <n> : "ⁿ" U207F # SUPERSCRIPT N
-<Multi_key> <asciicircum> <asciicircum> <r> : "ʳ" U02B3 # SUPERSCRIPT R
-<Multi_key> <asciicircum> <asciicircum> <w> : "ʷ" U02B7 # SUPERSCRIPT W
-<Multi_key> <asciicircum> <asciicircum> <y> : "ʸ" U02B8 # SUPERSCRIPT Y
-# So I can use yᵗ/þᵗ and yᵉ/þᵉ
-<Multi_key> <asciicircum> <asciicircum> <e> : "ᵉ" U1D49 # MODIFIER LETTER SMALL E
-<Multi_key> <asciicircum> <asciicircum> <t> : "ᵗ" U1D57 # MODIFIER LETTER SMALL T
-# Abbreviation for "that":
-<Multi_key> <U00FE> <t> : "ꝥ" UA765 # LATIN SMALL LETTER THORN WITH STROKE
-#Maybe add: ˀˁ˃˂ Need to be able to talk about ʔˁ...
-<Multi_key> <asciicircum> <question> <period> : "ˀ" U02C0 # MODIFIER LETTER GLOTTAL STOP
-<Multi_key> <asciicircum> <question> <parenleft> : "ˁ" U02C1 # MODIFIER LETTER REVERSED GLOTTAL STOP
-<Multi_key> <asciicircum> <minus> : "⁻" U207B # SUPERSCRIPT MINUS
-<Multi_key> <asciicircum> <plus> : "⁺" U207A # SUPERSCRIPT PLUS
-
-<Multi_key> <asciitilde> <asciitilde> : "≈" U2248 # ALMOST EQUAL TO
-<Multi_key> <s> <h> : "ʃ" U0283 # LATIN SMALL LETTER ESH
-<Multi_key> <z> <h> : "ʒ" U0292 # LATIN SMALL LETTER EZH
-<Multi_key> <l> <h> : "ɬ" U026C # LATIN SMALL LETTER L WITH BELT
-<Multi_key> <l> <3> : "ɮ" U026E # LATIN SMALL LETTER LEZH
-<Multi_key> <y> <g> : "ȝ" U021D # LATIN SMALL LETTER YOGH
-<Multi_key> <Y> <G> : "Ȝ" U021C # LATIN CAPITAL LETTER YOGH
-<Multi_key> <question> <period> : "ʔ" U0294 # LATIN LETTER GLOTTAL STOP
-<Multi_key> <question> <parenleft> : "ʕ" U0295 # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
-# Not great keystrokes...
-<Multi_key> <question> <v> : "ʖ" U0296 # LATIN LETTER INVERTED GLOTTAL STOP
-<Multi_key> <question> <minus> : "ʡ" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE
-<Multi_key> <question> <braceleft> : "ʢ" U02A2 # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
-# How about ɸ? φ isn’t the IPA glyph.
-<Multi_key> <p> <h> : "ɸ" U0278 # LATIN SMALL LETTER PHI
-<Multi_key> <i> <h> : "ɪ" U026A # LATIN LETTER SMALL CAPITAL I
-<Multi_key> <I> <H> : "ɪ" U026A # LATIN LETTER SMALL CAPITAL I
-<Multi_key> <u> <h> : "ʊ" U028A # LATIN SMALL LETTER UPSILON
-<Multi_key> <U> <H> : "ʊ" U028A # LATIN SMALL LETTER UPSILON
-<Multi_key> <a> <h> : "ɑ" U0251 # LATIN SMALL LETTER ALPHA
-<Multi_key> <e> <r> : "ɚ" U025A # LATIN SMALL LETTER SCHWA WITH HOOK
-<Multi_key> <o> <parenright> :"ɔ" U0254 # LATIN SMALL LETTER OPEN O
-<Multi_key> <a> <w> : "ɔ" U0254 # LATIN SMALL LETTER OPEN O
-<Multi_key> <O> <parenright> :"Ɔ" U0186 # LATIN CAPITAL LETTER OPEN O
-<Multi_key> <A> <W> : "Ɔ" U0186 # LATIN CAPITAL LETTER OPEN O
-<Multi_key> <e> <h> : "ɛ" U025B # LATIN SMALL LETTER OPEN E
-# Have to put the <less> at the beginning for these.
-<Multi_key> <less> <e> <h> : "ɜ" U025C # LATIN SMALL LETTER REVERSED OPEN E
-<Multi_key> <BackSpace> <e> <h> : "ɜ" U025C # LATIN SMALL LETTER REVERSED OPEN E
-<Multi_key> <less> <e> <r> : "ɝ" U025D # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
-<Multi_key> <BackSpace> <e> <r> : "ɝ" U025D # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
-# It's spelled "gy" in Hungarian...
-<Multi_key> <g> <y> : "ɟ" U025F # LATIN SMALL LETTER DOTLESS J WITH STROKE
-# How are these keystrokes?
-<Multi_key> <bar> <apostrophe> : "ˈ" U02C8 # MODIFIER LETTER VERTICAL LINE
-<Multi_key> <bar> <comma> : "ˌ" U02CC # MODIFIER LETTER LOW VERTICAL LINE
-<Multi_key> <bar> <underscore> : "̩" U0329 # COMBINING VERTICAL LINE BELOW
-# Harmonize with other combiners.
-<Multi_key> <backslash> <underscore> <bar> : "̩" U0329 # COMBINING VERTICAL LINE BELOW
-<Multi_key> <r> <r> : "ɹ" U0279 # LATIN SMALL LETTER TURNED R: voiced alveolar approximant (American English (at least) R)
-<Multi_key> <r> <d> : "ɾ" U027E # LATIN SMALL LETTER R WITH FISHHOOK: voiced alveolar flap or tap (American English intervocalic allophone of d, or Spanish r)
-<Multi_key> <v> <v> : "ʌ" U028C # LATIN SMALL LETTER TURNED V
-<Multi_key> <u> <i> : "ɯ" U026F # LATIN SMALL LETTER TURNED M
-# doubling a letter seems to be mostly used for turning
-<Multi_key> <w> <w> : "ʍ" U028D # LATIN SMALL LETTER TURNED W
-<Multi_key> <y> <y> : "ʎ" U028E # LATIN SMALL LETTER TURNED Y
-<Multi_key> <a> <a> : "ɐ" U0250 # LATIN SMALL LETTER TURNED A
-<Multi_key> <h> <h> : "ɥ" U0265 # LATIN SMALL LETTER TURNED H
-# ı is already available in the "standard" .XCompose
-<Multi_key> <j> <period> : "ȷ" U0237 # LATIN SMALL LETTER DOTLESS J
-<Multi_key> <exclam> <period> : "Ꞌ" UA78B # LATIN CAPITAL LETTER SALTILLO
-<Multi_key> <exclam> <underscore> <period> : "ꞌ" UA78C # LATIN SMALL LETTER SALTILLO
-# I'll use capitals for a different double
-<Multi_key> <W> <W> : "ʬ" U02AC # LATIN LETTER BILABIAL PERCUSSIVE
-# Also handy for writing urls: http://ʬw.omniglot.com/
-# Sorry, I miss having this and hate having to use colon instead:
-<Multi_key> <colon> <plus> : "ː" U02D0 # MODIFIER LETTER TRIANGULAR COLON
-# ɣ? ᴥ? Important enough to add? ᴥ is cool just as a "latin" letter.
-<Multi_key> <g> <h> : "ɣ" U0263 # LATIN SMALL LETTER GAMMA
-# It looks like a ɣ and makes an "o" sorta sound:
-<Multi_key> <o> <g> <h> : "ɤ" U0264 # LATIN SMALL LETTER RAMS HORN
-<Multi_key> <a> <i> <n> : "ᴥ" U1D25 # LATIN LETTER AIN
-# Sometimes it's a "tail", sometimes a "hook", and sometimes a "retroflex hook"
-<Multi_key> <d> <comma> : "ɖ" U0256 # LATIN SMALL LETTER D WITH TAIL
-<Multi_key> <l> <comma> : "ɭ" U026D # LATIN SMALL LETTER L WITH RETROFLEX HOOK
-<Multi_key> <n> <comma> : "ɳ" U0273 # LATIN SMALL LETTER N WITH RETROFLEX HOOK
-<Multi_key> <s> <comma> : "ʂ" U0282 # LATIN SMALL LETTER S WITH HOOK
-<Multi_key> <t> <comma> : "ʈ" U0288 # LATIN SMALL LETTER T WITH RETROFLEX HOOK
-<Multi_key> <z> <comma> : "ʐ" U0290 # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
-# This is used for functions, folders, etc. Yeah, the hook's facing wrong.
-<Multi_key> <f> <comma> : "ƒ" U0192 # LATIN SMALL LETTER F WITH HOOK
-# Sigh, might as well do implosives. Which is also sometimes a hook.
-<Multi_key> <b> <apostrophe> : "ɓ" U0253 # LATIN SMALL LETTER B WITH HOOK
-<Multi_key> <d> <apostrophe> : "ɗ" U0257 # LATIN SMALL LETTER D WITH HOOK
-<Multi_key> <g> <apostrophe> : "ɠ" U0260 # LATIN SMALL LETTER G WITH HOOK
-<Multi_key> <g> <g> : "ɡ" U0261 # LATIN SMALL LETTER SCRIPT G
-# The h looks the same...
-<Multi_key> <h> <apostrophe> : "ɦ" U0266 # LATIN SMALL LETTER H WITH HOOK
-<Multi_key> <G> <apostrophe> : "ʛ" U029B # LATIN LETTER SMALL CAPITAL G WITH HOOK
-<Multi_key> <N> <o> : "№" U2116 # NUMERO SIGN
-<Multi_key> <R> <x> : "℞" U211E # PRESCRIPTION TAKE
-<Multi_key> <P> <e> <r> : "⅌" U214C # PER SIGN
-<Multi_key> <o> <z> <period> : "℥" U2125 # OUNCE SIGN
-<Multi_key> <s> <c> <r> <period> : "℈" U2108 # SCRUPLE
-# There are all kinds of awesome combining characters in the U+0300 page.
-# There are a bunch of other awesome combining characters like U+20E0
-<Multi_key> <asterisk> <period> <period> <period> : "๛" U0E5B # THAI CHARACTER KHOMUT (end of chapter)
-#
-# Music stuff. # is the music mnemonic.
-<Multi_key> <numbersign> <b> : "♭" U266d # MUSIC FLAT SIGN
-<Multi_key> <numbersign> <f> : "♮" U266e # MUSIC NATURAL SIGN
-<Multi_key> <numbersign> <equal> : "♮" U266e # MUSIC NATURAL SIGN
-<Multi_key> <numbersign> <numbersign> : "♯" U266f # MUSIC SHARP SIGN
-<Multi_key> <numbersign> <G> : "𝄞" U0001d11e # MUSICAL SYMBOL G CLEF
-<Multi_key> <numbersign> <F> : "𝄢" U0001d122 # MUSICAL SYMBOL F CLEF
-<Multi_key> <numbersign> <C> : "𝄡" U0001d121 # MUSICAL SYMBOL C CLEF
-<Multi_key> <numbersign> <o> <slash> : "♪" U266a # EIGHTH NOTE
-<Multi_key> <numbersign> <o> <o> : "♫" U266b # BEAMED EIGHTH NOTES
-<Multi_key> <numbersign> <percent> : "♫" U266b # BEAMED EIGHTH NOTES
-
-
-# Combining accents, for making things you don't have precomposed chars or keystrokes for:
-<Multi_key> <backslash> <grave> : "̀" U0300 # COMBINING GRAVE ACCENT
-<Multi_key> <backslash> <apostrophe> : "́" U0301 # COMBINING ACUTE ACCENT
-<Multi_key> <backslash> <asciicircum> : "̂" U0302 # COMBINING CIRCUMFLEX ACCENT
-<Multi_key> <backslash> <asciitilde> : "̃" U0303 # COMBINING TILDE
-<Multi_key> <backslash> <equal> : "̄" U0304 # COMBINING MACRON
-<Multi_key> <backslash> <backslash> <equal> : "̅" U0305 # COMBINING OVERLINE -- ???
-<Multi_key> <backslash> <U> : "̆" U0306 # COMBINING BREVE
-<Multi_key> <backslash> <period> : "̇" U0307 # COMBINING DOT ABOVE
-<Multi_key> <backslash> <quotedbl> : "̈" U0308 # COMBINING DIAERESIS
-<Multi_key> <backslash> <question> : "̉" U0309 # COMBINING HOOK ABOVE
-<Multi_key> <backslash> <o> : "̊" U030a # COMBINING RING ABOVE
-# That now conflicts with the new 🙌 in the system xcompose. Alternative:
-<Multi_key> <backslash> <0> : "̊" U030a # COMBINING RING ABOVE
-<Multi_key> <backslash> <backslash> <apostrophe> : "̋" U030b # COMBINING DOUBLE ACUTE ACCENT -- ??
-<Multi_key> <backslash> <c> : "̌" U030c # COMBINING CARON
-<Multi_key> <backslash> <bar> : "̍" U030d # COMBINING VERTICAL LINE ABOVE
-<Multi_key> <backslash> <2> <bar> : "̎" U030e # COMBINING DOUBLE VERTICAL LINE ABOVE
-<Multi_key> <backslash> <2> <grave> : "̏" U030f # COMBINING DOUBLE GRAVE ACCENT
-# For writing PSILI and DASIA in Greek
-# Ugh, better key-coding? I may need @ for BELOW.
-<Multi_key> <backslash> <backslash> <backslash> <comma> : "̒" U0312 # COMBINING TURNED COMMA ABOVE
-<Multi_key> <backslash> <backslash> <comma> : "̓" U0313 # COMBINING COMMA ABOVE
-<Multi_key> <backslash> <backslash> <less> <comma> : "̔" U0314 # COMBINING REVERSED COMMA ABOVE
-<Multi_key> <backslash> <f> <m> : "͒" U0352 # COMBINING FERMATA
-<Multi_key> <backslash> <parenleft> <period> : "̐" U0310 # COMBINING CHANDRABINDU
-<Multi_key> <backslash> <i> <b> : "̑" U0311 # COMBINING INVERTED BREVE -- ??
-<Multi_key> <backslash> <parenleft> <parenright>: "⃝" U20DD # COMBINING ENCLOSING CIRCLE
-<Multi_key> <backslash> <parenleft> <slash> <parenright>: "⃠" U20E0 # COMBINING ENCLOSING CIRCLE BACKSLASH
-<Multi_key> <backslash> <exclam> : "̣" U0323 # COMBINING DOT BELOW
-# With only one underscore it conflicts with stuff.
-<Multi_key> <backslash> <underscore> <underscore> : "̱" U0331 # COMBINING MACRON BELOW
-<Multi_key> <backslash> <backslash> <underscore> : "̲" U0332 # COMBINING LOW LINE
-<Multi_key> <backslash> <backslash> <backslash> <underscore> : "̳" U0333 # COMBINING DOUBLE LOW LINE
-
-# The @ sign will signify reversal to the bottom of the glyph, 'kay?
-
-<Multi_key> <backslash> <at> <o> : "̥" U0325 # COMBINING RING BELOW
-
-<Multi_key> <backslash> <at> <c> : "̬" U032c # COMBINING CARON BELOW
-<Multi_key> <backslash> <at> <asciicircum> : "̭" U032d # COMBINING CIRCUMFLEX ACCENT BELOW
-<Multi_key> <backslash> <at> <U> : "̮" U032e # COMBINING BREVE BELOW
-<Multi_key> <backslash> <at> <i> <b> : "̯" U032f # COMBINING INVERTED BREVE BELOW -- ??
-
-# How about leading & (or &&?) for double combiners? There aren't many anyway.
-# Except that I found myself assuming it was "2" for double.
-<Multi_key> <backslash> <ampersand> <at> <U> : "͜" U035C # COMBINING DOUBLE BREVE BELOW
-<Multi_key> <backslash> <2> <at> <U> : "͜" U035C # COMBINING DOUBLE BREVE BELOW
-<Multi_key> <backslash> <ampersand> <U> : "͝" U035D # COMBINING DOUBLE BREVE
-<Multi_key> <backslash> <2> <U> : "͝" U035D # COMBINING DOUBLE BREVE
-<Multi_key> <backslash> <ampersand> <minus> : "͞" U035E # COMBINING DOUBLE MACRON
-<Multi_key> <backslash> <2> <minus> : "͞" U035E # COMBINING DOUBLE MACRON
-<Multi_key> <backslash> <ampersand> <at> <minus> : "͟" U035F # COMBINING DOUBLE MACRON BELOW
-<Multi_key> <backslash> <2> <at> <minus> : "͟" U035F # COMBINING DOUBLE MACRON BELOW
-<Multi_key> <backslash> <ampersand> <underscore> : "͟" U035F # COMBINING DOUBLE MACRON BELOW
-<Multi_key> <backslash> <2> <underscore> : "͟" U035F # COMBINING DOUBLE MACRON BELOW
-<Multi_key> <backslash> <ampersand> <asciitilde> : "͠" U0360 # COMBINING DOUBLE TILDE
-<Multi_key> <backslash> <2> <asciitilde> : "͠" U0360 # COMBINING DOUBLE TILDE
-<Multi_key> <backslash> <ampersand> <i> <b> : "͡" U0361 # COMBINING DOUBLE INVERTED BREVE
-<Multi_key> <backslash> <2> <i> <b> : "͡" U0361 # COMBINING DOUBLE INVERTED BREVE
-<Multi_key> <backslash> <ampersand> <at> <i> <b> : "᷼" U1DFC # COMBINING DOUBLE INVERTED BREVE BELOW
-<Multi_key> <backslash> <2> <at> <i> <b> : "᷼" U1DFC # COMBINING DOUBLE INVERTED BREVE BELOW
-# Might as well finish up the set.
-<Multi_key> <backslash> <ampersand> <greater> : "͢" U0362 # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-<Multi_key> <backslash> <2> <greater> : "͢" U0362 # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-
-<Multi_key> <period> <parenright> : "͒" U0352 # COMBINING FERMATA
-
-<Multi_key> <backslash> <asterisk> : "҉" U0489 # COMBINING CYRILLIC MILLIONS SIGN -- aka COMBINING SHINY
-<Multi_key> <P> <minus> : "₽" U20BD # RUBLE SIGN
-<Multi_key> <p> <minus> : "₽" U20BD # RUBLE SIGN
-
-# How about for a little extra control:
-<Multi_key> <Z> <W> <S> <P> : "" U200B # ZERO WIDTH SPACE
-<Multi_key> <Z> <W> <N> <J> : "" U200C # ZERO WIDTH NON-JOINER
-<Multi_key> <Z> <W> <J> : "" U200D # ZERO WIDTH JOINER
-<Multi_key> <L> <R> <M> : "" U200E # LEFT-TO-RIGHT MARK
-<Multi_key> <R> <L> <M> : "" U200F # RIGHT-TO-LEFT MARK
-# I never understood the whole embedding/pop thing, but we might as well add 'em
-<Multi_key> <L> <R> <E> : "" U202A # LEFT-TO-RIGHT EMBEDDING
-<Multi_key> <R> <L> <E> : "" U202B # RIGHT-TO-LEFT EMBEDDING
-<Multi_key> <P> <D> <F> : "" U202C # POP DIRECTIONAL FORMATTING
-<Multi_key> <L> <R> <I> : "" U2066 # LEFT-TO-RIGHT ISOLATE
-<Multi_key> <R> <L> <I> : "" U2067 # RIGHT-TO-LEFT ISOLATE
-<Multi_key> <F> <S> <I> : "" U2068 # FIRST STRONG ISOLATE
-<Multi_key> <P> <D> <I> : "" U2069 # POP DIRECTIONAL ISOLATE
-<Multi_key> <L> <R> <O> : "" U202D # LEFT-TO-RIGHT OVERRIDE
-<Multi_key> <R> <L> <O> : "" U202E # RIGHT-TO-LEFT OVERRIDE
-<Multi_key> <B> <O> <M> : "" UFEFF # ZERO WIDTH NO-BREAK SPACE (Byte Order Mark)
-<Multi_key> <C> <G> <J> : "͏" U034F # COMBINING GRAPHEME JOINER
-# These are sufficiently special and well-known that they don't need the
-# double <Multi_key> prefix I think. The all-caps helps too.
-
-# How about some small-caps? We normally use a special character as a prefix,
-# but why not a suffix? It won't interfere with things that way.
-# Several of these are also IPA, which is handy. And so a few have multiple
-# entries. Whatever.
-
-<Multi_key> <a> <grave> : "ᴀ" U1D00 # LATIN LETTER SMALL CAPITAL A
-<Multi_key> <b> <grave> : "ʙ" U0299 # LATIN LETTER SMALL CAPITAL B
-<Multi_key> <c> <grave> : "ᴄ" U1D04 # LATIN LETTER SMALL CAPITAL C
-<Multi_key> <d> <grave> : "ᴅ" U1D05 # LATIN LETTER SMALL CAPITAL D
-<Multi_key> <e> <grave> : "ᴇ" U1D07 # LATIN LETTER SMALL CAPITAL E
-<Multi_key> <f> <grave> : "ꜰ" UA730 # LATIN LETTER SMALL CAPITAL F
-<Multi_key> <g> <grave> : "ɢ" U0262 # LATIN LETTER SMALL CAPITAL G
-<Multi_key> <h> <grave> : "ʜ" U029C # LATIN LETTER SMALL CAPITAL H
-<Multi_key> <i> <grave> : "ɪ" U026A # LATIN LETTER SMALL CAPITAL I
-<Multi_key> <j> <grave> : "ᴊ" U1D0A # LATIN LETTER SMALL CAPITAL J
-<Multi_key> <k> <grave> : "ᴋ" U1D0B # LATIN LETTER SMALL CAPITAL K
-<Multi_key> <l> <grave> : "ʟ" U029F # LATIN LETTER SMALL CAPITAL L
-<Multi_key> <m> <grave> : "ᴍ" U1D0D # LATIN LETTER SMALL CAPITAL M
-<Multi_key> <n> <grave> : "ɴ" U0274 # LATIN LETTER SMALL CAPITAL N
-<Multi_key> <o> <grave> : "ᴏ" U1D0F # LATIN LETTER SMALL CAPITAL O
-<Multi_key> <p> <grave> : "ᴘ" U1D18 # LATIN LETTER SMALL CAPITAL P
-# There is no SMALL CAPITAL Q (yet)!
-<Multi_key> <r> <grave> : "ʀ" U0280 # LATIN LETTER SMALL CAPITAL R
-<Multi_key> <s> <grave> : "ꜱ" UA731 # LATIN LETTER SMALL CAPITAL S
-<Multi_key> <t> <grave> : "ᴛ" U1D1B # LATIN LETTER SMALL CAPITAL T
-<Multi_key> <u> <grave> : "ᴜ" U1D1C # LATIN LETTER SMALL CAPITAL U
-<Multi_key> <v> <grave> : "ᴠ" U1D20 # LATIN LETTER SMALL CAPITAL V
-<Multi_key> <w> <grave> : "ᴡ" U1D21 # LATIN LETTER SMALL CAPITAL W
-# There is no SMALL CAPITAL X (yet)
-<Multi_key> <y> <grave> : "ʏ" U028F # LATIN LETTER SMALL CAPITAL Y
-<Multi_key> <z> <grave> : "ᴢ" U1D22 # LATIN LETTER SMALL CAPITAL Z
-
-
-# See also http://bleah.co.uk/~simon/stuff/XCompose
-# and http://dotfiles.org/~inky/.XCompose
-# and http://paste.lisp.org/display/73094
-
-<Multi_key> <Multi_key> <s> <u> <n> : "☉" U2609 # SUN (Sunday)
-<Multi_key> <Multi_key> <m> <o> <o> <n> : "☽" U263D # FIRST QUARTER MOON (Monday)
-<Multi_key> <Multi_key> <m> <e> <r> <c> <u> <r> <y> : "☿" U263F # MERCURY (Wednesday)
-# We already have Venus (Friday) and Mars (Tuesday) as Male/Female signs; do we need them here too?
-#<Multi_key> <Multi_key> <v> <e> <n> <u> <s> : "♀" U2640 # FEMALE SIGN
-#<Multi_key> <Multi_key> <m> <a> <r> <s> : "♂" U2642 # MALE SIGN
-<Multi_key> <Multi_key> <j> <u> <p> <i> <t> <e> <r> : "♃" U2643 # JUPITER (Thursday)
-<Multi_key> <Multi_key> <s> <a> <t> <u> <r> <n> : "♄" U2644 # SATURN (Saturday)
-<Multi_key> <Multi_key> <u> <r> <a> <n> <u> <s> : "♅" U2645 # URANUS (or ⛢ U26E2?)
-<Multi_key> <Multi_key> <n> <e> <p> <t> <u> <n> <e> : "♆" U2646 # NEPTUNE
-<Multi_key> <Multi_key> <p> <l> <u> <t> <o> : "♇" U2647 # PLUTO (ok, it isn't a planet anymore, but we still love it.)
-# Minor planets, whilst we're at it?
-<Multi_key> <Multi_key> <c> <e> <r> <e> <s> : "⚳" U26B3 # CERES
-<Multi_key> <Multi_key> <p> <a> <l> <l> <a> <s> : "⚴" U26B4 # PALLAS
-<Multi_key> <Multi_key> <j> <u> <n> <o> : "⚵" U26B5 # JUNO
-<Multi_key> <Multi_key> <v> <e> <s> <t> <a> : "⚶" U26B6 # VESTA
-<Multi_key> <Multi_key> <c> <h> <i> <r> <o> <n> : "⚷" U26B7 # CHIRON
-<Multi_key> <Multi_key> <l> <i> <l> <i> <t> <h> : "⚸" U26B8 # BLACK MOON LILITH
-<Multi_key> <bracketleft> <k> <e> <y> <bracketright> : "⚿" U26BF # SQUARED KEY
-
-# Unicode 6.0 gave us all kinds of things, perhaps more than we can use...
-
-# Playing Cards? It's a lot, but so what? I don't think the [] convention
-# will conflict with anything.
-# The convention is more or less established, except for the Knight. I'm
-# using N for that, like in Chess, since K would conflict with King of course.
-
-<Multi_key> <bracketleft> <A> <S> <bracketright> : "🂡" U1F0A1 # PLAYING CARD ACE OF SPADES
-<Multi_key> <bracketleft> <2> <S> <bracketright> : "🂢" U1F0A2 # PLAYING CARD TWO OF SPADES
-<Multi_key> <bracketleft> <3> <S> <bracketright> : "🂣" U1F0A3 # PLAYING CARD THREE OF SPADES
-<Multi_key> <bracketleft> <4> <S> <bracketright> : "🂤" U1F0A4 # PLAYING CARD FOUR OF SPADES
-<Multi_key> <bracketleft> <5> <S> <bracketright> : "🂥" U1F0A5 # PLAYING CARD FIVE OF SPADES
-<Multi_key> <bracketleft> <6> <S> <bracketright> : "🂦" U1F0A6 # PLAYING CARD SIX OF SPADES
-<Multi_key> <bracketleft> <7> <S> <bracketright> : "🂧" U1F0A7 # PLAYING CARD SEVEN OF SPADES
-<Multi_key> <bracketleft> <8> <S> <bracketright> : "🂨" U1F0A8 # PLAYING CARD EIGHT OF SPADES
-<Multi_key> <bracketleft> <9> <S> <bracketright> : "🂩" U1F0A9 # PLAYING CARD NINE OF SPADES
-<Multi_key> <bracketleft> <T> <S> <bracketright> : "🂪" U1F0AA # PLAYING CARD TEN OF SPADES
-<Multi_key> <bracketleft> <J> <S> <bracketright> : "🂫" U1F0AB # PLAYING CARD JACK OF SPADES
-<Multi_key> <bracketleft> <N> <S> <bracketright> : "🂬" U1F0AC # PLAYING CARD KNIGHT OF SPADES
-<Multi_key> <bracketleft> <Q> <S> <bracketright> : "🂭" U1F0AD # PLAYING CARD QUEEN OF SPADES
-<Multi_key> <bracketleft> <K> <S> <bracketright> : "🂮" U1F0AE # PLAYING CARD KING OF SPADES
-
-<Multi_key> <bracketleft> <A> <H> <bracketright> : "🂱" U1F0B1 # PLAYING CARD ACE OF HEARTS
-<Multi_key> <bracketleft> <2> <H> <bracketright> : "🂲" U1F0B2 # PLAYING CARD TWO OF HEARTS
-<Multi_key> <bracketleft> <3> <H> <bracketright> : "🂳" U1F0B3 # PLAYING CARD THREE OF HEARTS
-<Multi_key> <bracketleft> <4> <H> <bracketright> : "🂴" U1F0B4 # PLAYING CARD FOUR OF HEARTS
-<Multi_key> <bracketleft> <5> <H> <bracketright> : "🂵" U1F0B5 # PLAYING CARD FIVE OF HEARTS
-<Multi_key> <bracketleft> <6> <H> <bracketright> : "🂶" U1F0B6 # PLAYING CARD SIX OF HEARTS
-<Multi_key> <bracketleft> <7> <H> <bracketright> : "🂷" U1F0B7 # PLAYING CARD SEVEN OF HEARTS
-<Multi_key> <bracketleft> <8> <H> <bracketright> : "🂸" U1F0B8 # PLAYING CARD EIGHT OF HEARTS
-<Multi_key> <bracketleft> <9> <H> <bracketright> : "🂹" U1F0B9 # PLAYING CARD NINE OF HEARTS
-<Multi_key> <bracketleft> <T> <H> <bracketright> : "🂺" U1F0BA # PLAYING CARD TEN OF HEARTS
-<Multi_key> <bracketleft> <J> <H> <bracketright> : "🂻" U1F0BB # PLAYING CARD JACK OF HEARTS
-<Multi_key> <bracketleft> <N> <H> <bracketright> : "🂼" U1F0BC # PLAYING CARD KNIGHT OF HEARTS
-<Multi_key> <bracketleft> <Q> <H> <bracketright> : "🂽" U1F0BD # PLAYING CARD QUEEN OF HEARTS
-<Multi_key> <bracketleft> <K> <H> <bracketright> : "🂾" U1F0BE # PLAYING CARD KING OF HEARTS
-
-<Multi_key> <bracketleft> <A> <D> <bracketright> : "🃁" U1F0C1 # PLAYING CARD ACE OF DIAMONDS
-<Multi_key> <bracketleft> <2> <D> <bracketright> : "🃂" U1F0C2 # PLAYING CARD TWO OF DIAMONDS
-<Multi_key> <bracketleft> <3> <D> <bracketright> : "🃃" U1F0C3 # PLAYING CARD THREE OF DIAMONDS
-<Multi_key> <bracketleft> <4> <D> <bracketright> : "🃄" U1F0C4 # PLAYING CARD FOUR OF DIAMONDS
-<Multi_key> <bracketleft> <5> <D> <bracketright> : "🃅" U1F0C5 # PLAYING CARD FIVE OF DIAMONDS
-<Multi_key> <bracketleft> <6> <D> <bracketright> : "🃆" U1F0C6 # PLAYING CARD SIX OF DIAMONDS
-<Multi_key> <bracketleft> <7> <D> <bracketright> : "🃇" U1F0C7 # PLAYING CARD SEVEN OF DIAMONDS
-<Multi_key> <bracketleft> <8> <D> <bracketright> : "🃈" U1F0C8 # PLAYING CARD EIGHT OF DIAMONDS
-<Multi_key> <bracketleft> <9> <D> <bracketright> : "🃉" U1F0C9 # PLAYING CARD NINE OF DIAMONDS
-<Multi_key> <bracketleft> <T> <D> <bracketright> : "🃊" U1F0CA # PLAYING CARD TEN OF DIAMONDS
-<Multi_key> <bracketleft> <J> <D> <bracketright> : "🃋" U1F0CB # PLAYING CARD JACK OF DIAMONDS
-<Multi_key> <bracketleft> <N> <D> <bracketright> : "🃌" U1F0CC # PLAYING CARD KNIGHT OF DIAMONDS
-<Multi_key> <bracketleft> <Q> <D> <bracketright> : "🃍" U1F0CD # PLAYING CARD QUEEN OF DIAMONDS
-<Multi_key> <bracketleft> <K> <D> <bracketright> : "🃎" U1F0CE # PLAYING CARD KING OF DIAMONDS
-
-<Multi_key> <bracketleft> <A> <C> <bracketright> : "🃑" U1F0D1 # PLAYING CARD ACE OF CLUBS
-<Multi_key> <bracketleft> <2> <C> <bracketright> : "🃒" U1F0D2 # PLAYING CARD TWO OF CLUBS
-<Multi_key> <bracketleft> <3> <C> <bracketright> : "🃓" U1F0D3 # PLAYING CARD THREE OF CLUBS
-<Multi_key> <bracketleft> <4> <C> <bracketright> : "🃔" U1F0D4 # PLAYING CARD FOUR OF CLUBS
-<Multi_key> <bracketleft> <5> <C> <bracketright> : "🃕" U1F0D5 # PLAYING CARD FIVE OF CLUBS
-<Multi_key> <bracketleft> <6> <C> <bracketright> : "🃖" U1F0D6 # PLAYING CARD SIX OF CLUBS
-<Multi_key> <bracketleft> <7> <C> <bracketright> : "🃗" U1F0D7 # PLAYING CARD SEVEN OF CLUBS
-<Multi_key> <bracketleft> <8> <C> <bracketright> : "🃘" U1F0D8 # PLAYING CARD EIGHT OF CLUBS
-<Multi_key> <bracketleft> <9> <C> <bracketright> : "🃙" U1F0D9 # PLAYING CARD NINE OF CLUBS
-<Multi_key> <bracketleft> <T> <C> <bracketright> : "🃚" U1F0DA # PLAYING CARD TEN OF CLUBS
-<Multi_key> <bracketleft> <J> <C> <bracketright> : "🃛" U1F0DB # PLAYING CARD JACK OF CLUBS
-<Multi_key> <bracketleft> <N> <C> <bracketright> : "🃜" U1F0DC # PLAYING CARD KNIGHT OF CLUBS
-<Multi_key> <bracketleft> <Q> <C> <bracketright> : "🃝" U1F0DD # PLAYING CARD QUEEN OF CLUBS
-<Multi_key> <bracketleft> <K> <C> <bracketright> : "🃞" U1F0DE # PLAYING CARD KING OF CLUBS
-
-<Multi_key> <bracketleft> <C> <B> <bracketright> : "🂠" U1F0A0 # PLAYING CARD BACK
-<Multi_key> <bracketleft> <B> <J> <bracketright> : "🃏" U1F0CF # PLAYING CARD BLACK JOKER
-<Multi_key> <bracketleft> <W> <J> <bracketright> : "🃟" U1F0DF # PLAYING CARD WHITE JOKER
-
-# Do we want domino bones also? I'm thinking [ 1 1 ], etc, maybe use
-# ] 1 1 [ for vertical (or vice-versa)
-
-# And chess/checkers pieces! We need a convention for those. # looks like a
-# checkerboard but we're already using that for music. Half of it?
-# <bar> will be an issue when we want double-struck W or B... we'll have
-# to consider it. Maybe replace with <equal>
-<Multi_key> <bar> <W> <K> : "♔" U2654 # WHITE CHESS KING
-<Multi_key> <bar> <W> <Q> : "♕" U2655 # WHITE CHESS QUEEN
-<Multi_key> <bar> <W> <R> : "♖" U2656 # WHITE CHESS ROOK
-<Multi_key> <bar> <W> <B> : "♗" U2657 # WHITE CHESS BISHOP
-<Multi_key> <bar> <W> <N> : "♘" U2658 # WHITE CHESS KNIGHT
-<Multi_key> <bar> <W> <P> : "♙" U2659 # WHITE CHESS PAWN
-<Multi_key> <bar> <B> <K> : "♚" U265A # BLACK CHESS KING
-<Multi_key> <bar> <B> <Q> : "♛" U265B # BLACK CHESS QUEEN
-<Multi_key> <bar> <B> <R> : "♜" U265C # BLACK CHESS ROOK
-<Multi_key> <bar> <B> <B> : "♝" U265D # BLACK CHESS BISHOP
-<Multi_key> <bar> <B> <N> : "♞" U265E # BLACK CHESS KNIGHT
-<Multi_key> <bar> <B> <P> : "♟" U265F # BLACK CHESS PAWN
-<Multi_key> <bar> <W> <D> <M> : "⛀" U26C0 # WHITE DRAUGHTS MAN
-<Multi_key> <bar> <W> <D> <K> : "⛁" U26C1 # WHITE DRAUGHTS KING
-<Multi_key> <bar> <B> <D> <M> : "⛂" U26C2 # BLACK DRAUGHTS MAN
-<Multi_key> <bar> <B> <D> <K> : "⛃" U26C3 # BLACK DRAUGHTS KING
-# Since we're doing game pieces, might as well.
-<Multi_key> <bar> <W> <S> : "☖" U2616 # WHITE SHOGI PIECE
-<Multi_key> <bar> <B> <S> : "☗" U2617 # BLACK SHOGI PIECE
-# It's turned vertically and not horizontally reflected, but we use the <
-# symbol for turning...
-<Multi_key> <bar> <less> <W> <S> : "⛉" U26C9 # TURNED WHITE SHOGI PIECE
-<Multi_key> <bar> <less> <B> <S> : "⛊" U26CA # TURNED BLACK SHOGI PIECE
-
-# As for the emoji... We can't possibly get all of them, even just all of the
-# cool/useful ones. Maybe we can pick and choose some high-fliers.
-
-<Multi_key> <Multi_key> <d> <e> <g> <r> <e> <e> : "°" U00B0 # DEGREE SIGN
-<Multi_key> <Multi_key> <d> <e> <g> <C> : "℃" U2103 # DEGREE CELSIUS
-<Multi_key> <Multi_key> <d> <e> <g> <c> : "℃" U2103 # DEGREE CELSIUS
-<Multi_key> <Multi_key> <d> <e> <g> <F> : "℉" U2109 # DEGREE FAHRENHEIT
-<Multi_key> <Multi_key> <d> <e> <g> <f> : "℉" U2109 # DEGREE FAHRENHEIT
-
-# Zodiacal symbols?
-<Multi_key> <Multi_key> <a> <r> <i> <e> <s> : "♈" U2648 # ARIES
-<Multi_key> <Multi_key> <t> <a> <u> <r> <u> <s> : "♉" U2649 # TAURUS
-<Multi_key> <Multi_key> <g> <e> <m> <i> <n> <i> : "♊" U264A # GEMINI
-<Multi_key> <Multi_key> <c> <a> <n> <c> <e> <r> : "♋" U264B # CANCER
-<Multi_key> <Multi_key> <l> <e> <o> : "♌" U264C # LEO
-<Multi_key> <Multi_key> <v> <i> <r> <g> <o> : "♍" U264D # VIRGO
-<Multi_key> <Multi_key> <l> <i> <b> <r> <a> : "♎" U264E # LIBRA
-# Abbreviating some of the longer ones.
-<Multi_key> <Multi_key> <s> <c> <o> <r> <p> : "♏" U264F # SCORPIUS
-<Multi_key> <Multi_key> <s> <a> <g> <i> <t> : "♐" U2650 # SAGITTARIUS
-<Multi_key> <Multi_key> <c> <a> <p> <r> <i> <c> : "♑" U2651 # CAPRICORN
-<Multi_key> <Multi_key> <a> <q> <u> <a> <r> : "♒" U2652 # AQUARIUS
-<Multi_key> <Multi_key> <p> <i> <s> <c> <e> <s> : "♓" U2653 # PISCES
-# Really, this should be SERPENTARIUS. All the other signs are in Latin.
-<Multi_key> <Multi_key> <o> <p> <h> <i> <u> <c> : "⛎" U26CE # OPHIUCHUS
-
-# Sigh. So many emoji... I think the first ones I'd go for would be
-# 💡💢💣💤💥💦💧💨💫 (1F4A1-1F4A8 and 1F4AB). Maybe 1F550-1F567 are useful.
-<Multi_key> <Multi_key> <i> <d> <e> <a> : "💡" U1F4A1 # ELECTRIC LIGHT BULB
-<Multi_key> <Multi_key> <a> <n> <g> <e> <r> : "💢" U1F4A2 # ANGER SYMBOL
-<Multi_key> <Multi_key> <b> <o> <m> <b> : "💣" U1F4A3 # BOMB
-<Multi_key> <Multi_key> <z> <z> <z> : "💤" U1F4A4 # SLEEPING SYMBOL
-<Multi_key> <Multi_key> <p> <o> <w> : "💥" U1F4A5 # COLLISION SYMBOL
-<Multi_key> <Multi_key> <s> <w> <e> <a> <t> : "💦" U1F4A6 # SPLASHING SWEAT SYMBOL
-<Multi_key> <Multi_key> <d> <r> <o> <p> : "💧" U1F4A7 # DROPLET
-<Multi_key> <Multi_key> <z> <i> <p> : "💨" U1F4A8 # DASH SYMBOL
-<Multi_key> <Multi_key> <p> <o> <o> : "💩" U1F4A9 # PILE OF POO
-# Skipping U+1F4AA just now.
-<Multi_key> <Multi_key> <d> <i> <z> <z> <y> : "💫" U1F4AB # DIZZY SYMBOL
-<Multi_key> <Multi_key> <dollar> <b> <a> <g> : "💰" U1F4B0 # MONEY BAG
-<Multi_key> <Multi_key> <c> <a> <k> <e> : "🍰" U1F370 # SHORTCAKE
-# The cake is a lie... OK, too cutesy?
-<Multi_key> <Multi_key> <l> <i> <e> : "🎂" U1F382 # BIRTHDAY CAKE
-<Multi_key> <Multi_key> <b> <d> <a> <y> : "🎂" U1F382 # BIRTHDAY CAKE
-<Multi_key> <Multi_key> <A> <O> <K> : "👌" U1F44C # OK HAND SIGN
-<Multi_key> <Multi_key> <t> <h> <m> <u> <p> : "👍" U1F44D # THUMBS UP SIGN
-<Multi_key> <Multi_key> <t> <h> <m> <d> <n> : "👎" U1F44E # THUMBS DOWN SIGN
-# More useful in chat than U+1F48F KISS
-<Multi_key> <Multi_key> <k> <i> <s> <s> : "💋" U1F48B # KISS MARK
-# ⛔ U+26D4 NO ENTRY for "Don't go there"?
-# So many hearts... I'm not touching them for now.
-# And emoticons? (U+1F600 et seq)
-
-<Multi_key> <parenleft> <1> <colon> <0> <0> <parenright> : "🕐" U1F550 # CLOCK FACE ONE OCLOCK
-<Multi_key> <parenleft> <2> <colon> <0> <0> <parenright> : "🕑" U1F551 # CLOCK FACE TWO OCLOCK
-<Multi_key> <parenleft> <3> <colon> <0> <0> <parenright> : "🕒" U1F552 # CLOCK FACE THREE OCLOCK
-<Multi_key> <parenleft> <4> <colon> <0> <0> <parenright> : "🕓" U1F553 # CLOCK FACE FOUR OCLOCK
-<Multi_key> <parenleft> <5> <colon> <0> <0> <parenright> : "🕔" U1F554 # CLOCK FACE FIVE OCLOCK
-<Multi_key> <parenleft> <6> <colon> <0> <0> <parenright> : "🕕" U1F555 # CLOCK FACE SIX OCLOCK
-<Multi_key> <parenleft> <7> <colon> <0> <0> <parenright> : "🕖" U1F556 # CLOCK FACE SEVEN OCLOCK
-<Multi_key> <parenleft> <8> <colon> <0> <0> <parenright> : "🕗" U1F557 # CLOCK FACE EIGHT OCLOCK
-<Multi_key> <parenleft> <9> <colon> <0> <0> <parenright> : "🕘" U1F558 # CLOCK FACE NINE OCLOCK
-<Multi_key> <parenleft> <1> <0> <colon> <0> <0> <parenright> : "🕙" U1F559 # CLOCK FACE TEN OCLOCK
-<Multi_key> <parenleft> <1> <1> <colon> <0> <0> <parenright> : "🕚" U1F55A # CLOCK FACE ELEVEN OCLOCK
-<Multi_key> <parenleft> <1> <2> <colon> <0> <0> <parenright> : "🕛" U1F55B # CLOCK FACE TWELVE OCLOCK
-
-<Multi_key> <parenleft> <1> <colon> <3> <0> <parenright> : "🕜" U1F55C # CLOCK FACE ONE-THIRTY
-<Multi_key> <parenleft> <2> <colon> <3> <0> <parenright> : "🕝" U1F55D # CLOCK FACE TWO-THIRTY
-<Multi_key> <parenleft> <3> <colon> <3> <0> <parenright> : "🕞" U1F55E # CLOCK FACE THREE-THIRTY
-<Multi_key> <parenleft> <4> <colon> <3> <0> <parenright> : "🕟" U1F55F # CLOCK FACE FOUR-THIRTY
-<Multi_key> <parenleft> <5> <colon> <3> <0> <parenright> : "🕠" U1F560 # CLOCK FACE FIVE-THIRTY
-<Multi_key> <parenleft> <6> <colon> <3> <0> <parenright> : "🕡" U1F561 # CLOCK FACE SIX-THIRTY
-<Multi_key> <parenleft> <7> <colon> <3> <0> <parenright> : "🕢" U1F562 # CLOCK FACE SEVEN-THIRTY
-<Multi_key> <parenleft> <8> <colon> <3> <0> <parenright> : "🕣" U1F563 # CLOCK FACE EIGHT-THIRTY
-<Multi_key> <parenleft> <9> <colon> <3> <0> <parenright> : "🕤" U1F564 # CLOCK FACE NINE-THIRTY
-<Multi_key> <parenleft> <1> <0> <colon> <3> <0> <parenright> : "🕥" U1F565 # CLOCK FACE TEN-THIRTY
-<Multi_key> <parenleft> <1> <1> <colon> <3> <0> <parenright> : "🕦" U1F566 # CLOCK FACE ELEVEN-THIRTY
-<Multi_key> <parenleft> <1> <2> <colon> <3> <0> <parenright> : "🕧" U1F567 # CLOCK FACE TWELVE-THIRTY
-# Real bitcoin symbol now.
-<Multi_key> <B> <bar> : "฿" U20BF # BITCOIN SIGN
users/vincent/desktop/xorg/Xmodmap
@@ -1,5 +0,0 @@
-! Use Caps Lock button for compose key
-keycode 66 = Multi_key
-
-! Remove shift lock functionality
-clear Lock
users/vincent/desktop/audio.nix
@@ -1,32 +0,0 @@
-{
- nixosConfig,
- lib,
- pkgs,
- ...
-}:
-
-{
- home.packages = with pkgs; [
- ffmpeg-full
- ];
- xdg.configFile = lib.mkIf nixosConfig.services.pipewire.wireplumber.enable {
- "pipewire/pipewire.conf.d/raop-discover.conf" = {
- text = ''
- context.modules = [
- {
- name = libpipewire-module-raop-discover
- args = { }
- }
- ]
- '';
- };
- "pipewire/pipewire.conf.d/zeroconf-discover.conf".text = ''
- context.modules = [
- {
- name = libpipewire-module-zeroconf-discover
- args = { }
- }
- ]
- '';
- };
-}
users/vincent/desktop/default.nix
@@ -1,101 +0,0 @@
-{
- config,
- lib,
- pkgs,
- nixosConfig,
- ...
-}:
-
-let
- inherit (lib) optionals;
-in
-{
- imports =
- [
- ./audio.nix
- ./finances.nix
- ./firefox.nix
- ./gtk.nix
- ./keyboard.nix
- ./mpv.nix
- ./passwordstore.nix
- ./spotify.nix
- ]
- ++ optionals nixosConfig.modules.desktop.xorg.enable [ ./xorg.nix ]
- ++ optionals nixosConfig.modules.desktop.wayland.enable [ ./wayland.nix ]
- ++ optionals nixosConfig.modules.desktop.wayland.sway.enable [ ./sway.nix ];
-
- home.sessionVariables = {
- WEBKIT_DISABLE_COMPOSITING_MODE = 1;
- };
- home.packages = with pkgs; [
- aspell
- aspellDicts.en
- aspellDicts.fr
- desktop-file-utils
- hunspell
- hunspellDicts.en_GB-ize
- hunspellDicts.en_US-large
- hunspellDicts.fr-any
- keybase
- mpw
- my.batzconverter
- # nyxt
- obs-studio
- playerctl
- trash-cli
- xdg-user-dirs
- xdg-utils
- xsel
- yt-dlp # youtube-dl
- ];
-
- xdg.portal = {
- enable = true;
- xdgOpenUsePortal = true;
- extraPortals = with pkgs; [
- xdg-desktop-portal-hyprland
- xdg-desktop-portal-gtk
- ];
- config = {
- common = {
- default = [
- "gtk"
- ];
- };
- };
- };
- xdg.mimeApps = {
- enable = true;
- defaultApplications = {
- "text/html" = "firefox.desktop";
- "x-scheme-handler/http" = "firefox.desktop";
- "x-scheme-handler/https" = "firefox.desktop";
- "x-scheme-handler/about" = "firefox.desktop";
- "x-scheme-handler/unknown" = "firefox.desktop";
- };
- };
- xdg.desktopEntries.firefox = {
- name = "Firefox";
- genericName = "Web Browser";
- exec = "firefox %U";
- terminal = false;
- categories = [
- "Application"
- "Network"
- "WebBrowser"
- ];
- mimeType = [
- "text/html"
- "text/xml"
- ];
- };
- home.file.".XCompose".source = ./xorg/XCompose;
- xdg.configFile."xorg/emoji.compose".source = ./xorg/emoji.compose;
- xdg.configFile."xorg/parens.compose".source = ./xorg/parens.compose;
- xdg.configFile."xorg/modletters.compose".source = ./xorg/modletters.compose;
- home.file.".oath" = {
- source = config.lib.file.mkOutOfStoreSymlink "/home/vincent/desktop/documents/.oath";
- recursive = true;
- };
-}
users/vincent/desktop/finances.nix
@@ -1,5 +0,0 @@
-{ pkgs, ... }:
-
-{
- home.packages = with pkgs; [ ledger ];
-}
users/vincent/desktop/firefox.nix
@@ -1,120 +0,0 @@
-{ pkgs, ... }:
-
-{
- programs.firefox = {
- enable = true;
- # Temporary fix
- # https://github.com/nix-community/home-manager/issues/1641
- # (https://github.com/NixOS/nixpkgs/pull/105796)
- package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
- extraPolicies = {
- ExtensionSettings = { };
- CaptivePortal = false;
- DisableFirefoxStudies = true;
- DisablePocket = true;
- DisableTelemetry = true;
- # DisableFirefoxAccounts = true;
- FirefoxHome = {
- Pocket = false;
- # Snippets = false;
- };
- UserMessaging = {
- ExtensionRecommendations = false;
- SkipOnboarding = true;
- };
- };
- };
-
- profiles.default = {
- id = 0;
- isDefault = true;
- settings = {
- "general.warnOnAboutConfig" = false;
- "browser.aboutConfig.showWarning" = false;
- # It keeps asking me on startup if I want firefox as default
- "browser.shell.checkDefaultBrowser" = false;
- # Disable pocket
- "extensions.pocket.enabled" = false;
- "extensions.pocket.site" = "";
- "extensions.pocket.oAuthConsumerKey" = "";
- "extensions.pocket.api" = "";
- "extensions.htmlaboutaddons.recommendations.enabled" = false;
- # performance
- "browser.download.animateNotifications" = false;
- "browser.tabs.animate" = false;
- "toolkit.cosmeticAnimations.enabled" = false;
- "html5.offmainthread" = true;
- "layers.acceleration.force-enabled" = true;
- "layers.async-video.enabled" = true;
- "layers.offmainthreadcomposition.async-animations" = true;
- "layers.offmainthreadcomposition.enabled" = true;
- "layout.frame_rate.precise" = true;
- "webgl.force-enabled" = true;
- "gfx.xrender.enabled" = true;
- "gfx.webrender.all" = true;
- "gfx.webrender.enable" = true;
- # Misc
- "privacy.donottrackheader.enabled" = true;
- # "privacy.firstparty.isolate" = true;
- #"privacy.resistFingerprinting" = true;
- "privacy.trackingprotection.cryptomining.enabled" = true;
- "privacy.trackingprotection.enabled" = true;
- "privacy.trackingprotection.fingerprinting.enabled" = true;
- "privacy.trackingprotection.socialtracking.enabled" = true;
- # FIXME(vdemeester) Enable thoses
- #"privacy.clearOnShutdown.history" = true;
- #"privacy.clearOnShutdown.siteSettings" = true;
- "browser.formfill.enable" = false;
- "browser.newtabpage.activity-stream.feeds.telemetry" = false;
- "browser.newtabpage.activity-stream.telemetry" = false;
- "browser.ping-centre.telemetry" = false;
- "browser.safebrowsing.enabled" = false;
- "browser.search.geoip.url" = "";
- "browser.selfsupport.url" = "";
- "browser.send_pings" = false;
- "browser.send_pings.require_same_host" = true;
- "browser.sessionstore.privacy_level" = 2;
- "browser.startup.homepage_override.buildID" = "";
- "browser.startup.homepage_override.mstone" = "ignore";
- "browser.urlbar.speculativeConnect.enabled" = false;
- "browser.contentblocking.category" = "strict";
- "browser.ctrlTab.recentlyUsedOrder" = false;
- "network.dns.disablePrefetch" = true;
- "network.dnsCacheEntries" = 100;
- "network.dnsCacheExpiration" = 60;
- #"network.http.referer.XOriginPolicy" = 2;
- #"network.http.referer.XOriginTrimmingPolicy" = 2;
- #"network.http.referer.spoofSource" = true;
- "network.http.sendRefererHeader" = 2;
- #"network.http.sendSecureXSiteReferrer" = false;
- #"network.http.speculative-parallel-limit" = 0;
- "network.predictor.enabled" = false;
- "network.prefetch-next" = false;
- "media.peerconnection.enabled" = false;
- "media.peerconnection.turn.disable" = true;
- "media.peerconnection.video.enabled" = false;
- "media.peerconnection.identity.timeout" = 1;
- "dom.battery.enabled" = false;
- # "dom.event.clipboardevents.enabled" = false;
- "dom.event.contextmenu.enabled" = false;
- "toolkit.telemetry.archive.enabled" = false;
- "toolkit.telemetry.bhrPing.enabled" = false;
- "toolkit.telemetry.cachedClientID" = "";
- "toolkit.telemetry.enabled" = false;
- "toolkit.telemetry.firstShutdownPing.enabled" = false;
- "toolkit.telemetry.hybridContent.enabled" = false;
- "toolkit.telemetry.newProfilePing.enabled" = false;
- "toolkit.telemetry.reportingpolicy.firstRun" = false;
- "toolkit.telemetry.server" = "";
- "toolkit.telemetry.shutdownPingSender.enabled" = false;
- "toolkit.telemetry.unified" = false;
- "toolkit.telemetry.updatePing.enabled" = false;
- # Red Hat specific
- "network.negotiate-auth.trusted-uris" = ".redhat.com";
- };
- };
- profiles.redhat = {
- id = 1;
- };
- };
-}
users/vincent/desktop/gtk.nix
@@ -1,15 +0,0 @@
-{ pkgs, ... }:
-
-{
- gtk = {
- enable = true;
- iconTheme = {
- name = "Arc";
- package = pkgs.arc-icon-theme;
- };
- theme = {
- name = "Arc-Darker";
- package = pkgs.arc-theme;
- };
- };
-}
users/vincent/desktop/i3.nix
@@ -1,506 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- # FIXME(change this at some point)
- powermenu = pkgs.writeScript "powermenu.sh" ''
- #!/usr/bin/env bash
- MENU="$(${pkgs.rofi}/bin/rofi -sep "|" -dmenu -i -p 'System' -location 3 -xoffset -10 -yoffset 32 -width 20 -hide-scrollbar -line-padding 4 -padding 20 -lines 5 <<< "Suspend|Hibernate|Reboot|Shutdown")"
- case "$MENU" in
- *Suspend) systemctl suspend;;
- *Hibernate) systemctl hibernate;;
- *Reboot) systemctl reboot ;;
- *Shutdown) systemctl -i poweroff
- esac
- '';
- emacs-in-folder = pkgs.writeScript "emacs-in-folder" ''
- #!/usr/bin/env bash
- fd . -d 3 --type d ~/src | rofi -dmenu | xargs -I {} zsh -i -c "cd {}; emacs ."
- '';
- lockCommand = "${pkgs.betterlockscreen}/bin/betterlockscreen -l dim";
-in
-{
- imports = [
- ./alacritty.nix
- ./autorandr.nix
- # ./dconf.nix
- ./xsession.nix
- ];
- home.sessionVariables = {
- WEBKIT_DISABLE_COMPOSITING_MODE = 1;
- };
- home.packages = with pkgs; [
- alacritty
- kitty
- arandr
- # TODO switch to betterlockscreen
- i3lock-color
- libnotify
- maim
- slop
- # Gnome3 relica
- # gnome3.dconf-editor
- # FIXME move this elsewhere
- pop-gtk-theme
- pop-icon-theme
- pinentry-gnome
-
- aspell
- aspellDicts.en
- aspellDicts.fr
- hunspell
- hunspellDicts.en_US-large
- hunspellDicts.en_GB-ize
- hunspellDicts.fr-any
- wmctrl
- xclip
- xdg-user-dirs
- xdg-utils
- xsel
- ];
- xdg.configFile."rofi/slate.rasi".text = ''
- * {
- background-color: #282C33;
- border-color: #2e343f;
- text-color: #8ca0aa;
- spacing: 0;
- width: 512px;
- }
-
- inputbar {
- border: 0 0 1px 0;
- children: [prompt,entry];
- }
-
- prompt {
- padding: 16px;
- border: 0 1px 0 0;
- }
-
- textbox {
- background-color: #2e343f;
- border: 0 0 1px 0;
- border-color: #282C33;
- padding: 8px 16px;
- }
-
- entry {
- padding: 16px;
- }
-
- listview {
- cycle: false;
- margin: 0 0 -1px 0;
- scrollbar: false;
- }
-
- element {
- border: 0 0 1px 0;
- padding: 16px;
- }
-
- element selected {
- background-color: #2e343f;
- }
- '';
- programs.kitty = {
- enable = true;
- settings = {
- term = "xterm-256color";
- close_on_child_death = "yes";
- font_family = "Ubuntu Mono";
- };
- theme = "Tango Light";
- };
- programs.rofi = {
- enable = true;
- package = pkgs.rofi.override {
- plugins = [
- pkgs.rofi-emoji
- pkgs.rofi-menugen
- pkgs.rofi-mpd
- ];
- };
- font = "Ubuntu Mono 14";
- terminal = "${pkgs.kitty}/bin/kitty";
- theme = "slate";
- };
- services = {
- blueman-applet.enable = true;
- pasystray.enable = true;
- dunst = {
- enable = true;
- settings = {
- global = {
- geometry = "500x5-10+10";
- follow = "keyboard";
- frame_color = "#cccccc";
- font = "Ubuntu Mono 11";
- indicate_hidden = "yes";
- separator_height = 1;
- padding = 8;
- horizontal_padding = 8;
- frame_width = 2;
- sort = "yes";
- markup = "full";
- format = "<b>%s</b>\n%b";
- ignore_newline = "no";
- stack_duplicates = true;
- show_indicators = "yes";
- history_length = 40;
- };
- shortcuts = {
- close = "ctrl+space";
- close_all = "ctrl+shift+space";
- history = "ctrl+percent";
- context = "ctrl+shift+period";
- };
- urgency_low = {
- background = "#000000";
- foreground = "#ffffff";
- timeout = 4;
- };
- urgency_normal = {
- background = "#000000";
- foreground = "#ffffff";
- timeout = 6;
- };
- urgency_critical = {
- background = "#000000";
- foreground = "#cf6a4c";
- timeout = 0;
- };
- };
- };
- udiskie.enable = true;
- network-manager-applet.enable = true;
- /*
- screern-locker = {
- enable = true;
- lockCmd = lockCommand;
- inactiveInterval = 60;
- xautolock = {
- enable = true;
- detectSleep = true;
- };
- };
- */
- random-background = {
- enable = true;
- enableXinerama = true;
- imageDirectory = "${config.home.homeDirectory}/desktop/pictures/walls";
- interval = "5h";
- };
- };
- xsession.windowManager.i3 = {
- package = pkgs.i3-gaps;
- enable = true;
- config = {
- fonts = {
- names = [ "Ubuntu Mono" ];
- size = 10.0;
- };
- focus = {
- followMouse = false;
- };
- window = {
- titlebar = false;
- border = 1;
- hideEdgeBorders = "both";
- };
- keybindings = {
- "Mod4+Return" = "exec kitty";
- "Mod4+Shift+Return" = "exec emacsclient -c";
- "Mod4+Control+Return" = "exec emacs";
- "Mod4+Control+Shift+Return" = "exec ${emacs-in-folder}";
- };
- gaps = {
- inner = 2;
- outer = 2;
- };
- keycodebindings = {
- "Mod4+Shift+24" = "kill";
- "Mod4+33" =
- "exec \"rofi -show drun -modi 'drun,run,window,ssh' -kb-row-select 'Tab' -kb-row-tab '' -location 2 -hide-scrollbar -separator-style solid -font 'Ubuntu Mono 14'";
- "Mod4+Shift+33" =
- "exec \"rofi -show combi -modi 'drun,run,window,ssh,combi' -kb-row-select 'Tab' -kb-row-tab '' -location 2 -hide-scrollbar -separator-style solid -font 'Ubuntu Mono 14'";
- "Mod4+Control+33" =
- "exec \"rofi -show emoji -modi emoji -location 2 -hide-scrollbar -separator-style solid -font 'Ubuntu Mono 14'|pbcopy";
- # "Mod4+space" = "";
- # focus window
- "Mod4+44" = "focus left";
- "Mod4+45" = "focus down";
- "Mod4+46" = "focus up";
- "Mod4+47" = "focus right";
- "Mod4+38" = "focus parent";
- # move focused window
- "Mod4+Shift+44" = "move left";
- "Mod4+Shift+45" = "move down";
- "Mod4+Shift+46" = "move up";
- "Mod4+Shift+47" = "move right";
- # resize
- "Mod4+Control+44" = "resize shrink width 5px or 5ppt";
- "Mod4+Control+45" = "resize grow width 5px or 5ppt";
- "Mod4+Control+46" = "resize shrink height 5px or 5ppt";
- "Mod4+Control+47" = "resize grow height 5px or 5ppt";
- # gaps
- "Mod4+Mod1+44" = "gaps inner current plus 5";
- "Mod4+Mod1+45" = "gaps inner current minus 5";
- "Mod4+Mod1+46" = "gaps outer current plus 5";
- "Mod4+Mod1+47" = "gaps outer current minus 5";
- # Fullscreen
- "Mod4+41" = "fullscreen toggle";
- # Change container layout
- "Mod4+39" = "layout stacking";
- "Mod4+25" = "layout tabbed";
- "Mod4+26" = "layout toggle split";
- # Split
- "Mod4+Control+39" = "split h";
- # Manage floating
- "Mod4+Shift+61" = "floating toggle";
- "Mod4+61" = "focus mode_toggle";
- # manage workspace
- "Mod4+113" = "workspace prev_on_output";
- "Mod4+112" = "workspace prev_on_output";
- "Mod4+114" = "workspace next_on_output";
- "Mod4+117" = "workspace next_on_output";
- # manage output
- "Mod4+Shift+113" = "focus output left";
- "Mod4+Shift+116" = "focus output down";
- "Mod4+Shift+111" = "focus output up";
- "Mod4+Shift+114" = "focus output right";
- # Custom keybinding
- "Mod4+Shift+32" = "exec ${lockCommand}";
- # "Mod4+Shift+39" = "exec ~/.screenlayout/home-work.sh && systemctl --user start random-background.service";
- "Mod4+24" = "border toggle";
- # TODO transform this into mode with multiple "capture" target
- "Mod4+32" = "exec capture";
- };
- modes = { };
- bars = [
- {
- mode = "hide";
- position = "bottom";
- trayOutput = "primary";
- statusCommand = "${pkgs.i3status}/bin/i3status";
- fonts = {
- names = [ "Fira Code" ];
- size = 12.0;
- };
- }
- ];
- };
- extraConfig = ''
- set $mod Mod4
-
- # Use Mouse+$mod to drag floating windows to their wanted position
- floating_modifier $mod
-
- set $WS0 0
- set $WS1 1
- set $WS2 2
- set $WS3 3
- set $WS4 4
- set $WS5 5
- set $WS6 6
- set $WS7 7
- set $WS8 8
- set $WS9 9
-
- # switch to workspace
- bindcode $mod+10 workspace $WS1
- bindcode $mod+11 workspace $WS2
- bindcode $mod+12 workspace $WS3
- bindcode $mod+13 workspace $WS4
- bindcode $mod+14 workspace $WS5
- bindcode $mod+15 workspace $WS6
- bindcode $mod+16 workspace $WS7
- bindcode $mod+17 workspace $WS8
- bindcode $mod+18 workspace $WS9
- bindcode $mod+19 workspace $WS0
-
- # move focused container to workspace
- bindcode $mod+Shift+10 move container to workspace $WS1
- bindcode $mod+Shift+11 move container to workspace $WS2
- bindcode $mod+Shift+12 move container to workspace $WS3
- bindcode $mod+Shift+13 move container to workspace $WS4
- bindcode $mod+Shift+14 move container to workspace $WS5
- bindcode $mod+Shift+15 move container to workspace $WS6
- bindcode $mod+Shift+16 move container to workspace $WS7
- bindcode $mod+Shift+17 move container to workspace $WS8
- bindcode $mod+Shift+18 move container to workspace $WS9
- bindcode $mod+Shift+19 move container to workspace $WS0
-
- #assign [class="Firefox" window_role="browser"] → $WS1
- #assign [class="Google-chrome" window_role="browser"] → $WS1
-
- for_window [title="capture"] floating enable;
-
- bindsym XF86MonBrightnessUp exec "xbacklight -inc 10"
- bindsym XF86MonBrightnessDown exec "xbacklight -dec 10"
- bindsym shift+XF86MonBrightnessUp exec "xbacklight -inc 1"
- bindsym shift+XF86MonBrightnessDown exec "xbacklight -dec 1"
- bindsym XF86AudioLowerVolume exec "pactl set-sink-mute @DEFAULT_SINK@ false ; pactl set-sink-volume @DEFAULT_SINK@ -5%"
- bindsym XF86AudioRaiseVolume exec "pactl set-sink-mute @DEFAULT_SINK@ false ; pactl set-sink-volume @DEFAULT_SINK@ +5%"
- bindsym XF86AudioMute exec "pactl set-sink-mute @DEFAULT_SINK@ toggle"
- bindsym XF86AudioMicMute exec "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
- bindsym XF86AudioPlay exec "playerctl play-pause"
- bindsym XF86AudioNext exec "playerctl next"
- bindsym XF86AudioPrev exec "playerctl previous"
-
- # reload the configuration file
- bindsym $mod+Shift+x reload
- # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
- bindsym $mod+Shift+o restart
- # exit i3 (logs you out of your X session)
- bindsym $mod+Shift+p exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3?' -b 'Yes, exit i3' 'i3-msg exit'"
- # powermenu
- bindsym $mod+F12 exec ${powermenu}
- bindsym $mod+F10 exec ${pkgs.my.scripts}/bin/shot %d
- bindsym $mod+Shift+F10 exec ${pkgs.my.scripts}/bin/shotf %d
-
- # screen management
- bindsym $mod+F11 exec "autorandr -c"
- bindsym $mod+Shift+F11 exec "arandr"
-
- # move workspace to output
- set $workspace_move Move workspace to output : [l]eft [r]ight [d]own [u]p
-
- mode "$workspace_move" {
- bindsym left move workspace to output left
- bindsym l move workspace to output left
-
- bindsym right move workspace to output right
- bindsym r move workspace to output right
-
- bindsym down move workspace to output down
- bindsym d move workspace to output down
-
- bindsym up move workspace to output up
- bindsym u move workspace to output up
-
- bindsym Escape mode "default"
- bindsym Return mode "default"
- }
-
- bindsym $mod+m mode "$workspace_move"
-
- # resize window (you can also use the mouse for that)
- mode "resize" {
- # These bindings trigger as soon as you enter the resize mode
-
- # Pressing left will shrink the window’s width.
- # Pressing right will grow the window’s width.
- # Pressing up will shrink the window’s height.
- # Pressing down will grow the window’s height.
- bindsym t resize shrink width 10 px or 10 ppt
- bindsym s resize grow height 10 px or 10 ppt
- bindsym r resize shrink height 10 px or 10 ppt
- bindsym n resize grow width 10 px or 10 ppt
-
- # same bindings, but for the arrow keys
- bindsym Left resize shrink width 10 px or 10 ppt
- bindsym Down resize grow height 10 px or 10 ppt
- bindsym Up resize shrink height 10 px or 10 ppt
- bindsym Right resize grow width 10 px or 10 ppt
-
- # back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
-
- bindsym $mod+o mode "resize"
- ## quick terminal (tmux)
- exec --no-startup-id kitty --title metask --class metask tmux
- exec --no-startup-id emacsclient -n -c -F "((name . \"_emacs scratchpad_\"))"
- for_window [instance="metask"] floating enable;
- for_window [instance="metask"] move scratchpad; [instance="metask"] scratchpad show; move position center; move scratchpad
- bindcode $mod+49 [instance="metask"] scratchpad show
-
- bindcode $mod+51 [class="Spotify"] scratchpad show
- bindcode $mod+23 move scratchpad
-
- exec --no-startup-id emacsclient -n -c -F "((name . \"_emacs scratchpad_\"))"
- for_window [title="_emacs scratchpad_" class="Emacs"] move scratchpad
- bindcode $mod+Shift+49 [title="_emacs scratchpad_" class="Emacs"] scratchpad show
-
- # System menu
- set $sysmenu "system: [s]uspend [l]ock [r]estart [b]lank-screen [p]oweroff reload-[c]onf e[x]it"
- bindsym $mod+q mode $sysmenu
- mode $sysmenu {
- # restart i3 inplace (preserves your layout/session)
- bindsym s exec ~/.i3/status_scripts/ambisleep; mode "default"
- bindsym l exec i3lock -c 5a5376; mode "default"
- bindsym r restart
- bindsym b exec "xset dpms force off"; mode "default"
- bindsym p exec systemctl shutdown
- bindsym c reload; mode "default"
- bindsym x exit
- bindsym Return mode "default"
- bindsym Escape mode "default"
- bindsym $mod+q mode "default"
- }
- '';
- };
- # FIXME switch to polybar ?
- xdg.configFile."i3status/config".text = ''
- # i3status configuration file.
- # see "man i3status" for documentation.
-
- # It is important that this file is edited as UTF-8.
- # The following line should contain a sharp s:
- # ß
- # If the above line is not correctly displayed, fix your editor first!
-
- general {
- colors = true
- interval = 2
- }
-
- order += "path_exists 🔑"
- order += "battery 0"
- order += "load"
- order += "tztime local"
-
- battery 0 {
- format = "%status %percentage %remaining"
- format_down = "No battery"
- status_chr = "⚇"
- status_bat = "⚡"
- status_full = "☻"
- status_unk = "?"
- path = "/sys/class/power_supply/BAT%d/uevent"
- low_threshold = 10
- }
-
- run_watch 🐳 {
- pidfile = "/run/docker.pid"
- }
-
- path_exists 🔑 {
- path = "/proc/sys/net/ipv4/conf/wg0"
- }
-
- tztime local {
- format = "%Y-%m-%d %H:%M:%S"
- }
-
- load {
- format = "%1min"
- }
-
- cpu_temperature 0 {
- format = "T: %degrees °C"
- path = "/sys/class/hwmon/hwmon0/temp1_input"
- }
-
- disk "/" {
- format = "%avail"
- }
- '';
-}
users/vincent/desktop/keyboard.nix
@@ -1,11 +0,0 @@
-{
- home.keyboard = {
- layout = "fr(bepo),fr";
- variant = "oss";
- options = [
- "grp:menu_toggle"
- "grp_led:caps"
- "compose:caps"
- ];
- };
-}
users/vincent/desktop/mpv.nix
@@ -1,11 +0,0 @@
-{ pkgs, ... }:
-
-{
- programs.mpv = {
- enable = true;
- config = {
- hwdec = "auto";
- };
- scripts = [ pkgs.mpvScripts.mpris ];
- };
-}
users/vincent/desktop/passwordstore.nix
@@ -1,21 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- home.sessionVariables = {
- "PASSAGE_DIR" = "${config.xdg.dataHome}/passage";
- "PASSAGE_IDENTITIES_FILE" = "${config.xdg.dataHome}/passage/identities";
- };
- # TODO Migrate to passage
- programs.password-store = {
- enable = true;
- package = pkgs.pass-wayland.withExtensions (exts: [
- exts.pass-otp
- exts.pass-genphrase
- exts.pass-update
- ]);
- };
- home.packages = with pkgs; [
- wofi-pass
- passage
- ];
-}
users/vincent/desktop/spotify.nix
@@ -1,8 +0,0 @@
-{ pkgs, ... }:
-
-{
- # FIXME: need a .desktop file..
- home.packages = with pkgs; [
- spotify
- ];
-}
users/vincent/desktop/sway.nix
@@ -1,302 +0,0 @@
-{ config, pkgs, ... }:
-
-let
- emacs-in-folder = pkgs.writeScript "emacs-in-folder" ''
- #!/usr/bin/env bash
- fd . -d 3 --type d ~/src | ${pkgs.wofi}/bin/wofi -dmenu | xargs -I {} zsh -i -c "cd {}; emacs ."
- '';
- fontConf = {
- names = [ "JetBrains Mono" ];
- size = 12.0;
- };
-in
-{
- wayland.windowManager.sway = {
- enable = true;
- wrapperFeatures.gtk = true;
- # systemd.enable = true;
- extraSessionCommands = ''
- export SDL_VIDEODRIVER=wayland
- export QT_QPA_PLATFORM=wayland
- export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
- export _JAVA_AWT_WM_NONREPARTENTING=1
- export MOZ_ENABLE_WAYLAND=1
- '';
- checkConfig = false;
- config = {
- gaps = {
- inner = 2;
- outer = 2;
- };
- colors = {
- focused = {
- border = "#BD93F9";
- background = "#282A36";
- text = "#ffffff";
- indicator = "#8BE9FD";
- childBorder = "#BD93F9";
- };
- focusedInactive = {
- border = "#BD93F9";
- background = "#282A36";
- text = "#F8F8F2";
- indicator = "#44475A";
- childBorder = "#44475A";
- };
- unfocused = {
- border = "#44475A";
- background = "#282A36";
- text = "#BFBFBF";
- indicator = "#282A36";
- childBorder = "#282A36";
- };
- };
- modifier = "Mod4";
- terminal = "${pkgs.kitty}/bin/kitty";
- menu = "${pkgs.wofi}/bin/wofi -G --show drun -modi 'drun,run,window,ssh'";
- bindkeysToCode = true;
- input = {
- "type:keyboard" = {
- xkb_layout = "fr,fr,us";
- xkb_variant = "bepo,ergol,";
- xkb_options = "grp:menu_toggle,grp_led:caps,compose:caps";
- };
- };
- output = {
- "*" = {
- bg = "~/desktop/pictures/lockscreen fill";
- };
- };
- fonts = fontConf;
- bars = [ ];
- keybindings =
- let
- mod = config.wayland.windowManager.sway.config.modifier;
- inherit (config.wayland.windowManager.sway.config) terminal;
- in
- {
- "${mod}+Return" = "exec ${terminal}";
-
- "${mod}+Shift+Return" = "exec emacsclient -c";
- "${mod}+Control+Return" = "exec emacs";
- "${mod}+Control+Shift+Return" = "exec ${emacs-in-folder}";
-
- "${mod}+Left" = "focus left";
- "${mod}+Down" = "focus down";
- "${mod}+Up" = "focus up";
- "${mod}+Right" = "focus right";
-
- "${mod}+Shift+Left" = "move left";
- "${mod}+Shift+Down" = "move down";
- "${mod}+Shift+Up" = "move up";
- "${mod}+Shift+Right" = "move right";
-
- "${mod}+Control+Left" = "workspace prev_on_output";
- "${mod}+Control+Down" = "workspace prev";
- "${mod}+Control+Up" = "workspace next";
- "${mod}+Control+Right" = "workspace next_on_output";
-
- "${mod}+Shift+Control+Left" = "move workspace to output left";
- "${mod}+Shift+Control+Down" = "move workspace to output down";
- "${mod}+Shift+Control+Up" = "move workspace to output up";
- "${mod}+Shift+Control+Right" = "move workspace to output right";
-
- "${mod}+Shift+space" = "floating toggle";
- "${mod}+space" = "focus mode_toggle";
- "${mod}+Tab" = "[con_mark=_back] focus";
-
- "XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 10%+";
- "XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 10%-";
- "Shift+XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 1%+";
- "Shift+XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 1%-";
- };
- window.commands = [
- {
- command = "inhibit_idle fullscreen";
- criteria.app_id = "firefox";
- }
- {
- command = "inhibit_idle fullscreen";
- criteria.app_id = "mpv";
- }
- {
- # spotify doesn't set its WM_CLASS until it has mapped, so the assign is not reliable
- command = "move to workspace 10";
- criteria.class = "Spotify";
- }
- {
- command = "move to scratchpad, scratchpad show";
- criteria = {
- app_id = "metask";
- };
- }
- {
- command = "move to scratchpad, scratchpad show";
- criteria = {
- app_id = "emacs";
- title = "^_emacs scratchpad_$";
- };
- }
- {
- criteria = {
- title = "Save File";
- };
- command = "floating enable, resize set width 600px height 800px";
- }
- {
- criteria = {
- class = "pavucontrol";
- };
- command = "floating enable";
- }
- {
- criteria = {
- title = "(Sharing Indicator)";
- };
- command = "inhibit_idle visible, floating enable";
- }
- {
- # browser zoom|meet|bluejeans
- criteria = {
- title = "(Blue Jeans)|(Meet)|(Zoom Meeting)";
- };
- command = "inhibit_idle visible";
- }
- # for_window [app_id="^chrome-.*"] shortcuts_inhibitor disable
- {
- criteria = {
- app_id = "^chrome-.*";
- };
- command = "shortcuts_inhibitor disable";
- }
- ];
- startup = [
- {
- command = "dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY DBUS_SESSION_BUS_ADDRESS SWAYSOCK XDG_SESSION_TYPE XDG_SESSION_DESKTOP XDG_CURRENT_DESKTOP";
- } # workaround
- # Make sure we update systemd service env variables with the current ones. This is required for dbus to work properly.
- { command = "dbus-update-activation-environment --systemd --all"; }
- {
- command = "systemctl --user restart kanshi";
- always = true;
- }
- {
- command = "${pkgs.pa-notify}/bin/pa-notify -u0";
- always = true;
- }
- # Probably put a condition here.
- { command = "emacs --fg-daemon"; }
- { command = "i3-back"; }
- { command = "firefox"; }
- { command = "${pkgs.kitty}/bin/kitty --title metask --class metask"; }
- ];
- };
- extraConfig =
- let
- mod = config.wayland.windowManager.sway.config.modifier;
- inherit (config.wayland.windowManager.sway.config) menu;
- in
- ''
- bindcode ${mod}+33 exec "${menu}"
- bindcode ${mod}+Shift+33 exec "raffi -I"
- bindcode ${mod}+Control+33 exec "${pkgs.wofi-emoji}/bin/wofi-emoji -G"
- bindcode ${mod}+Shift+24 kill
- bindcode ${mod}+38 focus parent
- bindcode ${mod}+39 layout stacking
- bindcode ${mod}+25 layout tabbed
- bindcode ${mod}+26 layout toggle split
- bindcode ${mod}+Shift+54 reload
- bindcode ${mod}+Shift+26 exec "swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'"
-
- mode "resize" {
- bindsym Shift+Left resize grow width 5px
- bindsym Shift+Down resize shrink height 5px
- bindsym Shift+Up resize grow height 5px
- bindsym Shift+Right resize shrink width 5px
-
- bindsym Control+Left resize grow width 50px
- bindsym Control+Down resize shrink height 50px
- bindsym Control+Up resize grow height 50px
- bindsym Control+Right resize shrink width 50px
-
- # Ditto, with arrow keys
- bindsym Left resize grow width 15px
- bindsym Down resize shrink height 15px
- bindsym Up resize grow height 15px
- bindsym Right resize shrink width 15px
-
- # Return to default mode
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- bindcode ${mod}+32 mode "resize"
-
- bindcode ${mod}+Shift+32 exec "${pkgs.swaylock}/bin/swaylock -i $HOME/desktop/pictures/lockscreen"
-
- bindcode ${mod}+24 exec notify-send --icon=battery --category=info --urgency=critical "$(acpi)"
- # bindcode ${mod}+58 exec
- bindcode ${mod}+28 exec notify-send --icon=clock --category=info --urgency=critical "$(date +"%I:%M")"
- bindcode ${mod}+Shift+28 exec notify-send --icon=clock --category=info --urgency=critical "$(date)"
-
- # switch to workspace
- bindcode ${mod}+10 workspace number 1
- bindcode ${mod}+11 workspace number 2
- bindcode ${mod}+12 workspace number 3
- bindcode ${mod}+13 workspace number 4
- bindcode ${mod}+14 workspace number 5
- bindcode ${mod}+15 workspace number 6
- bindcode ${mod}+16 workspace number 7
- bindcode ${mod}+17 workspace number 8
- bindcode ${mod}+18 workspace number 9
- bindcode ${mod}+19 workspace number 10
-
- # move focused container to workspace
- bindcode ${mod}+Shift+10 move container to workspace number 1
- bindcode ${mod}+Shift+11 move container to workspace number 2
- bindcode ${mod}+Shift+12 move container to workspace number 3
- bindcode ${mod}+Shift+13 move container to workspace number 4
- bindcode ${mod}+Shift+14 move container to workspace number 5
- bindcode ${mod}+Shift+15 move container to workspace number 6
- bindcode ${mod}+Shift+16 move container to workspace number 7
- bindcode ${mod}+Shift+17 move container to workspace number 8
- bindcode ${mod}+Shift+18 move container to workspace number 9
- bindcode ${mod}+Shift+19 move container to workspace number 10
-
- bindcode ${mod}+Control+39 split h
- bindcode ${mod}+41 fullscreen toggle
-
- bindsym XF86AudioRaiseVolume exec ${pkgs.pamixer}/bin/pamixer -ui 5 && ${pkgs.pamixer}/bin/pamixer --get-volume > $SWAYSOCK.wob
- bindsym XF86AudioLowerVolume exec ${pkgs.pamixer}/bin/pamixer -ud 5 && ${pkgs.pamixer}/bin/pamixer --get-volume > $SWAYSOCK.wob
- bindsym XF86AudioMute exec ${pkgs.pamixer}/bin/pamixer --toggle-mute && ( ${pkgs.pamixer}/bin/pamixer --get-mute && echo 0 > $SWAYSOCK.wob ) || ${pkgs.pamixer}/bin/pamixer --get-volume > $SWAYSOCK.wob
-
- bindsym XF86AudioPlay exec "playerctl play-pause"
- bindsym XF86Messenger exec "playerctl play-pause"
- bindsym XF86AudioNext exec "playerctl next"
- bindsym XF86Go exec "playerctl next"
- bindsym XF86AudioPrev exec "playerctl previous"
- bindsym Cancel exec "playerctl previous"
-
- bindcode ${mod}+49 exec swaymsg [app_id="metask"] scratchpad show || exec ${pkgs.kitty}/bin/kitty --title metask --class metask
- bindsym --whole-window button8 exec sswaymsg [app_id="metask"] scratchpad show || exec ${pkgs.kitty}/bin/kitty --title metask --class metask
- bindcode ${mod}+Shift+49 exec swaymsg '[app_id="emacs" title="^_emacs scratchpad_$"]' scratchpad show || exec ${config.programs.emacs.package}/bin/emacsclient -c -F "((name . \"_emacs scratchpad_\"))"
- bindsym --whole-window button9 exec swaymsg '[app_id="emacs" title="^_emacs scratchpad_$"]' scratchpad show || exec ${config.programs.emacs.package}/bin/emacsclient -c -F "((name . \"_emacs scratchpad_\"))"
-
- # Mouse
- # Disabled as it doesn't play well with thinkpad's trackpoint :D
- # bindsym --whole-window button6 workspace next_on_output
- # bindsym --whole-window button7 workspace prev_on_output
-
- bindsym ${mod}+F10 exec ${pkgs.my.scripts}/bin/shot %d
- bindsym ${mod}+Shift+F10 exec ${pkgs.my.scripts}/bin/shotf %d
-
- bindsym ${mod}+F9 exec ${pkgs.mako}/bin/makoctl mode -s do-not-disturb
- bindsym ${mod}+Shift+F9 exec ${pkgs.mako}/bin/makoctl mode -s default
- '';
- };
- home.packages = with pkgs; [
- swaybg
- pinentry-gnome3
- i3-back
- ];
-
-}
users/vincent/desktop/wayland.nix
@@ -1,222 +0,0 @@
-{
- lib,
- pkgs,
- nixosConfig,
- ...
-}:
-
-{
- home.pointerCursor = {
- gtk.enable = true;
- x11.enable = true;
- package = pkgs.qogir-icon-theme;
- name = "Qogir";
- size = 24;
- };
-
- programs = {
- kitty = {
- enable = true;
- shellIntegration.enableZshIntegration = true;
- settings = {
- term = "xterm-256color";
- close_on_child_death = "yes";
- font_family = "JetBrains Mono";
- tab_bar_edge = "top";
- listen_on = "unix:/tmp/my kitty";
- allow_remote_control = "yes";
- macos_option_as_alt = "yes";
- copy_on_select = "yes";
- notify_on_cmd_finish = "invisible 5.0 notify";
-
- active_tab_foreground = "#C6A0F6";
- active_tab_background = "#0c0c0c";
- inactive_tab_foreground = "#6E738D";
- inactive_tab_background = "#0c0c0c";
- };
- font = {
- name = "JetBrains Mono";
- size = 12;
- };
- keybindings = {
- "shift+left" = "neighboring_window left";
- "shift+right" = "neighboring_window right";
- "shift+up" = "neighboring_window up";
- "shift+down" = "neighboring_window down";
- };
- theme = "Tango Light";
- # action_alias mkh kitten hints --alphabet asdfghjklqwertyuiopzxcvbnmASDFGHJKLQWERTYUIOPZXCVBNM
- # map kitty_mod+n mkh --type=linenum emacsclient -c -nw +{line} {path}
- };
- };
- services = {
- blueman-applet.enable = nixosConfig.modules.hardware.bluetooth.enable;
- pasystray.enable = nixosConfig.modules.hardware.audio.enable;
- udiskie.enable = true;
- # network-manager-applet.enable = true;
- gammastep = {
- enable = true;
- provider = "geoclue2";
- # longitude = "2.333333";
- # latitude = "48.866667";
- };
- kanshi = {
- enable = true;
- settings = [
- # Make it configurable per host
- {
- profile.name = "aomi";
- profile.outputs = [
- {
- criteria = "eDP-1";
- status = "disable";
- }
- {
- criteria = "DP-1";
- status = "enable";
- position = "0,0";
- mode = "3440x1440";
- scale = 1.0;
- }
- ];
- }
- {
- profile.name = "home-undocked";
- profile.outputs = [
- # Output eDP-1 'AU Optronics 0xD291 Unknown'
- {
- criteria = "eDP-1";
- status = "enable";
- position = "0,0";
- mode = "1920x1200";
- scale = 1.0;
- }
- ];
- }
- {
- profile.name = "home-docked";
- profile.outputs = [
- # Old: Output eDP-1 'AU Optronics 0xD291 Unknown'
- # Output eDP-1 'Unknown 0xD291 Unknown'
- # Output DP-5 'LG Electronics LG ULTRAWIDE 0x0005D10C' (focused)
- # { criteria = "LG Electronics LG ULTRAWIDE 0x0000D50C"; status = "enable"; position = "0,0"; mode = "3440x1440"; scale = 1.0; }
- {
- criteria = "DP-5";
- status = "enable";
- position = "0,0";
- mode = "3440x1440";
- scale = 1.0;
- }
- # Use it as a "shareable" screen when needed
- {
- criteria = "eDP-1";
- status = "enable";
- position = "1460,1440";
- mode = "1920x1200";
- scale = 1.0;
- }
- ];
- }
- ];
- };
- mako = {
- enable = true;
- font = "JetBrains Mono 12";
- defaultTimeout = 8000; # 5s timeout
- groupBy = "app-name,summary";
- # FIXME: hide pulseaudio notifications (maybe they don't show up without pasystray)
- extraConfig = ''
- width=400
- on-button-left=dismiss
- on-button-middle=invoke-default-action
- on-button-right=dismiss
- border-radius=6
- border-size=3
- border-color=#db7508
- format=<b>%s</b>\n%b\n<i>%a</i>
- icon-path=/run/current-system/sw/share/icons/Qogir-dark:/run/current-system/sw/share/icons/hicolor
-
- [urgency=low]
- background-color=#282c30
- text-color=#888888
- default-timeout=2000
-
- [urgency=normal]
- background-color=#282c30
- text-color=#ffffff
- default-timeout=5000
-
- [urgency=high]
- background-color=#900000
- text-color=#ffffff
- border-color=#ff0000
-
- [app-name="pa-notify"]
- background-color=#0080ff
- text-color=#333333
- anchor=bottom-right
- format=<b>%s</b>\n%b
-
- [category="build"]
- anchor=bottom-right
- format=<b>%s</b>\n%b
-
- [category="recording"]
- anchor=bottom-right
- format=<b>%s</b>\n%b
-
- [category="info"]
- anchor=center
- format=<b>%s</b> %b
-
- #[app-name="Google Chrome" body~="calendar.google.com.*"]
- #max-visible=2
-
- [mode=do-not-disturb]
- invisible=1
- '';
- };
- swayidle = {
- enable = true;
- events = [
- {
- event = "before-sleep";
- command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen";
- }
- {
- event = "lock";
- command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen";
- }
- ];
- timeouts = [
- {
- timeout = 600;
- command = ''${pkgs.sway}/bin/swaymsg "output * power off"'';
- resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * power on"'';
- }
- ];
- };
- };
- xdg.configFile."raffi/raffi.yaml".text = lib.generators.toYAML { } {
- "firefox" = {
- binary = "firefox";
- args = [ "--marionette" ];
- };
- };
- home.packages = with pkgs; [
- swaylock
- swayidle
- wf-recorder
- wl-clipboard
- wtype
- mako
- wofi # might deprecate
- fuzzel
- raffi
- slurp
- grim
- zenity
- qogir-icon-theme
- cliphist
- ];
-}
users/vincent/desktop/xorg.nix
@@ -1,6 +0,0 @@
-{ nixosConfig, ... }:
-
-{
- # home.file.".Xmodmap".source = ./xorg/Xmodmap;
- programs.autorandr.enable = nixosConfig.profiles.laptop.enable;
-}
users/vincent/desktop/xsession.nix
@@ -1,14 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- xsession = {
- enable = true;
- initExtra = ''
- ${pkgs.xorg.xmodmap}/bin/xmodmap ${config.home.homeDirectory}.Xmodmap &
- '';
- pointerCursor = {
- package = pkgs.vanilla-dmz;
- name = "Vanilla-DMZ";
- };
- };
-}
users/vincent/dev/emacs/capture.desktop
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Name=Emacs capture
-Exec=capture
-Type=Application
-Terminal=false
-Categories=System;
-Icon=emacs;
users/vincent/dev/emacs/org-protocol.desktop
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Name=org-protocol
-Exec=emacsclient -c -n %u
-Type=Application
-Terminal=false
-Categories=System;
-MimeType=x-scheme-handler/org-protocol;
users/vincent/dev/mr/lib.mr
@@ -1,39 +0,0 @@
-# -*- mode: sh -*-
-[DEFAULT]
-lib =
- my_git_clone() {
- USERNAME=${GIT_USERNAME:-git}
- GIT_PREFIX=${GIT_PREFIX}
- GIT_BASE=${GIT_BASE:-${BASE_HOST}}
- URL="${GIT_PREFIX}${USERNAME}@${GIT_BASE}${MR_REPO//$(dirname ${MR_CONFIG})}.git"
- UPSTREAM_URL=""
- if [[ -z "$NO_UPSTREAM_U" ]]; then
- URL="${GIT_PREFIX}${USERNAME}@${GIT_BASE}:${BASE_USER}/${BASE_PATH}-${MR_REPO//$(dirname ${MR_CONFIG})\/}.git"
- UPSTREAM_URL="https://${GIT_BASE}/${BASE_PATH}${MR_REPO//$(dirname ${MR_CONFIG}\/)}.git"
- fi
- echo "URL : $URL"
- echo "UPSTREAM_URL: $UPSTREAM_URL"
- git clone $URL $MR_REPO
- if [[ -n "$UPSTREAM_URL" ]]; then
- cd $MR_REPO
- git remote add upstream $UPSTREAM_URL
- git fetch -p --all
- fi
- }
-checkout = my_git_clone
-git_gc = git gc "$@"
-# git_u = git pull --rebase --autostash "$@"
-git_u =
- git fetch -p --all
- CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
- DEFAULT_BRANCH=${DEFAULT_BRANCH:-main}
- echo "On $CURRENT_BRANCH"
- git stash
- REMOTE="origin"
- if [[ -z "$NO_UPSTREAM_U" ]]; then
- git config remote.upstream.url && REMOTE="upstream"
- fi
- echo "Rebase ${REMOTE}/${DEFAULT_BRANCH} on ${DEFAULT_BRANCH}"
- git rebase ${REMOTE}/${DEFAULT_BRANCH} ${DEFAULT_BRANCH}
- git co $CURRENT_BRANCH
-skip = [ $1 != "checkout" ] && lazy
users/vincent/dev/mr/src.github.mr
@@ -1,15 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
- export BASE_HOST="github.com"
- export BASE_USER=vdemeester
- export GIT_BASE="github.com:"
-
-[NixOS/nixpkgs]
-checkout =
- git clone git@github.com:vdemeester/nixpkgs.git
- cd NixOS/nixpkgs
- git remote add upstream https://github.com/NixOS/nixpkgs.git
- git fetch -p --all
users/vincent/dev/mr/src.go.sbr.pm.mr
@@ -1,9 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[ape]
-checkout = git clone git@git.sr.ht:~vdemeester/ape
-[nr]
-checkout = git clone git@git.sr.ht:~vdemeester/nr
-[ram]
-checkout = git clone git@git.sr.ht:~vdemeester/ram
users/vincent/dev/mr/src.k8s.io.mr
@@ -1,9 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
- export BASE_HOST="${HOME}/src/k8s.io/"
- export GIT_BASE="github.com:kubernetes/"
-
-[test-infra]
users/vincent/dev/mr/src.knative.dev.mr
@@ -1,11 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
- export BASE_PATH=knative
- export BASE_USER=vdemeester
- export BASE_HOST="github.com"
-
-[pkg]
-[serving]
\ No newline at end of file
users/vincent/dev/mr/src.mr
@@ -1,39 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[osp]
-chain = true
-skip = true
-
-[tektoncd]
-chain = true
-skip = true
-
-[knative.dev]
-chain = true
-skip = true
-
-[k8s.io]
-chain = true
-skip = true
-
-# Old ones
-[github.com]
-chain = true
-skip = true
-
-[gitlab.com]
-chain = true
-skip = true
-
-[home]
-checkout =
- git clone https://git.sr.ht/~vdemeester/home
- cd home
- git remote set-url --add --push origin git@git.sr.ht:~vdemeester/home
-
-[www]
-checkout =
- git clone https://git.sr.ht/~vdemeester/www
- cd home
- git remote set-url --add --push origin git@git.sr.ht:~vdemeester/www
users/vincent/dev/mr/src.osp.mr
@@ -1,74 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
- export BASE_USER=vdemeester
- export BASE_HOST="github.com"
-
-# downstream (RH internal)
-[p12n]
-chain = true
-skip = true
-
-# github.com/openshift
-[openshift-ci]
-skip = true
-lib =
- export DEFAULT_BRANCH=master
-checkout =
- git clone git@github.com:vdemeester/release.git openshift-ci
- cd openshift-ci
- git remote add upstream https://github.com/openshift/release.git
- git fetch -p --all
-
-[pipelines-docs]
-lib =
- export BASE_PATH=openshift
- export DEFAULT_BRANCH=master
-
-[pipelines-tutorial]
-lib =
- export BASE_PATH=openshift
- export DEFAULT_BRANCH=master
-
-[must-gather]
-lib =
- export BASE_PATH=openshift-pipelines
-
-[pipelines-as-code]
-lib =
- export BASE_PATH=openshift-pipelines
-
-[operator-tooling]
-lib =
- export BASE_PATH=openshift-pipelines
-
-[toolbox]
-lib =
- export BASE_PATH=openshift-pipelines
-
-# github.com/openshift-pipelines
-[enhancements]
-lib =
- export BASE_PATH=openshift-pipelines
-[knowledge-base]
-lib =
- export DEFAULT_BRANCH=master
-checkout =
- git clone git@github.com:vdemeester/knowledge-base.git
- cd knowledge-base
- git remote add upstream git@github.com:openshift-pipelines/knowledge-base.git
- git fetch -p --all
-
-[cookbook]
-lib =
- export BASE_PATH=openshift-pipelines
-
-[cluster-tasks-tests]
-lib =
- export BASE_PATH=ppitonak
-
-[tekton-task-group]
-lib =
- export BASE_PATH=openshift-pipelines
users/vincent/dev/mr/src.osp.p12n.mr
@@ -1,54 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[gerrit]
-checkout =
- git clone vdemeest@code.engineering.redhat.com:openshift-pipelines.git gerrit
- cd gerrit
- git remote rename origin gerrit
-u = git fetch -p --all
-
-[p12n]
-checkout =
- git clone git@gitlab.cee.redhat.com:vdemeest/p12n.git p12n
- cd p12n
- git config http.sslVerify false
- git remote add upstream https://gitlab.cee.redhat.com/tekton/p12n
- git fetch -p --all
-u = git fetch -p --all
-
-[plumbing]
-checkout =
- git clone git@gitlab.cee.redhat.com:vdemeest/tekton-plumbing.git plumbing
- cd plumbing
- git config http.sslVerify false
- git remote add upstream https://gitlab.cee.redhat.com/tekton/plumbing
- git fetch -p --all
-u = git fetch -p --all
-
-[honeybadger]
-checkout =
- git clone git@gitlab.cee.redhat.com:vdemeest/pipeline-products.git honeybadger
- cd honeybadger
- git config http.sslVerify false
- git remote add upstream https://gitlab.cee.redhat.com/pipeline/products
- git fetch -p --all
-u = git fetch -p --all
-
-[cpaas-config]
-checkout =
- git clone git@gitlab.cee.redhat.com:vdemeest/openshift-pipelines.git cpaas-config
- cd cpaas-config
- git config http.sslVerify false
- git remote add upstream https://gitlab.cee.redhat.com/cpaas-products/openshift-pipelines.git
- git fetch -p --all
-u = git fetch -p --all
-
-[cpaas-product-configs]
-checkout =
- git clone git@gitlab.cee.redhat.com:vdemeest/product-configs.git cpaas-product-configs
- cd cpaas-product-configs
- git config http.sslVerify false
- git remote add upstream https://gitlab.cee.redhat.com/cpaas-products/product-configs.git
- git fetch -p --all
-u = git fetch -p --all
users/vincent/dev/mr/src.tektoncd.mr
@@ -1,38 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
- export BASE_PATH=tektoncd
- export BASE_USER=vdemeester
- export BASE_HOST="github.com"
-
-[catalog]
-[catlin]
-[chains]
-[cli]
-[community]
-[dashboard]
-[experimental]
-[friends]
-[homebrew-tools]
-[hub]
-[operator]
-[pipeline]
-[plumbing]
-[resolution]
-[results]
-[triggers]
-[website]
-
-[buildkit-tekton]
-checkout = git clone git@github.com:vdemeester/buildkit-tekton.git
-
-[vegetable-resolver]
-checkout = git clone git@github.com:vdemeester/vegetable-resolver.git
-
-[tkn-local-action]
-checkout = git clone git@github.com:vdemeester/tkn-local-action.git
-
-[setup-tektoncd]
-checkout = git clone git@github.com:vdemeester/setup-tektoncd.git
users/vincent/dev/python/pythonrc
@@ -1,36 +0,0 @@
-#!/usr/bin/env python3
-# This entire thing is unnecessary post v3.13.0a3
-# https://github.com/python/cpython/issues/73965
-
-def is_vanilla() -> bool:
- """ :return: whether running "vanilla" Python <3.13 """
- import sys
- return not hasattr(__builtins__, '__IPYTHON__') and 'bpython' not in sys.argv[0] and sys.version_info < (3, 13)
-
-
-def setup_history():
- """ read and write history from state file """
- import os
- import atexit
- import readline
- from pathlib import Path
-
- # Check PYTHON_HISTORY for future-compatibility with Python 3.13
- if history := os.environ.get('PYTHON_HISTORY'):
- history = Path(history)
- # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables
- elif state_home := os.environ.get('XDG_STATE_HOME'):
- state_home = Path(state_home)
- else:
- state_home = Path.home() / '.local' / 'state'
-
- history: Path = history or state_home / 'python_history'
-
- # https://github.com/python/cpython/issues/105694
- if not history.is_file():
- readline.write_history_file(str(history)) # breaks on macos + python3 without this.
- readline.read_history_file(history)
- atexit.register(readline.write_history_file, history)
-
- if is_vanilla():
- setup_history()
users/vincent/dev/ai.nix
@@ -1,14 +0,0 @@
-{ pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- aichat
- aider-chat
- goose-cli
- ollama
- oterm
- python312Packages.google-generativeai
- python313Packages.google-generativeai
- repomix
- ];
-}
users/vincent/dev/default.nix
@@ -1,64 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- imports = [
- ./ai.nix
- ./go.nix
- ./js.nix
- ./lisp.nix
- ./mr.nix
- ./nix.nix
- ./python.nix
- ];
-
- home.extraOutputsToInstall = [
- "doc"
- "info"
- "devdoc"
- ];
-
- home.sessionVariables = {
- CARGO_HOME = "${config.xdg.dataHome}/cargo";
- };
- home.packages = with pkgs; [
- binutils
- cmake
- codespell
- # devenv
- difftastic
- fswatch
- gnumake
- gron
- gum
- ijq
- jq
- markdownlint-cli
- minica
- moreutils
- pre-commit
- shellcheck
- shfmt
- tldr
- tmate
- vale
- yamllint
- yamlfmt
- yq-go
- radicle-node
- vscode-fhs
- ];
-
- home.file.".ignore".text = ''
- *.swp
- *~
- **/VENDOR-LICENSE
- '';
-
- home.file.gdbinit = {
- target = ".gdbinit";
- text = ''
- set auto-load safe-path /
- '';
- };
-
-}
users/vincent/dev/emacs.nix
@@ -1,210 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-with lib;
-let
- capture = pkgs.writeScriptBin "capture" ''
- #!${pkgs.stdenv.shell}
- emacsclient -n -c -F '((name . "capture") (width . 150) (height . 90) (vde/window-popup-frame . t))' -e '(org-capture)'
- '';
- et = pkgs.writeScriptBin "et" ''
- #!${pkgs.stdenv.shell}
- emacsclient --tty $@
- '';
- ec = pkgs.writeScriptBin "ec" ''
- #!${pkgs.stdenv.shell}
- emacsclient --create-frame $@
- '';
- myExtraPackages =
- epkgs: with epkgs; [
- ace-window
- adoc-mode
- age
- aggressive-indent
- aidermacs
- alert
- async
- avy
- beginend
- cape
- casual
- casual-avy
- conner
- consult
- consult-dir
- consult-denote
- consult-notes
- consult-project-extra
- consult-vc-modified-files
- copilot
- copilot-chat
- corfu
- corfu-candidate-overlay
- dape
- dash
- denote
- denote-menu
- devdocs
- dired-collapse
- dired-narrow
- dired-rsync
- diredfl
- dockerfile-mode
- doom-modeline
- easy-kill
- eat
- edit-indirect
- editorconfig
- eldoc-box
- pr-review
- embark
- embark-consult
- emms
- envrc
- eshell-atuin
- eshell-prompt-extras
- esup
- flimenu
- flymake-yamllint
- focus
- general
- git-gutter
- git-gutter-fringe
- git-modes
- go-mode
- gotest
- gotest-ts
- gptel
- hardhat
- helpful
- highlight
- highlight-indentation
- htmlize
- ibuffer-vc
- indent-bars
- jinx
- json-mode
- kubed
- ligature
- macrostep
- magit
- magit-popup
- marginalia
- markdown-mode
- minions
- modus-themes
- multi-vterm
- mu4e
- mwim
- nix-mode
- nix-ts-mode
- nixpkgs-fmt
- no-littering
- noether
- # notmuch
- ob-async
- ob-go
- ob-http
- orderless # TODO configure this
- org
- org-contrib
- org-download
- org-modern
- org-nix-shell
- org-ql
- org-review
- org-rich-yank
- org-tree-slide
- org-web-tools
- orgalist
- orgit
- outline-indent
- ox-pandoc
- pandoc-mode
- # password-store
- # pkgs.bookmatrk-plus # Do I use it ?
- popper
- project-rootfile
- rg
- run-command # Try this out instead of conner, might be even better
- scopeline
- scratch
- shr-tag-pre-highlight
- sideline
- sideline-eglot
- sideline-flymake
- smartparens
- substitute
- surround
- symbol-overlay
- tempel
- tempel-collection
- topsy
- trashed
- treesit-fold
- treesit-grammars.with-all-grammars # see how much it weight
- try
- typescript-mode
- vertico
- visual-fill-column
- visual-regexp
- vterm
- vundo
- web-mode
- wgrep
- with-editor
- xterm-color
- ];
-in
-{
- home.file.".config/emacs" = {
- source = config.lib.file.mkOutOfStoreSymlink "/home/vincent/src/home/tools/emacs";
- # recursive = true;
- };
- home.file.".local/share/applications/org-protocol.desktop".source = ./emacs/org-protocol.desktop;
- home.file.".local/share/applications/capture.desktop".source = ./emacs/capture.desktop;
- home.packages = with pkgs; [
- ditaa
- graphviz
- pandoc
- sqlite
- zip
- ugrep
- # See if I can hide this under an option
- capture
- # github-copilot-cli # for copilot.el
- nodejs
- ec
- et
- languagetool
- asciidoctor
- enchant
- ];
- programs.emacs = {
- enable = true;
- # FIXME: choose depending on the enabled modules
- #package = (pkgs.emacs29.override { withTreeSitter = true; withNativeCompilation = true; withPgtk = true; withWebP = true; withGTK3 = true; withSQLite3 = true; });
- package = pkgs.emacs-unstable.override {
- withTreeSitter = true;
- withNativeCompilation = true;
- withPgtk = true;
- withWebP = true;
- withGTK3 = true;
- withSQLite3 = true;
- };
- extraPackages = myExtraPackages;
- };
- # services.emacs = {
- # enable = true;
- # client.enable = true;
- # #socketActivation.enable = true;
- # };
- home.sessionVariables = {
- EDITOR = "emacs";
- ALTERNATE_EDITOR = "emacs -nw";
- };
-}
users/vincent/dev/go.nix
@@ -1,30 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- home.sessionVariables = {
- # GOPATH = "${config.home.homeDirectory}";
- GOPATH = "${config.xdg.dataHome}/go";
- };
- home.packages = with pkgs; [
- gcc
- go_1_24
- gopls
- godef
- golangci-lint
- golint
- gopkgs
- go-outline
- go-symbols
- delve
- gotools
- gotestsum
- gofumpt
- # misc
- protobuf
- my.ram
- # not really go but still
- gosmee
- # cue
- deptree
- ];
-}
users/vincent/dev/js.nix
@@ -1,17 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- # config.xdg.configFile."npm/npmrc ".text = ''
- # prefix = ${config.home.homeDirectory}/.local/npm
- # '';
- home.sessionVariables = {
- NPM_CONFIG_INIT_MODULE = "${config.xdg.configHome}/npm/config/npm-init.js";
- NPM_CONFIG_CACHE = "${config.xdg.cacheHome}/npm";
- NPM_CONFIG_TMP = "$CONFIG.XDG_RUNTIME_DIR/npm";
- NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc";
- };
- home.packages = with pkgs; [
- # javascript-typescript-langserver
- # vscode-langservers-extracted
- ];
-}
users/vincent/dev/mr.nix
@@ -1,15 +0,0 @@
-_:
-
-{
- xdg.configFile."mr".source = ./mr/lib.mr;
- home.file."src/.mrconfig".source = ./mr/src.mr;
- home.file."src/tektoncd/.mrconfig".source = ./mr/src.tektoncd.mr;
- home.file."src/go.sbr.pm/.mrconfig".source = ./mr/src.go.sbr.pm.mr;
- home.file."src/k8s.io/.mrconfig".source = ./mr/src.k8s.io.mr;
- home.file."src/knative.dev/.mrconfig".source = ./mr/src.knative.dev.mr;
- # home.file."src/osp/forks/.mrconfig".source = ./mr/src.osp.forks.mr;
- home.file."src/osp/p12n/.mrconfig".source = ./mr/src.osp.p12n.mr;
- home.file."src/osp/.mrconfig".source = ./mr/src.osp.mr;
- # Old setup, migrate this slowly
- home.file."src/github.com/.mrconfig".source = ./mr/src.github.mr;
-}
users/vincent/dev/nix.nix
@@ -1,13 +0,0 @@
-{ pkgs, ... }:
-
-{
- home.packages = with pkgs; [
- nh
- nix-output-monitor
- nix-prefetch-scripts
- nix-update
- nixpkgs-fmt
- nixpkgs-review
- nurl
- ];
-}
users/vincent/dev/python.nix
@@ -1,14 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- xdg.configFile."python/pythonrc".source = ./python/pythonrc;
- home.packages = with pkgs; [
- pipenv
- python313
- python313Packages.python-lsp-server
- uv
- ];
- home.sessionVariables = {
- PYTHONSTARTUP = "${config.xdg.configHome}/python/pythonrc";
- };
-}
users/vincent/redhat/redhat-vpn.desktop
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Name=Red Hat VPN
-Exec=redhat-vpn
-Type=Application
-Terminal=false
-Categories=System;
-Icon=seahorse;
\ No newline at end of file
users/vincent/default.nix
@@ -1,281 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- inherit (lib)
- importTOML
- attrsets
- hasAttr
- optionals
- versionAtLeast
- mkIf
- ;
- metadata = importTOML ../../ops/hosts.toml;
- hasSSHAttr = _name: value: hasAttr "ssh" value;
- authorizedKeys = attrsets.mapAttrsToList (_name: value: value.ssh.pubkey) (
- attrsets.filterAttrs hasSSHAttr metadata.hosts
- );
-in
-{
- warnings =
- if (versionAtLeast config.system.nixos.release "21.11") then
- [ ]
- else
- [ "NixOS release: ${config.system.nixos.release}" ];
- users.users.vincent = {
- createHome = true;
- uid = 1000;
- description = "Vincent Demeester";
- extraGroups =
- [
- "wheel"
- "input"
- ]
- ++ optionals config.networking.networkmanager.enable [ "networkmanager" ]
- ++ optionals config.modules.desktop.enable [
- "audio"
- "video"
- ]
- # ++ optionals config.profiles.scanning.enable [ "lp" "scanner" ]
- ++ optionals config.networking.networkmanager.enable [ "networkmanager" ]
- ++ optionals config.virtualisation.docker.enable [ "docker" ]
- ++ optionals config.virtualisation.buildkitd.enable [ "buildkit" ]
- ++ optionals config.modules.virtualisation.libvirt.enable [ "libvirtd" ]
- ++ optionals config.services.nginx.enable [ "nginx" ]
- ++ optionals config.security.tpm2.enable [ "tss" ];
- shell = mkIf config.programs.zsh.enable pkgs.zsh;
- isNormalUser = true;
- openssh.authorizedKeys.keys = authorizedKeys ++ metadata.ssh.keys.vincent ++ metadata.ssh.keys.root;
- initialPassword = "changeMe";
- subUidRanges = [
- {
- startUid = 100000;
- count = 65536;
- }
- ];
- subGidRanges = [
- {
- startGid = 100000;
- count = 65536;
- }
- ];
- };
-
- nix = {
- settings = {
- trusted-users = [ "vincent" ];
- };
- sshServe.keys = authorizedKeys;
- };
-
- security = {
- pam = {
- # Nix will hit the stack limit when using `nixFlakes`.
- loginLimits = [
- {
- domain = config.users.users.vincent.name;
- item = "stack";
- type = "-";
- value = "unlimited";
- }
- ];
- };
- };
-
- # Enable user units to persist after sessions end.
- system.activationScripts.loginctl-enable-linger-vincent = lib.stringAfter [ "users" ] ''
- ${pkgs.systemd}/bin/loginctl enable-linger ${config.users.users.vincent.name}
- '';
-
- # To use nixos config in home-manager configuration, use the nixosConfig attr.
- # This make it possible to import the whole configuration, and let each module
- # load their own.
- # FIXME(vdemeester) using nixosConfig, we can get the NixOS configuration from
- # the home-manager configuration. This should help play around the conditions
- # inside each "home-manager" modules instead of here.
- home-manager.users.vincent = lib.mkMerge (
- [
- (import ./core)
- (import ./mails {
- hostname = config.networking.hostName;
- inherit pkgs;
- })
- ]
- ++ optionals config.modules.editors.emacs.enable [
- (import ./dev/emacs.nix)
- ]
- ++ optionals config.modules.dev.enable [
- (import ./dev)
- # TODO Move it elsewhere ?
- (import ./containers/kubernetes.nix)
- (import ./containers/openshift.nix)
- (import ./containers/tekton.nix)
- {
- # Enable only on dev, could do something better than this longterm 😀
- services.keybase.enable = true;
- }
- ]
- ++ optionals config.modules.dev.containers.enable [
- (import ./containers)
- ]
- ++ optionals config.modules.desktop.enable [ (import ./desktop) ]
- ++ optionals (config.networking.hostName == "wakasu" || config.networking.hostName == "aomi") [
- {
- # Move this to its own module
- home.packages = with pkgs; [
- libosinfo
- asciinema
- oathToolkit
- p7zip
- ];
- home.file."bin/msmtp" = {
- text = ''
- #!${pkgs.stdenv.shell}
- ${pkgs.libnotify}/bin/notify-send "Sending mail ✉️"
- ${pkgs.msmtp}/bin/msmtp --read-envelope-from $@
- '';
- executable = true;
- };
- programs.mbsync.enable = true;
- # programs.lieer.enable = true;
- programs.aerc.enable = true;
- programs.msmtp.enable = true;
- programs.mu.enable = true;
- # programs.notmuch.enable = true;
- accounts.email = {
- maildirBasePath = "desktop/mails";
- accounts = {
- "icloud" = {
- primary = true;
- address = "vincent@demeester.fr";
- userName = "vdemeester@icloud.com";
- realName = "Vincent Demeester";
- passwordCommand = "${pkgs.passage}/bin/passage show mails/icloud/vdemeester";
- imap.host = "imap.mail.me.com";
- smtp.host = "smtp.mail.me.com";
- smtp.port = 587;
- mbsync = {
- enable = true;
- create = "both";
- expunge = "both";
- extraConfig = {
- channel = {
- Sync = "All";
- };
- account = {
- Timeout = 120;
- PipelineDepth = 1;
- };
- };
- };
- mu.enable = true;
- msmtp = {
- enable = true;
- extraConfig = {
- tls_starttls = "on";
- };
- };
- };
- # We will forward those to a "central" mail account.
- "gmail" = {
- address = "vinc.demeester@gmail.com";
- userName = "vinc.demeester@gmail.com";
- realName = "Vincent Demeester";
- passwordCommand = "${pkgs.passage}/bin/passage show mails/gmail/vinc.demeester";
- imap.host = "imap.gmail.com";
- smtp.host = "smtp.gmail.com";
- flavor = "gmail.com";
- # aerc.enable = true;
- msmtp = {
- enable = true;
- # extraConfig = {
- # tls_starttls = "on";
- # };
- };
- # This is here for doing backup
- mbsync = {
- enable = true;
- create = "both";
- expunge = "both";
- # Sync everything *but* "[Gmail] All Mail" to get the "organized" view.
- patterns = [
- "*"
- "![Gmail]*"
- "[Gmail]/Sent Mail"
- "[Gmail]/Starred"
- "[Gmail]/Trash"
- "[Gmail]/Drafts"
- ];
- extraConfig = {
- channel = {
- Sync = "All";
- };
- account = {
- Timeout = 120;
- PipelineDepth = 1;
- };
- };
- };
- };
- "redhat" = {
- # primary = true; # because it's work, but it's really just for notmuch
- address = "vdemeest@redhat.com";
- userName = "vdemeest@redhat.com";
- realName = "Vincent Demeester";
- passwordCommand = "${pkgs.passage}/bin/passage show mails/gmail/redhat";
- imap.host = "imap.gmail.com";
- smtp.host = "smtp.gmail.com";
- flavor = "gmail.com";
- mbsync = {
- enable = true;
- create = "both";
- expunge = "both";
- # Sync everything *but* "[Gmail] All Mail" to get the "organized" view.
- patterns = [
- "*"
- "!area/github"
- "!memo-list"
- "![Gmail]*"
- "[Gmail]/Sent Mail"
- "[Gmail]/Starred"
- "[Gmail]/Trash"
- "[Gmail]/Drafts"
- ];
- extraConfig = {
- channel = {
- Sync = "All";
- };
- account = {
- Timeout = 120;
- PipelineDepth = 1;
- };
- };
- };
- mu.enable = true;
- # aerc.enable = true;
- msmtp = {
- enable = true;
- # extraConfig = {
- # tls_starttls = "on";
- # };
- };
- };
- };
- };
- }
- ]
- # ++ optionals config.virtualisation.docker.enable [
- # {
- # home.packages = with pkgs; [ docker docker-compose dive ];
- # }
- # ]
- #++ optionals config.profiles.redhat.enable [{
- # home.file.".local/share/applications/redhat-vpn.desktop".source = ./redhat/redhat-vpn.desktop;
- # home.packages = with pkgs; [ gnome3.zenity oathToolkit ];
- #}]
- );
-}
flake.lock
@@ -23,37 +23,14 @@
"type": "github"
}
},
- "agenix-24_11": {
+ "agenix-25_05": {
"inputs": {
"darwin": "darwin_2",
"home-manager": "home-manager_2",
- "nixpkgs": [
- "nixpkgs-24_11"
- ],
- "systems": "systems_2"
- },
- "locked": {
- "lastModified": 1747575206,
- "narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=",
- "owner": "ryantm",
- "repo": "agenix",
- "rev": "4835b1dc898959d8547a871ef484930675cb47f1",
- "type": "github"
- },
- "original": {
- "owner": "ryantm",
- "repo": "agenix",
- "type": "github"
- }
- },
- "agenix-25_05": {
- "inputs": {
- "darwin": "darwin_3",
- "home-manager": "home-manager_3",
"nixpkgs": [
"nixpkgs-25_05"
],
- "systems": "systems_3"
+ "systems": "systems_2"
},
"locked": {
"lastModified": 1747575206,
@@ -194,28 +171,6 @@
}
},
"darwin_2": {
- "inputs": {
- "nixpkgs": [
- "agenix-24_11",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1744478979,
- "narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=",
- "owner": "lnl7",
- "repo": "nix-darwin",
- "rev": "43975d782b418ebf4969e9ccba82466728c2851b",
- "type": "github"
- },
- "original": {
- "owner": "lnl7",
- "ref": "master",
- "repo": "nix-darwin",
- "type": "github"
- }
- },
- "darwin_3": {
"inputs": {
"nixpkgs": [
"agenix-25_05",
@@ -263,7 +218,7 @@
"nixpkgs"
],
"nixpkgs-stable": [
- "nixpkgs-24_11"
+ "nixpkgs-25_05"
]
},
"locked": {
@@ -345,22 +300,6 @@
}
},
"flake-compat_5": {
- "flake": false,
- "locked": {
- "lastModified": 1747046372,
- "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
- "owner": "edolstra",
- "repo": "flake-compat",
- "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
- "type": "github"
- },
- "original": {
- "owner": "edolstra",
- "repo": "flake-compat",
- "type": "github"
- }
- },
- "flake-compat_6": {
"flake": false,
"locked": {
"lastModified": 1696426674,
@@ -547,27 +486,6 @@
"type": "github"
}
},
- "home-manager-24_11": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs-24_11"
- ]
- },
- "locked": {
- "lastModified": 1747688870,
- "narHash": "sha256-ypL9WAZfmJr5V70jEVzqGjjQzF0uCkz+AFQF7n9NmNc=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "d5f1f641b289553927b3801580598d200a501863",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "ref": "release-24.11",
- "repo": "home-manager",
- "type": "github"
- }
- },
"home-manager-25_05": {
"inputs": {
"nixpkgs": [
@@ -590,27 +508,6 @@
}
},
"home-manager_2": {
- "inputs": {
- "nixpkgs": [
- "agenix-24_11",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1745494811,
- "narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "home-manager",
- "type": "github"
- }
- },
- "home-manager_3": {
"inputs": {
"nixpkgs": [
"agenix-25_05",
@@ -631,7 +528,7 @@
"type": "github"
}
},
- "home-manager_4": {
+ "home-manager_3": {
"inputs": {
"nixpkgs": [
"nixpkgs"
@@ -790,27 +687,6 @@
"type": "github"
}
},
- "nixos-wsl": {
- "inputs": {
- "flake-compat": "flake-compat_5",
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1749574455,
- "narHash": "sha256-fm2/8KPOYvvIAnNVtjDlTt/My00lIbZQ+LMrfQIWVzs=",
- "owner": "nix-community",
- "repo": "NixOS-WSL",
- "rev": "917af390377c573932d84b5e31dd9f2c1b5c0f09",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "NixOS-WSL",
- "type": "github"
- }
- },
"nixpkgs": {
"locked": {
"lastModified": 1730768919,
@@ -827,22 +703,6 @@
"type": "github"
}
},
- "nixpkgs-24_11": {
- "locked": {
- "lastModified": 1749995256,
- "narHash": "sha256-LEGfcombb0otUf23oAmYCXR4+lMQKa49XmU0G5HItGI=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "daa45f10955cc2207ac9c5f0206774d2f757c162",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-24.11",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
"nixpkgs-25_05": {
"locked": {
"lastModified": 1750005367,
@@ -962,7 +822,7 @@
},
"pre-commit-hooks_3": {
"inputs": {
- "flake-compat": "flake-compat_6",
+ "flake-compat": "flake-compat_5",
"gitignore": "gitignore_4",
"nixpkgs": [
"nixpkgs"
@@ -985,7 +845,6 @@
"root": {
"inputs": {
"agenix": "agenix",
- "agenix-24_11": "agenix-24_11",
"agenix-25_05": "agenix-25_05",
"buildkit-tekton": "buildkit-tekton",
"chapeau-rouge": "chapeau-rouge",
@@ -994,15 +853,12 @@
"disko": "disko",
"emacs-overlay": "emacs-overlay",
"flake-compat": "flake-compat_3",
- "home-manager": "home-manager_4",
- "home-manager-24_11": "home-manager-24_11",
+ "home-manager": "home-manager_3",
"home-manager-25_05": "home-manager-25_05",
"lanzaboote": "lanzaboote",
"nixos-generators": "nixos-generators",
"nixos-hardware": "nixos-hardware",
- "nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_2",
- "nixpkgs-24_11": "nixpkgs-24_11",
"nixpkgs-25_05": "nixpkgs-25_05",
"nixpkgs-master": "nixpkgs-master",
"pre-commit-hooks": "pre-commit-hooks_3",
@@ -1079,21 +935,6 @@
"repo": "default",
"type": "github"
}
- },
- "systems_3": {
- "locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
- "owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default",
- "type": "github"
- }
}
},
"root": "root",
flake.nix
@@ -21,44 +21,6 @@
"aarch64-linux"
];
forAllSystems = inputs.nixpkgs.lib.genAttrs supportedSystems;
-
- stableModules = [ inputs.home-manager-24_11.nixosModules.home-manager ];
- commonModules = [
- {
- config.nixpkgs.overlays = [
- (import ./nix/overlays/tekton.nix)
- (import ./nix/overlays/sbr.nix)
- inputs.emacs-overlay.overlay
- inputs.chapeau-rouge.overlays.openshift
- inputs.chick-group.overlays.default
- (_: prev: {
- inherit (inputs.buildkit-tekton.packages.${prev.system})
- tkn-local
- ;
- inherit (inputs.dagger.packages.${prev.system}) dagger;
- })
- ];
- }
- ./systems/modules/core/default.nix
- ./systems/modules/shell/default.nix
- ./systems/modules/desktop/default.nix
- ./systems/modules/dev/default.nix
- ./systems/modules/editors/default.nix
- ./systems/modules/hardware/default.nix
- ./systems/modules/profiles/default.nix
- ./systems/modules/virtualisation/default.nix
- ./systems/modules/virtualisation/buildkit.nix
- ./systems/modules/services/default.nix
- inputs.agenix.nixosModules.default
- # inputs.envfs.nixosModules.envfs
- {
- # config.nix.generateRegistryFromInputs = true;
- config.home-manager.useGlobalPkgs = true;
- config.home-manager.useUserPackages = true;
- # Import custom home-manager modules (NixOS)
- config.home-manager.sharedModules = import ./users/modules/modules.nix;
- }
- ];
in
{
# Standalone home configurations
@@ -116,23 +78,16 @@
pkgsInput = inputs.nixpkgs-25_05;
homeInput = inputs.home-manager-25_05;
};
- # sakhalin = libx.mkHost { hostname = "sakhalin"; };
+ sakhalin = libx.mkHost {
+ hostname = "sakhalin";
+ pkgsInput = inputs.nixpkgs-25_05;
+ homeInput = inputs.home-manager-25_05;
+ };
kerkouane = libx.mkHost {
hostname = "kerkouane";
pkgsInput = inputs.nixpkgs-25_05;
homeInput = inputs.home-manager-25_05;
};
- # FIXME migrate to libx.mkHost
- sakhalin = inputs.nixpkgs-24_11.lib.nixosSystem {
- system = "x86_64-linux";
- modules =
- commonModules
- ++ stableModules
- ++ [
- inputs.nixos-hardware.nixosModules.common-pc-ssd
- ./systems/hosts/sakhalin.nix
- ];
- };
};
nixosModules = {
@@ -157,19 +112,19 @@
aix =
(self.nixosConfigurations.aix.extendModules {
modules = [
- "${inputs.nixpkgs-24_11}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
+ "${inputs.nixpkgs-25_05}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
];
}).config.system.build.sdImage;
athena =
(self.nixosConfigurations.athena.extendModules {
modules = [
- "${inputs.nixpkgs-24_11}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
+ "${inputs.nixpkgs-25_05}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
];
}).config.system.build.sdImage;
demeter =
(self.nixosConfigurations.demeter.extendModules {
modules = [
- "${inputs.nixpkgs-24_11}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
+ "${inputs.nixpkgs-25_05}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
];
}).config.system.build.sdImage;
};
@@ -250,12 +205,6 @@
repo = "nixpkgs";
ref = "nixos-25.05";
};
- nixpkgs-24_11 = {
- type = "github";
- owner = "NixOS";
- repo = "nixpkgs";
- ref = "nixos-24.11";
- };
nixpkgs-master.url = "github:nixos/nixpkgs/master";
pre-commit-hooks.url = "github:cachix/git-hooks.nix";
pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
@@ -273,13 +222,6 @@
ref = "release-25.05";
inputs.nixpkgs.follows = "nixpkgs-25_05";
};
- home-manager-24_11 = {
- type = "github";
- owner = "nix-community";
- repo = "home-manager";
- ref = "release-24.11";
- inputs.nixpkgs.follows = "nixpkgs-24_11";
- };
# FIXME could still be useful for servers
# impermanence = { type = "github"; owner = "nix-community"; repo = "impermanence"; };
@@ -294,16 +236,9 @@
emacs-overlay = {
url = "github:nix-community/emacs-overlay";
inputs.nixpkgs.follows = "nixpkgs";
- inputs.nixpkgs-stable.follows = "nixpkgs-24_11";
+ inputs.nixpkgs-stable.follows = "nixpkgs-25_05";
};
- # WSL
- nixos-wsl = {
- type = "github";
- owner = "nix-community";
- repo = "NixOS-WSL";
- inputs.nixpkgs.follows = "nixpkgs";
- };
nixos-hardware = {
type = "github";
owner = "NixOS";
@@ -333,8 +268,6 @@
agenix.inputs.nixpkgs.follows = "nixpkgs";
agenix-25_05.url = "github:ryantm/agenix";
agenix-25_05.inputs.nixpkgs.follows = "nixpkgs-25_05";
- agenix-24_11.url = "github:ryantm/agenix";
- agenix-24_11.inputs.nixpkgs.follows = "nixpkgs-24_11";
lanzaboote.url = "github:nix-community/lanzaboote";
lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
secrets.nix
@@ -14,14 +14,16 @@ let
kerkouane = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJguVoQYObRLyNxELFc3ai2yDJ25+naiM3tKrBGuxwwA"; # ssh-keyscan -q -t ed25519 kerkouane.sbr.pm
sakhalin = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/PMBThi4DhgZR8VywbRDzzMVh2Qp3T6NJAcPubfXz6"; # ssh-keyscan -q -t ed25519 sakhalin.sbr.pm
shikoku = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH18c6kcorVbK2TwCgdewL6nQf29Cd5BVTeq8nRYUigm"; # ssh-keyscan -q -t ed25519 shikoku.sbr.pm
- wakasu = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrAh07USjRnAdS3mMNGdKee1KumjYDLzgXaiZ5LYi2D"; # ssh-keyscan -q -t ed25519 wakasu.sbr.pm
+ # wakasu = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrAh07USjRnAdS3mMNGdKee1KumjYDLzgXaiZ5LYi2D"; # ssh-keyscan -q -t ed25519 wakasu.sbr.pm
kyushu = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINd795m+P54GlGJdMaGci9pQ9N942VUz8ri2F14+LWxg"; # ssh-keyscan -q -t ed25519 kyushu.sbr.pm
+ # TODO: kobe
+ # TODO: aion
+ # TODO: aix
desktops = [
- aomi
- wakasu
kyushu
];
servers = [
+ aomi
athena
demeter
kerkouane
@@ -34,72 +36,58 @@ in
# Red Hat
"secrets/redhat/krb5.conf.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/RHVPN.ovpn.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/AMS2.ovpn.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/RDU2.ovpn.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/BBRQ.ovpn.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/ipa.crt.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/2022-RH-IT-Root-CA.pem.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/2015-RH-IT-Root-CA.pem.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/Eng-CA.crt.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/newca.crt.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/oracle_ebs.crt.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/pki-ca-chain.crt.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/RH_ITW.crt.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/win-intermediate-ca.cer.age".publicKeys = users ++ [
aomi
- wakasu
kyushu
];
"secrets/redhat/redhat.pem.age".publicKeys = users ++ systems;