initial commit

This commit is contained in:
Kate 2024-11-07 16:25:41 -07:00
commit a236fcb45e
378 changed files with 32065 additions and 0 deletions

11
.editorconfig Normal file
View file

@ -0,0 +1,11 @@
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.nix]
indent_size = 2

9
.gitattributes vendored Normal file
View file

@ -0,0 +1,9 @@
nixos/configs/apple-silicon-support/asahi/AdminUserRecoveryInfo.plist filter=lfs diff=lfs merge=lfs -text
nixos/configs/apple-silicon-support/asahi/BuildManifest.plist filter=lfs diff=lfs merge=lfs -text
nixos/configs/apple-silicon-support/asahi/RestoreVersion.plist filter=lfs diff=lfs merge=lfs -text
nixos/configs/apple-silicon-support/asahi/SystemVersion.plist filter=lfs diff=lfs merge=lfs -text
nixos/configs/apple-silicon-support/asahi/stub_info.json filter=lfs diff=lfs merge=lfs -text
nixos/configs/apple-silicon-support/asahi/all_firmware.tar.gz filter=lfs diff=lfs merge=lfs -text
nixos/configs/apple-silicon-support/asahi/extras filter=lfs diff=lfs merge=lfs -text
nixos/configs/apple-silicon-support/asahi/installer.log filter=lfs diff=lfs merge=lfs -text
nixos/configs/apple-silicon-support/asahi/kernelcache.release.mac13g filter=lfs diff=lfs merge=lfs -text

6
.gitignore vendored Normal file
View file

@ -0,0 +1,6 @@
.DS_Store
tmux/plugins
.ccls-cache
result*
*.swp
taskrc-local

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "proprietary"]
path = proprietary
url = git@git.katesiria.org:ktemkin/dotfiles-proprietary

7
.vim/coc-settings.json Normal file
View file

@ -0,0 +1,7 @@
{
"cSpell.words": [
"devicons",
"prettierrc",
"tabe"
]
}

107
ModemManager/fcc-unlock.d/8086 Executable file
View file

@ -0,0 +1,107 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: CC0-1.0
# 2024 Stoica Floris <floris@nusunt.eu>
#
# Lenovo-shipped XMM7560 (8086:7560) FCC unlock
if [[ "$FCC_UNLOCK_DEBUG_LOG" == '1' ]]; then
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>>/var/log/mm-xmm7560-fcc.log 2>&1
fi
# require program name and at least 2 arguments
[ $# -lt 2 ] && exit 1
# first argument is DBus path, not needed here
shift
# second and next arguments are control port names
for PORT in "$@"; do
# match port type in Linux 5.14 and newer
grep -q AT "/sys/class/wwan/$PORT/type" 2>/dev/null && {
AT_PORT=$PORT
break
}
# match port name in Linux 5.13
echo "$PORT" | grep -q AT && {
AT_PORT=$PORT
break
}
done
# fail if no AT port exposed
[ -n "$AT_PORT" ] || exit 2
DEVICE=/dev/${AT_PORT}
at_command() {
exec 99<>"$DEVICE"
echo -e "$1\r" >&99
read answer <&99
read answer <&99
echo "$answer"
exec 99>&-
}
log() {
echo "$1"
}
error() {
echo "$1" >&2
}
reverseWithLittleEndian() {
num="$1"
printf "%x" $(("0x${num:6:2}${num:4:2}${num:2:2}${num:0:2}"))
}
VENDOR_ID_HASH="3df8c719"
for i in {1..9}; do
log "Requesting challenge from WWAN modem (attempt #${i})"
RAW_CHALLENGE=$(at_command "at+gtfcclockgen")
CHALLENGE=$(echo "$RAW_CHALLENGE" | grep -o '0x[0-9a-fA-F]\+' | awk '{print $1}')
if [ -n "$CHALLENGE" ]; then
log "Got challenge from modem: $CHALLENGE"
HEX_CHALLENGE=$(printf "%08x" "$CHALLENGE")
REVERSE_HEX_CHALLENGE=$(reverseWithLittleEndian "${HEX_CHALLENGE}")
COMBINED_CHALLENGE="${REVERSE_HEX_CHALLENGE}${VENDOR_ID_HASH}"
RESPONSE_HASH=$(printf "%s" "$COMBINED_CHALLENGE" | xxd -r -p | sha256sum | cut -d ' ' -f 1)
TRUNCATED_RESPONSE=$(printf "%.8s" "${RESPONSE_HASH}")
REVERSED_RESPONSE=$(reverseWithLittleEndian "$TRUNCATED_RESPONSE")
RESPONSE=$(printf "%d" "0x${REVERSED_RESPONSE}")
log "Sending hash modem: $RESPONSE"
UNLOCK_RESPONSE=$(at_command "at+gtfcclockver=$RESPONSE")
log "at+gtfcclockver response = $UNLOCK_RESPONSE"
UNLOCK_RESPONSE=$(at_command "at+gtfcclockmodeunlock")
log "at+gtfcclockmodeunlock response = $UNLOCK_RESPONSE"
UNLOCK_RESPONSE=$(at_command "at+cfun=1")
log "at+cfun response = $UNLOCK_RESPONSE"
UNLOCK_RESPONSE=$(at_command "at+gtfcclockstate")
log "at+gtfcclockstate response = $UNLOCK_RESPONSE"
UNLOCK_RESPONSE=$(echo "$UNLOCK_RESPONSE" | tr -d '\r')
if [ "$UNLOCK_RESPONSE" = "1" ]; then
log "FCC was unlocked previously"
exit 0
fi
if [ "$UNLOCK_RESPONSE" = "OK" ]; then
log "FCC unlock success"
exit 0
else
error "Unlock failed. Got response: $UNLOCK_RESPONSE"
fi
else
error "Failed to obtain FCC challenge. Got: ${RAW_CHALLENGE}"
fi
sleep 0.5
done
exit 2

View file

@ -0,0 +1,107 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: CC0-1.0
# 2024 Stoica Floris <floris@nusunt.eu>
#
# Lenovo-shipped XMM7560 (8086:7560) FCC unlock
if [[ "$FCC_UNLOCK_DEBUG_LOG" == '1' ]]; then
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>>/var/log/mm-xmm7560-fcc.log 2>&1
fi
# require program name and at least 2 arguments
[ $# -lt 2 ] && exit 1
# first argument is DBus path, not needed here
shift
# second and next arguments are control port names
for PORT in "$@"; do
# match port type in Linux 5.14 and newer
grep -q AT "/sys/class/wwan/$PORT/type" 2>/dev/null && {
AT_PORT=$PORT
break
}
# match port name in Linux 5.13
echo "$PORT" | grep -q AT && {
AT_PORT=$PORT
break
}
done
# fail if no AT port exposed
[ -n "$AT_PORT" ] || exit 2
DEVICE=/dev/${AT_PORT}
at_command() {
exec 99<>"$DEVICE"
echo -e "$1\r" >&99
read answer <&99
read answer <&99
echo "$answer"
exec 99>&-
}
log() {
echo "$1"
}
error() {
echo "$1" >&2
}
reverseWithLittleEndian() {
num="$1"
printf "%x" $(("0x${num:6:2}${num:4:2}${num:2:2}${num:0:2}"))
}
VENDOR_ID_HASH="3df8c719"
for i in {1..9}; do
log "Requesting challenge from WWAN modem (attempt #${i})"
RAW_CHALLENGE=$(at_command "at+gtfcclockgen")
CHALLENGE=$(echo "$RAW_CHALLENGE" | grep -o '0x[0-9a-fA-F]\+' | awk '{print $1}')
if [ -n "$CHALLENGE" ]; then
log "Got challenge from modem: $CHALLENGE"
HEX_CHALLENGE=$(printf "%08x" "$CHALLENGE")
REVERSE_HEX_CHALLENGE=$(reverseWithLittleEndian "${HEX_CHALLENGE}")
COMBINED_CHALLENGE="${REVERSE_HEX_CHALLENGE}${VENDOR_ID_HASH}"
RESPONSE_HASH=$(printf "%s" "$COMBINED_CHALLENGE" | xxd -r -p | sha256sum | cut -d ' ' -f 1)
TRUNCATED_RESPONSE=$(printf "%.8s" "${RESPONSE_HASH}")
REVERSED_RESPONSE=$(reverseWithLittleEndian "$TRUNCATED_RESPONSE")
RESPONSE=$(printf "%d" "0x${REVERSED_RESPONSE}")
log "Sending hash modem: $RESPONSE"
UNLOCK_RESPONSE=$(at_command "at+gtfcclockver=$RESPONSE")
log "at+gtfcclockver response = $UNLOCK_RESPONSE"
UNLOCK_RESPONSE=$(at_command "at+gtfcclockmodeunlock")
log "at+gtfcclockmodeunlock response = $UNLOCK_RESPONSE"
UNLOCK_RESPONSE=$(at_command "at+cfun=1")
log "at+cfun response = $UNLOCK_RESPONSE"
UNLOCK_RESPONSE=$(at_command "at+gtfcclockstate")
log "at+gtfcclockstate response = $UNLOCK_RESPONSE"
UNLOCK_RESPONSE=$(echo "$UNLOCK_RESPONSE" | tr -d '\r')
if [ "$UNLOCK_RESPONSE" = "1" ]; then
log "FCC was unlocked previously"
exit 0
fi
if [ "$UNLOCK_RESPONSE" = "OK" ]; then
log "FCC unlock success"
exit 0
else
error "Unlock failed. Got response: $UNLOCK_RESPONSE"
fi
else
error "Failed to obtain FCC challenge. Got: ${RAW_CHALLENGE}"
fi
sleep 0.5
done
exit 2

12
README.md Normal file
View file

@ -0,0 +1,12 @@
# Kate's Dotfiles
These are our personal dotfiles -- if you find this link, please don't pass it around. <3
## Notes
Most things in here are managed by `NixOS`, nix-darwin`, or `home-manager`. The following things,
however, need to work on native Windows, and thus shouldn't be Nixified:
- neovim's configuration
- wezterm's configruation
- xonsh's configruation

3
age/all_recipients Normal file
View file

@ -0,0 +1,3 @@
age1yubikey1qgkz2s97uzquemxx694vvqp2dj6328zpf4l3rj3mqfcnguvuhxcguw8fgxy
age1yubikey1qt5cjhklyek73awwaducjgn0g7l93xeuvcnudnac23kdyem2k7v7zlmn6p0
age1yubikey1qtgvszdcz3n9a707l3k2mhaql9mdm6sqe69mr2hypl8n0qxs5m52sgu9wdd

View file

@ -0,0 +1,7 @@
# Serial: 26907034, Slot: 1
# Name: KATE_YK_5NFC
# Created: Sun, 03 Mar 2024 00:54:50 +0000
# PIN policy: Once (A PIN is required once per session, if set)
# Touch policy: Always (A physical touch is required for every decryption)
# Recipient: age1yubikey1qtgvszdcz3n9a707l3k2mhaql9mdm6sqe69mr2hypl8n0qxs5m52sgu9wdd
AGE-PLUGIN-YUBIKEY-1N2GE5QVZ9Z9GN2C6KSXJM

View file

@ -0,0 +1,7 @@
# Serial: 26154720, Slot: 1
# Name: 5A_BACKUP
# Created: Mon, 04 Mar 2024 22:40:29 +0000
# PIN policy: Once (A PIN is required once per session, if set)
# Touch policy: Always (A physical touch is required for every decryption)
# Recipient: age1yubikey1qt5cjhklyek73awwaducjgn0g7l93xeuvcnudnac23kdyem2k7v7zlmn6p0
AGE-PLUGIN-YUBIKEY-1UQTG7QVZPUAZPGC8AH5Z6

View file

@ -0,0 +1,7 @@
# Serial: 26908840, Slot: 1
# Name: age identity 58701041
# Created: Sun, 12 May 2024 23:45:49 +0000
# PIN policy: Once (A PIN is required once per session, if set)
# Touch policy: Always (A physical touch is required for every decryption)
# Recipient: age1yubikey1qgkz2s97uzquemxx694vvqp2dj6328zpf4l3rj3mqfcnguvuhxcguw8fgxy
AGE-PLUGIN-YUBIKEY-14ZVF5QVZTPCPQSGTZ2YKJ

View file

@ -0,0 +1 @@
age1yubikey1qtgvszdcz3n9a707l3k2mhaql9mdm6sqe69mr2hypl8n0qxs5m52sgu9wdd

View file

@ -0,0 +1 @@
age1yubikey1qt5cjhklyek73awwaducjgn0g7l93xeuvcnudnac23kdyem2k7v7zlmn6p0

View file

@ -0,0 +1 @@
age1yubikey1qgkz2s97uzquemxx694vvqp2dj6328zpf4l3rj3mqfcnguvuhxcguw8fgxy

9
cargo/config.toml Normal file
View file

@ -0,0 +1,9 @@
[target.x86_64-apple-darwin]
rustflags = [ "-C", "linker=/usr/bin/clang"]
[target.aarch64-apple-darwin]
rustflags = [ "-C", "linker=/usr/bin/clang"]
[target.x86_64-unknown-linux-musl]
linker = "clang"
rustflags = "-Clink-arg=--target=x86_64-unknown-linux-musl -Clink-arg=-fuse-ld=lld"

View file

@ -0,0 +1,13 @@
#
# Our espanso config.
#
# Double tapping right alt turns espanso on and off
toggle_key: RIGHT_ALT
# one can try Clipboard or Inject, too
backend: Auto
# Enable/disable the config auto-reload after a file change is detected.
auto_restart: true

View file

@ -0,0 +1,4 @@
filter_title: "Element"
includes:
- ../match/_messengers.yml

View file

@ -0,0 +1,4 @@
filter_title: "Mattermost"
includes:
- ../match/_messengers.yml

4
espanso/config/nheko.yml Normal file
View file

@ -0,0 +1,4 @@
filter_title: "nheko"
includes:
- ../match/_messengers.yml

View file

@ -0,0 +1,4 @@
filter_title: "Signal"
includes:
- ../match/_messengers.yml

View file

@ -0,0 +1,47 @@
#
# Matches for Signal.
#
filter_title: "Signal"
matches:
- trigger: "o;"
word: true
replace: "⚪O>"
- trigger: "t;"
word: true
replace: "🔵T>"
- trigger: "k;"
word: true
replace: "🟣K>"
- trigger: "w;"
word: true
replace: "🟢W>"
- trigger: "s;"
word: true
replace: "🔴S>"
- trigger: "e;"
word: true
replace: "⚫E>"
# keep the non-discord ones, too
- trigger: "zo"
word: true
replace: "⚪O>"
- trigger: "zt"
word: true
replace: "🔵T>"
- trigger: "zk"
word: true
replace: "🟣K>"
- trigger: "zw"
word: true
replace: "🟢W>"
- trigger: "zs"
word: true
replace: "🔴S>"
- trigger: "ze"
word: true
replace: "⚫E>"

64
espanso/match/base.yml Normal file
View file

@ -0,0 +1,64 @@
#
# Matches for all programs.
#
matches:
# つ
- trigger: "tsu"
word: true
replace: "つ"
- trigger: "tsu's"
word: true
replace: "つ's"
# non-discord chats
- trigger: "zo"
word: true
replace: "⚪O>"
- trigger: "zt"
word: true
replace: "🔵つ>"
- trigger: "zk"
word: true
replace: "🟣K>"
- trigger: "zw"
word: true
replace: "🟢W>"
- trigger: "zs"
word: true
replace: "🔴S>"
- trigger: "ze"
word: true
replace: "⚫E>"
# Puck
- trigger: "z1"
word: true
replace: "⑴"
- trigger: "z2"
word: true
replace: "⑵"
- trigger: "z3"
word: true
replace: "⑶"
# Dates
- trigger: ":ndate"
word: true
replace: "{{fulldate}}"
vars:
- name: fulldate
type: date
params:
format: "%A, %B %d, %Y"
# Emoji
- trigger: ":allemoji:"
word: true
replace: "🤍💙💜💚❤️🩶"
- trigger: "zah"
word: true
replace: "🤍💙💜💚❤️🩶"

View file

1219
flake.lock generated Normal file

File diff suppressed because it is too large Load diff

505
flake.nix Normal file
View file

@ -0,0 +1,505 @@
#
# Our system configuration, as a Nix flake.
# Now with bonus packages!
#
# vim: et:ts=2:sw=2:
#
{
#
# The sources we depend on.
#
inputs = {
# Core and utilities.
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
# Not nix -- lix!
lix = {
url = "git+https://git@git.lix.systems/lix-project/lix";
flake = false;
};
lix-module = {
url = "git+https://git@git.lix.systems/lix-project/nixos-module";
inputs.lix.follows = "lix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
# Home-manager.
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
# Styling!
stylix = {
url = "github:danth/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
# Attic cache.
attic = {
url = "github:zhaofengli/attic";
inputs.nixpkgs.follows = "nixpkgs";
};
# For our phone.
nix-on-droid = {
url = "github:nix-community/nix-on-droid/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
# Flakes for packages.
nil.url = "github:oxalica/nil";
agenix.url = "github:ryantm/agenix";
openxc7.url = "github:openXC7/toolchain-nix";
niri.url = "github:sodiboo/niri-flake";
waveforms.url = "github:liff/waveforms-flake";
esp-dev.url = "github:mirrexagon/nixpkgs-esp-dev";
# Flatpack support
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";
# Various system type support.
darwin.url = "github:lnl7/nix-darwin/master";
darwin.inputs.nixpkgs.follows = "nixpkgs";
};
#
# Package definitions for each of our various types.
# Used in the outputs section.
#
#
# Our various products; mostly machine configurations.
#
outputs =
{
self,
nixpkgs,
flake-utils,
home-manager,
openxc7,
darwin,
agenix,
nil,
lix-module,
niri,
stylix,
waveforms,
esp-dev,
attic,
nix-flatpak,
nix-on-droid,
...
}:
#
# Our various packages; generated for each system.
#
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
callPackage = pkgs.callPackage;
deprekages= self.outputs.packages;
in
{
# The packages themselves,
packages = rec {
# fonts
font-monolisa = callPackage ./fonts/monolisa.nix { };
font-codicon = callPackage ./fonts/codicon.nix { };
font-manrope = callPackage ./fonts/manrope.nix { };
# scientific things
ffts = callPackage ./packages/scopehal-apps/ffts.nix { };
libsigrok4DSL = callPackage ./packages/scopehal-apps/libsigrok4DSL.nix { };
vulkan-sdk = callPackage ./packages/scopehal-apps/vulkan-sdk.nix { };
scopehal-apps = callPackage ./packages/scopehal-apps { deprekages = deprekages.${system}; };
scopehal-sigrok-bridge = callPackage ./packages/scopehal-apps/sigrok-bridge.nix {
deprekages = deprekages.${system};
};
# apps
navit = callPackage ./packages/navit.nix { };
navit-with-maps = callPackage ./packages/navit.nix { with_maps = true; };
binary-ninja = callPackage ./packages/binary-ninja.nix { };
argos = callPackage ./packages/argos.nix { };
todoist-electron = callPackage ./packages/todoist-electron.nix { };
home-assistant-desktop = callPackage ./packages/home-assistant-desktop/x86_64-linux.nix { };
flexbv = callPackage ./packages/flexbv.nix { };
glowing-bear-desktop = callPackage ./packages/glowing-bear-desktop.nix { };
hrvst-cli = callPackage ./packages/hrvst-cli { };
notion-app = callPackage ./packages/notion-app { inherit _7zz; };
# utilities
ykush = callPackage ./packages/ykush.nix { };
wsl-gpg-forward = callPackage ./windows/gpg-forward.nix { };
oxfs = callPackage ./packages/oxfs.nix { };
pcsclite = callPackage ./packages/pcsclite.nix { };
age-plugin-yubikey = callPackage ./packages/age-plugin-yubikey.nix { inherit pcsclite; };
humanfx = callPackage ./packages/humanfx { };
clipboard-sync = callPackage ./packages/clipboard-sync.nix { };
vsmartcard = callPackage ./packages/vsmartcard.nix { };
pcsc-relay = callPackage ./packages/pcsc-relay.nix { };
neard = callPackage ./packages/neard.nix { };
libnfc = callPackage ./packages/libnfc.nix { inherit libnfc-nci; };
jadx = callPackage ./packages/jadx { };
firefox-webserial = callPackage ./packages/firefox-webserial { inherit ws-server; };
ryzen-ppd = callPackage ./packages/ryzen-ppd { };
avbroot = callPackage ./packages/avbroot { };
okc-agents = callPackage ./packages/okc-agents.nix { };
_7zz = pkgs._7zz.override { useUasm = true; };
# libraries
libnfc-nci = callPackage ./packages/libnfc-nci { };
ws-server = callPackage ./packages/ws-server { };
rubyPackages = callPackage ./packages/ruby-gems.nix { };
# jetbrains products
jetbrains-jdk = callPackage ./packages/jetbrains-jdk.nix { };
jetbrains = import ./packages/jetbrains.nix {
inherit pkgs;
jdk = jetbrains-jdk;
};
# kernel modules
linuxPackages_i915-sriov = callPackage ./packages/i915-sriov/kernel.nix { };
i915-sriov = callPackage ./packages/i915-sriov { linuxPackages = linuxPackages_i915-sriov; };
linux-nfc-lenovo = callPackage ./packages/linux-nfc-lenovo { };
# hw support
dell = callPackage ./packages/dell { };
# udev rules~
t5-udev-rules = callPackage ./packages/t5-udev-rules { };
ykush-udev-rules = callPackage ./packages/ykush-udev-rules { };
dreamsource-udev-rules = callPackage ./packages/dreamsource-udev-rules { };
hantek-udev-rules = callPackage ./packages/hantek-udev-rules { };
linux-nfc-lenovo-udev-rules = callPackage ./packages/linux-nfc-lenovo/udev.nix { };
# weechat
weechat-discord = callPackage ./packages/weechat-discord { };
# kakoune
kak-tree-sitter = callPackage ./packages/kak-tree-sitter { };
# xonsh and xontribs
xonsh-with-xontribs = pkgs.xonsh.override {
extraPackages = pythonPackages: [
(callPackage ./packages/xontrib-whole-word-jumping.nix { })
(callPackage ./packages/xontrib-term-integrations.nix { })
(callPackage ./packages/xontrib-sh.nix { })
];
};
};
}
)
#
# Our per-machine configurations.
# Appeneded to the output of the packages generated by eachDefaultSystem.
#
// rec {
#
# Helpers.
#
# Common to all machines, Linux or macOS.
commonModuleSet = [
./nixos/packages
./nixos/configs/stylix
./nixos/configs/nix.nix
./nixos/configs/dotfiles
./nixos/configs/calendar.nix
./nixos/configs/include-conf.nix
./nixos/configs/flake-registry.nix
./nixos/configs/storage-optimization.nix
./nixos/services/tailscale.nix
lix-module.nixosModules.default
home-manager.nixosModules.home-manager
];
# Modules for all linux machines.
linuxModuleSet = [
./nixos/configuration.linux.nix
./nixos/configs/udev.nix
./nixos/configs/printing.nix
./nixos/configs/virt-host.nix
./nixos/configs/mount-rsync-kate.nix
./nixos/configs/mount-fastmail-tmllc.nix
./nixos/services/taskwarrior.nix
./nixos/overlays/fixup-canon.nix
#
];
# Modules for Linux machines with Wayland GUIs.
linuxGuiModuleSet = [
waveforms.nixosModule
nix-flatpak.nixosModules.nix-flatpak
./nixos/packages/gui.nix
./nixos/packages/wine.nix
./nixos/packages/flatpak.nix
./nixos/packages/proprietary.nix
./nixos/configs/gui
./nixos/configs/flatpak.nix
./nixos/configs/fonts-linux.nix
./nixos/configs/music-server.nix
#./nixos/overlays/fixup-signal
./nixos/overlays/fixup-imhex.nix
./nixos/overlays/customize-gajim
./nixos/overlays/sddm-no-vnc.nix
./nixos/overlays/fixup-armcord.nix
./nixos/overlays/jd-gui-wayland.nix
./nixos/overlays/fixup-mattermost.nix
./nixos/overlays/yubikey-touch-shitpost
./nixos/overlays/add-depends-calibre.nix
./nixos/services/clipboard-sync.nix
];
# Modules for all darwin machines.
darwinModuleSet = [
./nixos/configuration.darwin.nix
./nixos/packages/homebrew.nix
./nixos/packages/appstore.nix
./nixos/configs/fonts-darwin.nix
./nixos/configs/autosetup-darwin-aarch64.nix
];
# Modules for offline linux machines.
linuxOfflineModuleSet = [
./nixos/packages/offline.nix
./nixos/configs/waydroid.nix
];
# Helper functions for creating modules in the defintions below.
darwinModules = extraModules: commonModuleSet ++ darwinModuleSet ++ extraModules;
linuxModules = extraModules: commonModuleSet ++ linuxModuleSet ++ extraModules;
linuxGuiModules = extraModules: linuxModules (linuxGuiModuleSet ++ extraModules);
linuxOfflineGuiModules = extraModules: linuxGuiModules (linuxOfflineModuleSet ++ extraModules);
# Helper that populates all of our special arguments.
mkSpecialArgsGeneric = (
system: is-hm-standalone: is-droid: {
inherit
nixpkgs
stylix
is-hm-standalone
is-droid
;
niri = niri.outputs;
nil = nil.outputs.packages.${system};
deprekages = self.outputs.packages.${system};
agenix = agenix.outputs.packages.${system};
openxc7 = openxc7.outputs.packages.${system};
attic = attic.outputs.packages.${system};
esp-dev = esp-dev.outputs.packages.${system};
# Helper to convert hm modules into NixOS or nix-on-droid modules.
callHm = module: (specialArgs: (import module) specialArgs);
normalizeModule =
if is-hm-standalone then
(module: module)
else
(
if is-droid then
(
module:
(
{ deprekages, ... }:
{
home-manager.config =
{ pkgs, ... }@specialArgs: (import module) (specialArgs // { inherit deprekages; });
}
)
)
else
(
module:
(
{ deprekages, ... }:
{
home-manager.users.deprekated =
{ pkgs, ... }@specialArgs: (import module) (specialArgs // { inherit deprekages; });
}
)
)
);
}
);
# Generic mkSpecialArgs for NixOS.
mkSpecialArgs = system: (mkSpecialArgsGeneric system false false);
# Specialized mkSpecialArgs for standalone home-manager.
mkSpecialArgsHm = system: pkgs: ((mkSpecialArgsGeneric system true false) // { inherit pkgs; });
mkSpecialArgsDroid = system: pkgs: ((mkSpecialArgsGeneric system false true) // { inherit pkgs; });
#
# Hosts!
#
# Trailblazer (main desktop).
nixosConfigurations.trailblazer = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxOfflineGuiModules [
./nixos/hosts/trailblazer
./nixos/configs/looking-glass.nix
./nixos/configs/serve-cache.nix
];
};
# Valere (powerful laptop).
nixosConfigurations.valere = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxOfflineGuiModules [
./nixos/hosts/valere.nix
./nixos/configs/vmware.nix
./nixos/configs/power-saving.nix
];
};
# Tohru (mid-tier laptop with more ram).
nixosConfigurations.tohru = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxOfflineGuiModules [
./nixos/hosts/tohru.nix
./nixos/configs/power-saving.nix
./nixos/configs/looking-glass.nix
];
};
# Hinata (travel laptop).
nixosConfigurations.hinata = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxOfflineGuiModules [
./nixos/hosts/hinata.nix
./nixos/configs/power-saving.nix
./nixos/configs/cellular.nix
];
};
# Veth (purse laptop).
nixosConfigurations.veth = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxGuiModules [
./nixos/hosts/veth
./nixos/configs/power-saving.nix
];
};
# Komashi (TMLLC T16 gen2).
nixosConfigurations.komashi = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxOfflineGuiModules [
./nixos/hosts/komashi
./nixos/configs/vmware.nix
./nixos/configs/cellular.nix
./nixos/configs/nfc-kernel.nix
./nixos/configs/power-saving.nix
];
};
# Utol (TMLLC T14 Gen1)
nixosConfigurations.utol = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxGuiModules [
./nixos/hosts/utol
./nixos/configs/vmware.nix
./nixos/configs/cellular.nix
./nixos/configs/power-saving.nix
./nixos/packages/offline.nix
];
};
# Salas (TMLLC aarch64-linux, apple-silicon, build machine).
nixosConfigurations.salas = nixpkgs.lib.nixosSystem rec {
system = "aarch64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxModules [ ./nixos/hosts/salas.nix ];
};
# Nomon (TMLLC aarch64-linux, broadcom-silicon, test machine).
nixosConfigurations.nomon = nixpkgs.lib.nixosSystem rec {
system = "aarch64-linux";
specialArgs = mkSpecialArgs system;
modules = linuxModules [ ./nixos/hosts/salas.nix ];
};
# Roshar (TMLLC aarch64-darwin, apple-silicon build machine).
darwinConfigurations.roshar = darwin.lib.darwinSystem rec {
system = "aarch64-darwin";
specialArgs = mkSpecialArgs system;
modules = darwinModules [ ./nixos/hosts/roshar.nix ];
};
# Mako (x86_64-darwin, apple-silicon build machine).
darwinConfigurations.mako = darwin.lib.darwinSystem rec {
system = "x86_64-darwin";
specialArgs = mkSpecialArgs system;
modules = darwinModules [ ./nixos/hosts/mako.nix ];
};
# Design, our phone.
nixOnDroidConfigurations.design = nix-on-droid.lib.nixOnDroidConfiguration rec {
pkgs = import nixpkgs {
system = "aarch64-linux";
config.allowUnfree = true;
};
extraSpecialArgs = mkSpecialArgsDroid "aarch64-linux" pkgs;
modules = [
./nixos/hosts/design.nix
./nixos/configuration.droid.nix
./nixos/configs/nix.droid.nix
./nixos/configs/droid-gui.nix
./nixos/configs/dotfiles/droid.nix
./nixos/configs/flake-registry.nix
./nixos/packages/droid.nix
./nixos/packages/offline.droid.nix
];
};
};
}

BIN
flipper/.dolphin.state Normal file

Binary file not shown.

8
flipper/openocd-jtag.cfg Normal file
View file

@ -0,0 +1,8 @@
adapter driver cmsis-dap
adapter speed 4000
transport select jtag
cmsis_dap_backend usb_bulk
source [find interface/cmsis-dap.cfg]

8
flipper/openocd-swd.cfg Normal file
View file

@ -0,0 +1,8 @@
adapter driver cmsis-dap
adapter speed 4000
transport select swd
cmsis_dap_backend usb_bulk
source [find interface/cmsis-dap.cfg]

21
fonts/MonoLisa/README.md Normal file
View file

@ -0,0 +1,21 @@
# MonoLisa - Font follows function
Congratulations for purchasing MonoLisa. I hope you have as much fun using it as we had creating the typeface.
## Installation
To install the font, please see [the FAQ online](https://monolisa.dev/faq) or consider the quick guides below:
- macOS - 1. Select and open the otf versions of the font 2. Select "install font"
- Windows - Refer to https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
- Linux and other systems - Please consult the documentation of your distribution.
## Support
You can reach us through `info@monolisa.dev`. Send us your questions, comments, and perhaps testimonials.
If you have public feedback about the font, [please use the issue tracker](https://github.com/MonoLisaFont/feedback/issues).
## License
See the attached `license.md` file for the licensing terms.

185
fonts/MonoLisa/license.md Normal file
View file

@ -0,0 +1,185 @@
# FaceType End User License Agreement (EULA)
FaceType says thank you for reading this and taking the time to understand this License Agreement! Your support makes this foundry possible.
## Acknowledgments
FaceType is willing to license the licensed product to Licensees only on the condition that the Licensee accepts the terms and conditions contained in this agreement. By placing an order for and accepting FaceType font software (electronic data), or by downloading the software accompanying this license, the Licensee acknowledges that he has read all of the terms and conditions of this agreement, understands them, and agrees to be bound by them.
If the Licensee does not agree to these terms and conditions, he must promptly cease download or use of the licensed product and return the licensed product to FaceType or its reseller for a full refund of the license fee which the Licensee paid for the licensed product, and the Licensee must immediately delete any portion of the font software installed on Licensees computer(s).
If you intend to create a trademark, logo, brand or corporate identy, a multinational campaign using any of FaceTypes typefaces or if the number of prints for large commercial projects exceeds 250,000, a special font license solely issued by FaceType is needed. Please contact us for more information: welcome@facetype.org
## Types of Font Licenses
Most font license distributors offer default font licenses. If not, please contact FaceType directly: welcome@facetype.org
## 1. Desktop License
### 1.a Definition
With a desktop license, you may install a font into your computers operating system and use it in any of your applications that contain a fonts menu such as TextEdit, Microsoft Word Adobe Photoshop or Indesign.
### 1.b The Licensee May
Create personal or commercial print documents, posters, business cards, goods for sale, (such as clothing apparel and accessories), physical goods, static images, and other objects like stationery, mugs, T-shirts and the like. Desktop licenses are based on the number of computers (= computers) the fonts are installed onto. If more people intend to use the fonts, just add additional licenses. See Multi-User Licenses below for more infos.
### 1.c Embedding Restrictions
PDF embedding of the font software into PDF documents is only permitted in a secured read-only mode that allows only printing and viewing, and prohibits editing, selecting, enhancing or modifying the text.
Licensee must ensure that recipients of PDF documents cannot extract the FaceType font software from such PDF documents or use the embedded font software for editing purposes or for the creation of new documents.
If you are unable to limit access to the document to printing and viewing only, the electronic document(s) may not be used on computers that are not Licensed Computers. Examples of non-commercial, not-for-profit permitted usage include PDF documents supplied to Service Bureaus, printers, or any documents that disseminate personal, internal or business information.
### 1.d Number of Users
This electronic data may be installed on up to one (1) computer. If you are using this product with more than one (1) computers, the Licensee requires to obtain a Multi-User License for the appropriate number of computers (see Multi-User Licenses section below).
### 1.e Multi-User Licenses
FaceType calculates Multi-User Licenses based on the chart below. The price FaceType charges the Licensee will be calculated based on the number of computers the fonts will be installed onto:
- 1-2 computers: single License x 1
- 35 computers: single License x 2
- 615 computers: single License x 3
- 1630 computers: single License x 4
- 3150 computers: single License x 5
- 5175 computers: single License x 6
- 76100 computers: single License x 7
- 101120 computers: single License x 8
- 121145 computers: single License x 9
- 146160 computers: single License x 10
- 161180 computers: single License x 11
- 181195 computers: single License x 12
- 196215 computers: single License x 13
- 216230 computers: single License x 14
- 231260 computers: single License x 15
- 261300 computers: single License x 16
- 301335 computers: single License x 17
- 336375 computers: single License x 18
- 376415 computers: single License x 19
- 416460 computers: single License x 20
- 461520 computers: single License x 21
- 521580 computers: single License x 22
- 581640 computers: single License x 23
- 641700 computers: single License x 24
- 701760 computers: single License x 25
- 761820 computers: single License x 26
- 821880 computers: single License x 27
- 881940 computers: single License x 28
- 9411000 computers: single License x 29
## 2. Webfont License
A webfont license allows you to embed the purchased webfont into your website (a group of pages related to one domain, including sub-domains). If you only use static images with one of our fonts on your website a desktop license is sufficient.
FaceType is not responsible for installing, embedding, hosting or updating the webfonts. Web design agencies or hosting providers are not allowed to share a single webfont license across their clients websites. The price FaceType charges the Licensee will be calculated based on the number of pageviews per month:
- 10 000 pageviews per month or less: single License x 1
- 100 000 pageviews per month or less: single License x 2
- More than 100 000 pageviews per month: single License x 10
## 3. App License
Select this license type when you are developing an app for iOS, Android, or Windows Phone or any other mobile OS, and you intend to embed the font files in your mobile applications code. This license does not cover web apps. The amount of installations across the platforms (i. g. iOS, Android, …) is unlimited.
An Apps License is also required when incorporating the font software into your hardware, software or any other products, such as application programs, interfaces, EPOS, WEPOS, POSReady, operating systems, electronics, electronic games, entertainment products, video on demand, gaming devices.
## 4. Server License
Select a server license when you need to install the font on Web Servers that will allow the generation of items such as PDF invoices, custom business cards, or other personalized products using Web to Print technologies. This license allows your customers to utilize the fonts you have purchased in order to customize the products that you offer, but the fonts can not be distributed or downloaded from the server.
## 5. ePub License
Choose one of our fonts available with an ePub license when creating layouts for publications intended for Kindles, iPads or other eReaders, ePublishing, ePub, eBooks, eZines, proprietary reader devices. If you just need a font to create a cover image, purchase a desktop license. An ePub license is valid for file formats such as PDF, EPUB 2.01, EPUB 3, and KF8.
## General
You agree to inform your employees or any other person having access to the FaceType software and copies thereof, of the terms and conditions of this Standard License Agreement and to ensure that they shall strictly abide by these terms and conditions.
You agree that you will not export or re-export the Software in any form without the appropriate United States, European, and worldwide government licenses.
You agree not to sublicense, sell, lease or otherwise transfer the electronic data without the prior written consent of FaceType.
## Grant of License
In consideration of payment of the license fee, included in the price paid by the Licensee for this product, the Licensor grants to the Licensee a non-exclusive right to use this product, which consists of electronic data to display and output PostScript®, TrueType® or OpenType® typefaces. The terms of this Agreement are contractual in nature and not mere recitations.
## Prohibited Usage
This product is licensed only to the Licensee, and may not be transferred to any third party at any time without the prior written consent of FaceType.
The Licensee may not modify, translate, adapt, alter, decompile, disassemble, decrypt, reverse engineer, change or alter the embedding bits, the font name, legal notices contained in the font software, nor seek to discover the source code of the font data, convert into another font format, create bitmaps, add or subtract any glyphs, symbols or accents, or any other derivative works based on the electronic data in this product.
The Licensee may not supply, directly or indirectly, any FaceType font data to any other firm, business or individual for any type of modifications or updates whatsoever.
If the Licensee needs to modify or update the font data in anyway in the future, FaceType solely will perform and invoice this additional work at its normal prevailing rates.
The Licensee may not duplicate, modify, adapt, translate or create derivative works based on the printed materials that may have been supplied with this product. It is a breach of this license agreement to use the product in any way that infringes the rights of any third party under copyright, trademark, patent or any other laws.
In the event of infringing uses by the Licensee, this license immediately terminates and the Licensee is solely responsible for any such infringing uses including all legal and other damages that may be incurred.
## Ownership
FaceType retains intellectual property rights, title and ownership of any of its electronic data provided. This title and ownership extends to copies of the data installed on any computer, downloaded to any output device, or retained on other media by the Licensee as a backup.
This license does not constitute an exclusive sale of the original product to the Licensee. This Agreement does not grant you any right to patents, copyrights, trade secrets, trade names, trademarks (whether registered or unregistered), or any other rights, franchises or licenses in respect of the electronic data.
No rights are granted to you other than a License to use the electronic data on the terms expressly set forth in this Agreement. The Licensee further acknowledges and agrees that the structure, organisation and code of the font software are valuable trade secrets and confidential information of FaceType.
The font software is protected by copyright including without limitation, by Austrian, and United States Copyright Law, international treaty provisions, and applicable laws in the jurisdiction of use.
## Copy Restrictions
This product is copyrighted and contains proprietary information and trade secrets of FaceType. Unauthorised copying of this product is expressly forbidden.
You are permitted to create backups of the font software, provided that: (a) they are stored only at the site where this product is licensed, and (b) the full copyright information is included with each backup copy.
You may be held legally responsible for any infringement of FaceTypes intellectual property rights that is caused or encouraged by your failure to abide by the terms of this Agreement.
## Limited Warranty
If the media or the font software contained in this FaceType product is found to be defective within 90 days of the date of delivery to the Licensee, FaceType will provide suitable replacements at no charge to the Licensee, provided the Licensee can provide proof of purchase. The entire risk of performance and quality of this product is with the Licensee.
FaceType does not warrant that this product will operate with all other software products, or that it will satisfy your requirements. FaceTypes entire liability to the Licensee will not extend beyond replacement of defective media or refund of the purchase price.
## Disclaimer
Except as expressly provided above, this product is provided as is. FaceType does not make any warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
No oral or written information or advice given by FaceType, its dealers, distributors, agents, or employees will create a warranty or in any way increase the scope of this warranty, and Licensee may not rely upon any such information or advice.
FaceType shall not be liable for any direct, indirect, consequential, or incidental damages or any other damages of any kind whatsoever (including damages from loss of business profits, business interruption and loss of business information) arising out of the use or inability to use this product.
Because laws governing the exclusion or limitation of liability for consequential or incidental damages vary, the above limitation may not be applicable.
## Update Registration
At its option, FaceType will, from time to time, provide updates of this product to Licensees who have opted into receiving updates in their user profile.
## Termination
This Agreement is effective until terminated. This Agreement will terminate automatically without notice from FaceType, if the Licensee fails to comply with any provision contained herein.
Upon termination of this Agreement, the Licensee must: (a) destroy all copies of the electronic data, including the copy on the disk media originally provided in this product, (b) destroy all written materials provided with this product, if any, and (c) provide FaceType with written verification that the product has been destroyed.
## Severability
If any provisions of this Agreement are held to be invalid, illegal or unenforceable, then such provision(s) shall be severed from it, and the validity, legality and enforceability of its remaining provisions shall not be affected or impaired.
## Waiver
Waiver of any right(s) at any time shall not constitute waiver of any right(s) at any future time.
## License Agreement
This Agreement may only be modified by FaceType. FaceType expressly reserves the right to amend, modify or change this Standard License Agreement at any time without prior notification.
## Jurisdiction
This Agreement represents the entire agreement between the Licensor and Licensee. FaceType may only modify this Agreement. The laws of Austria govern this License Agreement. If you have any questions concerning this Agreement or any matters regarding our products, please write to: welcome@facetype.org
The FaceType collections are the brands and trademarks of FaceType. PostScript and Flash are registered trademark of Adobe Systems, Inc. TrueType®, OpenType® and Silverlight® are registered trademarks of Microsoft Corporation. All other brand or product names are the trademarks or registered trademarks of their respective holders and are duly recognised.
© Copyright September 30th, 2019 Georg Herold-Wildfellner, Marcus Sterz.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

17
fonts/codicon.nix Normal file
View file

@ -0,0 +1,17 @@
#
# Codicon package for Nix.
#
{ pkgs }:
pkgs.stdenv.mkDerivation {
pname = "codicon";
meta.description = "the codiconfont set";
version = "0.1.0";
src = ./codicon;
installPhase = ''
mkdir -p $out/share/fonts
cp -R $src $out/share/fonts/truetype
'';
}

BIN
fonts/codicon/codicon.ttf Normal file

Binary file not shown.

25
fonts/manrope.nix Normal file
View file

@ -0,0 +1,25 @@
#
# Manrope font, with italics.
#
{
stdenv,
fetchFromGitHub
}:
stdenv.mkDerivation rec {
pname = "manrope";
meta.description = "the Manrope font set, with italics";
version = "0.1.0";
src = fetchFromGitHub {
owner = "malte-v";
repo = "manrope-italic";
rev = "8bfff2a5f0ba40ff8b793fe39e919c60380312b2";
hash = "sha256-gWw+R/Qy3yIanA7C/UrmyDScd3DfaIHgN5aFDxqM6mY=";
};
installPhase = ''
mkdir -p $out/share/fonts
cp -R $src $out/share/fonts/opentype/
'';
}

17
fonts/monolisa.nix Normal file
View file

@ -0,0 +1,17 @@
#
# MonoLisa package for Nix.
#
{ pkgs }:
pkgs.stdenv.mkDerivation rec {
pname = "monolisa";
meta.description = "the MonoLisa font set";
version = "0.1.0";
src = ./MonoLisa/otf;
installPhase = ''
mkdir -p $out/share/fonts
cp -R $src $out/share/fonts/opentype/
'';
}

3
grc/grc.conf Normal file
View file

@ -0,0 +1,3 @@
# lsusb
(^|[/\w\.]+/)lsusb\s
lsusb.conf

21
grc/lsusb.conf Normal file
View file

@ -0,0 +1,21 @@
regexp=.*:$
colors=bold blue underline
-
regexp=^ (.*) (.*?)$
colors=,blue,cyan
-
regexp=^ +(.*)( )(.*?):$
colors=bold, underline, underline, underline
-
regexp=^ (.*): (.*)
colors=,magenta
-
regexp=(Bus )(\d+) (Device) (\d+): (ID) ([0-9a-f]+:[0-9a-f]+) (.*)
colors=, bold, blue, bold, blue, bold, green, yellow
-
regexp=.*root hub.*
colors=dark dark white
-
regexp=(Bus )(\d+) (Device) (\d+): (ID) (1d50:60e6) (.*)
colors=underline, bold underline, blue underline, bold underline, blue underline, bold underline, green underline, yellow underline

View file

@ -0,0 +1,116 @@
# Solarized Darker
evaluate-commands %sh{
base03='rgb:002b36'
base02='rgb:073642'
base01='rgb:586e75'
base00='rgb:657b83'
base0='rgb:839496'
base1='rgb:93a1a1'
base2='rgb:eee8d5'
base3='rgb:fdf6e3'
yellow='rgb:b58900'
orange='rgb:cb4b16'
red='rgb:dc322f'
magenta='rgb:d33682'
violet='rgb:6c71c4'
blue='rgb:268bd2'
cyan='rgb:2aa198'
green='rgb:859900'
echo "
# markup
face global title ${blue}+b
face global header ${blue}
face global mono ${base1}
face global block ${cyan}
face global link ${base1}
face global bullet ${yellow}
face global list ${green}
# builtin
face global Default ${base0},default
face global PrimarySelection ${base03},${blue}+fg
face global SecondarySelection ${base01},${base1}+fg
face global PrimaryCursor ${base03},${base0}+fg
face global SecondaryCursor ${base03},${base01}+fg
face global PrimaryCursorEol ${base03},${base2}+fg
face global SecondaryCursorEol ${base03},${base3}+fg
face global LineNumbers ${base01},default
face global LineNumberCursor ${base0},${base03}
face global LineNumbersWrapped ${base02},default
face global MenuForeground ${base03},${yellow}
face global MenuBackground ${base1},${base02}
face global MenuInfo ${base01}
face global Information ${base02},${base1}
face global Error ${red},default+b
face global DiagnosticError ${red}
face global DiagnosticWarning ${yellow}
face global StatusLine ${base1},${base02}+b
face global StatusLineMode ${orange}
face global StatusLineInfo ${cyan}
face global StatusLineValue ${green}
face global StatusCursor ${base00},${base3}
face global Prompt ${yellow}+b
face global MatchingChar ${red},${base01}+b
face global BufferPadding ${base01},default
face global Whitespace ${base01}+f
# code
face global value ${cyan}
face global type ${yellow}
face global variable ${blue}
face global module ${cyan}
face global function ${blue}
face global string ${cyan}
face global keyword ${green}
face global operator ${green}
face global attribute ${violet}
face global comment ${base01}
face global documentation comment
face global meta ${orange}
face global builtin default+b
# tree-sitter
face global ts_attribute ${violet}
face global ts_comment ${base01}+i
face global ts_constant ${yellow}
face global ts_constructor ${cyan}
face global ts_diff_plus ${green}
face global ts_diff_minus ${red}
face global ts_diff_delta ${yellow}
face global ts_error ${red}
face global ts_function ${blue}
face global ts_hint ${violet}
face global ts_info ${violet}
face global ts_keyword ${green}
face global ts_label ${blue}+b
face global ts_markup_bold default+b
face global ts_markup_heading ${blue}+b
face global ts_markup_italic default+i
face global ts_list_checked ${blue}
face global ts_list_numbered ${cyan}
face global ts_list_unchecked ${green}
face global ts_label ${violet}
face global ts_url ${cyan}
face global ts_uri ${cyan}
face global ts_text default
face global ts_quote ${magenta}
face global ts_raw ${magenta}
face global ts_markup_strikethrough default+s
face global ts_namespace ${cyan}+b
face global ts_operator operator
face global ts_property ${violet}
face global ts_punctuation default
face global ts_special ${orange}
face global ts_spell ${red}
face global ts_string ${cyan}
face global ts_symbol ${cyan}
face global ts_tag ${violet}
face global ts_tag_error ${red}
face global ts_text default
face global ts_type ${violet}
face global ts_variable ${blue}
face global ts_warning ${yellow}
"
}

511
kak/kak-lsp.toml Normal file
View file

@ -0,0 +1,511 @@
file_watch_support = false
snippet_support = true
verbosity = 2
[server]
# exit session if no requests were received during given period in seconds
# set to 0 to disable
timeout = 1800 # seconds = 30 minutes
# This section overrides language IDs.
# By default, kakoune-lsp uses filetypes for the IDs.
# See https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocumentItem
[language_ids]
c = "c_cpp"
cpp = "c_cpp"
javascript = "javascriptreact"
typescript = "typescriptreact"
protobuf = "proto"
sh = "shellscript"
[language_server.bash-language-server]
filetypes = ["sh"]
roots = [".git", ".hg"]
command = "bash-language-server"
args = ["start"]
[language_server.clangd]
filetypes = ["c", "cpp"]
roots = ["compile_commands.json", ".clangd", ".git", ".hg"]
command = "clangd"
[language_server.clojure-lsp]
filetypes = ["clojure"]
roots = ["project.clj", ".git", ".hg"]
command = "clojure-lsp"
settings_section = "_"
[language_server.clojure-lsp.settings._]
# See https://clojure-lsp.io/settings/#all-settings
# source-paths-ignore-regex = ["resources.*", "target.*"]
[language_server.cmake-language-server]
filetypes = ["cmake"]
roots = ["CMakeLists.txt", ".git", ".hg"]
command = "cmake-language-server"
[language_server.crystalline]
filetypes = ["crystal"]
roots = ["shard.yml"]
command = "crystalline"
[language_server.css-language-server]
filetypes = ["css"]
roots = ["package.json", ".git", ".hg"]
command = "vscode-css-language-server"
args = ["--stdio"]
# [language_server.deno-lsp]
# filetypes = ["javascript", "typescript"]
# roots = ["package.json", "tsconfig.json", ".git", ".hg"]
# command = "deno"
# args = ["lsp"]
# settings_section = "deno"
# [language_server.deno-lsp.settings.deno]
# enable = true
# lint = true
[language_server.less-language-server]
filetypes = ["less"]
roots = ["package.json", ".git", ".hg"]
command = "vscode-css-language-server"
args = ["--stdio"]
# See https://scalameta.org/metals/docs/integrations/new-editor
[language_server.metals]
filetypes = ["scala"]
roots = ["build.sbt", ".scala-build"]
command = "metals"
args = ["-Dmetals.extensions=false"]
settings_section = "metals"
[language_server.metals.settings.metals]
icons = "unicode"
isHttpEnabled = true
statusBarProvider = "show-message"
compilerOptions = { overrideDefFormat = "unicode" }
inlayHints.hintsInPatternMatch.enable = true
inlayHints.implicitArguments.enable = true
inlayHints.implicitConversions.enable = true
inlayHints.inferredTypes.enable = true
inlayHints.typeParameters.enable = true
[language_server.nil]
filetypes = ["nix"]
command = "nil"
roots = ["flake.nix", "shell.nix", ".git", ".hg"]
[language_server.scss-language-server]
filetypes = ["scss"]
roots = ["package.json", ".git", ".hg"]
command = "vscode-css-language-server"
args = ["--stdio"]
[language_server.dls]
filetypes = ["d", "di"]
roots = [".git", "dub.sdl", "dub.json"]
command = "dls"
[language_server.dart-lsp]
# start shell to find path to dart analysis server source
filetypes = ["dart"]
roots = ["pubspec.yaml", ".git", ".hg"]
command = "sh"
args = ["-c", "dart $(dirname $(command -v dart))/snapshots/analysis_server.dart.snapshot --lsp"]
[language_server.jdtls]
filetypes = ["java"]
roots = ["mvnw", "gradlew", ".git", ".hg"]
command = "jdtls"
[language_server.jdtls.settings]
# See https://github.dev/eclipse/eclipse.jdt.ls
# "java.format.insertSpaces" = true
[language_server.elixir-ls]
filetypes = ["elixir"]
roots = ["mix.exs"]
command = "elixir-ls"
settings_section = "elixirLS"
[language_server.elixir-ls.settings.elixirLS]
# See https://github.com/elixir-lsp/elixir-ls/blob/master/apps/language_server/lib/language_server/server.ex
# dialyzerEnable = true
[language_server.elm-language-server]
filetypes = ["elm"]
roots = ["elm.json"]
command = "elm-language-server"
args = ["--stdio"]
settings_section = "elmLS"
[language_server.elm-language-server.settings.elmLS]
# See https://github.com/elm-tooling/elm-language-server#server-settings
runtime = "node"
elmPath = "elm"
elmFormatPath = "elm-format"
elmTestPath = "elm-test"
[language_server.elvish]
filetypes = ["elvish"]
roots = [".git", ".hg"]
command = "elvish"
args = ["-lsp"]
[language_server.erlang-ls]
filetypes = ["erlang"]
# See https://github.com/erlang-ls/erlang_ls.git for more information and
# how to configure. This default config should work in most cases though.
roots = ["rebar.config", "erlang.mk", ".git", ".hg"]
command = "erlang_ls"
[language_server.gopls]
filetypes = ["go"]
roots = ["Gopkg.toml", "go.mod", ".git", ".hg"]
command = "gopls"
[language_server.gopls.settings.gopls]
# See https://github.com/golang/tools/blob/master/gopls/doc/settings.md
# "build.buildFlags" = []
hints.assignVariableTypes = true
hints.compositeLiteralFields = true
hints.compositeLiteralTypes = true
hints.constantValues = true
hints.functionTypeParameters = true
hints.parameterNames = true
hints.rangeVariableTypes = true
"ui.completion.usePlaceholders" = true
[language_server.haskell-language-server]
filetypes = ["haskell"]
roots = ["hie.yaml", "cabal.project", "Setup.hs", "stack.yaml", "*.cabal"]
command = "haskell-language-server-wrapper"
args = ["--lsp"]
settings_section = "_"
[language_server.haskell-language-server.settings._]
# See https://haskell-language-server.readthedocs.io/en/latest/configuration.html
# haskell.formattingProvider = "ormolu"
[language_server.html-language-server]
filetypes = ["html"]
roots = ["package.json"]
command = "vscode-html-language-server"
args = ["--stdio"]
settings_section = "_"
[language_server.html-language-server.settings._]
# quotePreference = "single"
# javascript.format.semicolons = "insert"
[language_server.intelephense]
filetypes = ["php"]
roots = [".htaccess", "composer.json"]
command = "intelephense"
args = ["--stdio"]
settings_section = "intelephense"
[language_server.intelephense.settings.intelephense]
storagePath = "/tmp/intelephense"
[language_server.json-language-server]
filetypes = ["json"]
roots = ["package.json"]
command = "vscode-json-language-server"
args = ["--stdio"]
# Requires Julia package "LanguageServer"
# Run: `julia --project=@kak-lsp -e 'import Pkg; Pkg.add("LanguageServer")'` to install it
# Configuration adapted from https://github.com/neovim/nvim-lspconfig/blob/bcebfac7429cd8234960197dca8de1767f3ef5d3/lua/lspconfig/julials.lua
[language_server.julia-language-server]
filetypes = ["julia"]
roots = ["Project.toml", ".git", ".hg"]
command = "julia"
args = [
"--startup-file=no",
"--history-file=no",
"-e",
"""
ls_install_path = joinpath(get(DEPOT_PATH, 1, joinpath(homedir(), ".julia")), "environments", "kak-lsp");
pushfirst!(LOAD_PATH, ls_install_path);
using LanguageServer;
popfirst!(LOAD_PATH);
depot_path = get(ENV, "JULIA_DEPOT_PATH", "");
buffer_file = ENV["kak_buffile"];
project_path = let
dirname(something(
# 1. Check if there is an explicitly set project
Base.load_path_expand((
p = get(ENV, "JULIA_PROJECT", nothing);
p === nothing ? nothing : isempty(p) ? nothing : p
)),
# 2. Check for Project.toml in current working directory
Base.current_project(pwd()),
# 3. Check for Project.toml from buffer's full file path excluding the file name
Base.current_project(dirname(buffer_file)),
# 4. Fallback to global environment
Base.active_project()
))
end
server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path);
server.runlinter = true;
run(server);
""",
]
[language_server.julia-language-server.settings]
# See https://github.com/julia-vscode/LanguageServer.jl/blob/master/src/requests/workspace.jl
# Format options. See https://github.com/julia-vscode/DocumentFormat.jl/blob/master/src/DocumentFormat.jl
# "julia.format.indent" = 4
# Lint options. See https://github.com/julia-vscode/StaticLint.jl/blob/master/src/linting/checks.jl
# "julia.lint.call" = true
# Other options, see https://github.com/julia-vscode/LanguageServer.jl/blob/master/src/requests/workspace.jl
# "julia.lint.run" = "true"
[language_server.lua-language-server]
filetypes = ["lua"]
roots = [".git", ".hg"]
command = "lua-language-server"
settings_section = "Lua"
[language_server.lua-language-server.settings.Lua]
# See https://github.com/sumneko/vscode-lua/blob/master/setting/schema.json
# diagnostics.enable = true
[language_server.markdown]
filetypes = ["markdown"]
roots = [".marksman.toml"]
command = "marksman"
args = ["server"]
# [language_server.zk]
# filetypes = ["markdown"]
# roots = [".zk"]
# command = "zk"
# args = ["lsp"]
[language_server.nimlsp]
filetypes = ["nim"]
roots = ["*.nimble", ".git", ".hg"]
command = "nimlsp"
[language_server.ocamllsp]
filetypes = ["ocaml"]
# Often useful to simply do a `touch dune-workspace` in your project root folder if you have problems with root detection
roots = ["dune-workspace", "dune-project", "Makefile", "opam", "*.opam", "esy.json", ".git", ".hg", "dune"]
command = "ocamllsp"
[language_server.pls]
filetypes = ["protobuf"]
roots = [".git", ".hg"]
command = "pls" # https://github.com/lasorda/protobuf-language-server
[language_server.purescript-language-server]
filetypes = ["purescript"]
roots = ["spago.dhall", "spago.yaml", "package.json", ".git", ".hg"]
command = "purescript-language-server"
args = ["--stdio"]
[language_server.pylsp]
filetypes = ["python"]
roots = ["requirements.txt", "setup.py", ".git", ".hg"]
command = "pylsp"
settings_section = "_"
[language_server.pylsp.settings._]
# See https://github.com/python-lsp/python-lsp-server#configuration
# pylsp.configurationSources = ["flake8"]
pylsp.plugins.jedi_completion.include_params = true
# [language_server.pyright]
# filetypes = ["python"]
# roots = ["requirements.txt", "setup.py", "pyrightconfig.json", ".git", ".hg"]
# command = "pyright-langserver"
# args = ["--stdio"]
# [language_server.ruff]
# filetypes = ["python"]
# roots = ["requirements.txt", "setup.py", ".git", ".hg"]
# command = "ruff-lsp"
# settings_section = "_"
# [language_server.ruff.settings._.globalSettings]
# organizeImports = true
# fixAll = true
[language_server.r-language-server]
filetypes = ["r"]
roots = ["DESCRIPTION", ".git", ".hg"]
command = "R"
args = ["--slave", "-e", "languageserver::run()"]
[language_server.racket-language-server]
filetypes = ["racket"]
roots = ["info.rkt"]
command = "racket"
args = ["-l", "racket-langserver"]
[language_server.reason-ocamllsp]
filetypes = ["reason"]
roots = ["package.json", "Makefile", ".git", ".hg"]
command = "ocamllsp"
# [language_server.rls]
# filetypes = ["rust"]
# roots = ["Cargo.toml"]
# command = "sh"
# args = [
# "-c",
# """
# if path=$(rustup which rls 2>/dev/null); then
# exec "$path"
# else
# exec rls
# fi
# """,
# ]
# settings_section = "rust"
# [language_server.rls.settings.rust]
# # See https://github.com/rust-lang/rls#configuration
# # features = []
[language_server.rust-analyzer]
filetypes = ["rust"]
roots = ["Cargo.toml"]
command = "sh"
args = [
"-c",
"""
if path=$(rustup which rust-analyzer 2>/dev/null); then
exec "$path"
else
exec rust-analyzer
fi
""",
]
[language_server.rust-analyzer.settings.rust-analyzer]
# See https://rust-analyzer.github.io/manual.html#configuration
# cargo.features = []
check.command = "clippy"
[language_server.solargraph]
filetypes = ["ruby"]
roots = ["Gemfile"]
command = "solargraph"
args = ["stdio"]
settings_section = "_"
[language_server.solargraph.settings._]
# See https://github.com/castwide/solargraph/blob/master/lib/solargraph/language_server/host.rb
# diagnostics = false
[language_server.svelte-language-server]
filetypes = ["svelte"]
roots = ["package.json", "tsconfig.json", "jsconfig.json", ".git", ".hg"]
command = "svelteserver"
args = ["--stdio"]
[language_server.taplo]
filetypes = ["toml"]
roots = [".git", ".hg"]
command = "taplo"
args = ["lsp", "stdio"]
[language_server.terraform-ls]
filetypes = ["terraform"]
roots = ["*.tf"]
command = "terraform-ls"
args = ["serve"]
[language_server.terraform-ls.settings.terraform-ls]
# See https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md
# rootModulePaths = []
[language_server.texlab]
filetypes = ["latex"]
roots = [".git", ".hg"]
command = "texlab"
[language_server.texlab.settings.texlab]
# See https://github.com/latex-lsp/texlab/wiki/Configuration
#
# Preview configuration for zathura with SyncTeX search.
# For other PDF viewers see https://github.com/latex-lsp/texlab/wiki/Previewing
forwardSearch.executable = "zathura"
forwardSearch.args = [
"%p",
"--synctex-forward", # Support texlab-forward-search
"%l:1:%f",
"--synctex-editor-command", # Inverse search: use Control+Left-Mouse-Button to jump to source.
"""
sh -c '
echo "
evaluate-commands -client %%opt{texlab_client} %%{
evaluate-commands -try-client %%opt{jumpclient} %%{
edit -- %%{input} %%{line}
}
}
" | kak -p $kak_session
'
""",
]
[language_server.typescript-language-server]
filetypes = ["javascript", "typescript"]
roots = ["package.json", "tsconfig.json", "jsconfig.json", ".git", ".hg"]
command = "typescript-language-server"
args = ["--stdio"]
settings_section = "_"
[language_server.typescript-language-server.settings._]
# quotePreference = "double"
# typescript.format.semicolons = "insert"
# [language_server.biome]
# filetypes = ["typescript", "javascript"]
# roots = ["biome.json", "package.json", "tsconfig.json", "jsconfig.json", ".git", ".hg"]
# command = "biome"
# args = ["lsp-proxy"]
# [language_server.eslint]
# filetypes = ["javascript", "typescript"]
# roots = [".eslintrc", ".eslintrc.json"]
# command = "eslint-language-server"
# args = ["--stdio"]
# workaround_eslint = true
# [language_server.eslint.settings]
# codeActionsOnSave = { mode = "all", "source.fixAll.eslint" = true }
# format = { enable = true }
# quiet = false
# rulesCustomizations = []
# run = "onType"
# validate = "on"
# experimental = {}
# problems = { shortenToSingleLine = false }
# codeAction.disableRuleComment = { enable = true, location = "separateLine" }
# codeAction.showDocumentation = { enable = false }
[language_server.yaml-language-server]
filetypes = ["yaml"]
roots = [".git", ".hg"]
command = "yaml-language-server"
args = ["--stdio"]
settings_section = "yaml"
[language_server.yaml-language-server.settings.yaml]
# See https://github.com/redhat-developer/yaml-language-server#language-server-settings
# Defaults are at https://github.com/redhat-developer/yaml-language-server/blob/master/src/yamlSettings.ts
# format.enable = true
[language_server.zls]
filetypes = ["zig"]
roots = ["build.zig"]
command = "zls"
# Semantic tokens support
# See https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens
# for the default list of tokens and modifiers.
# However, many language servers implement their own values.
# Make sure to check the output of `lsp-capabilities` and each server's documentation and source code as well.
# Examples:
# - TypeScript: https://github.com/microsoft/vscode-languageserver-node/blob/main/client/src/common/semanticTokens.ts
# - Rust Analyzer: https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ide/src/syntax_highlighting.rs
[semantic_tokens]
faces = [
{face="documentation", token="comment", modifiers=["documentation"]},
{face="comment", token="comment"},
{face="function", token="function"},
{face="keyword", token="keyword"},
{face="module", token="namespace"},
{face="operator", token="operator"},
{face="string", token="string"},
{face="type", token="type"},
{face="default+d", token="variable", modifiers=["readonly"]},
{face="default+d", token="variable", modifiers=["constant"]},
{face="variable", token="variable"},
]

1482
kak/kak-tree-sitter.toml Normal file

File diff suppressed because it is too large Load diff

2
kak/kakrc Normal file
View file

@ -0,0 +1,2 @@
NOTE: This is not the kakrc file! That's generated by Nix.
The subfolders here are what's included.

71
kak/sudo-write.kak Normal file
View file

@ -0,0 +1,71 @@
# save the current buffer to its file as root using `sudo`
# (optionally pass the user password to sudo if not cached)
define-command -hidden sudo-write-cached-password %{
# easy case: the password was already cached, so we don't need any tricky handling
eval -save-regs f %{
reg f %sh{ mktemp -t XXXXXX }
write! %reg{f}
eval %sh{
sudo -n -- dd if="$kak_main_reg_f" of="$kak_buffile" >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "edit!"
else
echo 'fail "Unknown failure"'
fi
rm -f "$kak_main_reg_f"
}
}
}
define-command -hidden sudo-write-prompt-password %{
prompt -password 'Password:' %{
eval -save-regs r %{
eval -draft -save-regs 'tf|"' %{
reg t %val{buffile}
reg f %sh{ mktemp -t XXXXXX }
write! %reg{f}
# write the password in a buffer in order to pass it through STDIN to sudo
# somewhat dangerous, but better than passing the password
# through the shell scope's environment or interpolating it inside the shell string
# 'exec |' is pretty much the only way to pass data over STDIN
edit -scratch '*sudo-password-tmp*'
reg '"' "%val{text}"
exec <a-P>
reg | %{
sudo -S -- dd if="$kak_main_reg_f" of="$kak_main_reg_t" > /dev/null 2>&1
if [ $? -eq 0 ]; then
printf 'edit!'
else
printf 'fail "Incorrect password?"'
fi
rm -f "$kak_main_reg_f"
}
exec '|<ret>'
exec -save-regs '' '%"ry'
delete-buffer! '*sudo-password-tmp*'
}
eval %reg{r}
}
}
}
define-command sudo-write -docstring "Write the content of the buffer using sudo" %{
eval %sh{
# tricky posix-way of getting the first character of a variable
# no subprocess!
if [ "${kak_buffile%"${kak_buffile#?}"}" != "/" ]; then
# not entirely foolproof as a scratch buffer may start with '/', but good enough
printf 'fail "Not a file"'
exit
fi
# check if the password is cached
if sudo -n true > /dev/null 2>&1; then
printf sudo-write-cached-password
else
printf sudo-write-prompt-password
fi
}
}

70
kak/wezterm-tab.kak Normal file
View file

@ -0,0 +1,70 @@
# https://wezfurlong.org/wezterm/index.html
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
provide-module wezterm-tab %{
# ensure that we're running under screen
evaluate-commands %sh{
[ -z "${kak_opt_windowing_modules}" ] || [ -n "$WEZTERM_UNIX_SOCKET" ] || echo 'fail wezterm not detected'
}
define-command wezterm-tab-terminal-impl -hidden -params 2.. %{
nop %sh{
wezterm cli "$@"
}
}
define-command wezterm-tab-terminal-vertical -params 1.. -docstring '
wezterm-terminal-vertical <program> [<arguments>]: create a new terminal as a wezterm pane
The current pane is split into two, top and bottom
The program passed as argument will be executed in the new terminal' \
%{
wezterm-tab-terminal-impl split-pane --cwd "%val{client_env_PWD}" --bottom --pane-id "%val{client_env_WEZTERM_PANE}" -- %arg{@}
}
complete-command wezterm-tab-terminal-vertical shell
define-command wezterm-tab-terminal-horizontal -params 1.. -docstring '
wezterm-terminal-horizontal <program> [<arguments>]: create a new terminal as a wezterm pane
The current pane is split into two, left and right
The program passed as argument will be executed in the new terminal' \
%{
wezterm-tab-terminal-impl split-pane --cwd "%val{client_env_PWD}" --right --pane-id "%val{client_env_WEZTERM_PANE}" -- %arg{@}
}
complete-command wezterm-tab-terminal-horizontal shell
define-command wezterm-tab-terminal-tab -params 1.. -docstring '
wezterm-terminal-tab <program> [<arguments>]: create a new terminal as a wezterm tab
The program passed as argument will be executed in the new terminal' \
%{
wezterm-tab-terminal-impl spawn --cwd "%val{client_env_PWD}" --pane-id "%val{client_env_WEZTERM_PANE}" -- %arg{@}
}
complete-command wezterm-tab-terminal-tab shell
define-command wezterm-tab-terminal-window -params 1.. -docstring '
wezterm-terminal-window <program> [<arguments>]: create a new terminal as a wezterm window
The program passed as argument will be executed in the new terminal' \
%{
wezterm-tab-terminal-impl spawn --cwd "%val{client_env_PWD}" --pane-id "%val{client_env_WEZTERM_PANE}" -- %arg{@}
}
complete-command wezterm-tab-terminal-window shell
define-command wezterm-tab-focus -params ..1 -docstring '
wezterm-focus [<client>]: focus the given client
If no client is passed then the current one is used' \
%{
evaluate-commands %sh{
if [ $# -eq 1 ]; then
printf %s\\n "
evaluate-commands -client '$1' focus
"
elif [ -n "${kak_client_env_WEZTERM_PANE}" ]; then
wezterm cli activate-pane --pane-id "${kak_client_env_WEZTERM_PANE}" > /dev/null 2>&1
fi
}
}
complete-command -menu wezterm-tab-focus client
alias global focus wezterm-tab-focus
}

View file

@ -0,0 +1,67 @@
{
"title": "Use mouse buttons to move workspaces",
"rules": [
{
"description": "Switch workspaces using trackball buttons (1+3), (2+4), and 4",
"manipulators": [
{
"type": "basic",
"from": {
"simultaneous": [
{ "pointing_button": "button3" },
{ "pointing_button": "button1" }
],
"simultaneous_options": {
"detect_key_down_uninterruptedly": true,
"key_down_order": "insensitive",
"key_up_order": "insensitive",
"key_up_when": "any"
}
},
"to": {
"key_code": "left_arrow",
"modifiers": [ "control" ]
}
},
{
"type": "basic",
"from": {
"simultaneous": [
{ "pointing_button": "button4" },
{ "pointing_button": "button2" }
],
"simultaneous_options": {
"key_down_order": "insensitive",
"key_up_order": "insensitive",
"key_up_when": "any"
}
},
"to": {
"key_code": "right_arrow",
"modifiers": [ "control" ]
}
},
{
"type": "basic",
"from": {
"pointing_button": "button3"
},
"to": {
"key_code": "mission_control"
}
},
{
"type": "basic",
"from": {
"pointing_button": "button4"
},
"to": {
"key_code": "mission_control"
}
}
]
}
]
}

15
khal/config Normal file
View file

@ -0,0 +1,15 @@
[calendars]
[[metrology_calendar_local]]
path = ~/.local/share/calendars/*
type = discover
[locale]
timeformat = %H:%M
dateformat = %Y-%m-%d
longdateformat = %Y-%m-%d
datetimeformat = %Y-%m-%d %H:%M
longdatetimeformat = %Y-%m-%d %H:%M
[default]
default_calendar = kate@metrolo.gy

BIN
kinesis/active/do_not_edit.txt Executable file

Binary file not shown.

0
kinesis/active/dvorak.txt Executable file
View file

7
kinesis/active/qwerty.txt Executable file
View file

@ -0,0 +1,7 @@
[pause]>[play]
[caps]>[delete]
[lctrl]>[lwin]
[rwin]>[rctrl]
[rctrl]>[lwin]
[delete]>[escape]
{intl-\}>{speed9}{-lshift}{`}{+lshift}

10
kinesis/active/state.txt Executable file
View file

@ -0,0 +1,10 @@
startup_file=qwerty.txt
key_click_tone=ON
toggle_tone=ON
macro_disable=OFF
macro_speed=9
status_play_speed=3
power_user=true
program_key_lock=OFF
v_drive_open_on_startup=ON

3
kinesis/active/version.txt Executable file
View file

@ -0,0 +1,3 @@
Model name: Advantage2 Keyboard
Firmware version: 1.0.521.us (4MB), 06/25/2020
Bootloader version: 1.0.1

Binary file not shown.

Binary file not shown.

Binary file not shown.

3
looking-glass/client.ini Normal file
View file

@ -0,0 +1,3 @@
[input]
escapeKey=KEY_F12
captureOnFocus=yes

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>13E28</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>USB Prober</string>
<key>CFBundleGetInfoString</key>
<string>666.4.0, Copyright © 2002-2014 Apple Inc. All rights reserved.</string>
<key>CFBundleIconFile</key>
<string>USBProberIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.apple.USBProber</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>USB Prober</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>666.4.0</string>
<key>CFBundleSignature</key>
<string>USBP</string>
<key>CFBundleVersion</key>
<string>666.4.0</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>5A3005</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>13E28</string>
<key>DTSDKName</key>
<string></string>
<key>DTXcode</key>
<string>0502</string>
<key>DTXcodeBuild</key>
<string>5A3005</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

Binary file not shown.

View file

@ -0,0 +1 @@
APPLUSBP

Binary file not shown.

View file

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>13E28</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>KLog</string>
<key>CFBundleGetInfoString</key>
<string>650.4.0, Copyright © 2000-2012 Apple Inc. All rights reserved.</string>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.KLog</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Extension to log USB events</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>650.4.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>650.4.0</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>5A3005</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>13E28</string>
<key>DTSDKName</key>
<string></string>
<key>DTXcode</key>
<string>0502</string>
<key>DTXcodeBuild</key>
<string>5A3005</string>
<key>IOKitPersonalities</key>
<dict>
<key>KLog</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.KLog</string>
<key>IOClass</key>
<string>com_apple_iokit_KLog</string>
<key>IOMatchCategory</key>
<string>com_apple_iokit_KLog</string>
<key>IOProviderClass</key>
<string>IOResources</string>
<key>IOResourceMatch</key>
<string>IOKit</string>
</dict>
</dict>
<key>OSBundleCompatibleVersion</key>
<string>1.0</string>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOUSBFamily</key>
<string>3.0.0</string>
<key>com.apple.kpi.bsd</key>
<string>9.0.0</string>
<key>com.apple.kpi.iokit</key>
<string>9.0.0</string>
<key>com.apple.kpi.libkern</key>
<string>9.0.0</string>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,4 @@
cd /System/Library/Extensions/
/usr/sbin/chown -R root:wheel KLog.kext
find KLog.kext -type d -exec /bin/chmod 0755 {} \;
find KLog.kext -type f -exec /bin/chmod 0644 {} \;

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more