├── .gitattributes ├── .gitignore ├── README.md ├── afx ├── apo │ ├── sink-Companion_2.txt │ ├── sink-Energy.txt │ ├── sink-Flat.txt │ ├── sink-Focal_Bathys.txt │ ├── sink-Focal_Clear.txt │ ├── sink-HD_560S.txt │ ├── sink-HE400i.txt │ ├── sink-Moondrop_Space_Travel.txt │ ├── sink-QC35.txt │ ├── sink-QC35_Wireless.txt │ ├── sink-Truthear_Hexa.txt │ └── source-AT2040.txt ├── apo_to_json.ts ├── devices │ ├── AT2040.json │ ├── Companion_2.json │ ├── Energy.json │ ├── Flat.json │ ├── Focal_Bathys.json │ ├── Focal_Clear.json │ ├── HD_560S.json │ ├── HE400i.json │ ├── Moondrop_Space_Travel.json │ ├── QC35.json │ ├── QC35_Wireless.json │ └── Truthear_Hexa.json ├── gen.ts ├── json_to_eqapo.ts ├── json_to_lsp.ts ├── json_to_lv2.ts ├── json_to_peq.ts ├── lsp │ ├── sink-Companion_2.cfg │ ├── sink-Energy.cfg │ ├── sink-Flat.cfg │ ├── sink-Focal_Bathys.cfg │ ├── sink-Focal_Clear.cfg │ ├── sink-HD_560S.cfg │ ├── sink-HE400i.cfg │ ├── sink-Moondrop_Space_Travel.cfg │ ├── sink-QC35.cfg │ ├── sink-QC35_Wireless.cfg │ ├── sink-Truthear_Hexa.cfg │ └── source-AT2040.cfg ├── lsp_to_json.ts ├── lv2 │ ├── sink-Companion_2.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-Companion_2.ttl │ ├── sink-Energy.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-Energy.ttl │ ├── sink-Flat.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-Flat.ttl │ ├── sink-Focal_Bathys.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-Focal_Bathys.ttl │ ├── sink-Focal_Clear.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-Focal_Clear.ttl │ ├── sink-HD_560S.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-HD_560S.ttl │ ├── sink-HE400i.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-HE400i.ttl │ ├── sink-Moondrop_Space_Travel.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-Moondrop_Space_Travel.ttl │ ├── sink-QC35.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-QC35.ttl │ ├── sink-QC35_Wireless.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-QC35_Wireless.ttl │ ├── sink-Truthear_Hexa.preset.lv2 │ │ ├── manifest.ttl │ │ └── sink-Truthear_Hexa.ttl │ └── source-AT2040.preset.lv2 │ │ ├── manifest.ttl │ │ └── source-AT2040.ttl └── peq │ ├── sink-Companion_2.json │ ├── sink-Energy.json │ ├── sink-Flat.json │ ├── sink-Focal_Bathys.json │ ├── sink-Focal_Clear.json │ ├── sink-HD_560S.json │ ├── sink-HE400i.json │ ├── sink-Moondrop_Space_Travel.json │ ├── sink-QC35.json │ ├── sink-QC35_Wireless.json │ ├── sink-Truthear_Hexa.json │ └── source-AT2040.json ├── awesome ├── rc.lua └── theme │ └── default │ ├── chart-line.png │ ├── circle-play.png │ ├── clock.png │ ├── cloud.png │ ├── floppy-disk.png │ ├── green.png │ ├── green_hover.png │ ├── headphones.png │ ├── layouts │ ├── floatingw.png │ ├── maxw.png │ └── tileleftw.png │ ├── nix.png │ ├── red.png │ ├── red_hover.png │ ├── submenu.png │ ├── theme.lua │ ├── volume-xmark.png │ ├── yellow.png │ └── yellow_hover.png ├── csgo ├── autoexec.cfg ├── crosshair.cfg ├── crosshair2.cfg ├── lsp.cfg ├── practice.cfg ├── viewmodel.cfg └── viewmodel2.cfg ├── img ├── busy.png ├── power.png └── vim.png ├── misc ├── mute.mp3 ├── npmrc ├── picom.conf ├── unmute.mp3 ├── user.js └── userChrome.css ├── nix ├── README.md ├── common │ ├── audio.nix │ ├── bluetooth.nix │ ├── bootloader.nix │ ├── env.nix │ ├── font.nix │ ├── general.nix │ ├── lecture.nix │ ├── nix-conf.nix │ ├── packages.nix │ ├── podman.nix │ ├── secrets.nix │ ├── steam.nix │ ├── stylix-root.nix │ ├── stylix.nix │ ├── thunar.nix │ └── x.nix ├── flake.lock ├── flake.nix ├── home │ ├── atuin.nix │ ├── desktop-files.nix │ ├── general.nix │ ├── ghostty.nix │ ├── git.nix │ ├── lazygit.nix │ ├── mangohud.nix │ ├── mime.nix │ ├── mpv │ │ ├── config.nix │ │ ├── script-all-audio.nix │ │ ├── script-append-url.nix │ │ └── script-cut-video.nix │ ├── starship.nix │ ├── thunar-uca.nix │ ├── tmux.nix │ ├── xresources.nix │ └── zathura.nix ├── hosts │ └── grace │ │ ├── configuration.nix │ │ ├── hardware-configuration.nix │ │ └── home.nix ├── secrets.nix ├── secrets │ ├── env.age │ ├── mpv-secrets.lua.age │ ├── redshift.conf.age │ └── ssh-config.age └── theme.nix ├── rofi ├── base.rasi ├── drun.rasi ├── level1.svg ├── level2.svg ├── level3.svg ├── level4.svg ├── level5.svg ├── links.rasi ├── liquidctlmenu ├── lock.svg ├── logout.svg ├── power.rasi ├── power.svg ├── powermenu ├── reboot.svg └── screenshot.rasi ├── scripts ├── auto-cool.sh ├── autostart.sh ├── bt-battery.sh ├── deploy.sh ├── gamemode.sh ├── horn.sh ├── liquidctl.sh ├── rofi.sh ├── screenshot.sh ├── shadowplay.sh ├── st-urlhandler.sh ├── wallpaper │ ├── wallpaper-ico.png │ └── wallpaper.sh ├── weather.sh ├── xcolor.sh └── xf86.sh ├── vim ├── en.utf-8.add ├── init.lua ├── lazy-lock.json ├── lua │ └── config │ │ ├── autocmd.lua │ │ ├── bindings.lua │ │ ├── iab.lua │ │ ├── lsp.lua │ │ ├── options.lua │ │ ├── plugins │ │ ├── base46.lua │ │ ├── blame.lua │ │ ├── blink-cmp.lua │ │ ├── comment.lua │ │ ├── fidget.lua │ │ ├── gitlinker.lua │ │ ├── gitsigns.lua │ │ ├── indent-blankline.lua │ │ ├── init.lua │ │ ├── lexima.lua │ │ ├── lspsaga.lua │ │ ├── lualine.lua │ │ ├── luasnip.lua │ │ ├── neo-tree.lua │ │ ├── none-ls.lua │ │ ├── nvim-colorizer.lua │ │ ├── nvim-lspconfig.lua │ │ ├── presence.lua │ │ ├── tabular.lua │ │ ├── telescope.lua │ │ ├── todo-comments.lua │ │ ├── treesitter.lua │ │ ├── trouble.lua │ │ ├── vim-dadbod-ui.lua │ │ ├── vim-repeat.lua │ │ ├── vim-surround.lua │ │ └── vim-tmux-navigator.lua │ │ ├── treesitter_langs.lua │ │ └── utils.lua ├── queries │ └── typescript │ │ └── injections.scm └── snippets │ ├── all.lua │ ├── c.lua │ ├── cmake.lua │ ├── cpp.lua │ ├── cucumber.lua │ ├── gitcommit.lua │ ├── go.lua │ ├── html.lua │ ├── java.lua │ ├── javascript.lua │ ├── lua.lua │ ├── rust.lua │ ├── sh.lua │ └── yaml.lua ├── ytdl ├── liked-videos ├── playlist └── single └── zsh ├── aliases.zsh ├── dir.zsh ├── dotenv.zsh ├── functions.zsh ├── git.zsh ├── zlogout └── zshrc /.gitattributes: -------------------------------------------------------------------------------- 1 | *.age -diff 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | vim/en.utf-8.add.spl 2 | nix/common/wall 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dotfiles 2 | 3 | ![Busy](https://i.imgur.com/L0u1OcX.png "Busy") 4 | ![Vim](https://i.imgur.com/ZlB6sym.png "Vim") 5 | ![Rofi](https://i.imgur.com/rnx5qoD.png "Rofi") 6 | 7 | ## Previous Iterations 8 | 9 | ### [4ab0cba](https://github.com/jayden-chan/dotfiles/tree/4ab0cba01ce99ff9266923cf49ddb76c4a9e2fe1) 10 | ![4ab0cba](https://i.imgur.com/zhaKRkK.png "4ab0cba") 11 | 12 | ### [dc69b2a](https://github.com/jayden-chan/dotfiles/tree/dc69b2af23633a9d3af6c99bfdeaf4353aec310a) 13 | ![dc69b2a](https://i.imgur.com/1hIRJVi.png "dc69b2a") 14 | 15 | ### [dab54f2](https://github.com/jayden-chan/dotfiles/tree/dab54f2bf518226d44020d16a69af66e6a36f892) 16 | ![dab54f2](https://i.imgur.com/1A3VSa8.png "dab54f2") 17 | 18 | ### [7f4ab02](https://github.com/jayden-chan/dotfiles/tree/7f4ab0257604a52b3f5befe73cf21a5f95a19f54) 19 | ![7f4ab02](https://i.imgur.com/n3yBxYE.png "7f4ab02") 20 | 21 | ### [69c01c0](https://github.com/jayden-chan/dotfiles/tree/69c01c0752bf744757939265c93c8d0a8b9eabe8) 22 | ![69c01c0](https://i.imgur.com/QG5vW10.png "69c01c0") 23 | 24 | ### [574ac3c](https://github.com/jayden-chan/dotfiles/tree/574ac3ce1e6dd643759785d4de8432b0bf7d9a4b) 25 | ![574ac3c](https://i.imgur.com/52tENAt.png "574ac3c") 26 | -------------------------------------------------------------------------------- /afx/apo/sink-Companion_2.txt: -------------------------------------------------------------------------------- 1 | Preamp: -3.13 dB 2 | Filter 1: ON LSC Fc 60.61 Hz Gain 0.07 dB Q 0.25 3 | Filter 2: ON LSC Fc 69.34 Hz Gain 4.99 dB Q 0.55 4 | Filter 3: ON PK Fc 124.776 Hz Gain -5.36 dB Q 3.22 5 | Filter 4: ON PK Fc 212.806 Hz Gain -4.82 dB Q 1.5 6 | Filter 5: ON PK Fc 707.436 Hz Gain 0.19 dB Q 0.28 7 | Filter 6: ON HSC Fc 3546.937 Hz Gain -2.99 dB Q 0 8 | -------------------------------------------------------------------------------- /afx/apo/sink-Energy.txt: -------------------------------------------------------------------------------- 1 | Preamp: -3.2 dB 2 | Filter 1: ON LSC Fc 91.362 Hz Gain -2.57 dB Q 0.75 3 | Filter 2: ON PK Fc 710.7 Hz Gain 3.57 dB Q 0 4 | Filter 3: ON HSC Fc 10255.173 Hz Gain 1.43 dB Q 0 5 | -------------------------------------------------------------------------------- /afx/apo/sink-Flat.txt: -------------------------------------------------------------------------------- 1 | Preamp: 0 dB 2 | Filter 1: ON PK Fc 10000 Hz Gain 0 dB Q 1 3 | -------------------------------------------------------------------------------- /afx/apo/sink-Focal_Bathys.txt: -------------------------------------------------------------------------------- 1 | Preamp: -5.6 dB 2 | Filter 1: ON LSC Fc 56.295 Hz Gain 1.64 dB Q 0.71 3 | Filter 2: ON PK Fc 430 Hz Gain -2 dB Q 1.2 4 | Filter 3: ON PK Fc 910 Hz Gain 7.5 dB Q 1.4 5 | Filter 4: ON PK Fc 1150 Hz Gain -4.6 dB Q 2 6 | Filter 5: ON PK Fc 2850 Hz Gain -1.5 dB Q 6 7 | Filter 6: ON PK Fc 3250 Hz Gain -1.5 dB Q 6 8 | Filter 7: ON PK Fc 4000 Hz Gain 4.5 dB Q 0.7 9 | Filter 8: ON PK Fc 4350 Hz Gain -1 dB Q 5 10 | Filter 9: ON PK Fc 5750 Hz Gain -1.5 dB Q 5 11 | Filter 10: ON HSC Fc 10000 Hz Gain 1.25 dB Q 0.71 12 | -------------------------------------------------------------------------------- /afx/apo/sink-Focal_Clear.txt: -------------------------------------------------------------------------------- 1 | Preamp: -6 dB 2 | Filter 1: ON LSC Fc 32 Hz Gain 3.21 dB Q 0.69 3 | Filter 2: ON LSC Fc 98.497 Hz Gain 1.39 dB Q 0.71 4 | Filter 3: ON PK Fc 570 Hz Gain 1.92 dB Q 0.8 5 | Filter 4: ON PK Fc 1350 Hz Gain -1.32 dB Q 1.7 6 | Filter 5: ON HSC Fc 1800 Hz Gain 4.75 dB Q 0.71 7 | Filter 6: ON PK Fc 3030 Hz Gain -2.9 dB Q 2.8 8 | Filter 7: ON PK Fc 3630 Hz Gain -2.2 dB Q 4.8 9 | Filter 8: ON PK Fc 5900 Hz Gain -5.3 dB Q 6 10 | Filter 9: ON PK Fc 7000 Hz Gain 2 dB Q 1 11 | Filter 10: ON HSC Fc 10000 Hz Gain -5 dB Q 0.71 12 | -------------------------------------------------------------------------------- /afx/apo/sink-HD_560S.txt: -------------------------------------------------------------------------------- 1 | Preamp: 0 dB 2 | Filter 1: ON LSC Fc 34.851 Hz Gain 5 dB Q 0.46 3 | Filter 2: ON PK Fc 73.913 Hz Gain 0.4 dB Q 1.4 4 | Filter 3: ON PK Fc 207.579 Hz Gain -0.62 dB Q 1.4 5 | Filter 4: ON PK Fc 608 Hz Gain 0.7 dB Q 0.89 6 | Filter 5: ON PK Fc 710.698 Hz Gain 1.39 dB Q 0 7 | Filter 6: ON PK Fc 1011 Hz Gain -0.8 dB Q 2.42 8 | Filter 7: ON PK Fc 1290 Hz Gain -1.3 dB Q 2.1 9 | Filter 8: ON PK Fc 1811 Hz Gain 1 dB Q 4.04 10 | Filter 9: ON PK Fc 2199 Hz Gain 1.4 dB Q 3.26 11 | Filter 10: ON PK Fc 5038 Hz Gain -5.12 dB Q 2.35 12 | Filter 11: ON PK Fc 6148.913 Hz Gain -1.65 dB Q 5.8 13 | Filter 12: ON PK Fc 9960 Hz Gain 4.08 dB Q 0.86 14 | Filter 13: ON LPQ Fc 14858.112 Hz Q 0.6 15 | -------------------------------------------------------------------------------- /afx/apo/sink-HE400i.txt: -------------------------------------------------------------------------------- 1 | Preamp: -8 dB 2 | Filter 1: ON PK Fc 25 Hz Gain 4.96 dB Q 1 3 | Filter 2: ON LSC Fc 105 Hz Gain 3.55 dB Q 0.71 4 | Filter 3: ON PK Fc 700 Hz Gain 1 dB Q 1 5 | Filter 4: ON PK Fc 1050 Hz Gain -1.8 dB Q 2 6 | Filter 5: ON PK Fc 1900 Hz Gain 5.7 dB Q 1.2 7 | Filter 6: ON PK Fc 2900 Hz Gain -2.8 dB Q 2 8 | Filter 7: ON PK Fc 6100 Hz Gain 3 dB Q 1.4 9 | Filter 8: ON PK Fc 6750 Hz Gain -4.7 dB Q 4.5 10 | Filter 9: ON PK Fc 8450 Hz Gain -2.9 dB Q 4 11 | -------------------------------------------------------------------------------- /afx/apo/sink-Moondrop_Space_Travel.txt: -------------------------------------------------------------------------------- 1 | Preamp: -3.99 dB 2 | Filter 1: ON PK Fc 104.8 Hz Gain -1.5 dB Q 0.46 3 | Filter 2: ON PK Fc 851.1 Hz Gain 0.8 dB Q 1.92 4 | Filter 3: ON PK Fc 1881 Hz Gain 2.2 dB Q 1.9 5 | Filter 4: ON PK Fc 2584.7 Hz Gain -0.8 dB Q 3.71 6 | Filter 5: ON PK Fc 2889.5 Hz Gain -1.8 dB Q 1.49 7 | Filter 6: ON PK Fc 3371.914 Hz Gain -2.74 dB Q 1.88 8 | Filter 7: ON PK Fc 4549.2 Hz Gain -1.3 dB Q 4.18 9 | Filter 8: ON PK Fc 5625.9 Hz Gain 4.5 dB Q 3.5 10 | Filter 9: ON PK Fc 7973.8 Hz Gain 2 dB Q 3.01 11 | Filter 10: ON HSC Fc 10000 Hz Gain -3.02 dB Q 0.7 12 | -------------------------------------------------------------------------------- /afx/apo/sink-QC35.txt: -------------------------------------------------------------------------------- 1 | Preamp: -1.9 dB 2 | Filter 1: ON PK Fc 44 Hz Gain -1.5 dB Q 0.68 3 | Filter 2: ON PK Fc 120 Hz Gain -1.3 dB Q 1.09 4 | Filter 3: ON PK Fc 510 Hz Gain 1.5 dB Q 1.42 5 | Filter 4: ON PK Fc 1237 Hz Gain 0.6 dB Q 2.02 6 | Filter 5: ON PK Fc 1256 Hz Gain -1.1 dB Q 0.68 7 | Filter 6: ON PK Fc 1557 Hz Gain 1.2 dB Q 2.19 8 | Filter 7: ON PK Fc 1575 Hz Gain 0.8 dB Q 2.67 9 | Filter 8: ON PK Fc 2796 Hz Gain -3.4 dB Q 4.04 10 | Filter 9: ON PK Fc 6178 Hz Gain -6.1 dB Q 4.39 11 | Filter 10: ON PK Fc 7282 Hz Gain 2.8 dB Q 1.28 12 | -------------------------------------------------------------------------------- /afx/apo/sink-QC35_Wireless.txt: -------------------------------------------------------------------------------- 1 | Preamp: -4.2 dB 2 | Filter 1: ON PK Fc 13 Hz Gain -6.2 dB Q 0.52 3 | Filter 2: ON PK Fc 102 Hz Gain -2 dB Q 0.73 4 | Filter 3: ON PK Fc 476 Hz Gain 1.2 dB Q 1.84 5 | Filter 4: ON PK Fc 957 Hz Gain -1.3 dB Q 3.93 6 | Filter 5: ON PK Fc 1639 Hz Gain 4.3 dB Q 2.5 7 | Filter 6: ON PK Fc 2737 Hz Gain -3.6 dB Q 3.5 8 | Filter 7: ON PK Fc 5379 Hz Gain 1.7 dB Q 3.9 9 | Filter 8: ON PK Fc 6166 Hz Gain -5.5 dB Q 3.98 10 | Filter 9: ON PK Fc 8135 Hz Gain 2.4 dB Q 3.13 11 | Filter 10: ON PK Fc 19633 Hz Gain -1.18 dB Q 0.38 12 | -------------------------------------------------------------------------------- /afx/apo/sink-Truthear_Hexa.txt: -------------------------------------------------------------------------------- 1 | Preamp: -3 dB 2 | Filter 1: ON LSC Fc 118.933 Hz Gain 1.98 dB Q 0.75 3 | Filter 2: ON PK Fc 8001.405 Hz Gain -2.15 dB Q 4 4 | -------------------------------------------------------------------------------- /afx/apo/source-AT2040.txt: -------------------------------------------------------------------------------- 1 | Preamp: 0 dB 2 | Filter 1: ON HPQ Fc 60 Hz Q 0.6 3 | Filter 2: ON PK Fc 103.227 Hz Gain -0.5 dB Q 0.28 4 | Filter 3: ON PK Fc 1035.169 Hz Gain -1.01 dB Q 4.1 5 | Filter 4: ON PK Fc 2905.615 Hz Gain -4.86 dB Q 3.77 6 | -------------------------------------------------------------------------------- /afx/apo_to_json.ts: -------------------------------------------------------------------------------- 1 | const filterRe = 2 | /^Filter (\d+): ON (\w+) Fc ((?:\d|\.|-)+) Hz Gain ((?:\d|\.|-)+) dB Q ((?:\d|\.|-)+)$/; 3 | const preampRe = /^Preamp: ((?:\d|\.|-)+) dB$/; 4 | 5 | function apoTypeToJsonType(apoType: string) { 6 | switch (apoType) { 7 | case "PK": 8 | return "peaking"; 9 | case "LP": 10 | case "LPQ": 11 | return "lowpass"; 12 | case "HP": 13 | case "HPQ": 14 | return "highpass"; 15 | case "LS": 16 | case "LSC": 17 | return "lowshelf"; 18 | case "HS": 19 | case "HSC": 20 | return "highshelf"; 21 | } 22 | } 23 | 24 | function apoModeToJsonMode(apoType: string) { 25 | switch (apoType) { 26 | case "LP": 27 | case "LPQ": 28 | case "HP": 29 | case "HPQ": 30 | case "LS": 31 | case "LSC": 32 | case "HS": 33 | case "HSC": 34 | return "APO_DR"; 35 | default: 36 | return "RLC_BT"; 37 | } 38 | } 39 | 40 | export function apoToJson(contents: string) { 41 | const lines = contents 42 | .split(/\r?\n/g) 43 | .map((l) => l.trim()) 44 | .filter((l) => l.length > 0); 45 | 46 | if (lines.length === 0) { 47 | throw new Error("no lines in input file"); 48 | } 49 | 50 | const [, preamp] = lines[0].match(preampRe) ?? [null, 0]; 51 | const bands = lines 52 | .slice(1) 53 | .map((l, i) => { 54 | const matchResults = l.match(filterRe) ?? []; 55 | const [didMatch, , filterType, freq, gain, q] = matchResults; 56 | 57 | if (!didMatch) { 58 | throw new Error(`Failed to parse line ${i + 2}: ${l}`); 59 | } 60 | 61 | return { 62 | type: apoTypeToJsonType(filterType), 63 | mode: apoModeToJsonMode(filterType), 64 | freq: Number(freq), 65 | Q: Number(q), 66 | gain: Number(gain), 67 | }; 68 | }) 69 | .sort((a, b) => { 70 | return a.freq - b.freq; 71 | }); 72 | 73 | return { 74 | preamp: Number(preamp), 75 | bands, 76 | }; 77 | } 78 | -------------------------------------------------------------------------------- /afx/devices/AT2040.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AT2040", 3 | "type": "source", 4 | "output": "MONO", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": 0, 10 | "zoom": -31.57, 11 | "bands": [ 12 | { 13 | "type": "highpass", 14 | "mode": "RLC_BT", 15 | "slope": 1, 16 | "freq": 60, 17 | "Q": 0.6, 18 | "gain": 0 19 | }, 20 | { 21 | "type": "peaking", 22 | "mode": "RLC_BT", 23 | "slope": 0, 24 | "freq": 103.227, 25 | "Q": 0.28, 26 | "gain": -0.5 27 | }, 28 | { 29 | "type": "peaking", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 1035.169, 33 | "Q": 4.1, 34 | "gain": -1.01 35 | }, 36 | { 37 | "type": "peaking", 38 | "mode": "RLC_BT", 39 | "slope": 0, 40 | "freq": 2905.615, 41 | "Q": 3.77, 42 | "gain": -4.86 43 | } 44 | ] 45 | } 46 | } 47 | ] 48 | } 49 | -------------------------------------------------------------------------------- /afx/devices/Companion_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Companion 2", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -3.13, 10 | "zoom": -34.37, 11 | "bands": [ 12 | { 13 | "type": "lowshelf", 14 | "mode": "RLC_BT", 15 | "slope": 0, 16 | "freq": 60.61, 17 | "Q": 0.25, 18 | "gain": 0.07 19 | }, 20 | { 21 | "type": "lowshelf", 22 | "mode": "APO_DR", 23 | "slope": 0, 24 | "freq": 69.34, 25 | "Q": 0.55, 26 | "gain": 4.99 27 | }, 28 | { 29 | "type": "peaking", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 124.776, 33 | "Q": 3.22, 34 | "gain": -5.36 35 | }, 36 | { 37 | "type": "peaking", 38 | "mode": "RLC_BT", 39 | "slope": 0, 40 | "freq": 212.806, 41 | "Q": 1.5, 42 | "gain": -4.82 43 | }, 44 | { 45 | "type": "peaking", 46 | "mode": "RLC_BT", 47 | "slope": 0, 48 | "freq": 707.436, 49 | "Q": 0.28, 50 | "gain": 0.19 51 | }, 52 | { 53 | "type": "highshelf", 54 | "mode": "RLC_BT", 55 | "slope": 0, 56 | "freq": 3546.937, 57 | "Q": 0, 58 | "gain": -2.99 59 | } 60 | ] 61 | } 62 | } 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /afx/devices/Energy.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Energy", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -3.2, 10 | "zoom": -35.69, 11 | "bands": [ 12 | { 13 | "type": "lowshelf", 14 | "mode": "RLC_BT", 15 | "slope": 0, 16 | "freq": 91.362, 17 | "Q": 0.75, 18 | "gain": -2.57 19 | }, 20 | { 21 | "type": "peaking", 22 | "mode": "RLC_BT", 23 | "slope": 0, 24 | "freq": 710.7, 25 | "Q": 0, 26 | "gain": 3.57 27 | }, 28 | { 29 | "type": "highshelf", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 10255.173, 33 | "Q": 0, 34 | "gain": 1.43 35 | } 36 | ] 37 | } 38 | } 39 | ] 40 | } 41 | -------------------------------------------------------------------------------- /afx/devices/Flat.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Flat", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": 0, 10 | "zoom": 0, 11 | "bands": [ 12 | { 13 | "type": "peaking", 14 | "mode": "RLC_BT", 15 | "slope": 0, 16 | "freq": 10000, 17 | "Q": 1, 18 | "gain": 0 19 | } 20 | ] 21 | } 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /afx/devices/Focal_Bathys.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Focal Bathys", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -5.6, 10 | "zoom": -36, 11 | "bands": [ 12 | { 13 | "type": "lowshelf", 14 | "mode": "APO_DR", 15 | "slope": 0, 16 | "freq": 56.295, 17 | "Q": 0.71, 18 | "gain": 1.64 19 | }, 20 | { 21 | "type": "peaking", 22 | "mode": "RLC_BT", 23 | "slope": 0, 24 | "freq": 430, 25 | "Q": 1.2, 26 | "gain": -2 27 | }, 28 | { 29 | "type": "peaking", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 910, 33 | "Q": 1.4, 34 | "gain": 7.5 35 | }, 36 | { 37 | "type": "peaking", 38 | "mode": "RLC_BT", 39 | "slope": 0, 40 | "freq": 1150, 41 | "Q": 2, 42 | "gain": -4.6 43 | }, 44 | { 45 | "type": "peaking", 46 | "mode": "RLC_BT", 47 | "slope": 0, 48 | "freq": 2850, 49 | "Q": 6, 50 | "gain": -1.5 51 | }, 52 | { 53 | "type": "peaking", 54 | "mode": "RLC_BT", 55 | "slope": 0, 56 | "freq": 3250, 57 | "Q": 6, 58 | "gain": -1.5 59 | }, 60 | { 61 | "type": "peaking", 62 | "mode": "RLC_BT", 63 | "slope": 0, 64 | "freq": 4000, 65 | "Q": 0.7, 66 | "gain": 4.5 67 | }, 68 | { 69 | "type": "peaking", 70 | "mode": "RLC_BT", 71 | "slope": 0, 72 | "freq": 4350, 73 | "Q": 5, 74 | "gain": -1 75 | }, 76 | { 77 | "type": "peaking", 78 | "mode": "RLC_BT", 79 | "slope": 0, 80 | "freq": 5750, 81 | "Q": 5, 82 | "gain": -1.5 83 | }, 84 | { 85 | "type": "highshelf", 86 | "mode": "APO_DR", 87 | "slope": 0, 88 | "freq": 10000, 89 | "Q": 0.71, 90 | "gain": 1.25 91 | } 92 | ] 93 | } 94 | } 95 | ] 96 | } 97 | -------------------------------------------------------------------------------- /afx/devices/Focal_Clear.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Focal Clear", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -6, 10 | "zoom": -36, 11 | "bands": [ 12 | { 13 | "type": "lowshelf", 14 | "mode": "APO_DR", 15 | "slope": 0, 16 | "freq": 32, 17 | "Q": 0.69, 18 | "gain": 3.21 19 | }, 20 | { 21 | "type": "lowshelf", 22 | "mode": "APO_DR", 23 | "slope": 0, 24 | "freq": 98.497, 25 | "Q": 0.71, 26 | "gain": 1.39 27 | }, 28 | { 29 | "type": "peaking", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 570, 33 | "Q": 0.8, 34 | "gain": 1.92 35 | }, 36 | { 37 | "type": "peaking", 38 | "mode": "RLC_BT", 39 | "slope": 0, 40 | "freq": 1350, 41 | "Q": 1.7, 42 | "gain": -1.32 43 | }, 44 | { 45 | "type": "highshelf", 46 | "mode": "APO_DR", 47 | "slope": 0, 48 | "freq": 1800, 49 | "Q": 0.71, 50 | "gain": 4.75 51 | }, 52 | { 53 | "type": "peaking", 54 | "mode": "RLC_BT", 55 | "slope": 0, 56 | "freq": 3030, 57 | "Q": 2.8, 58 | "gain": -2.9 59 | }, 60 | { 61 | "type": "peaking", 62 | "mode": "RLC_BT", 63 | "slope": 0, 64 | "freq": 3630, 65 | "Q": 4.8, 66 | "gain": -2.2 67 | }, 68 | { 69 | "type": "peaking", 70 | "mode": "RLC_BT", 71 | "slope": 0, 72 | "freq": 5900, 73 | "Q": 6, 74 | "gain": -5.3 75 | }, 76 | { 77 | "type": "peaking", 78 | "mode": "RLC_BT", 79 | "slope": 0, 80 | "freq": 7000, 81 | "Q": 1, 82 | "gain": 2 83 | }, 84 | { 85 | "type": "highshelf", 86 | "mode": "APO_DR", 87 | "slope": 0, 88 | "freq": 10000, 89 | "Q": 0.71, 90 | "gain": -5 91 | } 92 | ] 93 | } 94 | } 95 | ] 96 | } 97 | -------------------------------------------------------------------------------- /afx/devices/HE400i.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HE400i", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -8, 10 | "zoom": -30.17, 11 | "bands": [ 12 | { 13 | "type": "peaking", 14 | "mode": "RLC_BT", 15 | "slope": 0, 16 | "freq": 25, 17 | "Q": 1, 18 | "gain": 4.96 19 | }, 20 | { 21 | "type": "lowshelf", 22 | "mode": "RLC_BT", 23 | "slope": 0, 24 | "freq": 105, 25 | "Q": 0.71, 26 | "gain": 3.55 27 | }, 28 | { 29 | "type": "peaking", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 700, 33 | "Q": 1, 34 | "gain": 1 35 | }, 36 | { 37 | "type": "peaking", 38 | "mode": "RLC_BT", 39 | "slope": 0, 40 | "freq": 1050, 41 | "Q": 2, 42 | "gain": -1.8 43 | }, 44 | { 45 | "type": "peaking", 46 | "mode": "RLC_BT", 47 | "slope": 0, 48 | "freq": 1900, 49 | "Q": 1.2, 50 | "gain": 5.7 51 | }, 52 | { 53 | "type": "peaking", 54 | "mode": "RLC_BT", 55 | "slope": 0, 56 | "freq": 2900, 57 | "Q": 2, 58 | "gain": -2.8 59 | }, 60 | { 61 | "type": "peaking", 62 | "mode": "RLC_BT", 63 | "slope": 0, 64 | "freq": 6100, 65 | "Q": 1.4, 66 | "gain": 3 67 | }, 68 | { 69 | "type": "peaking", 70 | "mode": "RLC_BT", 71 | "slope": 0, 72 | "freq": 6750, 73 | "Q": 4.5, 74 | "gain": -4.7 75 | }, 76 | { 77 | "type": "peaking", 78 | "mode": "RLC_BT", 79 | "slope": 0, 80 | "freq": 8450, 81 | "Q": 4, 82 | "gain": -2.9 83 | } 84 | ] 85 | } 86 | } 87 | ] 88 | } 89 | -------------------------------------------------------------------------------- /afx/devices/Moondrop_Space_Travel.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Moondrop Space Travel", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -3.99, 10 | "zoom": -36, 11 | "bands": [ 12 | { 13 | "type": "peaking", 14 | "mode": "RLC_BT", 15 | "slope": 0, 16 | "freq": 104.8, 17 | "Q": 0.46, 18 | "gain": -1.5 19 | }, 20 | { 21 | "type": "peaking", 22 | "mode": "RLC_BT", 23 | "slope": 0, 24 | "freq": 851.1, 25 | "Q": 1.92, 26 | "gain": 0.8 27 | }, 28 | { 29 | "type": "peaking", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 1881, 33 | "Q": 1.9, 34 | "gain": 2.2 35 | }, 36 | { 37 | "type": "peaking", 38 | "mode": "RLC_BT", 39 | "slope": 0, 40 | "freq": 2584.7, 41 | "Q": 3.71, 42 | "gain": -0.8 43 | }, 44 | { 45 | "type": "peaking", 46 | "mode": "RLC_BT", 47 | "slope": 0, 48 | "freq": 2889.5, 49 | "Q": 1.49, 50 | "gain": -1.8 51 | }, 52 | { 53 | "type": "peaking", 54 | "mode": "RLC_BT", 55 | "slope": 0, 56 | "freq": 3371.914, 57 | "Q": 1.88, 58 | "gain": -2.74 59 | }, 60 | { 61 | "type": "peaking", 62 | "mode": "RLC_BT", 63 | "slope": 0, 64 | "freq": 4549.2, 65 | "Q": 4.18, 66 | "gain": -1.3 67 | }, 68 | { 69 | "type": "peaking", 70 | "mode": "RLC_BT", 71 | "slope": 0, 72 | "freq": 5625.9, 73 | "Q": 3.5, 74 | "gain": 4.5 75 | }, 76 | { 77 | "type": "peaking", 78 | "mode": "RLC_BT", 79 | "slope": 0, 80 | "freq": 7973.8, 81 | "Q": 3.01, 82 | "gain": 2 83 | }, 84 | { 85 | "type": "highshelf", 86 | "mode": "APO_DR", 87 | "slope": 0, 88 | "freq": 10000, 89 | "Q": 0.7, 90 | "gain": -3.02 91 | } 92 | ] 93 | } 94 | } 95 | ] 96 | } 97 | -------------------------------------------------------------------------------- /afx/devices/QC35.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "QC35", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -1.9, 10 | "zoom": -36, 11 | "bands": [ 12 | { 13 | "type": "peaking", 14 | "mode": "RLC_BT", 15 | "slope": 0, 16 | "freq": 44, 17 | "Q": 0.68, 18 | "gain": -1.5 19 | }, 20 | { 21 | "type": "peaking", 22 | "mode": "RLC_BT", 23 | "slope": 0, 24 | "freq": 120, 25 | "Q": 1.09, 26 | "gain": -1.3 27 | }, 28 | { 29 | "type": "peaking", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 510, 33 | "Q": 1.42, 34 | "gain": 1.5 35 | }, 36 | { 37 | "type": "peaking", 38 | "mode": "RLC_BT", 39 | "slope": 0, 40 | "freq": 1237, 41 | "Q": 2.02, 42 | "gain": 0.6 43 | }, 44 | { 45 | "type": "peaking", 46 | "mode": "RLC_BT", 47 | "slope": 0, 48 | "freq": 1256, 49 | "Q": 0.68, 50 | "gain": -1.1 51 | }, 52 | { 53 | "type": "peaking", 54 | "mode": "RLC_BT", 55 | "slope": 0, 56 | "freq": 1557, 57 | "Q": 2.19, 58 | "gain": 1.2 59 | }, 60 | { 61 | "type": "peaking", 62 | "mode": "RLC_BT", 63 | "slope": 0, 64 | "freq": 1575, 65 | "Q": 2.67, 66 | "gain": 0.8 67 | }, 68 | { 69 | "type": "peaking", 70 | "mode": "RLC_BT", 71 | "slope": 0, 72 | "freq": 2796, 73 | "Q": 4.04, 74 | "gain": -3.4 75 | }, 76 | { 77 | "type": "peaking", 78 | "mode": "RLC_BT", 79 | "slope": 0, 80 | "freq": 6178, 81 | "Q": 4.39, 82 | "gain": -6.1 83 | }, 84 | { 85 | "type": "peaking", 86 | "mode": "RLC_BT", 87 | "slope": 0, 88 | "freq": 7282, 89 | "Q": 1.28, 90 | "gain": 2.8 91 | } 92 | ] 93 | } 94 | } 95 | ] 96 | } 97 | -------------------------------------------------------------------------------- /afx/devices/QC35_Wireless.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "QC35 Wireless", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -4.2, 10 | "zoom": -36, 11 | "bands": [ 12 | { 13 | "type": "peaking", 14 | "mode": "RLC_BT", 15 | "slope": 0, 16 | "freq": 13, 17 | "Q": 0.52, 18 | "gain": -6.2 19 | }, 20 | { 21 | "type": "peaking", 22 | "mode": "RLC_BT", 23 | "slope": 0, 24 | "freq": 102, 25 | "Q": 0.73, 26 | "gain": -2 27 | }, 28 | { 29 | "type": "peaking", 30 | "mode": "RLC_BT", 31 | "slope": 0, 32 | "freq": 476, 33 | "Q": 1.84, 34 | "gain": 1.2 35 | }, 36 | { 37 | "type": "peaking", 38 | "mode": "RLC_BT", 39 | "slope": 0, 40 | "freq": 957, 41 | "Q": 3.93, 42 | "gain": -1.3 43 | }, 44 | { 45 | "type": "peaking", 46 | "mode": "RLC_BT", 47 | "slope": 0, 48 | "freq": 1639, 49 | "Q": 2.5, 50 | "gain": 4.3 51 | }, 52 | { 53 | "type": "peaking", 54 | "mode": "RLC_BT", 55 | "slope": 0, 56 | "freq": 2737, 57 | "Q": 3.5, 58 | "gain": -3.6 59 | }, 60 | { 61 | "type": "peaking", 62 | "mode": "RLC_BT", 63 | "slope": 0, 64 | "freq": 5379, 65 | "Q": 3.9, 66 | "gain": 1.7 67 | }, 68 | { 69 | "type": "peaking", 70 | "mode": "RLC_BT", 71 | "slope": 0, 72 | "freq": 6166, 73 | "Q": 3.98, 74 | "gain": -5.5 75 | }, 76 | { 77 | "type": "peaking", 78 | "mode": "RLC_BT", 79 | "slope": 0, 80 | "freq": 8135, 81 | "Q": 3.13, 82 | "gain": 2.4 83 | }, 84 | { 85 | "type": "peaking", 86 | "mode": "RLC_BT", 87 | "slope": 0, 88 | "freq": 19633, 89 | "Q": 0.38, 90 | "gain": -1.18 91 | } 92 | ] 93 | } 94 | } 95 | ] 96 | } 97 | -------------------------------------------------------------------------------- /afx/devices/Truthear_Hexa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Truthear Hexa", 3 | "type": "sink", 4 | "output": "FL FR", 5 | "effects": [ 6 | { 7 | "type": "eq", 8 | "settings": { 9 | "preamp": -3, 10 | "zoom": -42, 11 | "bands": [ 12 | { 13 | "type": "lowshelf", 14 | "mode": "RLC_BT", 15 | "slope": 0, 16 | "freq": 118.933, 17 | "Q": 0.75, 18 | "gain": 1.98 19 | }, 20 | { 21 | "type": "peaking", 22 | "mode": "RLC_BT", 23 | "slope": 0, 24 | "freq": 8001.405, 25 | "Q": 4, 26 | "gain": -2.15 27 | } 28 | ] 29 | } 30 | } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /afx/json_to_eqapo.ts: -------------------------------------------------------------------------------- 1 | import { Band, Contents } from "./gen.ts"; 2 | 3 | function bandToAPOLine(band: Band) { 4 | switch (band.type) { 5 | case "highpass": 6 | return highpassToAPO(band); 7 | case "lowshelf": 8 | return lowshelfToAPO(band); 9 | case "highshelf": 10 | return highshelfToAPO(band); 11 | case "peaking": 12 | return peakingToAPO(band); 13 | case "lowpass": 14 | return lowpassToAPO(band); 15 | default: 16 | throw new Error( 17 | `Warning: unknown/unsupported filter type "${band.type}" detected` 18 | ); 19 | } 20 | } 21 | 22 | const highpassToAPO = (band: Band) => `ON HPQ Fc ${band.freq} Hz Q ${band.Q}`; 23 | const lowpassToAPO = (band: Band) => `ON LPQ Fc ${band.freq} Hz Q ${band.Q}`; 24 | 25 | const lowshelfToAPO = (band: Band) => 26 | `ON LSC Fc ${band.freq} Hz Gain ${band.gain} dB Q ${band.Q}`; 27 | 28 | const highshelfToAPO = (band: Band) => 29 | `ON HSC Fc ${band.freq} Hz Gain ${band.gain} dB Q ${band.Q}`; 30 | 31 | const peakingToAPO = (band: Band) => 32 | `ON PK Fc ${band.freq} Hz Gain ${band.gain} dB Q ${band.Q}`; 33 | 34 | export function genEqualizerAPO(contents: Contents) { 35 | const eq = contents.effects.find((e) => e.type === "eq"); 36 | if (eq === undefined) { 37 | throw new Error("couldn't find EQ effect in effects list"); 38 | } 39 | 40 | let output = ""; 41 | output += `Preamp: ${eq.settings.preamp} dB\n`; 42 | eq.settings.bands.forEach((band, i) => { 43 | output += `Filter ${i + 1}: ${bandToAPOLine(band)}\n`; 44 | }); 45 | 46 | return output; 47 | } 48 | -------------------------------------------------------------------------------- /afx/json_to_peq.ts: -------------------------------------------------------------------------------- 1 | import { Band, Contents } from "./gen.ts"; 2 | 3 | function bandToPeqType(band: Band): number { 4 | switch (band.type) { 5 | case "peaking": 6 | return 3; 7 | case "lowshelf": 8 | return 4; 9 | case "highshelf": 10 | return 5; 11 | case "lowpass": 12 | return 0; 13 | case "highpass": 14 | return 1; 15 | default: 16 | throw new Error( 17 | `Warning: unknown/unsupported filter type "${band.type}" detected` 18 | ); 19 | } 20 | } 21 | 22 | export function genPeq(contents: Contents): string { 23 | const eq = contents.effects.find((e) => e.type === "eq"); 24 | if (!eq) { 25 | throw new Error(`Contents "${contents.name}" can't be converted to peq`); 26 | } 27 | 28 | const ret = { 29 | name: contents.name, 30 | preamp: eq.settings.preamp, 31 | parametric: true, 32 | bands: [ 33 | // Bass "tone knob" 34 | { 35 | type: 0, 36 | channels: 0, 37 | frequency: 90, 38 | q: 0.0, 39 | gain: 0.0, 40 | color: 0, 41 | }, 42 | // Treble "tone knob" 43 | { 44 | type: 1, 45 | channels: 0, 46 | frequency: 10000, 47 | q: 0.0, 48 | gain: 0.0, 49 | color: 0, 50 | }, 51 | ...eq.settings.bands.map((b, i) => ({ 52 | type: bandToPeqType(b), 53 | channels: 0, 54 | frequency: Math.round(b.freq), 55 | q: b.Q, 56 | gain: b.gain, 57 | color: i % 2 === 0 ? -13421773 : -8947849, 58 | })), 59 | ], 60 | }; 61 | 62 | return JSON.stringify([ret], null, 2); 63 | } 64 | -------------------------------------------------------------------------------- /afx/lsp/sink-Energy.cfg: -------------------------------------------------------------------------------- 1 | bypass = false 2 | g_in = -3.2000 db 3 | g_out = 0.00 db 4 | mode = 0 5 | react = 0.10000 6 | shift = 0.00 db 7 | ife_l = true 8 | ofe_l = false 9 | ife_r = true 10 | ofe_r = false 11 | zoom = -35.690 db 12 | fsel = 0 13 | bal = 0.00000 14 | frqs = 0.00000 15 | ft_0 = 5 16 | fm_0 = 0 17 | s_0 = 0 18 | xs_0 = false 19 | xm_0 = false 20 | f_0 = 91.3620 21 | g_0 = -2.5700 db 22 | q_0 = 0.7500 23 | hue_0 = 0 24 | ft_1 = 1 25 | fm_1 = 0 26 | s_1 = 0 27 | xs_1 = false 28 | xm_1 = false 29 | f_1 = 710.7000 30 | g_1 = 3.5700 db 31 | q_1 = 0.0000 32 | hue_1 = 0.3333333333333333 33 | ft_2 = 3 34 | fm_2 = 0 35 | s_2 = 0 36 | xs_2 = false 37 | xm_2 = false 38 | f_2 = 10255.1730 39 | g_2 = 1.4300 db 40 | q_2 = 0.0000 41 | hue_2 = 0.6666666666666666 42 | ft_3 = 0 43 | fm_3 = 0 44 | s_3 = 0 45 | xs_3 = false 46 | xm_3 = false 47 | f_3 = 500.0000 48 | g_3 = 0.0000 db 49 | q_3 = 1.4100 50 | hue_3 = 0.1875 51 | ft_4 = 0 52 | fm_4 = 0 53 | s_4 = 0 54 | xs_4 = false 55 | xm_4 = false 56 | f_4 = 500.0000 57 | g_4 = 0.0000 db 58 | q_4 = 1.4100 59 | hue_4 = 0.25 60 | ft_5 = 0 61 | fm_5 = 0 62 | s_5 = 0 63 | xs_5 = false 64 | xm_5 = false 65 | f_5 = 500.0000 66 | g_5 = 0.0000 db 67 | q_5 = 1.4100 68 | hue_5 = 0.3125 69 | ft_6 = 0 70 | fm_6 = 0 71 | s_6 = 0 72 | xs_6 = false 73 | xm_6 = false 74 | f_6 = 500.0000 75 | g_6 = 0.0000 db 76 | q_6 = 1.4100 77 | hue_6 = 0.375 78 | ft_7 = 0 79 | fm_7 = 0 80 | s_7 = 0 81 | xs_7 = false 82 | xm_7 = false 83 | f_7 = 500.0000 84 | g_7 = 0.0000 db 85 | q_7 = 1.4100 86 | hue_7 = 0.4375 87 | ft_8 = 0 88 | fm_8 = 0 89 | s_8 = 0 90 | xs_8 = false 91 | xm_8 = false 92 | f_8 = 500.0000 93 | g_8 = 0.0000 db 94 | q_8 = 1.4100 95 | hue_8 = 0.5 96 | ft_9 = 0 97 | fm_9 = 0 98 | s_9 = 0 99 | xs_9 = false 100 | xm_9 = false 101 | f_9 = 500.0000 102 | g_9 = 0.0000 db 103 | q_9 = 1.4100 104 | hue_9 = 0.5625 105 | ft_10 = 0 106 | fm_10 = 0 107 | s_10 = 0 108 | xs_10 = false 109 | xm_10 = false 110 | f_10 = 500.0000 111 | g_10 = 0.0000 db 112 | q_10 = 1.4100 113 | hue_10 = 0.625 114 | ft_11 = 0 115 | fm_11 = 0 116 | s_11 = 0 117 | xs_11 = false 118 | xm_11 = false 119 | f_11 = 500.0000 120 | g_11 = 0.0000 db 121 | q_11 = 1.4100 122 | hue_11 = 0.6875 123 | ft_12 = 0 124 | fm_12 = 0 125 | s_12 = 0 126 | xs_12 = false 127 | xm_12 = false 128 | f_12 = 500.0000 129 | g_12 = 0.0000 db 130 | q_12 = 1.4100 131 | hue_12 = 0.75 132 | ft_13 = 0 133 | fm_13 = 0 134 | s_13 = 0 135 | xs_13 = false 136 | xm_13 = false 137 | f_13 = 500.0000 138 | g_13 = 0.0000 db 139 | q_13 = 1.4100 140 | hue_13 = 0.8125 141 | ft_14 = 0 142 | fm_14 = 0 143 | s_14 = 0 144 | xs_14 = false 145 | xm_14 = false 146 | f_14 = 500.0000 147 | g_14 = 0.0000 db 148 | q_14 = 1.4100 149 | hue_14 = 0.875 150 | ft_15 = 0 151 | fm_15 = 0 152 | s_15 = 0 153 | xs_15 = false 154 | xm_15 = false 155 | f_15 = 500.0000 156 | g_15 = 0.0000 db 157 | q_15 = 1.4100 158 | hue_15 = 0.9375 -------------------------------------------------------------------------------- /afx/lsp/sink-Flat.cfg: -------------------------------------------------------------------------------- 1 | bypass = false 2 | g_in = 0.0000 db 3 | g_out = 0.00 db 4 | mode = 0 5 | react = 0.10000 6 | shift = 0.00 db 7 | ife_l = true 8 | ofe_l = false 9 | ife_r = true 10 | ofe_r = false 11 | zoom = 0.000 db 12 | fsel = 0 13 | bal = 0.00000 14 | frqs = 0.00000 15 | ft_0 = 1 16 | fm_0 = 0 17 | s_0 = 0 18 | xs_0 = false 19 | xm_0 = false 20 | f_0 = 10000.0000 21 | g_0 = 0.0000 db 22 | q_0 = 1.0000 23 | hue_0 = 0 24 | ft_1 = 0 25 | fm_1 = 0 26 | s_1 = 0 27 | xs_1 = false 28 | xm_1 = false 29 | f_1 = 500.0000 30 | g_1 = 0.0000 db 31 | q_1 = 1.4100 32 | hue_1 = 0.0625 33 | ft_2 = 0 34 | fm_2 = 0 35 | s_2 = 0 36 | xs_2 = false 37 | xm_2 = false 38 | f_2 = 500.0000 39 | g_2 = 0.0000 db 40 | q_2 = 1.4100 41 | hue_2 = 0.125 42 | ft_3 = 0 43 | fm_3 = 0 44 | s_3 = 0 45 | xs_3 = false 46 | xm_3 = false 47 | f_3 = 500.0000 48 | g_3 = 0.0000 db 49 | q_3 = 1.4100 50 | hue_3 = 0.1875 51 | ft_4 = 0 52 | fm_4 = 0 53 | s_4 = 0 54 | xs_4 = false 55 | xm_4 = false 56 | f_4 = 500.0000 57 | g_4 = 0.0000 db 58 | q_4 = 1.4100 59 | hue_4 = 0.25 60 | ft_5 = 0 61 | fm_5 = 0 62 | s_5 = 0 63 | xs_5 = false 64 | xm_5 = false 65 | f_5 = 500.0000 66 | g_5 = 0.0000 db 67 | q_5 = 1.4100 68 | hue_5 = 0.3125 69 | ft_6 = 0 70 | fm_6 = 0 71 | s_6 = 0 72 | xs_6 = false 73 | xm_6 = false 74 | f_6 = 500.0000 75 | g_6 = 0.0000 db 76 | q_6 = 1.4100 77 | hue_6 = 0.375 78 | ft_7 = 0 79 | fm_7 = 0 80 | s_7 = 0 81 | xs_7 = false 82 | xm_7 = false 83 | f_7 = 500.0000 84 | g_7 = 0.0000 db 85 | q_7 = 1.4100 86 | hue_7 = 0.4375 87 | ft_8 = 0 88 | fm_8 = 0 89 | s_8 = 0 90 | xs_8 = false 91 | xm_8 = false 92 | f_8 = 500.0000 93 | g_8 = 0.0000 db 94 | q_8 = 1.4100 95 | hue_8 = 0.5 96 | ft_9 = 0 97 | fm_9 = 0 98 | s_9 = 0 99 | xs_9 = false 100 | xm_9 = false 101 | f_9 = 500.0000 102 | g_9 = 0.0000 db 103 | q_9 = 1.4100 104 | hue_9 = 0.5625 105 | ft_10 = 0 106 | fm_10 = 0 107 | s_10 = 0 108 | xs_10 = false 109 | xm_10 = false 110 | f_10 = 500.0000 111 | g_10 = 0.0000 db 112 | q_10 = 1.4100 113 | hue_10 = 0.625 114 | ft_11 = 0 115 | fm_11 = 0 116 | s_11 = 0 117 | xs_11 = false 118 | xm_11 = false 119 | f_11 = 500.0000 120 | g_11 = 0.0000 db 121 | q_11 = 1.4100 122 | hue_11 = 0.6875 123 | ft_12 = 0 124 | fm_12 = 0 125 | s_12 = 0 126 | xs_12 = false 127 | xm_12 = false 128 | f_12 = 500.0000 129 | g_12 = 0.0000 db 130 | q_12 = 1.4100 131 | hue_12 = 0.75 132 | ft_13 = 0 133 | fm_13 = 0 134 | s_13 = 0 135 | xs_13 = false 136 | xm_13 = false 137 | f_13 = 500.0000 138 | g_13 = 0.0000 db 139 | q_13 = 1.4100 140 | hue_13 = 0.8125 141 | ft_14 = 0 142 | fm_14 = 0 143 | s_14 = 0 144 | xs_14 = false 145 | xm_14 = false 146 | f_14 = 500.0000 147 | g_14 = 0.0000 db 148 | q_14 = 1.4100 149 | hue_14 = 0.875 150 | ft_15 = 0 151 | fm_15 = 0 152 | s_15 = 0 153 | xs_15 = false 154 | xm_15 = false 155 | f_15 = 500.0000 156 | g_15 = 0.0000 db 157 | q_15 = 1.4100 158 | hue_15 = 0.9375 -------------------------------------------------------------------------------- /afx/lsp/sink-Focal_Clear.cfg: -------------------------------------------------------------------------------- 1 | bypass = false 2 | g_in = -6.0000 db 3 | g_out = 0.00 db 4 | mode = 0 5 | react = 0.10000 6 | shift = 0.00 db 7 | ife_l = true 8 | ofe_l = false 9 | ife_r = true 10 | ofe_r = false 11 | zoom = -36.000 db 12 | fsel = 0 13 | bal = 0.00000 14 | frqs = 0.00000 15 | ft_0 = 5 16 | fm_0 = 6 17 | s_0 = 0 18 | xs_0 = false 19 | xm_0 = false 20 | f_0 = 32.0000 21 | g_0 = 3.2100 db 22 | q_0 = 0.6900 23 | hue_0 = 0 24 | ft_1 = 5 25 | fm_1 = 6 26 | s_1 = 0 27 | xs_1 = false 28 | xm_1 = false 29 | f_1 = 98.4970 30 | g_1 = 1.3900 db 31 | q_1 = 0.7100 32 | hue_1 = 0.1 33 | ft_2 = 1 34 | fm_2 = 0 35 | s_2 = 0 36 | xs_2 = false 37 | xm_2 = false 38 | f_2 = 570.0000 39 | g_2 = 1.9200 db 40 | q_2 = 0.8000 41 | hue_2 = 0.2 42 | ft_3 = 1 43 | fm_3 = 0 44 | s_3 = 0 45 | xs_3 = false 46 | xm_3 = false 47 | f_3 = 1350.0000 48 | g_3 = -1.3200 db 49 | q_3 = 1.7000 50 | hue_3 = 0.30000000000000004 51 | ft_4 = 3 52 | fm_4 = 6 53 | s_4 = 0 54 | xs_4 = false 55 | xm_4 = false 56 | f_4 = 1800.0000 57 | g_4 = 4.7500 db 58 | q_4 = 0.7100 59 | hue_4 = 0.4 60 | ft_5 = 1 61 | fm_5 = 0 62 | s_5 = 0 63 | xs_5 = false 64 | xm_5 = false 65 | f_5 = 3030.0000 66 | g_5 = -2.9000 db 67 | q_5 = 2.8000 68 | hue_5 = 0.5 69 | ft_6 = 1 70 | fm_6 = 0 71 | s_6 = 0 72 | xs_6 = false 73 | xm_6 = false 74 | f_6 = 3630.0000 75 | g_6 = -2.2000 db 76 | q_6 = 4.8000 77 | hue_6 = 0.6000000000000001 78 | ft_7 = 1 79 | fm_7 = 0 80 | s_7 = 0 81 | xs_7 = false 82 | xm_7 = false 83 | f_7 = 5900.0000 84 | g_7 = -5.3000 db 85 | q_7 = 6.0000 86 | hue_7 = 0.7000000000000001 87 | ft_8 = 1 88 | fm_8 = 0 89 | s_8 = 0 90 | xs_8 = false 91 | xm_8 = false 92 | f_8 = 7000.0000 93 | g_8 = 2.0000 db 94 | q_8 = 1.0000 95 | hue_8 = 0.8 96 | ft_9 = 3 97 | fm_9 = 6 98 | s_9 = 0 99 | xs_9 = false 100 | xm_9 = false 101 | f_9 = 10000.0000 102 | g_9 = -5.0000 db 103 | q_9 = 0.7100 104 | hue_9 = 0.9 105 | ft_10 = 0 106 | fm_10 = 0 107 | s_10 = 0 108 | xs_10 = false 109 | xm_10 = false 110 | f_10 = 500.0000 111 | g_10 = 0.0000 db 112 | q_10 = 1.4100 113 | hue_10 = 0.625 114 | ft_11 = 0 115 | fm_11 = 0 116 | s_11 = 0 117 | xs_11 = false 118 | xm_11 = false 119 | f_11 = 500.0000 120 | g_11 = 0.0000 db 121 | q_11 = 1.4100 122 | hue_11 = 0.6875 123 | ft_12 = 0 124 | fm_12 = 0 125 | s_12 = 0 126 | xs_12 = false 127 | xm_12 = false 128 | f_12 = 500.0000 129 | g_12 = 0.0000 db 130 | q_12 = 1.4100 131 | hue_12 = 0.75 132 | ft_13 = 0 133 | fm_13 = 0 134 | s_13 = 0 135 | xs_13 = false 136 | xm_13 = false 137 | f_13 = 500.0000 138 | g_13 = 0.0000 db 139 | q_13 = 1.4100 140 | hue_13 = 0.8125 141 | ft_14 = 0 142 | fm_14 = 0 143 | s_14 = 0 144 | xs_14 = false 145 | xm_14 = false 146 | f_14 = 500.0000 147 | g_14 = 0.0000 db 148 | q_14 = 1.4100 149 | hue_14 = 0.875 150 | ft_15 = 0 151 | fm_15 = 0 152 | s_15 = 0 153 | xs_15 = false 154 | xm_15 = false 155 | f_15 = 500.0000 156 | g_15 = 0.0000 db 157 | q_15 = 1.4100 158 | hue_15 = 0.9375 -------------------------------------------------------------------------------- /afx/lsp/sink-QC35.cfg: -------------------------------------------------------------------------------- 1 | bypass = false 2 | g_in = -1.9000 db 3 | g_out = 0.00 db 4 | mode = 0 5 | react = 0.10000 6 | shift = 0.00 db 7 | ife_l = true 8 | ofe_l = false 9 | ife_r = true 10 | ofe_r = false 11 | zoom = -36.000 db 12 | fsel = 0 13 | bal = 0.00000 14 | frqs = 0.00000 15 | ft_0 = 1 16 | fm_0 = 0 17 | s_0 = 0 18 | xs_0 = false 19 | xm_0 = false 20 | f_0 = 44.0000 21 | g_0 = -1.5000 db 22 | q_0 = 0.6800 23 | hue_0 = 0 24 | ft_1 = 1 25 | fm_1 = 0 26 | s_1 = 0 27 | xs_1 = false 28 | xm_1 = false 29 | f_1 = 120.0000 30 | g_1 = -1.3000 db 31 | q_1 = 1.0900 32 | hue_1 = 0.1 33 | ft_2 = 1 34 | fm_2 = 0 35 | s_2 = 0 36 | xs_2 = false 37 | xm_2 = false 38 | f_2 = 510.0000 39 | g_2 = 1.5000 db 40 | q_2 = 1.4200 41 | hue_2 = 0.2 42 | ft_3 = 1 43 | fm_3 = 0 44 | s_3 = 0 45 | xs_3 = false 46 | xm_3 = false 47 | f_3 = 1237.0000 48 | g_3 = 0.6000 db 49 | q_3 = 2.0200 50 | hue_3 = 0.30000000000000004 51 | ft_4 = 1 52 | fm_4 = 0 53 | s_4 = 0 54 | xs_4 = false 55 | xm_4 = false 56 | f_4 = 1256.0000 57 | g_4 = -1.1000 db 58 | q_4 = 0.6800 59 | hue_4 = 0.4 60 | ft_5 = 1 61 | fm_5 = 0 62 | s_5 = 0 63 | xs_5 = false 64 | xm_5 = false 65 | f_5 = 1557.0000 66 | g_5 = 1.2000 db 67 | q_5 = 2.1900 68 | hue_5 = 0.5 69 | ft_6 = 1 70 | fm_6 = 0 71 | s_6 = 0 72 | xs_6 = false 73 | xm_6 = false 74 | f_6 = 1575.0000 75 | g_6 = 0.8000 db 76 | q_6 = 2.6700 77 | hue_6 = 0.6000000000000001 78 | ft_7 = 1 79 | fm_7 = 0 80 | s_7 = 0 81 | xs_7 = false 82 | xm_7 = false 83 | f_7 = 2796.0000 84 | g_7 = -3.4000 db 85 | q_7 = 4.0400 86 | hue_7 = 0.7000000000000001 87 | ft_8 = 1 88 | fm_8 = 0 89 | s_8 = 0 90 | xs_8 = false 91 | xm_8 = false 92 | f_8 = 6178.0000 93 | g_8 = -6.1000 db 94 | q_8 = 4.3900 95 | hue_8 = 0.8 96 | ft_9 = 1 97 | fm_9 = 0 98 | s_9 = 0 99 | xs_9 = false 100 | xm_9 = false 101 | f_9 = 7282.0000 102 | g_9 = 2.8000 db 103 | q_9 = 1.2800 104 | hue_9 = 0.9 105 | ft_10 = 0 106 | fm_10 = 0 107 | s_10 = 0 108 | xs_10 = false 109 | xm_10 = false 110 | f_10 = 500.0000 111 | g_10 = 0.0000 db 112 | q_10 = 1.4100 113 | hue_10 = 0.625 114 | ft_11 = 0 115 | fm_11 = 0 116 | s_11 = 0 117 | xs_11 = false 118 | xm_11 = false 119 | f_11 = 500.0000 120 | g_11 = 0.0000 db 121 | q_11 = 1.4100 122 | hue_11 = 0.6875 123 | ft_12 = 0 124 | fm_12 = 0 125 | s_12 = 0 126 | xs_12 = false 127 | xm_12 = false 128 | f_12 = 500.0000 129 | g_12 = 0.0000 db 130 | q_12 = 1.4100 131 | hue_12 = 0.75 132 | ft_13 = 0 133 | fm_13 = 0 134 | s_13 = 0 135 | xs_13 = false 136 | xm_13 = false 137 | f_13 = 500.0000 138 | g_13 = 0.0000 db 139 | q_13 = 1.4100 140 | hue_13 = 0.8125 141 | ft_14 = 0 142 | fm_14 = 0 143 | s_14 = 0 144 | xs_14 = false 145 | xm_14 = false 146 | f_14 = 500.0000 147 | g_14 = 0.0000 db 148 | q_14 = 1.4100 149 | hue_14 = 0.875 150 | ft_15 = 0 151 | fm_15 = 0 152 | s_15 = 0 153 | xs_15 = false 154 | xm_15 = false 155 | f_15 = 500.0000 156 | g_15 = 0.0000 db 157 | q_15 = 1.4100 158 | hue_15 = 0.9375 -------------------------------------------------------------------------------- /afx/lsp/sink-Truthear_Hexa.cfg: -------------------------------------------------------------------------------- 1 | bypass = false 2 | g_in = -3.0000 db 3 | g_out = 0.00 db 4 | mode = 0 5 | react = 0.10000 6 | shift = 0.00 db 7 | ife_l = true 8 | ofe_l = false 9 | ife_r = true 10 | ofe_r = false 11 | zoom = -42.000 db 12 | fsel = 0 13 | bal = 0.00000 14 | frqs = 0.00000 15 | ft_0 = 5 16 | fm_0 = 0 17 | s_0 = 0 18 | xs_0 = false 19 | xm_0 = false 20 | f_0 = 118.9330 21 | g_0 = 1.9800 db 22 | q_0 = 0.7500 23 | hue_0 = 0 24 | ft_1 = 1 25 | fm_1 = 0 26 | s_1 = 0 27 | xs_1 = false 28 | xm_1 = false 29 | f_1 = 8001.4050 30 | g_1 = -2.1500 db 31 | q_1 = 4.0000 32 | hue_1 = 0.5 33 | ft_2 = 0 34 | fm_2 = 0 35 | s_2 = 0 36 | xs_2 = false 37 | xm_2 = false 38 | f_2 = 500.0000 39 | g_2 = 0.0000 db 40 | q_2 = 1.4100 41 | hue_2 = 0.125 42 | ft_3 = 0 43 | fm_3 = 0 44 | s_3 = 0 45 | xs_3 = false 46 | xm_3 = false 47 | f_3 = 500.0000 48 | g_3 = 0.0000 db 49 | q_3 = 1.4100 50 | hue_3 = 0.1875 51 | ft_4 = 0 52 | fm_4 = 0 53 | s_4 = 0 54 | xs_4 = false 55 | xm_4 = false 56 | f_4 = 500.0000 57 | g_4 = 0.0000 db 58 | q_4 = 1.4100 59 | hue_4 = 0.25 60 | ft_5 = 0 61 | fm_5 = 0 62 | s_5 = 0 63 | xs_5 = false 64 | xm_5 = false 65 | f_5 = 500.0000 66 | g_5 = 0.0000 db 67 | q_5 = 1.4100 68 | hue_5 = 0.3125 69 | ft_6 = 0 70 | fm_6 = 0 71 | s_6 = 0 72 | xs_6 = false 73 | xm_6 = false 74 | f_6 = 500.0000 75 | g_6 = 0.0000 db 76 | q_6 = 1.4100 77 | hue_6 = 0.375 78 | ft_7 = 0 79 | fm_7 = 0 80 | s_7 = 0 81 | xs_7 = false 82 | xm_7 = false 83 | f_7 = 500.0000 84 | g_7 = 0.0000 db 85 | q_7 = 1.4100 86 | hue_7 = 0.4375 87 | ft_8 = 0 88 | fm_8 = 0 89 | s_8 = 0 90 | xs_8 = false 91 | xm_8 = false 92 | f_8 = 500.0000 93 | g_8 = 0.0000 db 94 | q_8 = 1.4100 95 | hue_8 = 0.5 96 | ft_9 = 0 97 | fm_9 = 0 98 | s_9 = 0 99 | xs_9 = false 100 | xm_9 = false 101 | f_9 = 500.0000 102 | g_9 = 0.0000 db 103 | q_9 = 1.4100 104 | hue_9 = 0.5625 105 | ft_10 = 0 106 | fm_10 = 0 107 | s_10 = 0 108 | xs_10 = false 109 | xm_10 = false 110 | f_10 = 500.0000 111 | g_10 = 0.0000 db 112 | q_10 = 1.4100 113 | hue_10 = 0.625 114 | ft_11 = 0 115 | fm_11 = 0 116 | s_11 = 0 117 | xs_11 = false 118 | xm_11 = false 119 | f_11 = 500.0000 120 | g_11 = 0.0000 db 121 | q_11 = 1.4100 122 | hue_11 = 0.6875 123 | ft_12 = 0 124 | fm_12 = 0 125 | s_12 = 0 126 | xs_12 = false 127 | xm_12 = false 128 | f_12 = 500.0000 129 | g_12 = 0.0000 db 130 | q_12 = 1.4100 131 | hue_12 = 0.75 132 | ft_13 = 0 133 | fm_13 = 0 134 | s_13 = 0 135 | xs_13 = false 136 | xm_13 = false 137 | f_13 = 500.0000 138 | g_13 = 0.0000 db 139 | q_13 = 1.4100 140 | hue_13 = 0.8125 141 | ft_14 = 0 142 | fm_14 = 0 143 | s_14 = 0 144 | xs_14 = false 145 | xm_14 = false 146 | f_14 = 500.0000 147 | g_14 = 0.0000 db 148 | q_14 = 1.4100 149 | hue_14 = 0.875 150 | ft_15 = 0 151 | fm_15 = 0 152 | s_15 = 0 153 | xs_15 = false 154 | xm_15 = false 155 | f_15 = 500.0000 156 | g_15 = 0.0000 db 157 | q_15 = 1.4100 158 | hue_15 = 0.9375 -------------------------------------------------------------------------------- /afx/lsp/source-AT2040.cfg: -------------------------------------------------------------------------------- 1 | bypass = false 2 | g_in = 0.0000 db 3 | g_out = 0.00 db 4 | mode = 0 5 | react = 0.10000 6 | shift = 0.00 db 7 | ife_l = true 8 | ofe_l = false 9 | ife_r = true 10 | ofe_r = false 11 | zoom = -31.570 db 12 | fsel = 0 13 | bal = 0.00000 14 | frqs = 0.00000 15 | ft_0 = 2 16 | fm_0 = 0 17 | s_0 = 1 18 | xs_0 = false 19 | xm_0 = false 20 | f_0 = 60.0000 21 | g_0 = 0.0000 db 22 | q_0 = 0.6000 23 | hue_0 = 0 24 | ft_1 = 1 25 | fm_1 = 0 26 | s_1 = 0 27 | xs_1 = false 28 | xm_1 = false 29 | f_1 = 103.2270 30 | g_1 = -0.5000 db 31 | q_1 = 0.2800 32 | hue_1 = 0.25 33 | ft_2 = 1 34 | fm_2 = 0 35 | s_2 = 0 36 | xs_2 = false 37 | xm_2 = false 38 | f_2 = 1035.1690 39 | g_2 = -1.0100 db 40 | q_2 = 4.1000 41 | hue_2 = 0.5 42 | ft_3 = 1 43 | fm_3 = 0 44 | s_3 = 0 45 | xs_3 = false 46 | xm_3 = false 47 | f_3 = 2905.6150 48 | g_3 = -4.8600 db 49 | q_3 = 3.7700 50 | hue_3 = 0.75 51 | ft_4 = 0 52 | fm_4 = 0 53 | s_4 = 0 54 | xs_4 = false 55 | xm_4 = false 56 | f_4 = 500.0000 57 | g_4 = 0.0000 db 58 | q_4 = 1.4100 59 | hue_4 = 0.25 60 | ft_5 = 0 61 | fm_5 = 0 62 | s_5 = 0 63 | xs_5 = false 64 | xm_5 = false 65 | f_5 = 500.0000 66 | g_5 = 0.0000 db 67 | q_5 = 1.4100 68 | hue_5 = 0.3125 69 | ft_6 = 0 70 | fm_6 = 0 71 | s_6 = 0 72 | xs_6 = false 73 | xm_6 = false 74 | f_6 = 500.0000 75 | g_6 = 0.0000 db 76 | q_6 = 1.4100 77 | hue_6 = 0.375 78 | ft_7 = 0 79 | fm_7 = 0 80 | s_7 = 0 81 | xs_7 = false 82 | xm_7 = false 83 | f_7 = 500.0000 84 | g_7 = 0.0000 db 85 | q_7 = 1.4100 86 | hue_7 = 0.4375 87 | ft_8 = 0 88 | fm_8 = 0 89 | s_8 = 0 90 | xs_8 = false 91 | xm_8 = false 92 | f_8 = 500.0000 93 | g_8 = 0.0000 db 94 | q_8 = 1.4100 95 | hue_8 = 0.5 96 | ft_9 = 0 97 | fm_9 = 0 98 | s_9 = 0 99 | xs_9 = false 100 | xm_9 = false 101 | f_9 = 500.0000 102 | g_9 = 0.0000 db 103 | q_9 = 1.4100 104 | hue_9 = 0.5625 105 | ft_10 = 0 106 | fm_10 = 0 107 | s_10 = 0 108 | xs_10 = false 109 | xm_10 = false 110 | f_10 = 500.0000 111 | g_10 = 0.0000 db 112 | q_10 = 1.4100 113 | hue_10 = 0.625 114 | ft_11 = 0 115 | fm_11 = 0 116 | s_11 = 0 117 | xs_11 = false 118 | xm_11 = false 119 | f_11 = 500.0000 120 | g_11 = 0.0000 db 121 | q_11 = 1.4100 122 | hue_11 = 0.6875 123 | ft_12 = 0 124 | fm_12 = 0 125 | s_12 = 0 126 | xs_12 = false 127 | xm_12 = false 128 | f_12 = 500.0000 129 | g_12 = 0.0000 db 130 | q_12 = 1.4100 131 | hue_12 = 0.75 132 | ft_13 = 0 133 | fm_13 = 0 134 | s_13 = 0 135 | xs_13 = false 136 | xm_13 = false 137 | f_13 = 500.0000 138 | g_13 = 0.0000 db 139 | q_13 = 1.4100 140 | hue_13 = 0.8125 141 | ft_14 = 0 142 | fm_14 = 0 143 | s_14 = 0 144 | xs_14 = false 145 | xm_14 = false 146 | f_14 = 500.0000 147 | g_14 = 0.0000 db 148 | q_14 = 1.4100 149 | hue_14 = 0.875 150 | ft_15 = 0 151 | fm_15 = 0 152 | s_15 = 0 153 | xs_15 = false 154 | xm_15 = false 155 | f_15 = 500.0000 156 | g_15 = 0.0000 db 157 | q_15 = 1.4100 158 | hue_15 = 0.9375 -------------------------------------------------------------------------------- /afx/lv2/sink-Companion_2.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-Energy.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-Flat.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-Focal_Bathys.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-Focal_Clear.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-HD_560S.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-HE400i.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-Moondrop_Space_Travel.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-QC35.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-QC35_Wireless.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/sink-Truthear_Hexa.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/lv2/source-AT2040.preset.lv2/manifest.ttl: -------------------------------------------------------------------------------- 1 | @prefix atom: . 2 | @prefix lv2: . 3 | @prefix pset: . 4 | @prefix rdf: . 5 | @prefix rdfs: . 6 | @prefix state: . 7 | @prefix xsd: . 8 | 9 | 10 | lv2:appliesTo ; 11 | a pset:Preset ; 12 | rdfs:seeAlso . -------------------------------------------------------------------------------- /afx/peq/sink-Companion_2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Companion 2", 4 | "preamp": -3.13, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 4, 25 | "channels": 0, 26 | "frequency": 61, 27 | "q": 0.25, 28 | "gain": 0.07, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 4, 33 | "channels": 0, 34 | "frequency": 69, 35 | "q": 0.55, 36 | "gain": 4.99, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 3, 41 | "channels": 0, 42 | "frequency": 125, 43 | "q": 3.22, 44 | "gain": -5.36, 45 | "color": -13421773 46 | }, 47 | { 48 | "type": 3, 49 | "channels": 0, 50 | "frequency": 213, 51 | "q": 1.5, 52 | "gain": -4.82, 53 | "color": -8947849 54 | }, 55 | { 56 | "type": 3, 57 | "channels": 0, 58 | "frequency": 707, 59 | "q": 0.28, 60 | "gain": 0.19, 61 | "color": -13421773 62 | }, 63 | { 64 | "type": 5, 65 | "channels": 0, 66 | "frequency": 3547, 67 | "q": 0, 68 | "gain": -2.99, 69 | "color": -8947849 70 | } 71 | ] 72 | } 73 | ] -------------------------------------------------------------------------------- /afx/peq/sink-Energy.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Energy", 4 | "preamp": -3.2, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 4, 25 | "channels": 0, 26 | "frequency": 91, 27 | "q": 0.75, 28 | "gain": -2.57, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 3, 33 | "channels": 0, 34 | "frequency": 711, 35 | "q": 0, 36 | "gain": 3.57, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 5, 41 | "channels": 0, 42 | "frequency": 10255, 43 | "q": 0, 44 | "gain": 1.43, 45 | "color": -13421773 46 | } 47 | ] 48 | } 49 | ] -------------------------------------------------------------------------------- /afx/peq/sink-Flat.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Flat", 4 | "preamp": 0, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 3, 25 | "channels": 0, 26 | "frequency": 10000, 27 | "q": 1, 28 | "gain": 0, 29 | "color": -13421773 30 | } 31 | ] 32 | } 33 | ] -------------------------------------------------------------------------------- /afx/peq/sink-Focal_Bathys.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Focal Bathys", 4 | "preamp": -5.6, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 4, 25 | "channels": 0, 26 | "frequency": 56, 27 | "q": 0.71, 28 | "gain": 1.64, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 3, 33 | "channels": 0, 34 | "frequency": 430, 35 | "q": 1.2, 36 | "gain": -2, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 3, 41 | "channels": 0, 42 | "frequency": 910, 43 | "q": 1.4, 44 | "gain": 7.5, 45 | "color": -13421773 46 | }, 47 | { 48 | "type": 3, 49 | "channels": 0, 50 | "frequency": 1150, 51 | "q": 2, 52 | "gain": -4.6, 53 | "color": -8947849 54 | }, 55 | { 56 | "type": 3, 57 | "channels": 0, 58 | "frequency": 2850, 59 | "q": 6, 60 | "gain": -1.5, 61 | "color": -13421773 62 | }, 63 | { 64 | "type": 3, 65 | "channels": 0, 66 | "frequency": 3250, 67 | "q": 6, 68 | "gain": -1.5, 69 | "color": -8947849 70 | }, 71 | { 72 | "type": 3, 73 | "channels": 0, 74 | "frequency": 4000, 75 | "q": 0.7, 76 | "gain": 4.5, 77 | "color": -13421773 78 | }, 79 | { 80 | "type": 3, 81 | "channels": 0, 82 | "frequency": 4350, 83 | "q": 5, 84 | "gain": -1, 85 | "color": -8947849 86 | }, 87 | { 88 | "type": 3, 89 | "channels": 0, 90 | "frequency": 5750, 91 | "q": 5, 92 | "gain": -1.5, 93 | "color": -13421773 94 | }, 95 | { 96 | "type": 5, 97 | "channels": 0, 98 | "frequency": 10000, 99 | "q": 0.71, 100 | "gain": 1.25, 101 | "color": -8947849 102 | } 103 | ] 104 | } 105 | ] -------------------------------------------------------------------------------- /afx/peq/sink-Focal_Clear.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Focal Clear", 4 | "preamp": -6, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 4, 25 | "channels": 0, 26 | "frequency": 32, 27 | "q": 0.69, 28 | "gain": 3.21, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 4, 33 | "channels": 0, 34 | "frequency": 98, 35 | "q": 0.71, 36 | "gain": 1.39, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 3, 41 | "channels": 0, 42 | "frequency": 570, 43 | "q": 0.8, 44 | "gain": 1.92, 45 | "color": -13421773 46 | }, 47 | { 48 | "type": 3, 49 | "channels": 0, 50 | "frequency": 1350, 51 | "q": 1.7, 52 | "gain": -1.32, 53 | "color": -8947849 54 | }, 55 | { 56 | "type": 5, 57 | "channels": 0, 58 | "frequency": 1800, 59 | "q": 0.71, 60 | "gain": 4.75, 61 | "color": -13421773 62 | }, 63 | { 64 | "type": 3, 65 | "channels": 0, 66 | "frequency": 3030, 67 | "q": 2.8, 68 | "gain": -2.9, 69 | "color": -8947849 70 | }, 71 | { 72 | "type": 3, 73 | "channels": 0, 74 | "frequency": 3630, 75 | "q": 4.8, 76 | "gain": -2.2, 77 | "color": -13421773 78 | }, 79 | { 80 | "type": 3, 81 | "channels": 0, 82 | "frequency": 5900, 83 | "q": 6, 84 | "gain": -5.3, 85 | "color": -8947849 86 | }, 87 | { 88 | "type": 3, 89 | "channels": 0, 90 | "frequency": 7000, 91 | "q": 1, 92 | "gain": 2, 93 | "color": -13421773 94 | }, 95 | { 96 | "type": 5, 97 | "channels": 0, 98 | "frequency": 10000, 99 | "q": 0.71, 100 | "gain": -5, 101 | "color": -8947849 102 | } 103 | ] 104 | } 105 | ] -------------------------------------------------------------------------------- /afx/peq/sink-HE400i.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "HE400i", 4 | "preamp": -8, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 3, 25 | "channels": 0, 26 | "frequency": 25, 27 | "q": 1, 28 | "gain": 4.96, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 4, 33 | "channels": 0, 34 | "frequency": 105, 35 | "q": 0.71, 36 | "gain": 3.55, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 3, 41 | "channels": 0, 42 | "frequency": 700, 43 | "q": 1, 44 | "gain": 1, 45 | "color": -13421773 46 | }, 47 | { 48 | "type": 3, 49 | "channels": 0, 50 | "frequency": 1050, 51 | "q": 2, 52 | "gain": -1.8, 53 | "color": -8947849 54 | }, 55 | { 56 | "type": 3, 57 | "channels": 0, 58 | "frequency": 1900, 59 | "q": 1.2, 60 | "gain": 5.7, 61 | "color": -13421773 62 | }, 63 | { 64 | "type": 3, 65 | "channels": 0, 66 | "frequency": 2900, 67 | "q": 2, 68 | "gain": -2.8, 69 | "color": -8947849 70 | }, 71 | { 72 | "type": 3, 73 | "channels": 0, 74 | "frequency": 6100, 75 | "q": 1.4, 76 | "gain": 3, 77 | "color": -13421773 78 | }, 79 | { 80 | "type": 3, 81 | "channels": 0, 82 | "frequency": 6750, 83 | "q": 4.5, 84 | "gain": -4.7, 85 | "color": -8947849 86 | }, 87 | { 88 | "type": 3, 89 | "channels": 0, 90 | "frequency": 8450, 91 | "q": 4, 92 | "gain": -2.9, 93 | "color": -13421773 94 | } 95 | ] 96 | } 97 | ] -------------------------------------------------------------------------------- /afx/peq/sink-Moondrop_Space_Travel.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Moondrop Space Travel", 4 | "preamp": -3.99, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 3, 25 | "channels": 0, 26 | "frequency": 105, 27 | "q": 0.46, 28 | "gain": -1.5, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 3, 33 | "channels": 0, 34 | "frequency": 851, 35 | "q": 1.92, 36 | "gain": 0.8, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 3, 41 | "channels": 0, 42 | "frequency": 1881, 43 | "q": 1.9, 44 | "gain": 2.2, 45 | "color": -13421773 46 | }, 47 | { 48 | "type": 3, 49 | "channels": 0, 50 | "frequency": 2585, 51 | "q": 3.71, 52 | "gain": -0.8, 53 | "color": -8947849 54 | }, 55 | { 56 | "type": 3, 57 | "channels": 0, 58 | "frequency": 2890, 59 | "q": 1.49, 60 | "gain": -1.8, 61 | "color": -13421773 62 | }, 63 | { 64 | "type": 3, 65 | "channels": 0, 66 | "frequency": 3372, 67 | "q": 1.88, 68 | "gain": -2.74, 69 | "color": -8947849 70 | }, 71 | { 72 | "type": 3, 73 | "channels": 0, 74 | "frequency": 4549, 75 | "q": 4.18, 76 | "gain": -1.3, 77 | "color": -13421773 78 | }, 79 | { 80 | "type": 3, 81 | "channels": 0, 82 | "frequency": 5626, 83 | "q": 3.5, 84 | "gain": 4.5, 85 | "color": -8947849 86 | }, 87 | { 88 | "type": 3, 89 | "channels": 0, 90 | "frequency": 7974, 91 | "q": 3.01, 92 | "gain": 2, 93 | "color": -13421773 94 | }, 95 | { 96 | "type": 5, 97 | "channels": 0, 98 | "frequency": 10000, 99 | "q": 0.7, 100 | "gain": -3.02, 101 | "color": -8947849 102 | } 103 | ] 104 | } 105 | ] -------------------------------------------------------------------------------- /afx/peq/sink-QC35.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "QC35", 4 | "preamp": -1.9, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 3, 25 | "channels": 0, 26 | "frequency": 44, 27 | "q": 0.68, 28 | "gain": -1.5, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 3, 33 | "channels": 0, 34 | "frequency": 120, 35 | "q": 1.09, 36 | "gain": -1.3, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 3, 41 | "channels": 0, 42 | "frequency": 510, 43 | "q": 1.42, 44 | "gain": 1.5, 45 | "color": -13421773 46 | }, 47 | { 48 | "type": 3, 49 | "channels": 0, 50 | "frequency": 1237, 51 | "q": 2.02, 52 | "gain": 0.6, 53 | "color": -8947849 54 | }, 55 | { 56 | "type": 3, 57 | "channels": 0, 58 | "frequency": 1256, 59 | "q": 0.68, 60 | "gain": -1.1, 61 | "color": -13421773 62 | }, 63 | { 64 | "type": 3, 65 | "channels": 0, 66 | "frequency": 1557, 67 | "q": 2.19, 68 | "gain": 1.2, 69 | "color": -8947849 70 | }, 71 | { 72 | "type": 3, 73 | "channels": 0, 74 | "frequency": 1575, 75 | "q": 2.67, 76 | "gain": 0.8, 77 | "color": -13421773 78 | }, 79 | { 80 | "type": 3, 81 | "channels": 0, 82 | "frequency": 2796, 83 | "q": 4.04, 84 | "gain": -3.4, 85 | "color": -8947849 86 | }, 87 | { 88 | "type": 3, 89 | "channels": 0, 90 | "frequency": 6178, 91 | "q": 4.39, 92 | "gain": -6.1, 93 | "color": -13421773 94 | }, 95 | { 96 | "type": 3, 97 | "channels": 0, 98 | "frequency": 7282, 99 | "q": 1.28, 100 | "gain": 2.8, 101 | "color": -8947849 102 | } 103 | ] 104 | } 105 | ] -------------------------------------------------------------------------------- /afx/peq/sink-QC35_Wireless.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "QC35 Wireless", 4 | "preamp": -4.2, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 3, 25 | "channels": 0, 26 | "frequency": 13, 27 | "q": 0.52, 28 | "gain": -6.2, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 3, 33 | "channels": 0, 34 | "frequency": 102, 35 | "q": 0.73, 36 | "gain": -2, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 3, 41 | "channels": 0, 42 | "frequency": 476, 43 | "q": 1.84, 44 | "gain": 1.2, 45 | "color": -13421773 46 | }, 47 | { 48 | "type": 3, 49 | "channels": 0, 50 | "frequency": 957, 51 | "q": 3.93, 52 | "gain": -1.3, 53 | "color": -8947849 54 | }, 55 | { 56 | "type": 3, 57 | "channels": 0, 58 | "frequency": 1639, 59 | "q": 2.5, 60 | "gain": 4.3, 61 | "color": -13421773 62 | }, 63 | { 64 | "type": 3, 65 | "channels": 0, 66 | "frequency": 2737, 67 | "q": 3.5, 68 | "gain": -3.6, 69 | "color": -8947849 70 | }, 71 | { 72 | "type": 3, 73 | "channels": 0, 74 | "frequency": 5379, 75 | "q": 3.9, 76 | "gain": 1.7, 77 | "color": -13421773 78 | }, 79 | { 80 | "type": 3, 81 | "channels": 0, 82 | "frequency": 6166, 83 | "q": 3.98, 84 | "gain": -5.5, 85 | "color": -8947849 86 | }, 87 | { 88 | "type": 3, 89 | "channels": 0, 90 | "frequency": 8135, 91 | "q": 3.13, 92 | "gain": 2.4, 93 | "color": -13421773 94 | }, 95 | { 96 | "type": 3, 97 | "channels": 0, 98 | "frequency": 19633, 99 | "q": 0.38, 100 | "gain": -1.18, 101 | "color": -8947849 102 | } 103 | ] 104 | } 105 | ] -------------------------------------------------------------------------------- /afx/peq/sink-Truthear_Hexa.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Truthear Hexa", 4 | "preamp": -3, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 4, 25 | "channels": 0, 26 | "frequency": 119, 27 | "q": 0.75, 28 | "gain": 1.98, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 3, 33 | "channels": 0, 34 | "frequency": 8001, 35 | "q": 4, 36 | "gain": -2.15, 37 | "color": -8947849 38 | } 39 | ] 40 | } 41 | ] -------------------------------------------------------------------------------- /afx/peq/source-AT2040.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "AT2040", 4 | "preamp": 0, 5 | "parametric": true, 6 | "bands": [ 7 | { 8 | "type": 0, 9 | "channels": 0, 10 | "frequency": 90, 11 | "q": 0, 12 | "gain": 0, 13 | "color": 0 14 | }, 15 | { 16 | "type": 1, 17 | "channels": 0, 18 | "frequency": 10000, 19 | "q": 0, 20 | "gain": 0, 21 | "color": 0 22 | }, 23 | { 24 | "type": 1, 25 | "channels": 0, 26 | "frequency": 60, 27 | "q": 0.6, 28 | "gain": 0, 29 | "color": -13421773 30 | }, 31 | { 32 | "type": 3, 33 | "channels": 0, 34 | "frequency": 103, 35 | "q": 0.28, 36 | "gain": -0.5, 37 | "color": -8947849 38 | }, 39 | { 40 | "type": 3, 41 | "channels": 0, 42 | "frequency": 1035, 43 | "q": 4.1, 44 | "gain": -1.01, 45 | "color": -13421773 46 | }, 47 | { 48 | "type": 3, 49 | "channels": 0, 50 | "frequency": 2906, 51 | "q": 3.77, 52 | "gain": -4.86, 53 | "color": -8947849 54 | } 55 | ] 56 | } 57 | ] -------------------------------------------------------------------------------- /awesome/theme/default/chart-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/chart-line.png -------------------------------------------------------------------------------- /awesome/theme/default/circle-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/circle-play.png -------------------------------------------------------------------------------- /awesome/theme/default/clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/clock.png -------------------------------------------------------------------------------- /awesome/theme/default/cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/cloud.png -------------------------------------------------------------------------------- /awesome/theme/default/floppy-disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/floppy-disk.png -------------------------------------------------------------------------------- /awesome/theme/default/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/green.png -------------------------------------------------------------------------------- /awesome/theme/default/green_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/green_hover.png -------------------------------------------------------------------------------- /awesome/theme/default/headphones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/headphones.png -------------------------------------------------------------------------------- /awesome/theme/default/layouts/floatingw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/layouts/floatingw.png -------------------------------------------------------------------------------- /awesome/theme/default/layouts/maxw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/layouts/maxw.png -------------------------------------------------------------------------------- /awesome/theme/default/layouts/tileleftw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/layouts/tileleftw.png -------------------------------------------------------------------------------- /awesome/theme/default/nix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/nix.png -------------------------------------------------------------------------------- /awesome/theme/default/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/red.png -------------------------------------------------------------------------------- /awesome/theme/default/red_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/red_hover.png -------------------------------------------------------------------------------- /awesome/theme/default/submenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/submenu.png -------------------------------------------------------------------------------- /awesome/theme/default/volume-xmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/volume-xmark.png -------------------------------------------------------------------------------- /awesome/theme/default/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/yellow.png -------------------------------------------------------------------------------- /awesome/theme/default/yellow_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/awesome/theme/default/yellow_hover.png -------------------------------------------------------------------------------- /csgo/crosshair.cfg: -------------------------------------------------------------------------------- 1 | cl_crosshair_drawoutline 1 2 | cl_crosshair_outlinethickness 1 3 | cl_crosshair_recoil 0 4 | cl_crosshair_t 0 5 | cl_crosshairalpha 255 6 | cl_crosshaircolor 5 7 | cl_crosshairdot 0 8 | cl_crosshairgap -1 9 | cl_crosshairgap_useweaponvalue 0 10 | cl_crosshairsize 2 11 | cl_crosshairstyle 4 12 | cl_crosshairthickness 0.5 13 | cl_crosshairusealpha 1 14 | 15 | cl_crosshaircolor_b 255 16 | cl_crosshaircolor_g 255 17 | cl_crosshaircolor_r 255 18 | 19 | cl_crosshair_friendly_warning 0 20 | cl_crosshair_sniper_width 1 21 | hud_showtargetid 1 22 | -------------------------------------------------------------------------------- /csgo/crosshair2.cfg: -------------------------------------------------------------------------------- 1 | cl_crosshair_drawoutline 0 2 | cl_crosshair_outlinethickness 0 3 | cl_crosshair_recoil 1 4 | cl_crosshair_t 0 5 | cl_crosshairalpha 255 6 | cl_crosshaircolor 5 7 | cl_crosshairdot 0 8 | cl_crosshairgap -4 9 | cl_crosshairgap_useweaponvalue 0 10 | cl_crosshairsize 999 11 | cl_crosshairstyle 4 12 | cl_crosshairthickness 1 13 | cl_crosshairusealpha 1 14 | 15 | cl_crosshaircolor_b 0 16 | cl_crosshaircolor_g 0 17 | cl_crosshaircolor_r 255 18 | 19 | cl_crosshair_friendly_warning 0 20 | cl_crosshair_sniper_width 1 21 | hud_showtargetid 1 22 | -------------------------------------------------------------------------------- /csgo/practice.cfg: -------------------------------------------------------------------------------- 1 | sv_cheats true 2 | mp_maxmoney 60000 3 | mp_startmoney 60000 4 | mp_buy_anywhere 1 5 | bind c "sv_rethrow_last_grenade" 6 | bind 6 noclip 7 | -------------------------------------------------------------------------------- /csgo/viewmodel.cfg: -------------------------------------------------------------------------------- 1 | //viewmodel_presetpos 0 2 | //viewmodel_offset_x 2 3 | //viewmodel_offset_y 2 4 | //viewmodel_offset_z -2 5 | //viewmodel_fov 68 6 | //cl_prefer_lefthanded 0 7 | 8 | viewmodel_presetpos 1 9 | viewmodel_offset_x -0.5 10 | viewmodel_offset_y 1 11 | viewmodel_offset_z -2 12 | viewmodel_fov 65 13 | cl_prefer_lefthanded 0 14 | -------------------------------------------------------------------------------- /csgo/viewmodel2.cfg: -------------------------------------------------------------------------------- 1 | viewmodel_presetpos 0 2 | viewmodel_offset_x -2 3 | viewmodel_offset_y -2 4 | viewmodel_offset_z 2 5 | viewmodel_fov 54 6 | cl_prefer_lefthanded 0 7 | -------------------------------------------------------------------------------- /img/busy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/img/busy.png -------------------------------------------------------------------------------- /img/power.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/img/power.png -------------------------------------------------------------------------------- /img/vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/img/vim.png -------------------------------------------------------------------------------- /misc/mute.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/misc/mute.mp3 -------------------------------------------------------------------------------- /misc/npmrc: -------------------------------------------------------------------------------- 1 | cache=${XDG_CACHE_HOME}/npm 2 | init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js 3 | logs-dir=${XDG_STATE_HOME}/npm/logs 4 | prefix=${XDG_DATA_HOME}/npm 5 | tmp=${XDG_RUNTIME_DIR}/npm 6 | -------------------------------------------------------------------------------- /misc/unmute.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/misc/unmute.mp3 -------------------------------------------------------------------------------- /misc/user.js: -------------------------------------------------------------------------------- 1 | user_pref("browser.backspace_action", 0); 2 | user_pref("extensions.pocket.enabled", false); 3 | user_pref("browser.ctrlTab.sortByRecentlyUsed", true); 4 | user_pref("browser.tabs.tabMinWidth", 0); 5 | user_pref("browser.compactmode.show", true); 6 | 7 | user_pref("apz.overscroll.enabled", true); 8 | user_pref("browser.aboutConfig.showWarning", false); 9 | user_pref("browser.bookmarks.openInTabClosesMenu", false); 10 | user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); 11 | user_pref("browser.search.context.loadInBackground", true); 12 | user_pref("browser.send_pings", false); 13 | user_pref("browser.tabs.groups.enabled", true); 14 | user_pref("browser.tabs.hoverPreview.enabled", false); 15 | user_pref("browser.tabs.insertAfterCurrent", true); 16 | user_pref("browser.urlbar.suggest.calculator", false); 17 | user_pref("devtools.chrome.enabled", true); 18 | user_pref("devtools.debugger.prompt-connection", false); 19 | user_pref("devtools.debugger.remote-enabled", true); 20 | user_pref("dom.battery.enabled", false); 21 | user_pref("extensions.pocket.enabled", false); 22 | user_pref("findbar.highlightAll", true); 23 | user_pref("full-screen-api.transition-duration.enter", "0 0"); 24 | user_pref("full-screen-api.transition-duration.leave", "0 0"); 25 | user_pref("full-screen-api.warning.timeout", 0); 26 | user_pref("general.smoothScroll", true); 27 | user_pref("general.smoothScroll.msdPhysics.enabled", false); 28 | user_pref("layout.css.has-selector.enabled", true); 29 | user_pref("network.http.max-connections", 300); 30 | user_pref("sidebar.revamp", true); 31 | user_pref("sidebar.verticalTabs", true); 32 | user_pref("svg.context-properties.content.enabled", true); 33 | user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); 34 | user_pref("toolkit.tabbox.switchByScrolling", false); 35 | user_pref("widget.gtk.ignore-bogus-leave-notify", 1); 36 | user_pref("widget.gtk.native-context-menus", false); 37 | user_pref("widget.gtk.rounded-bottom-corners.enabled", true); 38 | -------------------------------------------------------------------------------- /misc/userChrome.css: -------------------------------------------------------------------------------- 1 | /*** Prevent pinned tabs area from scrolling ***/ 2 | #vertical-pinned-tabs-container { 3 | max-height: none !important; 4 | } 5 | 6 | /*** Hide tab close buttons (just use middle click) ***/ 7 | .tabbrowser-tab .tab-close-button { 8 | visibility: collapse !important; 9 | } 10 | 11 | /*** Hide tab "audio playing" icon ***/ 12 | .tab-icon-overlay { 13 | display: none; 14 | } 15 | .tab-icon-image { 16 | opacity: 1 !important; 17 | } 18 | 19 | /*** Remove window controls ***/ 20 | #toolbar-menubar:not([inactive="true"]) .titlebar-buttonbox-container { 21 | display: flex !important; 22 | } 23 | .titlebar-buttonbox-container { 24 | display: none !important; 25 | } 26 | 27 | /*** Remove default borders and shadows ***/ 28 | #appcontent { 29 | @media -moz-pref("sidebar.revamp") { 30 | & { 31 | border-top: 0 !important; 32 | border-inline-start: 0 !important; 33 | box-shadow: none !important; 34 | } 35 | } 36 | } 37 | 38 | #tabbrowser-tabbox { 39 | @media -moz-pref("sidebar.revamp") { 40 | outline: 0px solid var(--chrome-content-separator-color) !important; 41 | box-shadow: none !important; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /nix/README.md: -------------------------------------------------------------------------------- 1 | # Installing NixOS 2 | 3 | 1. Load into the NixOS installation environment via bootable USB 4 | 2. Start a terminal and log in as root 5 | 3. Run `fdisk -l` and find the disk to install onto 6 | 7 | 4. Partition the disk as follows: 8 | * Partition 1: 1GB EFI System Partition 9 | * Partition 2: All remaining space default partition type 10 | 11 | 5. Construct the LVM-on-LUKS file system setup 12 | ```bash 13 | LUKS_ROOT_DEVICE=/dev/nvme1n1p2 14 | BOOT_DEVICE=/dev/nvme1n1p1 15 | 16 | cryptsetup luksFormat $LUKS_ROOT_DEVICE 17 | cryptsetup open $LUKS_ROOT_DEVICE cryptlvm 18 | 19 | pvcreate /dev/mapper/cryptlvm 20 | 21 | vgcreate MyVolGroup /dev/mapper/cryptlvm 22 | 23 | lvcreate -L 8G -n nixos-swap MyVolGroup 24 | lvcreate -l '100%FREE' -n nixos-root MyVolGroup 25 | ``` 26 | 27 | 6. Create the file systems on the logical volumes 28 | ```bash 29 | mkfs.vfat -n nixos-boot $BOOT_DEVICE 30 | 31 | mkfs.ext4 -L nixos-root /dev/MyVolGroup/nixos-root 32 | 33 | mkswap -L nixos-swap /dev/MyVolGroup/nixos-swap 34 | 35 | swapon /dev/MyVolGroup/nixos-swap 36 | ``` 37 | 38 | 7. Mount the file systems and prep for install 39 | ```bash 40 | mount /dev/MyVolGroup/nixos-root /mnt 41 | mkdir /mnt/boot 42 | mount -o umask=077 $BOOT_DEVICE /mnt/boot 43 | ``` 44 | 45 | 8. Generate a config 46 | ```bash 47 | nixos-generate-config --root /mnt 48 | ``` 49 | 50 | 9. Ensure the boot file system in `hardware-configuration.nix` is correct 51 | ```nix 52 | fileSystems."/boot" = 53 | { device = "/dev/disk/by-label/nixos-boot"; 54 | fsType = "vfat"; 55 | options = [ "fmask=0077" "dmask=0077" ]; 56 | }; 57 | ``` 58 | 59 | 10. Make required modifications to the generated `configuration.nix` 60 | ```nix 61 | boot.initrd.luks.devices = { 62 | root = { 63 | device = ""; 64 | preLVM = true; 65 | }; 66 | }; 67 | 68 | networking.hostName = "grace"; 69 | networking.networkmanager.enable = true; 70 | time.timeZone = "America/Edmonton"; 71 | i18n.defaultLocale = "en_CA.UTF-8"; 72 | environment.systemPackages = with pkgs; [ 73 | neovim 74 | ]; 75 | 76 | services.xserver.enable = false; 77 | # Also delete any other xserver configs, our first installation will be headless 78 | ``` 79 | 80 | 11. Perform the install 81 | ```bash 82 | nixos-install 83 | ``` 84 | 85 | 12. Reboot 86 | 13. Log in as root 87 | 14. Copy dotfiles nix config to /etc/nixos 88 | 15. Make any required merges to `configuration.nix` 89 | 16. Rebuild with `nixos-rebuild switch --flake '.#'` 90 | 17. Reboot 91 | 18. Log in as root 92 | 19. Set password for non-root user with `passwd jayden` 93 | 20. Log in as non-root 94 | 21. Profit 95 | -------------------------------------------------------------------------------- /nix/common/bluetooth.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | services.blueman.enable = true; 5 | 6 | hardware.bluetooth = { 7 | enable = true; 8 | powerOnBoot = true; 9 | settings = { 10 | General = { 11 | # make battery level reporting work 12 | Experimental = true; 13 | }; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /nix/common/bootloader.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | boot = { 5 | loader = { 6 | systemd-boot.enable = true; 7 | # only show the last 10 generations in the boot menu 8 | systemd-boot.configurationLimit = 10; 9 | efi.canTouchEfiVariables = true; 10 | }; 11 | 12 | tmp = { 13 | useTmpfs = true; 14 | 15 | # default = 50% 16 | tmpfsSize = "50%"; 17 | }; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /nix/common/env.nix: -------------------------------------------------------------------------------- 1 | { config-vars, ... }: 2 | 3 | { 4 | environment.sessionVariables = rec { 5 | # home directory cleanup 6 | XDG_DATA_HOME = "$HOME/.local/share"; 7 | XDG_DESKTOP_HOME = "$HOME/.local/desktop"; 8 | XDG_CONFIG_HOME = "$HOME/.config"; 9 | XDG_CACHE_HOME = "$HOME/.cache"; 10 | XDG_STATE_HOME = "$HOME/.local/state"; 11 | 12 | # home directory cleanup 13 | CARGO_HOME = "${XDG_DATA_HOME}/cargo"; 14 | CUDA_CACHE_PATH = "${XDG_CACHE_HOME}/nv"; 15 | DOCKER_CONFIG = "${XDG_CONFIG_HOME}/docker"; 16 | GRADLE_USER_HOME = "${XDG_DATA_HOME}/gradle"; 17 | GRIPHOME = "${XDG_CONFIG_HOME}/grip"; 18 | HISTFILE = "${XDG_STATE_HOME}/zsh/history"; 19 | ICEAUTHORITY = "${XDG_CACHE_HOME}/ICEauthority"; 20 | IPYTHONDIR = "${XDG_CONFIG_HOME}/jupyter"; 21 | JUPYTER_CONFIG_DIR = "${XDG_CONFIG_HOME}/jupyter"; 22 | KUBECACHEDIR = "${XDG_CACHE_HOME}/kube"; 23 | LESS = "-RX"; 24 | LESSHISTFILE = "-"; 25 | NODE_REPL_HISTORY = "${XDG_DATA_HOME}/node_repl_history"; 26 | NPM_CONFIG_USERCONFIG = "${XDG_CONFIG_HOME}/npm/npmrc"; 27 | PSQL_HISTORY = "${XDG_STATE_HOME}/psql_history"; 28 | RUSTUP_HOME = "${XDG_DATA_HOME}/rustup"; 29 | SQLITE_HISTORY = "${XDG_DATA_HOME}/sqlite_history"; 30 | SSB_HOME = "${XDG_DATA_HOME}/zoom"; 31 | WGETRC = "$HOME/.config/wgetrc"; 32 | XCOMPOSECACHE = "${XDG_CACHE_HOME}/X11/xcompose"; 33 | XCOMPOSEFILE = "${XDG_CONFIG_HOME}/X11/xcompose"; 34 | ZDOTDIR = "$HOME/.config/zsh"; 35 | _JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME}/java"; 36 | 37 | EDITOR = "nvim"; 38 | TERMINAL = config-vars.terminal; 39 | BROWSER = "firefox-devedition"; 40 | COLORTERM = "truecolor"; 41 | DOT = config-vars.dotfiles-dir; 42 | HOSTNAME = config-vars.host; 43 | 44 | SSH_AUTH_SOCK = "/run/user/1000/gnupg/S.gpg-agent.ssh"; 45 | 46 | # yikes 47 | DO_NOT_TRACK = "1"; 48 | DOTNET_CLI_TELEMETRY_OPTOUT = "1"; 49 | GATSBY_TELEMETRY_DISABLED = "1"; 50 | DENO_NO_UPDATE_CHECK = "1"; 51 | GOPROXY = "direct"; 52 | ARTILLERY_DISABLE_TELEMETRY = "true"; 53 | ASTRO_TELEMETRY_DISABLED = "1"; 54 | 55 | PATH = [ 56 | "$HOME/.local/bin" 57 | "${XDG_DATA_HOME}/cargo/bin" 58 | "$HOME/.local/bin" 59 | "$HOME/.nix-profile/bin" 60 | "$HOME/.cache/.bun/bin" 61 | ]; 62 | }; 63 | } 64 | -------------------------------------------------------------------------------- /nix/common/font.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | fonts = { 5 | packages = with pkgs; [ 6 | (nerdfonts.override { 7 | fonts = [ 8 | "Iosevka" 9 | "JetBrainsMono" 10 | ]; 11 | }) 12 | ]; 13 | 14 | fontconfig = { 15 | hinting.style = "slight"; 16 | hinting.enable = true; 17 | hinting.autohint = false; 18 | 19 | subpixel.rgba = "rgb"; 20 | 21 | defaultFonts.serif = [ "FreeSerif" ]; 22 | defaultFonts.sansSerif = [ "FreeSans" ]; 23 | defaultFonts.monospace = [ "JetBrainsMono Nerd Font Mono" ]; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /nix/common/general.nix: -------------------------------------------------------------------------------- 1 | { pkgs, config-vars, ... }: 2 | 3 | { 4 | # use linux-zen kernel 5 | boot.kernelPackages = pkgs.linuxPackages_zen; 6 | 7 | networking = { 8 | hostName = config-vars.host; 9 | networkmanager = { 10 | enable = true; 11 | dns = "dnsmasq"; 12 | }; 13 | 14 | extraHosts = '' 15 | ${config-vars.ips.homelab} git.jayden.codes 16 | ''; 17 | 18 | # wg-quick.interfaces = { 19 | # wg0 = { 20 | # address = [ "10.179.254.3/24" ]; 21 | # dns = [ config-vars.ips.opnsense ]; 22 | # privateKey = "..."; 23 | # 24 | # peers = [ 25 | # { 26 | # publicKey = "..."; 27 | # presharedKey = "..."; 28 | # allowedIPs = [ 29 | # "10.118.254.0/24" 30 | # "10.179.254.0/24" 31 | # ]; 32 | # endpoint = "purple-heron.jayden.codes:35458"; 33 | # persistentKeepalive = 25; 34 | # } 35 | # ]; 36 | # }; 37 | # }; 38 | }; 39 | 40 | services.dnsmasq = { 41 | enable = true; 42 | settings = { 43 | cache-size = 2056; 44 | server = [ config-vars.ips.opnsense ]; 45 | }; 46 | }; 47 | 48 | time.timeZone = config-vars.timezone; 49 | i18n.defaultLocale = config-vars.locale; 50 | 51 | users.users."${config-vars.username}" = { 52 | description = config-vars.name; 53 | home = config-vars.home-dir; 54 | createHome = true; 55 | group = "users"; 56 | uid = 1000; 57 | isNormalUser = true; 58 | shell = pkgs.zsh; 59 | 60 | extraGroups = [ 61 | "audio" 62 | "video" 63 | "input" 64 | "networkmanager" 65 | "wheel" 66 | ]; 67 | }; 68 | 69 | programs.direnv = { 70 | enable = true; 71 | silent = true; 72 | }; 73 | 74 | programs.zsh.enable = true; 75 | } 76 | -------------------------------------------------------------------------------- /nix/common/lecture.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | # setup the sudoers lecture 5 | security.sudo.extraConfig = '' 6 | Defaults lecture = always 7 | Defaults lecture_file = ${ 8 | pkgs.writeTextFile { 9 | name = "sudoers-lecture"; 10 | text = '' 11 | 12 |  "Bee" careful __ 13 | with sudo! // \ 14 | \\_/ // 15 | '''-.._.-'''-.._.. -(||)(') 16 | '''' 17 | ''; 18 | } 19 | } 20 | ''; 21 | } 22 | -------------------------------------------------------------------------------- /nix/common/nix-conf.nix: -------------------------------------------------------------------------------- 1 | { config-vars, ... }: 2 | 3 | { 4 | # Allow unfree packages 5 | nixpkgs.config.allowUnfree = true; 6 | 7 | nix.settings = { 8 | trusted-users = [ 9 | "root" 10 | config-vars.username 11 | ]; 12 | 13 | experimental-features = [ 14 | "nix-command" 15 | "flakes" 16 | ]; 17 | }; 18 | 19 | programs.nh = { 20 | enable = true; 21 | clean.enable = false; 22 | flake = "${config-vars.dotfiles-dir}/nix"; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /nix/common/packages.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | unstable, 4 | inputs, 5 | ... 6 | }: 7 | 8 | { 9 | environment.systemPackages = with pkgs; [ 10 | alsa-utils 11 | awesome 12 | bash 13 | bat 14 | bc 15 | bitwarden-cli 16 | bun 17 | carla 18 | chromium 19 | czkawka-full 20 | dig 21 | eog 22 | eza 23 | fastfetch 24 | fd 25 | ffmpeg-full 26 | ffmpegthumbnailer 27 | file 28 | fontconfig 29 | gcc 30 | gimp 31 | gnumake 32 | go 33 | imagemagick 34 | jalv 35 | jq 36 | killall 37 | libnotify 38 | lsp-plugins 39 | lua-language-server 40 | maim 41 | mediainfo 42 | mullvad-browser 43 | nitrogen 44 | nixfmt-rfc-style 45 | nsxiv 46 | onefetch 47 | pavucontrol 48 | picom 49 | pkg-config 50 | prettierd 51 | redshift 52 | ripgrep 53 | rofi 54 | rsync 55 | shellcheck 56 | stylua 57 | taplo 58 | tokei 59 | trash-cli 60 | usbutils 61 | vesktop 62 | wget 63 | wireguard-tools 64 | x42-plugins 65 | xclip 66 | xcolor 67 | xdotool 68 | yaml-language-server 69 | zenity 70 | zoxide 71 | zsh-autosuggestions 72 | zsh-syntax-highlighting 73 | 74 | nodePackages.typescript-language-server 75 | 76 | python312Packages.grip 77 | 78 | xfce.mousepad 79 | 80 | xorg.xev 81 | xorg.xinput 82 | xorg.xmodmap 83 | xorg.xprop 84 | xorg.xrdb 85 | xorg.xset 86 | 87 | unstable.bruno 88 | unstable.devenv 89 | unstable.feishin 90 | unstable.firefox-devedition 91 | unstable.ghostty 92 | unstable.neovim 93 | unstable.nil 94 | unstable.picocrypt 95 | unstable.spotify 96 | unstable.yt-dlp 97 | 98 | inputs.agenix.packages.${system}.default 99 | inputs.notifications-dbus-mon.packages."${system}".default 100 | inputs.spotify-dbus-mon.packages."${system}".default 101 | ]; 102 | } 103 | -------------------------------------------------------------------------------- /nix/common/podman.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | virtualisation.podman = { 5 | enable = true; 6 | networkSocket.enable = false; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /nix/common/secrets.nix: -------------------------------------------------------------------------------- 1 | { config-vars, ... }: 2 | 3 | { 4 | age.identityPaths = [ 5 | "${config-vars.home-dir}/.ssh/nix-secrets-grace" 6 | "${config-vars.home-dir}/.ssh/nix-secrets-jayden" 7 | ]; 8 | 9 | age.secrets.mpv-secrets = { 10 | file = ../secrets/mpv-secrets.lua.age; 11 | path = "${config-vars.home-dir}/.config/mpv/scripts/secrets.lua"; 12 | mode = "0400"; 13 | owner = config-vars.username; 14 | group = "users"; 15 | }; 16 | 17 | age.secrets.redshift = { 18 | file = ../secrets/redshift.conf.age; 19 | path = "${config-vars.home-dir}/.config/redshift.conf"; 20 | mode = "0400"; 21 | owner = config-vars.username; 22 | group = "users"; 23 | }; 24 | 25 | age.secrets.env = { 26 | file = ../secrets/env.age; 27 | path = "${config-vars.home-dir}/.config/ENV"; 28 | mode = "0400"; 29 | owner = config-vars.username; 30 | group = "users"; 31 | }; 32 | 33 | age.secrets.ssh-config = { 34 | file = ../secrets/ssh-config.age; 35 | path = "${config-vars.home-dir}/.ssh/config"; 36 | mode = "0400"; 37 | owner = config-vars.username; 38 | group = "users"; 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /nix/common/steam.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | programs.gamemode.enable = true; 5 | 6 | programs.steam = { 7 | enable = true; 8 | remotePlay.openFirewall = false; 9 | dedicatedServer.openFirewall = false; 10 | localNetworkGameTransfers.openFirewall = false; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /nix/common/stylix-root.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | stylix.targets.gnome.enable = true; 5 | stylix.targets.gtk.enable = true; 6 | stylix.targets.lightdm.enable = true; 7 | } 8 | -------------------------------------------------------------------------------- /nix/common/stylix.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | config-vars, 4 | unstable, 5 | ... 6 | }: 7 | 8 | { 9 | stylix.enable = true; 10 | stylix.autoEnable = false; 11 | stylix.polarity = "dark"; 12 | 13 | # I'm not even using the stylix wallpaper functionality 14 | # but it barfs if you don't set this option 15 | stylix.image = ./wall; 16 | 17 | stylix.base16Scheme = config-vars.theme; 18 | 19 | stylix.cursor = { 20 | package = unstable.apple-cursor; 21 | name = "macOS"; 22 | size = 24; 23 | }; 24 | 25 | stylix.fonts = { 26 | monospace = { 27 | package = pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }; 28 | name = "JetBrainsMono Nerd Font Mono"; 29 | }; 30 | 31 | sansSerif = { 32 | package = pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }; 33 | name = "FreeSans"; 34 | }; 35 | 36 | serif = { 37 | package = pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }; 38 | name = "FreeSerif"; 39 | }; 40 | 41 | sizes = { 42 | applications = 10; 43 | }; 44 | }; 45 | } 46 | -------------------------------------------------------------------------------- /nix/common/thunar.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | let 4 | package = pkgs.xfce.thunar.override { 5 | thunarPlugins = with pkgs.xfce; [ 6 | thunar-archive-plugin 7 | thunar-volman 8 | ]; 9 | }; 10 | in 11 | { 12 | # xfconf is required to persist Thunar settings 13 | # since we're not running on XFCE 14 | programs.xfconf.enable = true; 15 | 16 | # gvfs is for Thunar stuff like Trash folders etc 17 | services.gvfs.enable = true; 18 | 19 | # thumbnail generation service for Thunar 20 | services.tumbler.enable = true; 21 | 22 | # required for Thunar archive plugin 23 | programs.file-roller.enable = true; 24 | 25 | environment.systemPackages = [ package ]; 26 | services.dbus.packages = [ package ]; 27 | systemd.packages = [ package ]; 28 | } 29 | -------------------------------------------------------------------------------- /nix/common/x.nix: -------------------------------------------------------------------------------- 1 | { pkgs, config-vars, ... }: 2 | 3 | { 4 | services.xserver = { 5 | enable = true; 6 | dpi = 96; 7 | 8 | # key repeat delay and interval rate 9 | autoRepeatDelay = 270; 10 | autoRepeatInterval = 35; 11 | 12 | xkb = { 13 | layout = "us"; 14 | variant = ""; 15 | }; 16 | 17 | windowManager.awesome.enable = true; 18 | 19 | displayManager = { 20 | lightdm = { 21 | enable = true; 22 | greeters.gtk.enable = true; 23 | }; 24 | 25 | sessionCommands = '' 26 | xrdb -merge ${config-vars.home-dir}/.config/Xresources 27 | rm ${config-vars.home-dir}/.xsession-errors.old 28 | 29 | xmodmap -e "clear lock" 30 | xmodmap -e "keysym Caps_Lock = Escape" 31 | ''; 32 | }; 33 | 34 | # don't bother installing xterm since we don't need it 35 | excludePackages = [ pkgs.xterm ]; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /nix/home/atuin.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | programs.atuin = { 5 | enable = true; 6 | 7 | enableZshIntegration = false; 8 | enableBashIntegration = false; 9 | enableFishIntegration = false; 10 | enableNushellIntegration = false; 11 | 12 | flags = [ "--disable-up-arrow" ]; 13 | 14 | settings = { 15 | dialect = "us"; 16 | auto_sync = true; 17 | sync_frequency = "5m"; 18 | sync_address = "https://atuin.jayden.codes"; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /nix/home/desktop-files.nix: -------------------------------------------------------------------------------- 1 | { config-vars, ... }: 2 | 3 | { 4 | home.file = { 5 | ".local/share/applications/mullvad_browser_vpn.desktop".text = '' 6 | [Desktop Entry] 7 | Categories=Network;WebBrowser;Security 8 | Comment=Access the Internet over Mullvad 9 | Exec=firejail --noprofile --netns=mullvad mullvad-browser --private-window https://mullvad.net/en/check 10 | GenericName=Web Browser 11 | Icon=mullvad-browser 12 | MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;x-scheme-handler/http;x-scheme-handler/https 13 | Name=Mullvad Browser (VPN) 14 | Type=Application 15 | Version=1.4 16 | ''; 17 | 18 | ".local/share/applications/firefox-devedition.desktop".text = '' 19 | [Desktop Entry] 20 | Actions=new-private-window;alternate-profile 21 | Categories=Network;WebBrowser 22 | Exec=firefox-devedition --name firefox-devedition %U 23 | GenericName=Web Browser 24 | Icon=firefox-devedition 25 | MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;x-scheme-handler/http;x-scheme-handler/https 26 | Name=Zen 27 | StartupNotify=true 28 | StartupWMClass=firefox-devedition 29 | Terminal=false 30 | Type=Application 31 | Version=1.4 32 | 33 | [Desktop Action new-private-window] 34 | Exec=firefox-devedition --private-window %U 35 | Name=New Private Window 36 | 37 | [Desktop Action alternate-profile] 38 | Exec=firefox-devedition --profile ~/.mozilla/firefox/os9o8p15.Alternate %U 39 | Name=Alternate Profile 40 | ''; 41 | 42 | ".local/share/applications/wallpaper.desktop".text = '' 43 | [Desktop Entry] 44 | Exec=${config-vars.dotfiles-dir}/scripts/wallpaper/wallpaper.sh "${config-vars.home-dir}/Pictures/Wallpapers/Single Screen" 45 | Type=Application 46 | Version=1.0 47 | Name=Wallpaper 48 | Comment=Set the wallpaper for the desktop and login manager 49 | Icon=${config-vars.dotfiles-dir}/scripts/wallpaper/wallpaper-ico.png 50 | Terminal=false 51 | ''; 52 | 53 | ".local/share/applications/gamemodescript.desktop".text = '' 54 | [Desktop Entry] 55 | Exec=${config-vars.dotfiles-dir}/scripts/gamemode.sh 56 | Type=Application 57 | Version=1.0 58 | Name=Game Mode 59 | Comment=Setup the computer for gaming mode 60 | Icon=${config-vars.dotfiles-dir}/scripts/wallpaper/wallpaper-ico.png 61 | Terminal=false 62 | ''; 63 | }; 64 | } 65 | -------------------------------------------------------------------------------- /nix/home/general.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | config-vars, 4 | unstable, 5 | ... 6 | }: 7 | 8 | { 9 | imports = [ 10 | ../common/stylix.nix 11 | 12 | ./mpv/config.nix 13 | 14 | ./atuin.nix 15 | ./desktop-files.nix 16 | ./ghostty.nix 17 | ./git.nix 18 | ./lazygit.nix 19 | ./mangohud.nix 20 | ./mime.nix 21 | ./starship.nix 22 | ./thunar-uca.nix 23 | ./tmux.nix 24 | ./xresources.nix 25 | ./zathura.nix 26 | ]; 27 | 28 | home.username = config-vars.username; 29 | home.homeDirectory = config-vars.home-dir; 30 | 31 | # let Home Manager install and manage itself 32 | programs.home-manager.enable = true; 33 | 34 | home.file = { 35 | ".local/share/zsh/zsh-autosuggestions".source = 36 | "${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions"; 37 | ".local/share/zsh/zsh-syntax-highlighting".source = 38 | "${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting"; 39 | ".config/wgetrc".text = "hsts-file = ${config-vars.home-dir}/.cache/wget-hsts"; 40 | }; 41 | 42 | # home-manager only targets 43 | stylix.targets.alacritty.enable = true; 44 | stylix.targets.bat.enable = true; 45 | stylix.targets.gnome.enable = true; 46 | stylix.targets.gtk.enable = true; 47 | stylix.targets.mangohud.enable = true; 48 | stylix.targets.xfce.enable = true; 49 | stylix.targets.zathura.enable = true; 50 | 51 | gtk = { 52 | enable = true; 53 | cursorTheme = { 54 | name = "macOS"; 55 | size = 24; 56 | package = unstable.apple-cursor; 57 | }; 58 | 59 | iconTheme = { 60 | package = pkgs.numix-icon-theme; 61 | name = "Numix"; 62 | }; 63 | }; 64 | 65 | services.kdeconnect.enable = true; 66 | 67 | systemd.user.enable = true; 68 | 69 | services.autorandr.enable = true; 70 | programs.autorandr.enable = true; 71 | 72 | services.gpg-agent = { 73 | enable = true; 74 | enableZshIntegration = true; 75 | enableSshSupport = true; 76 | 77 | pinentryPackage = pkgs.pinentry-gtk2; 78 | 79 | # 24 hours 80 | maxCacheTtl = 86400; 81 | maxCacheTtlSsh = 86400; 82 | defaultCacheTtl = 86400; 83 | defaultCacheTtlSsh = 86400; 84 | 85 | enableBashIntegration = false; 86 | enableFishIntegration = false; 87 | enableNushellIntegration = false; 88 | enableScDaemon = false; 89 | }; 90 | } 91 | -------------------------------------------------------------------------------- /nix/home/lazygit.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | programs.lazygit = { 5 | enable = true; 6 | 7 | settings = { 8 | gui = { 9 | commitHashLength = 0; 10 | splitDiff = "auto"; 11 | nerdFontsVersion = "3"; 12 | scrollHeight = 12; 13 | sidePanelWidth = 0.17; 14 | showListFooter = false; 15 | showBottomLine = false; 16 | showRandomTip = false; 17 | showFileTree = false; 18 | showCommandLog = false; 19 | }; 20 | 21 | update.method = "never"; 22 | promptToReturnFromSubprocess = false; 23 | 24 | keybinding = { 25 | universal = { 26 | prevItem-alt = "i"; 27 | nextItem-alt = "k"; 28 | scrollLeft = "J"; 29 | scrollRight = "L"; 30 | prevBlock-alt = "j"; 31 | nextBlock-alt = "l"; 32 | scrollUpMain-alt1 = "I"; 33 | scrollDownMain-alt1 = "K"; 34 | }; 35 | files = { 36 | commitChangesWithEditor = "c"; 37 | commitChanges = "C"; 38 | ignoreFile = "h"; 39 | amendLastCommit = "A"; 40 | stashAllChanges = "S"; 41 | }; 42 | }; 43 | 44 | git = { 45 | mainBranches = [ 46 | "master" 47 | "main" 48 | "production" 49 | ]; 50 | skipHookPrefix = "--wip--"; 51 | paging = { 52 | colorArg = "always"; 53 | pager = "delta --dark --paging=never"; 54 | }; 55 | }; 56 | }; 57 | }; 58 | } 59 | -------------------------------------------------------------------------------- /nix/home/mangohud.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | { 4 | programs.mangohud = { 5 | enable = true; 6 | settings = { 7 | # need to override the stylix font size here 8 | font_size = lib.mkForce 24; 9 | font_size_text = lib.mkForce 24; 10 | font_scale = lib.mkForce 0.6; 11 | 12 | position = "bottom-left"; 13 | horizontal_stretch = 0; 14 | hud_no_margin = 1; 15 | hud_compact = 1; 16 | horizontal = 1; 17 | cpu_mhz = 1; 18 | gpu_core_clock = 1; 19 | ram = 1; 20 | swap = 1; 21 | frametime = 0; 22 | frame_timing = 0; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /nix/home/mime.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | let 4 | eog = "org.gnome.eog.desktop"; 5 | file-roller = "org.gnome.FileRoller.desktop"; 6 | basic-text-editor = "org.xfce.mousepad.desktop"; 7 | mpv = "mpv.desktop"; 8 | zathura = "org.pwmt.zathura.desktop"; 9 | browser = "firefox-devedition.desktop"; 10 | protontricks = "protontricks-launch.desktop"; 11 | in 12 | { 13 | xdg.mime.enable = true; 14 | xdg.mimeApps.enable = true; 15 | 16 | xdg.mimeApps.defaultApplications = { 17 | "application/json" = [ basic-text-editor ]; 18 | "application/pdf" = [ zathura ]; 19 | "application/x-extension-htm" = [ browser ]; 20 | "application/x-extension-html" = [ browser ]; 21 | "application/x-extension-shtml" = [ browser ]; 22 | "application/x-extension-xht" = [ browser ]; 23 | "application/x-extension-xhtml" = [ browser ]; 24 | "application/xhtml+xml" = [ browser ]; 25 | "application/zip" = [ file-roller ]; 26 | "audio/flac" = [ mpv ]; 27 | "audio/mpeg" = [ mpv ]; 28 | "audio/x-aiff" = [ mpv ]; 29 | "image/gif" = [ mpv ]; 30 | "image/jpeg" = [ eog ]; 31 | "image/jpg" = [ eog ]; 32 | "image/png" = [ eog ]; 33 | "image/webp" = [ eog ]; 34 | "image/x-portable-pixmap" = [ eog ]; 35 | "text/csv" = [ basic-text-editor ]; 36 | "text/html" = [ browser ]; 37 | "text/plain" = [ basic-text-editor ]; 38 | "text/xml" = [ basic-text-editor ]; 39 | "video/mp4" = [ mpv ]; 40 | "video/x-matroska" = [ mpv ]; 41 | "x-scheme-handler/chrome" = [ browser ]; 42 | "x-scheme-handler/http" = [ browser ]; 43 | "x-scheme-handler/https" = [ browser ]; 44 | }; 45 | 46 | xdg.mimeApps.associations.added = { 47 | "application/x-extension-htm" = [ browser ]; 48 | "application/x-extension-html" = [ browser ]; 49 | "application/x-extension-shtml" = [ browser ]; 50 | "application/x-extension-xht" = [ browser ]; 51 | "application/x-extension-xhtml" = [ browser ]; 52 | "application/x-msdownload" = [ protontricks ]; 53 | "application/xhtml+xml" = [ browser ]; 54 | "text/html" = [ browser ]; 55 | "x-scheme-handler/chrome" = [ browser ]; 56 | "x-scheme-handler/http" = [ browser ]; 57 | "x-scheme-handler/https" = [ browser ]; 58 | }; 59 | } 60 | -------------------------------------------------------------------------------- /nix/home/mpv/config.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | imports = [ 5 | ./script-all-audio.nix 6 | ./script-append-url.nix 7 | ./script-cut-video.nix 8 | ]; 9 | 10 | programs.mpv = { 11 | enable = true; 12 | bindings = { 13 | "MBTN_LEFT" = "cycle pause"; 14 | "WHEEL_RIGHT" = "seek 10"; 15 | "WHEEL_LEFT" = "seek -10"; 16 | "WHEEL_DOWN" = "add volume -2"; 17 | "WHEEL_UP" = "add volume 2"; 18 | "UP" = "add volume 2"; 19 | "DOWN" = "add volume -2"; 20 | "V" = "cycle sub"; 21 | "L" = "cycle-values loop-file inf no"; 22 | "h" = "vf toggle hflip"; 23 | }; 24 | 25 | config = { 26 | osd-scale-by-window = false; 27 | osd-bar = false; 28 | osd-scale = 0.7; 29 | sub-scale = 0.5; 30 | loop = true; 31 | mute = true; 32 | volume = 50; 33 | autofit-larger = "1200x900"; 34 | }; 35 | 36 | scriptOpts = { 37 | osc = { 38 | scalefullscreen = 0.8; 39 | }; 40 | }; 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /nix/home/mpv/script-append-url.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | home.file.".config/mpv/scripts/append-url.lua".text = # lua 5 | '' 6 | -- Author: donmaiq 7 | -- Appends url from clipboard to the playlist 8 | -- Requires xclip 9 | 10 | -- detect_platform() and get_clipboard() copied and edited from: 11 | -- https://github.com/rossy/mpv-repl 12 | -- © 2016, James Ross-Gowan 13 | -- 14 | -- Permission to use, copy, modify, and/or distribute this software for any 15 | -- purpose with or without fee is hereby granted, provided that the above 16 | -- copyright notice and this permission notice appear in all copies. 17 | 18 | local utils = require("mp.utils") 19 | local msg = require("mp.msg") 20 | 21 | --handles the subprocess response table and return clipboard if it was a success 22 | local function handleres(res, args, primary) 23 | if not res.error and res.status == 0 then 24 | return res.stdout 25 | else 26 | --if clipboard failed try primary selection 27 | if not primary then 28 | append(true) 29 | return nil 30 | end 31 | msg.error("There was an error getting clipboard: ") 32 | msg.error(" Status: " .. (res.status or "")) 33 | msg.error(" Error: " .. (res.error or "")) 34 | msg.error(" stdout: " .. (res.stdout or "")) 35 | msg.error("args: " .. utils.to_string(args)) 36 | return nil 37 | end 38 | end 39 | 40 | --main function 41 | local function append() 42 | local args = { "xclip", "-selection", primary and "primary" or "clipboard", "-out" } 43 | local clipboard = handleres(utils.subprocess({ args = args, cancellable = false }), args, primary) 44 | if clipboard then 45 | mp.commandv("loadfile", clipboard, "append-play") 46 | mp.osd_message("URL appended: " .. clipboard) 47 | msg.info("URL appended: " .. clipboard) 48 | end 49 | end 50 | 51 | mp.add_key_binding("ctrl+v", "appendURL", append) 52 | ''; 53 | } 54 | -------------------------------------------------------------------------------- /nix/home/mpv/script-cut-video.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | home.file.".config/mpv/scripts/cut-video.lua".text = # lua 5 | '' 6 | local mp = require("mp") 7 | 8 | local cuts = {} 9 | 10 | local function timestamp(duration) 11 | local hours = duration / 3600 12 | local minutes = duration % 3600 / 60 13 | local seconds = duration % 60 14 | return string.format("%02d:%02d:%02.03f", hours, minutes, seconds) 15 | end 16 | 17 | local function add_mark() 18 | local pos = mp.get_property_number("time-pos") 19 | table.insert(cuts, pos) 20 | if #cuts % 2 == 0 then 21 | mp.osd_message(string.format("END: %s", timestamp(pos))) 22 | else 23 | mp.osd_message(string.format("START: %s", timestamp(pos))) 24 | end 25 | end 26 | 27 | local function shell_quote(input) 28 | if string.find(input, "'") then 29 | return ' "' .. input .. '" ' 30 | else 31 | return " '" .. input .. "' " 32 | end 33 | end 34 | 35 | local function clear_marks() 36 | cuts = {} 37 | mp.osd_message("Cleared marks") 38 | end 39 | 40 | local function create_clip() 41 | if #cuts == 0 then 42 | mp.osd_message("Missing marks") 43 | return 44 | end 45 | 46 | if #cuts % 2 ~= 0 then 47 | mp.osd_message("Mismatched marks") 48 | return 49 | end 50 | 51 | local input_path = mp.get_property("stream-path") 52 | local shell_cmd = "bun run $HOME/Dev/videoman/src/index.ts cut --notify" .. shell_quote(input_path) 53 | for i, k in pairs(cuts) do 54 | shell_cmd = shell_cmd .. shell_quote(k) 55 | end 56 | 57 | local cmd = { "zsh", "-c", shell_cmd } 58 | 59 | mp.osd_message("Rendering clip...", 9999) 60 | mp.set_property("pause", "yes") 61 | 62 | mp.command_native_async({ name = "subprocess", args = cmd, capture_stdout = false }, function(success, _, error) 63 | if success == true then 64 | mp.osd_message("Rendering clip complete", 30) 65 | else 66 | mp.osd_message(string.format("Rendering failed: %s", error), 30) 67 | end 68 | end) 69 | end 70 | 71 | mp.add_key_binding("c", add_mark) 72 | mp.add_key_binding("C", create_clip) 73 | mp.add_key_binding("b", clear_marks) 74 | ''; 75 | } 76 | -------------------------------------------------------------------------------- /nix/home/starship.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | programs.starship = { 5 | enable = true; 6 | 7 | enableZshIntegration = false; 8 | enableTransience = false; 9 | enableNushellIntegration = false; 10 | enableIonIntegration = false; 11 | enableFishIntegration = false; 12 | enableBashIntegration = false; 13 | 14 | settings = { 15 | time = { 16 | disabled = true; 17 | }; 18 | 19 | character = { 20 | error_symbol = "[✗](bold red)"; 21 | success_symbol = "[:](bold green)"; 22 | }; 23 | 24 | package = { 25 | disabled = true; 26 | }; 27 | 28 | gcloud = { 29 | disabled = true; 30 | }; 31 | 32 | git_status = { 33 | disabled = false; 34 | }; 35 | 36 | git_commit = { 37 | disabled = false; 38 | }; 39 | 40 | nix_shell = { 41 | impure_msg = " [impure](bold red)"; 42 | pure_msg = " [pure](bold green)"; 43 | unknown_msg = " [unknown](bold yellow)"; 44 | format = "via [❄️$state( \($name\))](bold blue) "; 45 | }; 46 | 47 | custom = { 48 | gwip = { 49 | command = "git log -n 1 2>/dev/null | rg --quiet --count --regexp \"--wip--\" && echo '[WORK IN PROGRESS]'"; 50 | when = "git rev-parse --is-inside-work-tree 2>/dev/null"; 51 | format = "[$output](bold red)"; 52 | }; 53 | }; 54 | }; 55 | }; 56 | } 57 | -------------------------------------------------------------------------------- /nix/home/xresources.nix: -------------------------------------------------------------------------------- 1 | { config-vars, ... }: 2 | 3 | { 4 | xresources = { 5 | path = "${config-vars.home-dir}/.config/Xresources"; 6 | extraConfig = '' 7 | #define _color0 ${config-vars.theme.base00} 8 | #define _color1 ${config-vars.theme.base0E} 9 | #define _color2 ${config-vars.theme.base08} 10 | #define _color3 ${config-vars.theme.base0B} 11 | #define _color4 ${config-vars.theme.color4} 12 | #define _color5 ${config-vars.theme.base0F} 13 | #define _color6 ${config-vars.theme.color4} 14 | #define _color7 ${config-vars.theme.base07} 15 | #define _color8 ${config-vars.theme.base02} 16 | #define _color9 ${config-vars.theme.base0E} 17 | #define _color10 ${config-vars.theme.base08} 18 | #define _color11 ${config-vars.theme.base0B} 19 | #define _color12 ${config-vars.theme.color4} 20 | #define _color13 ${config-vars.theme.base0F} 21 | #define _color14 ${config-vars.theme.color4} 22 | #define _color15 ${config-vars.theme.base05} 23 | #define _color16 ${config-vars.theme.base0C} 24 | 25 | #define _cursorColor ${config-vars.theme.cursor} 26 | #define _background ${config-vars.theme.base00} 27 | #define _foreground ${config-vars.theme.base05} 28 | ''; 29 | 30 | properties = { 31 | "st.font" = "Iosevka Nerd Font Mono:pixelsize=16:antialias=true:autohint=false:fonthashint=true"; 32 | "st.cwscale" = "1.0"; 33 | "st.chscale" = "0.90"; 34 | "st.borderpx" = "11"; 35 | "st.color0" = "_color0"; 36 | "st.color1" = "_color1"; 37 | "st.color2" = "_color2"; 38 | "st.color3" = "_color3"; 39 | "st.color4" = "_color4"; 40 | "st.color5" = "_color5"; 41 | "st.color6" = "_color6"; 42 | "st.color7" = "_color7"; 43 | "st.color8" = "_color8"; 44 | "st.color9" = "_color9"; 45 | "st.color10" = "_color10"; 46 | "st.color11" = "_color11"; 47 | "st.color12" = "_color12"; 48 | "st.color13" = "_color13"; 49 | "st.color14" = "_color14"; 50 | "st.color15" = "_color15"; 51 | "st.cursorColor" = "_cursorColor"; 52 | "st.background" = "_background"; 53 | "st.foreground" = "_foreground"; 54 | }; 55 | }; 56 | } 57 | -------------------------------------------------------------------------------- /nix/home/zathura.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | 3 | { 4 | programs.zathura = { 5 | enable = true; 6 | mappings = { 7 | "j" = "scroll left"; 8 | "i" = "scroll up"; 9 | "k" = "scroll down"; 10 | 11 | "K" = "scroll half-down"; 12 | "I" = "scroll half-up"; 13 | 14 | "" = "navigate next"; 15 | "" = "navigate previous"; 16 | }; 17 | 18 | options = { 19 | "selection-clipboard" = "clipboard"; 20 | "statusbar-home-tilde" = true; 21 | "guioptions" = "vh"; 22 | "scroll-step" = 100; 23 | "scroll-page-aware" = true; 24 | "page-padding" = 8; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /nix/hosts/grace/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | # Do not modify this file! It was generated by ‘nixos-generate-config’ 2 | # and may be overwritten by future invocations. Please make changes 3 | # to /etc/nixos/configuration.nix instead. 4 | { 5 | config, 6 | lib, 7 | pkgs, 8 | modulesPath, 9 | ... 10 | }: 11 | 12 | { 13 | imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; 14 | 15 | boot.initrd.availableKernelModules = [ 16 | "nvme" 17 | "xhci_pci" 18 | "ahci" 19 | "usb_storage" 20 | "usbhid" 21 | "sd_mod" 22 | ]; 23 | boot.initrd.kernelModules = [ "dm-snapshot" ]; 24 | boot.kernelModules = [ 25 | "kvm-amd" 26 | "snd_virmidi" 27 | ]; 28 | boot.extraModulePackages = [ ]; 29 | 30 | fileSystems."/" = { 31 | device = "/dev/disk/by-uuid/a2325fd9-da29-4e34-9c93-fc68e0b8f6ff"; 32 | fsType = "ext4"; 33 | }; 34 | 35 | fileSystems."/boot" = { 36 | device = "/dev/disk/by-label/nixos-boot"; 37 | fsType = "vfat"; 38 | options = [ 39 | "fmask=0077" 40 | "dmask=0077" 41 | ]; 42 | }; 43 | 44 | swapDevices = [ { device = "/dev/disk/by-uuid/990a8fc4-e619-4e21-91a9-0a27d766fa9c"; } ]; 45 | 46 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 47 | # (the default) this is the recommended approach. When using systemd-networkd it's 48 | # still possible to use this option, but it's recommended to use it in conjunction 49 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`. 50 | networking.useDHCP = lib.mkDefault true; 51 | # networking.interfaces.enp12s0.useDHCP = lib.mkDefault true; 52 | # networking.interfaces.wlp13s0.useDHCP = lib.mkDefault true; 53 | 54 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 55 | hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 56 | } 57 | -------------------------------------------------------------------------------- /nix/hosts/grace/home.nix: -------------------------------------------------------------------------------- 1 | { lib, config-vars, ... }: 2 | 3 | let 4 | fingerprint = { 5 | # BenQ ZOWIE XL LCD 6 | "DP-0" = 7 | "00ffffffffffff0009d1777f01010101031f0104a53c22783fa265a454519d26105054a56b80d1c081c081008180a9c0b30081bc0101023a801871382d40582c450056502100001e000000ff0045424d314d3030353035534c30000000fd0030f0ffff3c010a202020202020000000fc005a4f57494520584c204c43440a012b020318f14b010203040590111213141f2309070783010000fe5b80a0703835403020350056502100001a866f80a0703840403020350056502100001a5a8780a070384d403020350056502100001a23e88078703887401c20980c56502100001a9cc700085200a0407490370056502100001c00000000000000000000000000b8"; 8 | # LG Electronics LG ULTRAGEAR 9 | "HDMI-0" = 10 | "00ffffffffffff001e6d025c73f6000008210103803c2278eaab45a456509e27125054210800d1c00101010101010101010101010101288380a0703829403020350058542100001a023a801871382d40582c450058542100001a000000fd0030901eaa22000a202020202020000000fc004c4720554c545241474541520a0116020328f1230907074b010203041112131f903f4065030c0010006d1a00000205309000044a2e4a2e866f80a0703840403020350058542100001afe5b80a0703835403020350058542100001a000000ff000a202020202020202020202020000000000000000000000000000000000000000000000000000000000000000000f5"; 11 | }; 12 | 13 | main-config = { 14 | "DP-0" = { 15 | primary = true; 16 | enable = true; 17 | 18 | crtc = 0; 19 | mode = "1920x1080"; 20 | position = "1920x0"; 21 | rate = "240.00"; 22 | }; 23 | "HDMI-0" = { 24 | enable = true; 25 | 26 | crtc = 0; 27 | mode = "1920x1080"; 28 | position = "0x0"; 29 | rate = "144.00"; 30 | }; 31 | }; 32 | in 33 | { 34 | imports = [ ../../home/general.nix ]; 35 | 36 | home.stateVersion = "24.05"; 37 | 38 | programs.autorandr.profiles."00-main" = { 39 | inherit fingerprint; 40 | config = main-config; 41 | 42 | hooks.postswitch = '' 43 | killall gpu-screen-recorder 44 | ''; 45 | }; 46 | 47 | programs.autorandr.profiles."43-stretched" = { 48 | inherit fingerprint; 49 | config = lib.recursiveUpdate main-config { 50 | "DP-0" = { 51 | mode = "1280x1024"; 52 | }; 53 | }; 54 | 55 | hooks.postswitch = '' 56 | bash ${config-vars.dotfiles-dir}/scripts/gamemode.sh 57 | killall gpu-screen-recorder 58 | ''; 59 | }; 60 | } 61 | -------------------------------------------------------------------------------- /nix/secrets.nix: -------------------------------------------------------------------------------- 1 | let 2 | jayden = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAHPNQGmdC7xUlvrlv1IpDlcV3JYAT4EO7o4EagtmtmI"; 3 | users = [ jayden ]; 4 | 5 | grace = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFJ07LC6Oii1E0RYGbDEZcnq1WvB4rw6CF6hU4d87tPu"; 6 | systems = [ grace ]; 7 | in 8 | { 9 | "secrets/mpv-secrets.lua.age".publicKeys = users ++ systems; 10 | "secrets/redshift.conf.age".publicKeys = users ++ systems; 11 | "secrets/env.age".publicKeys = users ++ systems; 12 | "secrets/ssh-config.age".publicKeys = users ++ systems; 13 | } 14 | -------------------------------------------------------------------------------- /nix/secrets/env.age: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/nix/secrets/env.age -------------------------------------------------------------------------------- /nix/secrets/mpv-secrets.lua.age: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/nix/secrets/mpv-secrets.lua.age -------------------------------------------------------------------------------- /nix/secrets/redshift.conf.age: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/nix/secrets/redshift.conf.age -------------------------------------------------------------------------------- /nix/secrets/ssh-config.age: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/nix/secrets/ssh-config.age -------------------------------------------------------------------------------- /nix/theme.nix: -------------------------------------------------------------------------------- 1 | { 2 | base00 = "#202022"; 3 | base01 = "#2d2d30"; 4 | base02 = "#3a3a3e"; 5 | base03 = "#48484d"; 6 | base04 = "#57575c"; 7 | base05 = "#d3c7bb"; 8 | base06 = "#ddd0b4"; 9 | base07 = "#e7dabe"; 10 | base08 = "#a7c080"; 11 | base09 = "#d699b6"; 12 | base0A = "#83c092"; 13 | base0B = "#dbbc7f"; 14 | base0C = "#e69875"; 15 | base0D = "#7fbbb3"; 16 | base0E = "#e67e80"; 17 | base0F = "#d699b6"; 18 | 19 | color4 = "#95d1c9"; 20 | cursor = "#b5b1a4"; 21 | } 22 | -------------------------------------------------------------------------------- /rofi/drun.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | font: "Sans 11"; 3 | show-icons: true; 4 | display-drun: ""; 5 | drun-display-format: "{name}"; 6 | disable-history: false; 7 | sidebar-mode: false; 8 | } 9 | 10 | @import "base.rasi" 11 | -------------------------------------------------------------------------------- /rofi/level1.svg: -------------------------------------------------------------------------------- 1 | 2 | 15 | 17 | 35 | 40 | 41 | -------------------------------------------------------------------------------- /rofi/level2.svg: -------------------------------------------------------------------------------- 1 | 2 | 15 | 17 | 35 | 40 | 41 | -------------------------------------------------------------------------------- /rofi/level3.svg: -------------------------------------------------------------------------------- 1 | 2 | 15 | 17 | 35 | 40 | 41 | -------------------------------------------------------------------------------- /rofi/level4.svg: -------------------------------------------------------------------------------- 1 | 2 | 15 | 17 | 35 | 40 | 41 | -------------------------------------------------------------------------------- /rofi/level5.svg: -------------------------------------------------------------------------------- 1 | 2 | 15 | 17 | 35 | 40 | 41 | -------------------------------------------------------------------------------- /rofi/links.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | /* font: "JetBrainsMono Nerd Font Mono 11"; */ 3 | font: "Iosevka Nerd Font Mono 13"; 4 | disable-history: true; 5 | tokenize: true; 6 | sidebar-mode: false; 7 | scroll-method: 1; 8 | } 9 | 10 | @import "base.rasi" 11 | //; 12 | 13 | entry { 14 | placeholder: ""; 15 | } 16 | 17 | listview { 18 | columns: 1; 19 | } 20 | 21 | element { 22 | padding: 1% 0% 2% 0%; 23 | } 24 | 25 | element-icon { 26 | size: 0px; 27 | } 28 | -------------------------------------------------------------------------------- /rofi/liquidctlmenu: -------------------------------------------------------------------------------- 1 | Level 1icon/home/jayden/.config/dotfiles/rofi/level1.svg 2 | Level 2icon/home/jayden/.config/dotfiles/rofi/level2.svg 3 | Level 3icon/home/jayden/.config/dotfiles/rofi/level3.svg 4 | Level 4icon/home/jayden/.config/dotfiles/rofi/level4.svg 5 | Level 5icon/home/jayden/.config/dotfiles/rofi/level5.svg 6 | -------------------------------------------------------------------------------- /rofi/lock.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /rofi/logout.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /rofi/power.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | font: "Sans 11"; 3 | show-icons: true; 4 | disable-history: true; 5 | fullscreen: false; 6 | tokenize: true; 7 | hide-scrollbar: true; 8 | sidebar-mode: false; 9 | scroll-method: 0; 10 | } 11 | 12 | @import "base.rasi" 13 | //; 14 | 15 | window { 16 | height: 200px; 17 | } 18 | 19 | mainbox { 20 | children: [ listview ]; 21 | } 22 | -------------------------------------------------------------------------------- /rofi/power.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /rofi/powermenu: -------------------------------------------------------------------------------- 1 | logouticon/home/jayden/.config/dotfiles/rofi/logout.svg 2 | lockicon/home/jayden/.config/dotfiles/rofi/lock.svg 3 | rebooticon/home/jayden/.config/dotfiles/rofi/reboot.svg 4 | shutdownicon/home/jayden/.config/dotfiles/rofi/power.svg 5 | -------------------------------------------------------------------------------- /rofi/reboot.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /rofi/screenshot.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | font: "Sans 11"; 3 | show-icons: true; 4 | display-drun: ""; 5 | drun-display-format: "{name}"; 6 | 7 | disable-history: true; 8 | tokenize: true; 9 | sidebar-mode: false; 10 | scroll-method: 1; 11 | } 12 | 13 | @import "base.rasi" 14 | //; 15 | 16 | window { 17 | height: 113px; 18 | width: 570px; 19 | } 20 | 21 | inputbar { 22 | margin: 14px 0 0 40px; 23 | } 24 | 25 | entry { 26 | placeholder: ""; 27 | } 28 | -------------------------------------------------------------------------------- /scripts/auto-cool.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | while true; do 4 | coolant_temp=$(liquidctl --match Aquacomputer status --json | jq -c '.[0].status | .[] | select(.key | contains("Sensor 2")) | .value') 5 | if [ "$(echo "$coolant_temp >= 35.0" | bc -l)" = "1" ]; then 6 | ~/.config/dotfiles/scripts/liquidctl.sh "3" "true" 7 | fi 8 | 9 | if [ "$(echo "$coolant_temp >= 37.0" | bc -l)" = "1" ]; then 10 | ~/.config/dotfiles/scripts/liquidctl.sh "4" "true" 11 | fi 12 | 13 | if [ "$(echo "$coolant_temp >= 40.0" | bc -l)" = "1" ]; then 14 | ~/.config/dotfiles/scripts/liquidctl.sh "5" "true" 15 | fi 16 | 17 | sleep 60 18 | done 19 | -------------------------------------------------------------------------------- /scripts/autostart.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | msg () { 4 | echo "[autostart] [$(date)] $1" 5 | } 6 | 7 | shopt -s expand_aliases 8 | alias rga='rg --color=never >/dev/null' 9 | 10 | exec > /tmp/autostart.log 2>&1 11 | 12 | nitrogen --restore & 13 | 14 | ps_ax="/tmp/autostart_psax"; 15 | ps -ax > "$ps_ax" 16 | 17 | if ! rga "picom --config $DOT/misc/picom.conf" "$ps_ax"; then 18 | msg "starting picom" 19 | picom --config "$DOT/misc/picom.conf" & 20 | fi 21 | 22 | if ! rga "/bin/redshift" "$ps_ax"; then 23 | msg "starting redshift" 24 | redshift & 25 | fi 26 | 27 | if ! rga "/bin/thunar --daemon" "$ps_ax"; then 28 | msg "starting thunar daemon" 29 | thunar --daemon & 30 | fi 31 | 32 | if ! rga "/share/carla/carla" "$ps_ax"; then 33 | msg "starting carla" 34 | carla "$HOME/.config/Carla.carxp" & 35 | fi 36 | 37 | if ! rga "notifications-dbus-mon" "$ps_ax"; then 38 | msg "starting notifications-dbus-mon" 39 | notifications-dbus-mon & 40 | fi 41 | 42 | if [ "$HOSTNAME" = "grace" ]; then 43 | if ! rga "bash .*auto-cool.sh" "$ps_ax"; then 44 | msg "starting auto-cool script" 45 | "$DOT/scripts/auto-cool.sh" & 46 | fi 47 | 48 | if ! rga "sensors-mon" "$ps_ax"; then 49 | # we'll sleep for a couple seconds so that 50 | # sensors-mon starts up after carla and goes into 51 | # the right place in the tiling window manager 52 | # hierarchy 53 | sleep 2 54 | 55 | msg "starting sensors-mon" 56 | ghostty --x11-instance-name="sensors-mon" -e sensors-mon 2>/dev/null & 57 | fi 58 | fi 59 | -------------------------------------------------------------------------------- /scripts/bt-battery.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | # if bluetooth is off we need to exit early because otherwise 4 | # the bluetoothctl command hangs forever 5 | active="$(systemctl status bluetooth | rg 'Active: active')" 6 | if [ "$active" = "" ]; then 7 | exit 0 8 | fi 9 | 10 | device=$(bluetoothctl devices Connected | rg "^Device (.*?) $1$" --only-matching --replace='$1' --color=never) 11 | if [ "$device" != "" ]; then 12 | bluetoothctl info "$device" | rg "Battery Percentage.*\((\d+)\)" --only-matching --replace='$1' --color=never 13 | fi 14 | -------------------------------------------------------------------------------- /scripts/deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$1" = "--full" ]; then 4 | rm -rf ~/.config/npm 2>/dev/null 5 | rm -rf ~/.config/nvim 2>/dev/null 6 | rm -rf ~/.config/rofi 2>/dev/null 7 | rm -rf ~/.config/zsh 2>/dev/null 8 | 9 | mkdir -p ~/.config/npm 10 | mkdir -p ~/.config/rofi 11 | mkdir -p ~/.config/zsh 12 | 13 | mkdir -p ~/.local/share/applications 14 | mkdir -p ~/.local/bin 15 | 16 | # /home cleanup directories 17 | mkdir -p ~/.cache/nv 18 | mkdir -p ~/.config/grip 19 | mkdir -p ~/.config/gtk-2.0 20 | mkdir -p ~/.config/java 21 | mkdir -p ~/.config/jupyter 22 | mkdir -p ~/.config/npm 23 | mkdir -p ~/.config/nvim 24 | mkdir -p ~/.local/share/cargo 25 | mkdir -p ~/.local/share/gnupg 26 | mkdir -p ~/.local/share/gradle 27 | mkdir -p ~/.local/share/rustup 28 | mkdir -p ~/.local/share/zsh 29 | fi 30 | 31 | cd ~ || exit 32 | 33 | # symlinked folders need to be removed before linking 34 | rm -rf ~/.config/awesome 35 | rm -rf ~/.config/nvim/lua 36 | rm -rf ~/.config/nvim/queries 37 | rm -rf ~/.config/nvim/after 38 | rm -rf ~/.config/nvim/init.lua 39 | rm -rf ~/.config/nvim/lazy-lock.json 40 | 41 | ln -fs ~/.config/dotfiles/vim/lua ~/.config/nvim/lua 42 | ln -fs ~/.config/dotfiles/vim/queries ~/.config/nvim/queries 43 | ln -fs ~/.config/dotfiles/vim/after ~/.config/nvim/after 44 | ln -fs ~/.config/dotfiles/vim/init.lua ~/.config/nvim/ 45 | ln -fs ~/.config/dotfiles/vim/lazy-lock.json ~/.config/nvim/ 46 | ln -fs ~/.config/dotfiles/awesome/theme ~/.config/awesome/theme 47 | ln -fs ~/.config/dotfiles/awesome/rc.lua ~/.config/awesome/ 48 | ln -fs ~/.config/dotfiles/rofi/base.rasi ~/.config/rofi/ 49 | ln -fs ~/.config/dotfiles/rofi/drun.rasi ~/.config/rofi/ 50 | ln -fs ~/.config/dotfiles/rofi/power.rasi ~/.config/rofi/ 51 | ln -fs ~/.config/dotfiles/rofi/screenshot.rasi ~/.config/rofi/ 52 | ln -fs ~/.config/dotfiles/rofi/links.rasi ~/.config/rofi/ 53 | ln -fs ~/.config/dotfiles/rofi/eq.rasi ~/.config/rofi/ 54 | ln -fs ~/.config/dotfiles/zsh/zlogout ~/.config/zsh/.zlogout 55 | ln -fs ~/.config/dotfiles/zsh/zshrc ~/.config/zsh/.zshrc 56 | 57 | echo 58 | echo "Finished deployment" 59 | -------------------------------------------------------------------------------- /scripts/gamemode.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | accel_prop="libinput Accel Speed" 4 | accel_speed="-0.80" 5 | 6 | declare -a mice=("Razer Razer Viper V2 Pro" "WL WLMOUSE BEAST X PRO 8K RECEIVER" "2.4G Wireless Mouse") 7 | 8 | for mouse in "${mice[@]}"; do 9 | for id in $(xinput | rg "$mouse" | rg "pointer" | rg "id=(\d+)" --color=never --only-matching --replace='$1'); do 10 | xinput --list-props "$id" | rg "$accel_prop" >/dev/null 2>&1 \ 11 | && echo "xinput --set-prop $id $accel_prop $accel_speed" \ 12 | && xinput --set-prop "$id" "$accel_prop" "$accel_speed" 13 | done 14 | done 15 | 16 | if [ "$1" = "--mouse-only" ]; then 17 | exit 0 18 | fi 19 | 20 | killall picom 21 | "$DOT/scripts/liquidctl.sh" 4 22 | sleep 5; notify-send --urgency=critical "gpu-screen-recorder" "Enable GPU screen recorder" 23 | -------------------------------------------------------------------------------- /scripts/horn.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | horn="" 4 | skin="" 5 | if [[ "${1:t:e}" == "ogg" ]]; then 6 | horn="$1" 7 | skin="$2" 8 | else 9 | horn="$2" 10 | skin="$1" 11 | fi 12 | 13 | new_skin="${skin:r}_${horn:t:r}.zip" 14 | work_dir=/tmp/__horn__temp/workdir 15 | 16 | mkdir -p "$work_dir" 17 | cd "$work_dir" 18 | unzip "$skin" 19 | ffmpeg -i "$horn" -ac 1 ./horn.ogg 20 | zip "$new_skin" ./* 21 | cd /tmp 22 | rm -rf "$work_dir" 23 | -------------------------------------------------------------------------------- /scripts/liquidctl.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | level_file="/tmp/liquidctl_level" 4 | if [ ! -f "$level_file" ]; then 5 | echo -n "1" > "$level_file" 6 | fi 7 | 8 | fan1="fan1" 9 | fan2="fan3" 10 | pump="fan2" 11 | level="$1" 12 | auto="$2" 13 | current_level=$(cat "$level_file") 14 | 15 | if [ "$auto" = "true" ]; then 16 | if [ "$(echo "$current_level >= $level" | bc -l)" = "1" ]; then 17 | exit 0 18 | fi 19 | 20 | notify-send -u critical "liquidctl" "WARNING: Cooling level was set automatically" 21 | fi 22 | 23 | case "$level" in 24 | 1) liquidctl --match Aquacomputer set "$fan1" speed 43 && \ 25 | liquidctl --match Aquacomputer set "$fan2" speed 42 && \ 26 | liquidctl --match Aquacomputer set "$pump" speed 20 27 | ;; 28 | 2) liquidctl --match Aquacomputer set "$fan1" speed 55 && \ 29 | liquidctl --match Aquacomputer set "$fan2" speed 55 && \ 30 | liquidctl --match Aquacomputer set "$pump" speed 35 31 | ;; 32 | 3) liquidctl --match Aquacomputer set "$fan1" speed 63 && \ 33 | liquidctl --match Aquacomputer set "$fan2" speed 63 && \ 34 | liquidctl --match Aquacomputer set "$pump" speed 35 35 | ;; 36 | 4) liquidctl --match Aquacomputer set "$fan1" speed 72 && \ 37 | liquidctl --match Aquacomputer set "$fan2" speed 72 && \ 38 | liquidctl --match Aquacomputer set "$pump" speed 35 39 | ;; 40 | 5) liquidctl --match Aquacomputer set "$fan1" speed 100 && \ 41 | liquidctl --match Aquacomputer set "$fan2" speed 100 && \ 42 | liquidctl --match Aquacomputer set "$pump" speed 35 43 | ;; 44 | esac 45 | 46 | echo -n "$level" > "$level_file" 47 | notify-send "liquidctl" "Cooling set to level $level" 48 | -------------------------------------------------------------------------------- /scripts/rofi.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | [ -e "$HOME/.config/ENV" ] && . "$HOME"/.config/ENV 4 | 5 | if [ "$STRIPE_COLOR" != "" ] && [ "$BORDER_COLOR" != "" ]; then 6 | rofi_theme="* { stripe: $STRIPE_COLOR; border: $BORDER_COLOR; }" 7 | else 8 | rofi_theme="" 9 | fi 10 | 11 | if [ "$1" = "--power_fast" ]; then 12 | case $2 in 13 | logout) echo 'awesome.quit()' | awesome-client ;; 14 | lock) dm-tool lock ;; 15 | reboot) shutdown --reboot now ;; 16 | shutdown) shutdown --poweroff now ;; 17 | esac 18 | fi 19 | 20 | if [ "$1" = "--normal" ]; then 21 | rofi -modi drun -show drun -drun-show-actions -theme drun -theme-str "$rofi_theme" 22 | elif [ "$1" = "--window" ]; then 23 | rofi -modi window -show window -theme drun -theme-str "$rofi_theme" 24 | elif [ "$1" = "--power" ]; then 25 | result=$(< "$HOME/.config/dotfiles/rofi/powermenu" rofi -dmenu -i -theme power -theme-str "$rofi_theme") 26 | 27 | case $result in 28 | logout) echo 'awesome.quit()' | awesome-client ;; 29 | lock) dm-tool lock ;; 30 | reboot) shutdown --reboot now ;; 31 | shutdown) shutdown --poweroff now ;; 32 | esac 33 | elif [ "$1" = "--liquidctl" ]; then 34 | result=$(< "$HOME/.config/dotfiles/rofi/liquidctlmenu" rofi -dmenu -i -theme power -theme-str "$rofi_theme" -theme-str "listview { columns: 5; }") 35 | case $result in 36 | "Level 1") "$HOME/.config/dotfiles/scripts/liquidctl.sh" "1" ;; 37 | "Level 2") "$HOME/.config/dotfiles/scripts/liquidctl.sh" "2" ;; 38 | "Level 3") "$HOME/.config/dotfiles/scripts/liquidctl.sh" "3" ;; 39 | "Level 4") "$HOME/.config/dotfiles/scripts/liquidctl.sh" "4" ;; 40 | "Level 5") "$HOME/.config/dotfiles/scripts/liquidctl.sh" "5" ;; 41 | esac 42 | elif [ "$1" = "--save-screenshot" ]; then 43 | result=$(rofi -dmenu -i -theme screenshot -p "file name:" -theme-str "$rofi_theme") 44 | 45 | if [ "$result" = "" ]; then 46 | notify-send "Maim" "Screenshot not saved" 47 | exit 48 | fi 49 | 50 | file="$HOME/Pictures/Screenshots/$result.png" 51 | 52 | if [ -f "$file" ]; then 53 | notify-send "Error" "File $result.png already exists" 54 | else 55 | xclip -selection clipboard -t image/png -o > "$file" 56 | notify-send -i "$file" "Maim" "Screenshot saved to $result.png" 57 | fi 58 | elif [ "$1" = "--autorandr" ]; then 59 | result=$(autorandr --list | rofi -dmenu -i -p "select profile:" -theme links -theme-str "$rofi_theme") 60 | autorandr --load "$result" 61 | fi 62 | -------------------------------------------------------------------------------- /scripts/screenshot.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | shopt -s expand_aliases 4 | alias maimselect='maim --noopengl --capturebackground --select --hidecursor' 5 | alias clip='xclip -selection c -filter' 6 | 7 | tmp_file=$(mktemp -t maimscript-XXXXXX) 8 | 9 | case "$1" in 10 | # select a region to screenshot (or click to screenshot window) 11 | --select) 12 | maimselect | clip -t image/png > "$tmp_file" 13 | notify-send -i "$tmp_file" "Maim" "Screenshot taken" 14 | ;; 15 | # scan a QR code 16 | --qr) 17 | maimselect > "$tmp_file" 18 | scanresult=$(zbarimg --quiet --raw "$tmp_file" | tr -d '\n') 19 | 20 | if [ -z "$scanresult" ]; then 21 | notify-send "Maim" "No scan data found" 22 | else 23 | echo "$scanresult" | clip 24 | notify-send -i "$tmp_file" "Maim" "$scanresult\n(copied to clipboard)" 25 | fi 26 | 27 | rm "$tmp_file" 28 | ;; 29 | --view) 30 | xclip -selection clipboard -t image/png -o > "$tmp_file.png" 31 | eog "$tmp_file.png" 32 | ;; 33 | # screenshot the entire desktop 34 | *) 35 | maim --noopengl | clip -t image/png > "$tmp_file" 36 | notify-send -i "$tmp_file" "Maim" "Screenshot taken" 37 | ;; 38 | esac 39 | 40 | rm -f "$tmp_file" 41 | -------------------------------------------------------------------------------- /scripts/shadowplay.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | gpu-screen-recorder \ 3 | -a audio-device-sink.monitor \ 4 | -a carla-source \ 5 | -ab 256 \ 6 | -ac opus \ 7 | -bm qp \ 8 | -c mp4 \ 9 | -cr limited \ 10 | -cursor yes \ 11 | -encoder gpu \ 12 | -f 60 \ 13 | -fm vfr \ 14 | -k av1 \ 15 | -q very_high \ 16 | -r 200 \ 17 | -v yes \ 18 | -w DP-0 \ 19 | -o ~/Videos/replays 2>&1 20 | -------------------------------------------------------------------------------- /scripts/st-urlhandler.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Based on: 4 | # https://github.com/LukeSmithxyz/st/blob/0af4782a47cc1b0918bdc41fb61b1a5d358f75f6/st-urlhandler 5 | 6 | urlregex='((http|https|git|ftp|ftps|ssh)://((?:\w[a-zA-Z0-9_-]*(?:(?:\.|@)\w+)+)|(localhost)|(\d+\.\d+\.\d+\.\d+))(:\d{1,5})?[-.=&?_a-zA-Z0-9#%/~]+)' 7 | pathregex='((?:\s|^)(?:~|\.|\.\.)?(?:/(?:[a-zA-Z_.-])(?:[a-zA-Z0-9_.-])*)+)' 8 | 9 | # make the script work across multiple lines and 10 | # perform a /home/ -> ~ conversion 11 | input=$(tr -d '\n' | sed "s|$HOME|~|g") 12 | 13 | while getopts "oc" o; do case "${o}" in 14 | o) 15 | matches=$(echo "$input" | rg --only-matching -N "$urlregex" | sort | uniq) 16 | [ -z "$matches" ] && exit 1 17 | chosen="$(echo "$matches" | rofi -dmenu -i -p "follow url:" -theme links)" 18 | setsid xdg-open "$chosen" >/dev/null 2>&1 & ;; 19 | c) 20 | matches=$(echo "$input" | rg --only-matching -N "$urlregex|$pathregex" | sort | uniq) 21 | [ -z "$matches" ] && exit 1 22 | echo "$matches" | rofi -dmenu -i -p "copy url:" -theme links | tr -d '\n' | xclip -selection clipboard ;; 23 | *) printf "Invalid option: -%s\\n" "$OPTARG" && exit 1 ;; 24 | esac done 25 | -------------------------------------------------------------------------------- /scripts/wallpaper/wallpaper-ico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jayden-chan/dotfiles/b1acf11bdf266f53bbc327467dfbd6944a67dfd0/scripts/wallpaper/wallpaper-ico.png -------------------------------------------------------------------------------- /scripts/wallpaper/wallpaper.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | # -t Start in thumbnail mode. 4 | # -b Do not show info bar on bottom of window. 5 | # -o Write list of all marked files to standard output when quitting. 6 | # -g Set window position and size. 7 | chosen_wall=$(fd . ${1:-.} -e png -e jpg -e jpeg -e webp | nsxiv - -t -b -o -g 1600x900) 8 | 9 | if [ "$chosen_wall" = "" ]; then 10 | echo "no image chosen" 11 | else 12 | nitrogen --set-zoom-fill --save "$chosen_wall" --head=0 2>/dev/null 13 | nitrogen --set-zoom-fill --save "$chosen_wall" --head=1 2>/dev/null 14 | cp "$chosen_wall" $DOT/nix/common/wall 15 | fi 16 | -------------------------------------------------------------------------------- /scripts/weather.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | [ -e "$HOME/.config/ENV" ] && . "$HOME"/.config/ENV 4 | 5 | city="$WEATHER_CITY" 6 | 7 | if [ "$city" = "" ]; then 8 | echo "weather city not set" 9 | exit 10 | fi 11 | 12 | if [ "$1" = "--open" ]; then xdg-open "https://cron.jayden.codes/weather/open/$city"; exit; fi 13 | 14 | if [ -z "$HA_TOKEN" ]; then 15 | indoor_temp="" 16 | else 17 | ha_temp="$(curl -X GET \ 18 | -H "authorization: Bearer $HA_TOKEN" \ 19 | -H "content-type: application/json" \ 20 | https://homeassistant.jayden.codes/api/states/sensor.temp_sensor_1_temperature \ 21 | | jq -r '.state | tonumber * 10 | round / 10')" 22 | 23 | if [ -n "$ha_temp" ] && [ "$ha_temp" != "unavailable" ]; then 24 | indoor_temp=" (${ha_temp}C)" 25 | fi 26 | fi 27 | 28 | weather=$(curl --silent "https://cron.jayden.codes/weather/short/$city") 29 | echo "$weather$indoor_temp" 30 | -------------------------------------------------------------------------------- /scripts/xcolor.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | tmp_file=$(mktemp -t xcolor-XXXXXX.png) 4 | color=$(xcolor | tr -d '\n' | xclip -selection c -filter) 5 | convert -size 75x75 "xc:$color" "$tmp_file" 6 | notify-send -i "$tmp_file" -t 3000 "Color picker" "$color" 7 | rm "$tmp_file" 8 | -------------------------------------------------------------------------------- /scripts/xf86.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | case "$1" in 4 | vol) 5 | case "$2" in 6 | up) pactl set-sink-volume @DEFAULT_SINK@ +1000 ;; 7 | down) pactl set-sink-volume @DEFAULT_SINK@ -1000 ;; 8 | mute) pactl set-sink-mute @DEFAULT_SINK@ toggle ;; 9 | esac 10 | 11 | currvol=$(pactl get-sink-volume @DEFAULT_SINK@ | rg 'front-left: \d+\s+/\s+(\d+)%' --only-matching --replace '$1') 12 | muted=$(pactl get-sink-mute @DEFAULT_SINK@ | rg ':\s+(\w+)' --only-matching --replace '$1'); \ 13 | notify-send "Volume $currvol% [muted: $muted]" -h int:value:"$currvol" -h string:synchronous:volume 14 | ;; 15 | 16 | media) 17 | dbusdomain="org.mpris.MediaPlayer2" 18 | dbus-send --print-reply --dest="$dbusdomain".spotify /org/mpris/MediaPlayer2 "$dbusdomain".Player."$2" 19 | ;; 20 | 21 | light) 22 | currbrightness=$(light | awk '{print int($1+0.5)}') 23 | case "$2" in 24 | up) 25 | [ "$currbrightness" -lt 100 ] && stepamt=10 26 | [ "$currbrightness" -lt 30 ] && stepamt=5 27 | [ "$currbrightness" -lt 10 ] && stepamt=1 28 | light -A $stepamt 29 | ;; 30 | down) 31 | [ "$currbrightness" -le 100 ] && stepamt=10 32 | [ "$currbrightness" -le 30 ] && stepamt=5 33 | [ "$currbrightness" -le 10 ] && stepamt=1 34 | light -U $stepamt 35 | ;; 36 | esac 37 | currbrightness=$(light | awk '{print int($1+0.5)}') 38 | notify-send "Brightness $currbrightness%" -h int:value:"$currbrightness" -h string:synchronous:brightness 39 | esac 40 | -------------------------------------------------------------------------------- /vim/en.utf-8.add: -------------------------------------------------------------------------------- 1 | Jayden 2 | textbf 3 | needspace 4 | subsubsection 5 | vspace 6 | longtabu 7 | baselineskip 8 | texttt 9 | hline 10 | hspace 11 | gameboard 12 | UVic 13 | inorder 14 | entires 15 | init 16 | Getters 17 | runtime 18 | spotify 19 | NullPointerException 20 | Cava 21 | Dunst 22 | cava 23 | config 24 | rofi 25 | workspace 26 | workspaces 27 | resize 28 | IoT 29 | data 30 | analytics 31 | interconnectedness 32 | incentivizes 33 | Vlacheas 34 | incentivize 35 | RobotC 36 | Okarito 37 | ENGR 38 | Logitech 39 | picom 40 | compton 41 | lockscreen 42 | Jayden 43 | planisphere 44 | Capricornus 45 | blackbody 46 | blackbody 47 | Cyrillus 48 | ESS 49 | ELW 50 | Deregister 51 | polybar 52 | refractor 53 | Refactor 54 | struct 55 | util 56 | github 57 | structs 58 | struct 59 | Facebook 60 | JSON 61 | fmt 62 | onboard 63 | api 64 | json 65 | deregister 66 | vim 67 | MySQL 68 | MariaDB 69 | PostgreSQL 70 | JavaScript 71 | struct 72 | https 73 | www 74 | org 75 | html 76 | Heroku 77 | microcontroller 78 | ATmega2560 79 | gitignore 80 | UVic 81 | SaaSquatch 82 | json 83 | screenshot 84 | metadata 85 | Valorant 86 | phishing 87 | GitHub 88 | localhost 89 | inbox 90 | REPL 91 | Gmail 92 | TLS 93 | VM 94 | LastPass 95 | autofill 96 | PID 97 | UML 98 | timestamp 99 | mutex 100 | condvar 101 | XSS 102 | Arduino 103 | arduino 104 | frontend 105 | Launchcode 106 | codebase 107 | Zustand 108 | MobX 109 | workflow 110 | refactor 111 | Gitlab 112 | backend 113 | Ninotchka 114 | filmmaking 115 | polytope 116 | tyre 117 | Pipelining 118 | pipelining 119 | flamegraph 120 | inlined 121 | flamegraphs 122 | perf 123 | IIR 124 | iir 125 | DSP 126 | tmux 127 | WebSocket 128 | WebSockets 129 | Dyspatch 130 | Redis 131 | Kubernetes 132 | GraphQL 133 | Kubedash 134 | microservice 135 | microservices 136 | scalability 137 | address 138 | routable 139 | WireShark 140 | Linksys 141 | TODO 142 | BSSID 143 | Northpointe 144 | concerningly 145 | remediating 146 | explainability 147 | Iosevka 148 | Carruth 149 | namespace 150 | 3D 151 | MERCHANTABILITY 152 | Lambertian 153 | hpp 154 | vec3 155 | albedo 156 | emittance 157 | multithreaded 158 | sanitizer 159 | sanitizers 160 | renderer 161 | suboptimal 162 | Unsatisfiable 163 | Satisfiable 164 | satisfiable 165 | unsatisfiable 166 | PipeWire 167 | Orchestrator 168 | cancelable 169 | upsert 170 | fulfilments 171 | refactor 172 | Webhook 173 | webhook 174 | Recurly 175 | frontend 176 | middleware 177 | answerer 178 | answerers 179 | BigQuery 180 | Webpack 181 | TypeScript 182 | YAML 183 | darkgallery 184 | const 185 | Lakehouse 186 | balancers 187 | TCP 188 | customizable 189 | deduplication 190 | -------------------------------------------------------------------------------- /vim/init.lua: -------------------------------------------------------------------------------- 1 | require("config.options") 2 | require("config.autocmd") 3 | require("config.bindings") 4 | require("config.iab") 5 | 6 | vim.cmd("filetype on") 7 | require("config.plugins") 8 | vim.cmd("syntax enable") 9 | -------------------------------------------------------------------------------- /vim/lua/config/autocmd.lua: -------------------------------------------------------------------------------- 1 | local user_cmd = vim.api.nvim_create_user_command 2 | 3 | vim.cmd([[autocmd FileType gitcommit,text,markdown let b:EditorConfig_disable = 1]]) 4 | 5 | local spell_langs = { 6 | "gitcommit", 7 | "text", 8 | "markdown", 9 | "cucumber", 10 | } 11 | 12 | for _, v in ipairs(spell_langs) do 13 | vim.cmd("autocmd FileType " .. v .. " setlocal spell spelllang=en_us") 14 | end 15 | 16 | -- Set a max line length for Markdown files 17 | vim.cmd([[autocmd FileType markdown setlocal textwidth=89]]) 18 | vim.cmd([[autocmd FileType markdown setlocal colorcolumn=90]]) 19 | 20 | -- Set indentation to 2 spaces for certain files 21 | local two_spc_files = { 22 | "cpp", 23 | "css", 24 | "graphql", 25 | "groovy", 26 | "html", 27 | "javascript", 28 | "json", 29 | "jsonc", 30 | "less", 31 | "nix", 32 | "scss", 33 | "sql", 34 | "toml", 35 | "typescript", 36 | "typescriptreact", 37 | "yaml", 38 | "yml", 39 | } 40 | 41 | for _, v in ipairs(two_spc_files) do 42 | vim.cmd("autocmd FileType " .. v .. " setlocal shiftwidth=2") 43 | vim.cmd("autocmd FileType " .. v .. " setlocal softtabstop=2") 44 | end 45 | 46 | -- Jump to last known cursor position when opening files 47 | vim.cmd( 48 | [[autocmd BufReadPost * if expand('%:t') != 'COMMIT_EDITMSG' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif]] 49 | ) 50 | 51 | vim.cmd([[autocmd BufRead,BufNewFile Jenkinsfile setf groovy]]) 52 | vim.cmd([[autocmd BufRead,BufNewFile *.graphql setf graphql]]) 53 | vim.cmd([[autocmd BufRead,BufNewFile *.rasi setf rasi]]) 54 | vim.cmd([[autocmd BufRead,BufNewFile *.http setf http]]) 55 | vim.cmd([[autocmd BufRead,BufNewFile *.mdx setf markdown]]) 56 | 57 | -- Set indentation to hard tabs for some files 58 | vim.cmd([[autocmd FileType snippets,go,lua setlocal tabstop=4]]) 59 | vim.cmd([[autocmd FileType snippets,go,lua setlocal shiftwidth=4]]) 60 | vim.cmd([[autocmd FileType asm setlocal shiftwidth=8]]) 61 | vim.cmd([[autocmd FileType asm setlocal expandtab]]) 62 | vim.cmd([[autocmd FileType go,lua setlocal noexpandtab]]) 63 | vim.cmd([[autocmd FileType makefile setlocal noexpandtab]]) 64 | 65 | user_cmd("RustDocs", ":silent !rustup doc --std", {}) 66 | 67 | -- Make leaving easier in case of typos 68 | user_cmd("Q", ":q", { bang = true }) 69 | user_cmd("Qa", ":qa", { bang = true }) 70 | user_cmd("QA", ":qa", { bang = true }) 71 | user_cmd("Wq", ":wq", {}) 72 | user_cmd("WQ", ":wq", {}) 73 | user_cmd("Wqa", ":wqa", {}) 74 | user_cmd("WQa", ":wqa", {}) 75 | user_cmd("WQA", ":wqa", {}) 76 | -------------------------------------------------------------------------------- /vim/lua/config/iab.lua: -------------------------------------------------------------------------------- 1 | vim.cmd("iab retrun return") 2 | vim.cmd("iab rerturn return") 3 | vim.cmd("iab rertrun return") 4 | vim.cmd("iab retnru return") 5 | vim.cmd("iab retunr return") 6 | vim.cmd("iab erturn return") 7 | vim.cmd("iab ertnru return") 8 | vim.cmd("iab thsi this") 9 | vim.cmd("iab fcuntoin function") 10 | vim.cmd("iab functoin function") 11 | vim.cmd("iab fucntion function") 12 | vim.cmd("iab funcotin function") 13 | vim.cmd("iab funcoitn function") 14 | vim.cmd("iab funciton function") 15 | vim.cmd("iab funciotn function") 16 | vim.cmd("iab fcuntion function") 17 | vim.cmd("iab finction function") 18 | vim.cmd("iab fynction function") 19 | vim.cmd("iab fuynction function") 20 | vim.cmd("iab versoin version") 21 | vim.cmd("iab veison version") 22 | vim.cmd("iab vreison version") 23 | vim.cmd("iab vierson version") 24 | vim.cmd("iab costn const") 25 | vim.cmd("iab conts const") 26 | vim.cmd("iab csont const") 27 | vim.cmd("iab cosnt const") 28 | vim.cmd("iab cnost const") 29 | vim.cmd("iab asunyc async") 30 | vim.cmd("iab ascyn async") 31 | vim.cmd("iab asunc async") 32 | vim.cmd("iab asuyuc async") 33 | vim.cmd("iab THe The") 34 | vim.cmd("iab THis This") 35 | vim.cmd("iab !+ !=") 36 | vim.cmd("iab +> =>") 37 | -------------------------------------------------------------------------------- /vim/lua/config/lsp.lua: -------------------------------------------------------------------------------- 1 | -- Use an on_attach function to only map the following keys 2 | -- after the language server attaches to the current buffer 3 | local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) 4 | local on_attach = function(client, bufnr) 5 | local function buf_key(...) 6 | vim.api.nvim_buf_set_keymap(bufnr, ...) 7 | end 8 | 9 | if client.supports_method("textDocument/formatting") then 10 | vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) 11 | vim.api.nvim_create_autocmd("BufWritePre", { 12 | group = augroup, 13 | buffer = bufnr, 14 | callback = function() 15 | vim.lsp.buf.format({ bufnr = bufnr }) 16 | end, 17 | }) 18 | end 19 | 20 | local bind_opts = { noremap = true, silent = true } 21 | buf_key("n", "H", "Lspsaga show_cursor_diagnostics", bind_opts) 22 | buf_key("n", "[e", "Lspsaga diagnostic_jump_prev", bind_opts) 23 | buf_key("n", "]e", "Lspsaga diagnostic_jump_next", bind_opts) 24 | buf_key("n", "o", "lua vim.lsp.buf.definition()", bind_opts) 25 | buf_key("n", "O", "vslua vim.lsp.buf.definition()", bind_opts) 26 | buf_key("n", "g", "Lspsaga hover_doc", bind_opts) 27 | buf_key("n", "R", "Lspsaga rename", bind_opts) 28 | buf_key("n", "e", "Lspsaga code_action", bind_opts) 29 | buf_key("n", "T", "Trouble", bind_opts) 30 | end 31 | 32 | local on_init = function(client) 33 | client.offset_encoding = "utf-8" 34 | end 35 | 36 | local default_flags = { debounce_text_changes = 150 } 37 | 38 | return { 39 | on_attach = on_attach, 40 | on_init = on_init, 41 | default_flags = default_flags, 42 | } 43 | -------------------------------------------------------------------------------- /vim/lua/config/options.lua: -------------------------------------------------------------------------------- 1 | vim.opt.encoding = "UTF-8" 2 | vim.opt.spellfile = os.getenv("HOME") .. "/.config/dotfiles/vim/en.utf-8.add" 3 | 4 | vim.opt.fillchars = vim.opt.fillchars + "diff: " 5 | 6 | -- 256 colors 7 | vim.opt.termguicolors = true 8 | 9 | vim.opt.swapfile = false 10 | vim.opt.updatetime = 300 11 | 12 | -- Tab settings 13 | vim.opt.expandtab = true 14 | vim.opt.shiftwidth = 4 15 | vim.opt.softtabstop = 4 16 | vim.opt.tabstop = 4 17 | vim.opt.smarttab = true 18 | vim.opt.smartindent = true 19 | 20 | -- Search settings 21 | vim.opt.gdefault = true -- Global by default 22 | vim.opt.ignorecase = true -- Ignore case 23 | vim.opt.smartcase = true -- Override ignorecase if search contains capitals 24 | vim.opt.incsearch = true -- Search incrementally 25 | vim.opt.hls = false -- Don't highlight after Enter is pressed 26 | vim.opt.inccommand = "nosplit" -- Show find/replace as it is typed 27 | 28 | -- Open new splits on the right 29 | vim.opt.splitright = true 30 | 31 | -- Fold settings 32 | vim.opt.foldlevel = 1000 33 | vim.opt.foldmethod = "indent" 34 | 35 | vim.opt.undolevels = 9001 36 | vim.opt.cursorline = true 37 | 38 | -- Wrap 39 | vim.opt.wrap = true 40 | 41 | -- No command bar 42 | vim.opt.showmode = false 43 | 44 | -- Hide ugly completion messages 45 | vim.opt.shortmess = vim.opt.shortmess + "c" 46 | 47 | -- Leave signcolumn on so it's not toggling all the time 48 | vim.opt.signcolumn = "yes" 49 | 50 | -- Don't let the cursor reach the top/bottom 8 lines of text 51 | vim.opt.scrolloff = 8 52 | 53 | -- Don't automatically update working dir 54 | vim.opt.autochdir = false 55 | 56 | -- Completion menu settings 57 | vim.opt.completeopt = { "menu", "menuone", "noselect" } 58 | 59 | -- unload and delete the buffer once there are no more 60 | -- windows referencing it 61 | vim.opt.hidden = false 62 | 63 | -- Unix file line endings 64 | vim.opt.fileformat = "unix" 65 | 66 | -- Line numbers and relative line numbers 67 | vim.opt.number = true 68 | vim.opt.relativenumber = true 69 | 70 | -- Enable mouse 71 | vim.opt.mouse = "a" 72 | 73 | -- Change cursor to bar and underscore for different modes 74 | vim.opt.guicursor = "a:blinkwait1-blinkon1-blinkoff1,n-v:block,i-ci-ve:ver1,r:hor1" 75 | 76 | vim.opt.laststatus = 3 77 | 78 | -- Leader 79 | vim.g.mapleader = " " 80 | 81 | vim.g.rustfmt_autosave = 1 82 | vim.g.sql_type_default = "pgsql" 83 | 84 | vim.g.tmux_navigator_no_mappings = 1 85 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/base46.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("base46.nvim"), 4 | -- dir = "~/Dev/base46.nvim", 5 | lazy = false, 6 | priority = 1000, 7 | config = function() 8 | LoadBase46ColorScheme(utils.theme.name) 9 | end, 10 | } 11 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/blame.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("blame.nvim"), 4 | lazy = false, 5 | opts = { 6 | date_format = "%Y-%m-%d", 7 | mappings = { 8 | commit_info = "o", 9 | stack_push = "", 10 | stack_pop = "", 11 | show_commit = "", 12 | close = { "", "q" }, 13 | }, 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/blink-cmp.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | 3 | return { 4 | utils.mirror("blink.cmp"), 5 | -- lazy loading handled internally 6 | lazy = false, 7 | dependencies = { utils.mirror("LuaSnip") }, 8 | 9 | -- use a release tag to download pre-built binaries 10 | version = "v0.*", 11 | 12 | opts = { 13 | sources = { default = { "lsp", "path", "buffer" } }, 14 | keymap = { preset = "default", [""] = {} }, 15 | 16 | appearance = { 17 | use_nvim_cmp_as_default = true, 18 | nerd_font_variant = "mono", 19 | }, 20 | 21 | signature = { enabled = false }, 22 | 23 | completion = { 24 | trigger = { show_on_insert_on_trigger_character = false }, 25 | menu = { 26 | scrollbar = false, 27 | auto_show = function() 28 | return vim.bo.buftype ~= "prompt" 29 | and vim.b.completion ~= false 30 | and vim.bo.filetype ~= "TelescopePrompt" 31 | end, 32 | }, 33 | list = { selection = { preselect = false, auto_insert = true } }, 34 | }, 35 | }, 36 | opts_extend = { "sources.default" }, 37 | } 38 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/comment.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("Comment.nvim"), 4 | dependencies = { 5 | utils.mirror("nvim-ts-context-commentstring"), 6 | }, 7 | config = function() 8 | require("Comment").setup({ 9 | mappings = { 10 | basic = false, 11 | extra = false, 12 | }, 13 | pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(), 14 | }) 15 | end, 16 | keys = { 17 | { 18 | "gcc", 19 | function() 20 | return vim.api.nvim_get_vvar("count") == 0 and "(comment_toggle_linewise_current)" 21 | or "(comment_toggle_linewise_count)" 22 | end, 23 | "n", 24 | expr = true, 25 | desc = "Comment toggle current line", 26 | }, 27 | { 28 | "gc", 29 | "(comment_toggle_linewise_visual)", 30 | mode = "x", 31 | desc = "Comment toggle linewise (visual)", 32 | }, 33 | }, 34 | } 35 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/fidget.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("fidget.nvim"), 4 | tag = "legacy", 5 | event = "VeryLazy", 6 | config = function() 7 | require("fidget").setup() 8 | end, 9 | } 10 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/gitlinker.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("gitlinker.nvim"), 4 | lazy = true, 5 | init = function() 6 | vim.api.nvim_create_user_command("GOpen", function(opts) 7 | require("gitlinker").get_buf_range_url("n") 8 | end, { range = true }) 9 | end, 10 | dependencies = { utils.mirror("plenary.nvim") }, 11 | config = function() 12 | require("gitlinker").setup({ 13 | mappings = nil, 14 | opts = { 15 | action_callback = require("gitlinker.actions").open_in_browser, 16 | }, 17 | callbacks = { 18 | ["git.jayden.codes"] = require("gitlinker.hosts").get_gitea_type_url, 19 | }, 20 | }) 21 | end, 22 | } 23 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/gitsigns.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("gitsigns.nvim"), 4 | event = { "BufReadPre", "BufNewFile" }, 5 | opts = { 6 | signs = { 7 | add = { text = "┃" }, 8 | change = { text = "┃" }, 9 | delete = { text = "▁" }, 10 | topdelete = { text = "▔" }, 11 | changedelete = { text = "~" }, 12 | untracked = { text = "┃" }, 13 | }, 14 | on_attach = function(bufnr) 15 | local gs = package.loaded.gitsigns 16 | 17 | local function map(mode, l, r, opts) 18 | opts = opts or {} 19 | opts.buffer = bufnr 20 | vim.keymap.set(mode, l, r, opts) 21 | end 22 | 23 | -- Navigation 24 | map("n", "]c", function() 25 | if vim.wo.diff then 26 | return "]c" 27 | end 28 | vim.schedule(function() 29 | gs.next_hunk() 30 | end) 31 | return "" 32 | end, { expr = true }) 33 | 34 | map("n", "[c", function() 35 | if vim.wo.diff then 36 | return "[c" 37 | end 38 | vim.schedule(function() 39 | gs.prev_hunk() 40 | end) 41 | return "" 42 | end, { expr = true }) 43 | 44 | -- Actions 45 | map({ "n", "v" }, "u", gs.reset_hunk) 46 | map("n", "q", gs.preview_hunk) 47 | end, 48 | }, 49 | } 50 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/indent-blankline.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("indent-blankline.nvim"), 4 | event = { "BufReadPre", "BufNewFile" }, 5 | main = "ibl", 6 | opts = { 7 | scope = { enabled = false }, 8 | }, 9 | } 10 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/init.lua: -------------------------------------------------------------------------------- 1 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 2 | if not vim.loop.fs_stat(lazypath) then 3 | vim.fn.system({ 4 | "git", 5 | "clone", 6 | "--filter=blob:none", 7 | "https://github.com/folke/lazy.nvim.git", 8 | "--branch=stable", -- latest stable release 9 | lazypath, 10 | }) 11 | end 12 | 13 | vim.opt.rtp:prepend(lazypath) 14 | 15 | require("lazy").setup({ 16 | require("config.plugins.base46"), 17 | require("config.plugins.indent-blankline"), 18 | require("config.plugins.lualine"), 19 | require("config.plugins.neo-tree"), 20 | require("config.plugins.gitsigns"), 21 | require("config.plugins.tabular"), 22 | require("config.plugins.vim-tmux-navigator"), 23 | require("config.plugins.vim-repeat"), 24 | require("config.plugins.comment"), 25 | require("config.plugins.vim-surround"), 26 | require("config.plugins.lexima"), 27 | require("config.plugins.telescope"), 28 | require("config.plugins.nvim-lspconfig"), 29 | require("config.plugins.none-ls"), 30 | require("config.plugins.fidget"), 31 | require("config.plugins.lspsaga"), 32 | require("config.plugins.trouble"), 33 | require("config.plugins.treesitter"), 34 | require("config.plugins.presence"), 35 | require("config.plugins.gitlinker"), 36 | require("config.plugins.luasnip"), 37 | require("config.plugins.blink-cmp"), 38 | require("config.plugins.vim-dadbod-ui"), 39 | require("config.plugins.todo-comments"), 40 | require("config.plugins.nvim-colorizer"), 41 | require("config.plugins.blame"), 42 | }, { 43 | performance = { 44 | rtp = { 45 | disabled_plugins = { 46 | "gzip", 47 | "netrwPlugin", 48 | "tarPlugin", 49 | "tohtml", 50 | "zipPlugin", 51 | "tutor", 52 | }, 53 | }, 54 | }, 55 | }) 56 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/lexima.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("lexima.vim"), 4 | event = "InsertEnter", 5 | config = function() 6 | vim.g.lexima_map_escape = "" 7 | 8 | vim.g.lexima_enable_space_rules = 0 9 | vim.g.lexima_enable_endwise_rules = 0 10 | 11 | -- custom space rules, based on defaults 12 | vim.cmd(" call lexima#add_rule({'char': '', 'at': '(\\%#)', 'input_after': ''}) ") 13 | vim.cmd(" call lexima#add_rule({'char': ')', 'at': '\\%# )', 'leave': 2}) ") 14 | vim.cmd(" call lexima#add_rule({'char': '', 'at': '( \\%# )', 'delete': 1}) ") 15 | vim.cmd(" call lexima#add_rule({'char': '', 'at': '{\\%#}', 'input_after': ''}) ") 16 | vim.cmd(" call lexima#add_rule({'char': '}', 'at': '\\%# }', 'leave': 2}) ") 17 | vim.cmd(" call lexima#add_rule({'char': '', 'at': '{ \\%# }', 'delete': 1}) ") 18 | vim.cmd(" call lexima#add_rule({'char': '', 'at': '\\[\\[\\%#]]', 'input_after': ''}) ") 19 | vim.cmd(" call lexima#add_rule({'char': '', 'at': '\\[\\[ \\%# ]]', 'delete': 1}) ") 20 | end, 21 | } 22 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/lspsaga.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("lspsaga.nvim"), 4 | dependencies = { 5 | utils.mirror("nvim-web-devicons"), 6 | utils.mirror("nvim-treesitter"), 7 | }, 8 | lazy = true, 9 | opts = { 10 | finder = { 11 | edit = { "o", "" }, 12 | quit = { "q", "" }, 13 | split = "H", 14 | tabe = "t", 15 | vsplit = "s", 16 | }, 17 | symbol_in_winbar = { 18 | enable = false, 19 | }, 20 | hover = { 21 | max_width = 0.6, 22 | }, 23 | diagnostic = { 24 | on_insert = false, 25 | on_insert_follow = false, 26 | }, 27 | lightbulb = { 28 | enable = true, 29 | enable_in_insert = false, 30 | cache_code_action = false, 31 | sign = true, 32 | update_time = 150, 33 | sign_priority = 20, 34 | virtual_text = true, 35 | }, 36 | }, 37 | } 38 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/luasnip.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("LuaSnip"), 4 | version = "v2.*", 5 | build = "make install_jsregexp", 6 | keys = { 7 | { "", "luasnip-next-choice", mode = "i" }, 8 | { "", "luasnip-next-choice", mode = "s" }, 9 | { 10 | "", 11 | function() 12 | require("luasnip").jump(1) 13 | end, 14 | mode = "s", 15 | }, 16 | { 17 | "", 18 | function() 19 | require("luasnip").jump(-1) 20 | end, 21 | mode = "s", 22 | }, 23 | { 24 | "", 25 | function() 26 | if require("luasnip").expand_or_locally_jumpable() then 27 | return "luasnip-expand-or-jump" 28 | end 29 | return "" 30 | end, 31 | mode = "i", 32 | expr = true, 33 | }, 34 | }, 35 | config = function() 36 | local ls = require("luasnip") 37 | require("luasnip.loaders.from_lua").load({ paths = "~/.config/dotfiles/vim/snippets" }) 38 | 39 | ls.config.set_config({ 40 | history = false, 41 | updateevents = "TextChanged,TextChangedI", 42 | ext_opts = { 43 | [require("luasnip.util.types").choiceNode] = { 44 | active = { 45 | virt_text = { { "<- Choice", "Info" } }, 46 | }, 47 | }, 48 | }, 49 | }) 50 | 51 | ls.filetype_extend("cpp", { "c" }) 52 | ls.filetype_extend("typescript", { "javascript" }) 53 | ls.filetype_extend("typescriptreact", { "javascript" }) 54 | ls.filetype_extend("javascriptreact", { "javascript" }) 55 | ls.filetype_extend("template", { "html" }) 56 | end, 57 | } 58 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/none-ls.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | local lsp_config = require("config.lsp") 3 | local ts_config = require("config.treesitter_langs") 4 | 5 | return { 6 | utils.mirror("none-ls.nvim"), 7 | dependencies = { 8 | utils.mirror("blink.cmp"), 9 | utils.mirror("none-ls-shellcheck.nvim"), 10 | utils.mirror("none-ls-extras.nvim"), 11 | }, 12 | ft = ts_config.extended, 13 | config = function() 14 | local capabilities = require("blink.cmp").get_lsp_capabilities() 15 | local null_ls = require("null-ls") 16 | local sql_dialect = os.getenv("SQL_DIALECT") or "postgresql" 17 | 18 | null_ls.setup({ 19 | capabilities = capabilities, 20 | on_init = lsp_config.on_init, 21 | on_attach = lsp_config.on_attach, 22 | flags = lsp_config.default_flags, 23 | sources = { 24 | null_ls.builtins.formatting.prettierd, 25 | null_ls.builtins.formatting.stylua, 26 | null_ls.builtins.formatting.nixfmt, 27 | null_ls.builtins.formatting.sql_formatter.with({ 28 | extra_args = { 29 | "--config", 30 | '{"language":"' .. sql_dialect .. '","dialect":"' .. sql_dialect .. '","tabWidth":4}', 31 | }, 32 | }), 33 | require("none-ls-shellcheck.diagnostics"), 34 | require("none-ls-shellcheck.code_actions"), 35 | require("none-ls.diagnostics.cpplint"), 36 | null_ls.builtins.formatting.terraform_fmt, 37 | require("none-ls.diagnostics.eslint_d"), 38 | }, 39 | }) 40 | end, 41 | } 42 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/nvim-colorizer.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("nvim-colorizer.lua"), 4 | event = "BufReadPre", 5 | opts = { 6 | user_default_options = { 7 | mode = "virtualtext", 8 | names = false, 9 | }, 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/presence.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("presence.nvim"), 4 | cond = function() 5 | local git_root = vim.fn.finddir(".git", ".;") 6 | if git_root ~= "" then 7 | local ok, lines = pcall(vim.fn.readfile, git_root .. "/presence") 8 | if ok then 9 | for _, l in pairs(lines) do 10 | local line = l:gsub("%s+", "") 11 | if string.find(line, "true") then 12 | return true 13 | end 14 | end 15 | end 16 | end 17 | return false 18 | end, 19 | opts = { 20 | auto_update = true, 21 | neovim_image_text = "The One True Text Editor", 22 | main_image = "neovim", 23 | client_id = "793271441293967371", 24 | log_level = nil, 25 | debounce_timeout = 10, 26 | enable_line_number = false, 27 | blacklist = {}, 28 | buttons = false, 29 | file_assets = {}, 30 | show_time = true, 31 | 32 | editing_text = "Editing %s", 33 | file_explorer_text = "Browsing %s", 34 | git_commit_text = "Committing changes", 35 | plugin_manager_text = "Managing plugins", 36 | reading_text = "Reading %s", 37 | workspace_text = "Working on %s", 38 | line_number_text = "Line %s out of %s", 39 | }, 40 | } 41 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/tabular.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("tabular"), 4 | cmd = "Tabularize", 5 | } 6 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("telescope.nvim"), 4 | dependencies = { utils.mirror("plenary.nvim") }, 5 | keys = { 6 | { "f", 'lua require("telescope.builtin").find_files()' }, 7 | { "r", 'lua require("telescope.builtin").live_grep()' }, 8 | { "b", 'lua require("telescope.builtin").buffers()' }, 9 | { "n", 'lua require("telescope.builtin").lsp_references()' }, 10 | { "z", 'lua require("telescope.builtin").spell_suggest()' }, 11 | }, 12 | config = function() 13 | local telescope_actions = require("telescope.actions") 14 | require("telescope").setup({ 15 | defaults = { 16 | layout_strategy = "vertical", 17 | layout_config = { 18 | vertical = { width = 0.8 }, 19 | }, 20 | mappings = { 21 | i = { 22 | [""] = telescope_actions.close, 23 | [""] = false, 24 | }, 25 | }, 26 | vimgrep_arguments = { 27 | "rg", 28 | "--color=never", 29 | "--no-heading", 30 | "--with-filename", 31 | "--line-number", 32 | "--column", 33 | "--smart-case", 34 | "--trim", 35 | "--glob", 36 | "!*.lock", 37 | "--glob", 38 | "!*.lockb", 39 | "--glob", 40 | "!package-lock.json", 41 | "--glob", 42 | "!COPYING", 43 | "--glob", 44 | "!LICENSE", 45 | "--glob", 46 | "!*.svg", 47 | }, 48 | }, 49 | pickers = { 50 | find_files = { 51 | hidden = true, 52 | find_command = { 53 | "fd", 54 | "--type", 55 | "f", 56 | "--strip-cwd-prefix", 57 | -- it's better to include the ignored extensions here since fd will be doing 58 | -- the filtering instead of Telescope doing it in Lua 59 | "--exclude", 60 | "*.png", 61 | "--exclude", 62 | "*.jpg", 63 | "--exclude", 64 | "*.jpeg", 65 | "--exclude", 66 | "*.exe", 67 | "--exclude", 68 | "*.ppm", 69 | "--exclude", 70 | "*.pdf", 71 | "--exclude", 72 | "*.webp", 73 | "--exclude", 74 | ".git/*", 75 | "--exclude", 76 | "*.lockb", 77 | }, 78 | }, 79 | }, 80 | }) 81 | end, 82 | } 83 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/todo-comments.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("todo-comments.nvim"), 4 | dependencies = { utils.mirror("plenary.nvim") }, 5 | opts = {}, 6 | } 7 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | local ts_config = require("config.treesitter_langs") 3 | 4 | return { 5 | utils.mirror("nvim-treesitter"), 6 | build = ":TSUpdate", 7 | ft = ts_config.extended, 8 | dependencies = { 9 | utils.mirror("nvim-treesitter-textobjects"), 10 | }, 11 | config = function() 12 | require("nvim-treesitter.configs").setup({ 13 | ensure_installed = ts_config.base, 14 | auto_install = true, 15 | highlight = { 16 | enable = true, 17 | additional_vim_regex_highlighting = false, 18 | }, 19 | indent = { enable = true }, 20 | incremental_selection = { enable = false }, 21 | textobjects = { 22 | swap = { 23 | enable = true, 24 | swap_next = { 25 | ["a"] = "@parameter.inner", 26 | }, 27 | swap_previous = { 28 | ["A"] = "@parameter.inner", 29 | }, 30 | }, 31 | select = { 32 | enable = true, 33 | lookahead = true, 34 | keymaps = { 35 | -- You can use the capture groups defined in textobjects.scm 36 | ["af"] = "@function.outer", 37 | ["hf"] = "@function.inner", 38 | ["ab"] = "@block.outer", 39 | ["hb"] = "@block.inner", 40 | }, 41 | }, 42 | }, 43 | }) 44 | 45 | local augroup = vim.api.nvim_create_augroup("TreesitterSpell", { clear = true }) 46 | 47 | -- We can enable spell checking for any language that has 48 | -- treesitter since it will only check the comments and not the code 49 | vim.api.nvim_create_autocmd("FileType", { 50 | pattern = ts_config.extended, 51 | command = "setlocal spell spelllang=en_us", 52 | group = augroup, 53 | }) 54 | end, 55 | } 56 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/trouble.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("trouble.nvim"), 4 | event = "VeryLazy", 5 | dependencies = { utils.mirror("nvim-web-devicons") }, 6 | opts = { 7 | position = "bottom", 8 | height = 10, 9 | width = 50, 10 | icons = true, 11 | mode = "workspace_diagnostics", 12 | fold_open = "", 13 | fold_closed = "", 14 | group = true, 15 | padding = true, 16 | action_keys = { 17 | close = "q", 18 | cancel = "", 19 | refresh = "r", 20 | jump_close = { "", "" }, 21 | open_split = { "" }, 22 | open_vsplit = { "" }, 23 | open_tab = { "" }, 24 | jump = { "o" }, 25 | toggle_mode = "m", 26 | toggle_preview = "P", 27 | hover = "K", 28 | preview = "p", 29 | close_folds = { "zM", "zm" }, 30 | open_folds = { "zR", "zr" }, 31 | toggle_fold = { "zA", "za" }, 32 | previous = "i", 33 | next = "k", 34 | }, 35 | indent_lines = true, 36 | auto_open = false, 37 | auto_close = false, 38 | auto_preview = true, 39 | auto_fold = false, 40 | auto_jump = { "lsp_definitions" }, 41 | signs = { 42 | error = "", 43 | warning = "", 44 | hint = "", 45 | information = "", 46 | other = "﫠", 47 | }, 48 | use_diagnostic_signs = false, 49 | }, 50 | } 51 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/vim-dadbod-ui.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("vim-dadbod-ui"), 4 | dependencies = { 5 | { utils.mirror("vim-dadbod"), lazy = true }, 6 | { utils.mirror("vim-dadbod-completion"), lazy = true }, 7 | }, 8 | cmd = { 9 | "DBUI", 10 | "DBUIToggle", 11 | "DBUIAddConnection", 12 | "DBUIFindBuffer", 13 | }, 14 | init = function() 15 | vim.g.db_ui_use_nerd_fonts = 1 16 | end, 17 | } 18 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/vim-repeat.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("vim-repeat"), 4 | event = "VeryLazy", 5 | } 6 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/vim-surround.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("vim-surround"), 4 | event = "VeryLazy", 5 | } 6 | -------------------------------------------------------------------------------- /vim/lua/config/plugins/vim-tmux-navigator.lua: -------------------------------------------------------------------------------- 1 | local utils = require("config.utils") 2 | return { 3 | utils.mirror("vim-tmux-navigator"), 4 | keys = { 5 | { "", "TmuxNavigateLeft" }, 6 | { "", "TmuxNavigateDown" }, 7 | { "", "TmuxNavigateUp" }, 8 | { "", "TmuxNavigateRight" }, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /vim/lua/config/treesitter_langs.lua: -------------------------------------------------------------------------------- 1 | local base = { 2 | "astro", 3 | "bash", 4 | "c", 5 | "cmake", 6 | "cpp", 7 | "css", 8 | "dart", 9 | "go", 10 | "graphql", 11 | "hcl", 12 | "html", 13 | "http", 14 | "hurl", 15 | "java", 16 | "javascript", 17 | "json", 18 | "jsonc", 19 | "just", 20 | "lua", 21 | "make", 22 | "markdown", 23 | "markdown_inline", 24 | "nginx", 25 | "nix", 26 | "python", 27 | "query", 28 | "rasi", 29 | "rust", 30 | "sql", 31 | "terraform", 32 | "toml", 33 | "tsx", 34 | "typescript", 35 | "vim", 36 | "yaml", 37 | } 38 | 39 | local extended = vim.list_extend(vim.deepcopy(base), { 40 | "typescriptreact", 41 | "javascriptreact", 42 | }) 43 | 44 | return { 45 | base = base, 46 | extended = extended, 47 | } 48 | -------------------------------------------------------------------------------- /vim/lua/config/utils.lua: -------------------------------------------------------------------------------- 1 | local M = { 2 | mirror = function(name) 3 | return "https://git.jayden.codes/mirrors/" .. name 4 | end, 5 | theme = { 6 | color_base = "base46", 7 | theme = "everforest_darker", 8 | }, 9 | } 10 | 11 | function LoadBase46ColorScheme(theme) 12 | local present, base46 = pcall(require, "base46") 13 | if not present then 14 | return 15 | end 16 | local theme_opts = { 17 | base = M.theme.color_base, 18 | theme = theme or M.theme.theme, 19 | transparency = false, 20 | } 21 | base46.load_theme(theme_opts) 22 | end 23 | 24 | return M 25 | -------------------------------------------------------------------------------- /vim/queries/typescript/injections.scm: -------------------------------------------------------------------------------- 1 | ( 2 | ( 3 | (template_string) @_template_string 4 | (#match? @_template_string "^`\\s*\\<") 5 | ) @html 6 | 7 | (#offset! @html 0 1 0 -1) 8 | ) 9 | -------------------------------------------------------------------------------- /vim/snippets/c.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s( 4 | "cstart", 5 | fmt( 6 | [[ 7 | /* 8 | Author: Jayden Chan 9 | Date: {1} 10 | */ 11 | #include 12 | #include 13 | 14 | int main() {{ 15 | {2} 16 | return EXIT_SUCCESS; 17 | }} 18 | ]], 19 | { i(1), i(0) } 20 | ) 21 | ), 22 | 23 | s("in", fmt("#include {}", i(0))), 24 | s("pf", fmt('printf("{}");', i(0))), 25 | s("pl", fmt('printf("{}\\n");', i(0))), 26 | 27 | s( 28 | "for", 29 | fmt( 30 | [[ 31 | for (int {1} = {2}; {1} < {3}; ++{1}) {{ 32 | {4} 33 | }} 34 | ]], 35 | { i(1), i(2), i(3), i(0) }, 36 | { repeat_duplicates = true } 37 | ) 38 | ), 39 | } 40 | -------------------------------------------------------------------------------- /vim/snippets/cmake.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s( 4 | "cppstart", 5 | fmt( 6 | [[ 7 | cmake_minimum_required(VERSION 3.10 FATAL_ERROR) 8 | 9 | project({1} LANGUAGES CXX) 10 | set(CMAKE_VERBOSE_MAKEFILE true) 11 | set(CMAKE_EXPORT_COMPILE_COMMANDS true) 12 | 13 | if(NOT CMAKE_BUILD_TYPE) 14 | set(CMAKE_BUILD_TYPE Release) 15 | endif() 16 | 17 | set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wshadow -Wconversion") 18 | set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -DFULLDEBUG -fsanitize=address -fsanitize=undefined -D_GLIBCXX_DEBUG") 19 | set(CMAKE_CXX_FLAGS_RELEASE "-O3 -flto") 20 | 21 | set(CMAKE_CXX_LINK_OPTIONS_DEBUG "-fsanitize=address -fsanitize=undefined -rdynamic") 22 | set(CMAKE_CXX_LINK_OPTIONS_RELEASE "") 23 | 24 | set(CMAKE_CXX_STANDARD 20) 25 | 26 | include_directories(inc) 27 | file(GLOB SOURCES "src/*.cpp") 28 | 29 | add_executable( 30 | {2} 31 | ${{SOURCES}} 32 | ) 33 | 34 | if (CMAKE_BUILD_TYPE STREQUAL "Debug") 35 | add_definitions(-DDEBUG) 36 | endif() 37 | ]], 38 | { i(1), i(0) } 39 | ) 40 | ), 41 | s( 42 | "cstart", 43 | fmt( 44 | [[ 45 | cmake_minimum_required(VERSION 3.10 FATAL_ERROR) 46 | 47 | project({1} LANGAGES C) 48 | set(CMAKE_VERBOSE_MAKEFILE true) 49 | set(CMAKE_EXPORT_COMPILE_COMMANDS true) 50 | 51 | if(NOT CMAKE_BUILD_TYPE) 52 | set(CMAKE_BUILD_TYPE Release) 53 | endif() 54 | 55 | set(CMAKE_C_FLAGS "-Wall -Wextra -Wpedantic -Wshadow -Wconversion") 56 | set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb -DFULLDEBUG -fsanitize=address -fsanitize=undefined -D_GLIBCXX_DEBUG") 57 | set(CMAKE_C_FLAGS_RELEASE "-O3 -flto") 58 | 59 | set(CMAKE_C_LINK_OPTIONS_DEBUG "-fsanitize=address -fsanitize=undefined -rdynamic") 60 | set(CMAKE_C_LINK_OPTIONS_RELEASE "") 61 | 62 | set(CMAKE_C_STANDARD 99) 63 | 64 | include_directories(inc) 65 | file(GLOB SOURCES "src/*.c") 66 | 67 | add_executable( 68 | {2} 69 | ${{SOURCES}} 70 | ) 71 | 72 | if (CMAKE_BUILD_TYPE STREQUAL "Debug") 73 | add_definitions(-DDEBUG) 74 | endif() 75 | ]], 76 | { i(1), i(0) } 77 | ) 78 | ), 79 | } 80 | -------------------------------------------------------------------------------- /vim/snippets/cpp.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s("cout", fmt('cout << "{1}"{2};', { i(1), i(0) })), 4 | s("coutl", fmt("std::cout << \"{1}\" << '\n';", { i(0) })), 5 | s( 6 | "cppstart", 7 | fmt( 8 | [[ 9 | #include 10 | 11 | int main() {{ 12 | std::cout << "Hello World!" << std::endl; 13 | return 0; 14 | }} 15 | ]], 16 | {} 17 | ) 18 | ), 19 | s( 20 | "header", 21 | fmt( 22 | [[ 23 | #ifndef {1}_H 24 | #define {1}_H 25 | 26 | class {2} 27 | {{ 28 | public: 29 | {2}(); 30 | protected: 31 | private: 32 | }}; 33 | 34 | #endif // $1_H 35 | ]], 36 | { i(1), i(0) }, 37 | { repeat_duplicates = true } 38 | ) 39 | ), 40 | s( 41 | "ns", 42 | fmt( 43 | [[ 44 | namespace {1} {{ 45 | {2} 46 | }} // namespace {1} 47 | ]], 48 | { i(1), i(0) } 49 | ) 50 | ), 51 | s( 52 | "source", 53 | fmt( 54 | [[ 55 | #include 56 | #include "{1}.h" 57 | 58 | {1}::{1}({2}) 59 | {{ 60 | {3} 61 | }} 62 | ]], 63 | { i(1), i(2), i(0) } 64 | ) 65 | ), 66 | } 67 | -------------------------------------------------------------------------------- /vim/snippets/cucumber.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s("@unit", t({ "@unit", "Scenario: " })), 4 | s("sc", t("Scenario: ")), 5 | s("bg", t("Background: ")), 6 | } 7 | -------------------------------------------------------------------------------- /vim/snippets/gitcommit.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s("f", t("feat: ")), 4 | s("i", t("fix: ")), 5 | s("c", t("chore: ")), 6 | s("d", t("docs: ")), 7 | s("r", t("refactor: ")), 8 | s("j", t("JC: ")), 9 | s("b", t("BREAKING CHANGE: ")), 10 | s("w", t("--wip-- ")), 11 | } 12 | -------------------------------------------------------------------------------- /vim/snippets/go.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s("pf", fmt("fmt.Printf({})", i(0))), 4 | s("pl", fmt("fmt.Println({})", i(0))), 5 | s("log", fmt("fmt.Println({})", i(0))), 6 | s("ep", fmt("fmt.Fprintln(os.Stderr, {})", i(0))), 7 | s("ef", fmt("fmt.Fprintf(os.Stderr, {})", i(0))), 8 | s("lf", fmt("log.Printf({})", i(0))), 9 | s("ln", fmt("log.Println({})", i(0))), 10 | s( 11 | "for", 12 | fmt( 13 | [[ 14 | for {1} := {2}; {1} < {3}; {1}++ {{ 15 | {4} 16 | }} 17 | ]], 18 | { i(1), i(2), i(3), i(0) }, 19 | { repeat_duplicates = true } 20 | ) 21 | ), 22 | s( 23 | "forr", 24 | fmt( 25 | [[ 26 | for {1} := {2}; {1} > {3}; {1}-- {{ 27 | {4} 28 | }} 29 | ]], 30 | { i(1), i(2), i(3), i(0) }, 31 | { repeat_duplicates = true } 32 | ) 33 | ), 34 | s( 35 | "fore", 36 | fmt( 37 | [[ 38 | for {1}, {2} := range {3} {{ 39 | {4} 40 | }} 41 | ]], 42 | { i(1), i(2), i(3), i(0) }, 43 | { repeat_duplicates = true } 44 | ) 45 | ), 46 | s( 47 | "func", 48 | fmt( 49 | [[ 50 | // {1} 51 | func {1}({2}) {3}{{ 52 | {4} 53 | }} 54 | ]], 55 | { i(1), i(2), i(3), i(0) }, 56 | { repeat_duplicates = true } 57 | ) 58 | ), 59 | s( 60 | "err", 61 | t({ 62 | "if err != nil {", 63 | "\treturn err", 64 | "}", 65 | }) 66 | ), 67 | s( 68 | "meth", 69 | fmt( 70 | [[ 71 | // {2} 72 | func ({1}) {2}({3}) {4}{{ 73 | {5} 74 | }} 75 | ]], 76 | { i(1), i(2), i(3), i(4), i(0) }, 77 | { repeat_duplicates = true } 78 | ) 79 | ), 80 | s( 81 | "gof", 82 | fmt( 83 | [[ 84 | go func({1}) {{ 85 | {2} 86 | }}() 87 | ]], 88 | { i(1), i(0) } 89 | ) 90 | ), 91 | } 92 | -------------------------------------------------------------------------------- /vim/snippets/html.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s( 4 | "start", 5 | fmt( 6 | [[ 7 | 8 | 9 | 10 | 11 | 12 | Title 13 | 14 | 15 | 16 | 17 | 18 | 19 | ]], 20 | {} 21 | ) 22 | ), 23 | s( 24 | "<>", 25 | fmt( 26 | [[ 27 | <{1}> 28 | {2} 29 | 30 | ]], 31 | { i(1), i(0) }, 32 | { repeat_duplicates = true } 33 | ) 34 | ), 35 | } 36 | -------------------------------------------------------------------------------- /vim/snippets/java.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s("cw", fmt("System.out.println({});", i(0))), 4 | s("cl", fmt("System.out.print({});", i(0))), 5 | s("pf", fmt('System.out.printf("{}");', i(0))), 6 | s("pl", fmt('System.out.printf("{}\\n");', i(0))), 7 | s( 8 | "jstart", 9 | fmt( 10 | [[ 11 | /** 12 | * @author Jayden Chan 13 | * @version 1.0 14 | * Date Created: {1} 15 | * 16 | * {2} 17 | */ 18 | 19 | public class {3} {{ 20 | 21 | }} 22 | ]], 23 | { i(1), i(2), i(0) } 24 | ) 25 | ), 26 | s( 27 | "main", 28 | fmt( 29 | [[ 30 | public static void main(String args[]) {{ 31 | System.out.println("Hello World!"); 32 | }} 33 | ]], 34 | {} 35 | ) 36 | ), 37 | s( 38 | "for", 39 | fmt( 40 | [[ 41 | for(int {1} = {2}; {1} < {3}; {1}++) {{ 42 | {4} 43 | }} 44 | ]], 45 | { i(1), i(2), i(3), i(0) }, 46 | { repeat_duplicates = true } 47 | ) 48 | ), 49 | s( 50 | "forr", 51 | fmt( 52 | [[ 53 | for(int {1} = {2}-1; {1} >= 0; {1}--) {{ 54 | {3} 55 | }} 56 | ]], 57 | { i(1), i(2), i(0) }, 58 | { repeat_duplicates = true } 59 | ) 60 | ), 61 | } 62 | -------------------------------------------------------------------------------- /vim/snippets/lua.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s( 4 | "sn", 5 | fmt( 6 | [=[ 7 | s("{1}", fmt([[{2}]], {{{3}}})) 8 | ]=], 9 | { i(1), i(2), i(0) } 10 | ) 11 | ), 12 | } 13 | -------------------------------------------------------------------------------- /vim/snippets/rust.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s("pl", fmt('println!("{}"{})', { i(1), i(0) })), 4 | s("pf", fmt('print!("{}"{})', { i(1), i(0) })), 5 | s("ep", fmt('eprintln!("{}"{})', { i(1), i(0) })), 6 | s("ase", fmt("assert_eq!({})", { i(0) })), 7 | s("as", fmt("assert!({})", { i(0) })), 8 | s("asn", fmt("assert_ne!({})", { i(0) })), 9 | s("der", fmt("#[derive({})]", { i(0) })), 10 | s("des", t("#[derive(Serialize, Deserialize)]")), 11 | s("re", fmt("Result<{}, {}>", { i(1), i(0) })), 12 | s("op", fmt("Option<{}>", { i(0) })), 13 | s("any", fmt("anyhow!({})", { i(0) })), 14 | s("bail", fmt("anyhow::bail!({})", { i(0) })), 15 | s( 16 | "test", 17 | fmt( 18 | [[ 19 | #[test] 20 | fn test_{1}() {{ 21 | {2} 22 | }} 23 | ]], 24 | { i(1), i(0) } 25 | ) 26 | ), 27 | s( 28 | "testmod", 29 | fmt( 30 | [[ 31 | #[cfg(test)] 32 | mod tests {{ 33 | use super::*; 34 | {1} 35 | }} 36 | ]], 37 | { i(0) } 38 | ) 39 | ), 40 | s( 41 | "bench", 42 | fmt( 43 | [[ 44 | #[bench] 45 | fn bench_{1}() {{ 46 | {2} 47 | }} 48 | ]], 49 | { i(1), i(0) } 50 | ) 51 | ), 52 | } 53 | -------------------------------------------------------------------------------- /vim/snippets/sh.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s("cpr", t("rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 -e ssh")), 4 | s("mvr", t("rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 --remove-source-files -e ssh")), 5 | s( 6 | "bash", 7 | fmt( 8 | [[ 9 | #!/usr/bin/env bash 10 | set -euo pipefail 11 | ]], 12 | {} 13 | ) 14 | ), 15 | s( 16 | "argparse", 17 | fmt( 18 | [[ 19 | while test $# -gt 0 20 | do 21 | case "$1" in 22 | --flag) echo "flag" 23 | ;; 24 | *) echo "parameter" 25 | ;; 26 | esac 27 | shift 28 | done 29 | ]], 30 | {} 31 | ) 32 | ), 33 | } 34 | -------------------------------------------------------------------------------- /vim/snippets/yaml.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: undefined-global 2 | return { 3 | s( 4 | "service", 5 | fmt( 6 | [[ 7 | service: {1} 8 | 9 | updatable: 10 | - {1} 11 | 12 | nginx: 13 | template: sso-proxy 14 | subdomain: {1} 15 | name: {1} 16 | endpoint: http://localhost 17 | users: ['jayden'] 18 | port: "{{{{ PORT_{2} }}}}" 19 | homepage: 20 | name: {1} 21 | icon: {1}.png 22 | 23 | docker: 24 | services: 25 | {3} 26 | ]], 27 | { i(1), f(function(args) 28 | return args[1][1]:upper() 29 | end, { 1 }), i(0) }, 30 | { repeat_duplicates = true } 31 | ) 32 | ), 33 | } 34 | -------------------------------------------------------------------------------- /ytdl/liked-videos: -------------------------------------------------------------------------------- 1 | # Liked Videos download 2 | 3 | --ignore-errors 4 | --add-metadata 5 | --all-subs 6 | --embed-subs 7 | --embed-thumbnail 8 | --write-thumbnail 9 | --write-sub 10 | --sub-lang en 11 | --write-info-json 12 | --format-sort 'height:1080' 13 | --merge-output-format mkv 14 | --output "/run/media/jayden/Seagate External/Backup/YouTube/Files/Liked Videos/%(title)s [%(id)s].%(ext)s" 15 | --download-archive "/run/media/jayden/Seagate External/Backup/YouTube/liked_videos.log" 16 | --limit-rate 20M 17 | -------------------------------------------------------------------------------- /ytdl/playlist: -------------------------------------------------------------------------------- 1 | # Generic Playlist Download 2 | 3 | --ignore-errors 4 | --add-metadata 5 | --all-subs 6 | --embed-subs 7 | --embed-thumbnail 8 | --write-thumbnail 9 | --write-sub 10 | --sub-lang en 11 | --write-info-json 12 | --format-sort 'height:1080' 13 | --merge-output-format mkv 14 | --output "/run/media/jayden/Seagate External/Backup/YouTube/Files/LithiumFrost Liked Videos/%(autonumber)s -- %(title)s [%(id)s].%(ext)s" 15 | -r 20M 16 | -------------------------------------------------------------------------------- /ytdl/single: -------------------------------------------------------------------------------- 1 | # Generic Single Video Download 2 | 3 | --ignore-errors 4 | --add-metadata 5 | --all-subs 6 | --embed-subs 7 | --embed-thumbnail 8 | --write-thumbnail 9 | --write-sub 10 | --sub-lang en 11 | --write-info-json 12 | --format-sort 'height:1080' 13 | --merge-output-format mkv 14 | --output "%(id)s.%(ext)s" 15 | -r 20M 16 | -------------------------------------------------------------------------------- /zsh/aliases.zsh: -------------------------------------------------------------------------------- 1 | # Stop activating ghostscript by accident 2 | alias gs='git status' 3 | 4 | # dotfile editing 5 | alias gdf='cd $DOT && git status' 6 | 7 | # Exit 8 | alias :q='exit' 9 | alias :qa='exit' 10 | alias :Q='exit' 11 | alias :wq='exit' 12 | alias :Wq='exit' 13 | alias :q!='exit' 14 | alias :qa!='exit' 15 | alias :Q!='exit' 16 | alias :wq!='exit' 17 | alias :Wq!='exit' 18 | 19 | # Editor 20 | alias vim='nvim' 21 | 22 | # U S E R E R R O R 23 | alias cim='vim' 24 | alias vom='vim' 25 | alias vun='vim' 26 | alias ivm='vim' 27 | alias bim='vim' 28 | alias dw='cd' 29 | alias cs='cd' 30 | alias clera='clear' 31 | alias celar='clear' 32 | alias clare='clear' 33 | alias claer='clear' 34 | alias ckear='clear' 35 | alias Lq='exit' 36 | 37 | # One letter 38 | alias y='yarn' 39 | alias n='npm' 40 | alias o='xdg-open' 41 | alias t='tmux' 42 | alias b='bun' 43 | alias c='cargo' 44 | alias j='just' 45 | alias k='kubectl' 46 | alias l='eza -a' 47 | 48 | # networking 49 | alias cpr='rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 -e ssh' 50 | alias mvr='rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 --remove-source-files -e ssh' 51 | alias myip='curl https://ipinfo.io/ip && echo' 52 | 53 | # better defaults 54 | alias clear='clear -x' 55 | alias ls='eza -b' 56 | alias la='eza -lahb' 57 | alias ll='eza -lhb' 58 | alias cat='bat' 59 | alias bc='bc -l' 60 | alias ip='ip -c' 61 | alias sxiv='nsxiv -b' 62 | alias make='make --no-print-directory' 63 | alias node='node --enable-source-maps --unhandled-rejections=strict' 64 | alias ffmpeg='ffmpeg -hide_banner' 65 | alias ffprobe='ffprobe -hide_banner' 66 | 67 | # Other 68 | alias lpackages='comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n '"'"'s/^Package: //p'"'"' | sort -u)' 69 | alias clip='xclip -selection c' 70 | alias pasteimg='xclip -selection clipboard -t image/png -o' 71 | alias gpl='curl https://www.gnu.org/licenses/gpl-3.0.txt' 72 | alias agpl='curl https://www.gnu.org/licenses/agpl-3.0.txt' 73 | alias dps='docker ps --format "table {{.ID}}\t{{.RunningFor}}\t{{.Status}}\t{{.Names}}\t{{.Image}}"' 74 | alias drs='docker-compose up -d --force-recreate --remove-orphans' 75 | alias curlv='curl --verbose' 76 | alias pg='ps -ax | rg' 77 | alias videoman="$HOME/Dev/videoman/src/index.ts" 78 | -------------------------------------------------------------------------------- /zsh/dir.zsh: -------------------------------------------------------------------------------- 1 | setopt auto_pushd 2 | setopt pushd_ignore_dups 3 | setopt pushdminus 4 | 5 | alias -g ...='../..' 6 | alias -g ....='../../..' 7 | alias -g .....='../../../..' 8 | alias -g ......='../../../../..' 9 | 10 | alias -- -='cd -' 11 | alias 1='cd -' 12 | alias 2='cd -2' 13 | alias 3='cd -3' 14 | alias 4='cd -4' 15 | alias 5='cd -5' 16 | alias 6='cd -6' 17 | alias 7='cd -7' 18 | alias 8='cd -8' 19 | alias 9='cd -9' 20 | 21 | alias md='mkdir -p' 22 | alias rd=rmdir 23 | 24 | function d () { 25 | if [[ -n $1 ]]; then 26 | dirs "$@" 27 | else 28 | dirs -v | head -10 29 | fi 30 | } 31 | compdef _dirs d 32 | -------------------------------------------------------------------------------- /zsh/dotenv.zsh: -------------------------------------------------------------------------------- 1 | # Filename of the dotenv file to look for 2 | : ${ZSH_DOTENV_FILE:=.env} 3 | 4 | source_env() { 5 | if [[ ! -f "$ZSH_DOTENV_FILE" ]]; then 6 | return 7 | fi 8 | 9 | # test .env syntax 10 | zsh -fn $ZSH_DOTENV_FILE || echo "dotenv: error when sourcing '$ZSH_DOTENV_FILE' file" >&2 11 | 12 | setopt localoptions allexport 13 | source $ZSH_DOTENV_FILE 14 | } 15 | 16 | autoload -U add-zsh-hook 17 | add-zsh-hook chpwd source_env 18 | 19 | source_env 20 | -------------------------------------------------------------------------------- /zsh/zlogout: -------------------------------------------------------------------------------- 1 | # 2 | # Executes commands at logout. 3 | # 4 | # Authors: 5 | # Sorin Ionescu 6 | # 7 | # 8 | # Print the message. 9 | \cat <<-EOF 10 | Thank you. Come again! 11 | -- Dr. Apu Nahasapeemapetilon 12 | EOF 13 | --------------------------------------------------------------------------------