feat: various things, particularly vr

This commit is contained in:
Kat Inskip 2025-11-11 22:28:30 -08:00
parent e9b291078d
commit 7e70c182e5
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
24 changed files with 337 additions and 65 deletions

173
flake.lock generated
View file

@ -546,12 +546,66 @@
"type": "github"
}
},
"git-hooks": {
"fzfdapter": {
"inputs": {
"flake-compat": [
"flake-compat"
],
"flake-utils": [
"flake-utils"
],
"git-hooks": "git-hooks",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1761767036,
"narHash": "sha256-XUUOPtlDEhWIF02Dg4XCg1S8IUy1dUmskyJIzTfzahM=",
"owner": "kittywitch",
"repo": "fzfdapter",
"rev": "17aab3c2d7f4c8ab3a858859873d3eca5cecb981",
"type": "github"
},
"original": {
"owner": "kittywitch",
"repo": "fzfdapter",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": [
"fzfdapter",
"flake-compat"
],
"gitignore": "gitignore",
"nixpkgs": [
"fzfdapter",
"nixpkgs"
]
},
"locked": {
"lastModified": 1760663237,
"narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"git-hooks_2": {
"inputs": {
"flake-compat": [
"flake-compat"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"nixpkgs"
]
@ -573,6 +627,7 @@
"gitignore": {
"inputs": {
"nixpkgs": [
"fzfdapter",
"git-hooks",
"nixpkgs"
]
@ -592,6 +647,27 @@
}
},
"gitignore_2": {
"inputs": {
"nixpkgs": [
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gitignore_3": {
"inputs": {
"nixpkgs": [
"lanzaboote",
@ -853,11 +929,11 @@
]
},
"locked": {
"lastModified": 1760272637,
"narHash": "sha256-NYHwgjCNOsAOJUj0QlKALca6gEo5Y926MYDwv4RviNo=",
"lastModified": 1762128458,
"narHash": "sha256-3HzJXCdXVNP+FxIeXRYit/fkNoDw7h2P47898Szokto=",
"owner": "kittywitch",
"repo": "mewtris",
"rev": "76c605f892f9f170da36834e53a2272f7a2788e8",
"rev": "22e623f0a1689e98f0d3217c23c22b59aabf6bf1",
"type": "github"
},
"original": {
@ -1361,6 +1437,22 @@
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1762482733,
"narHash": "sha256-g/da4FzvckvbiZT075Sb1/YDNDr+tGQgh4N8i5ceYMg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e1ebeec86b771e9d387dd02d82ffdc77ac753abc",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"noctalia": {
"inputs": {
"nixpkgs": [
@ -1447,11 +1539,11 @@
]
},
"locked": {
"lastModified": 1759921619,
"narHash": "sha256-pPV5sLXlEAGwyyj51B5RCXhySYvKocf79I+ug1dKPXI=",
"lastModified": 1762200885,
"narHash": "sha256-IPrbvJWU+Gwgg6RBFHW1pgBTZi2uDzgBvEZm3phAId0=",
"owner": "nix-community",
"repo": "NUR",
"rev": "7100dfe6826fffc198a21b96244fa24bedd8ad97",
"rev": "0fbd67c5f81aa452afad41ed95f0e6d161f339cc",
"type": "github"
},
"original": {
@ -1466,7 +1558,7 @@
"lanzaboote",
"flake-compat"
],
"gitignore": "gitignore_2",
"gitignore": "gitignore_3",
"nixpkgs": [
"lanzaboote",
"nixpkgs"
@ -1552,7 +1644,8 @@
"flake-utils": "flake-utils_2",
"flake-utils-plus": "flake-utils-plus",
"flakelib": "flakelib",
"git-hooks": "git-hooks",
"fzfdapter": "fzfdapter",
"git-hooks": "git-hooks_2",
"home-manager": "home-manager",
"ida-pro-overlay": "ida-pro-overlay",
"infrastructure": "infrastructure",
@ -1583,6 +1676,8 @@
"rbw-bitw": "rbw-bitw",
"rust": "rust",
"rust-overlay": "rust-overlay",
"slimevr-wrangler": "slimevr-wrangler",
"slimevr-wrangler-src": "slimevr-wrangler-src",
"snowfall-lib": "snowfall-lib",
"solaar": "solaar",
"sops-nix": "sops-nix",
@ -1591,7 +1686,7 @@
"stylix": "stylix",
"systems": "systems_3",
"tree": "tree",
"treefmt-nix": "treefmt-nix",
"treefmt-nix": "treefmt-nix_2",
"ucodenix": "ucodenix",
"wezterm": "wezterm"
}
@ -1653,6 +1748,43 @@
"type": "github"
}
},
"slimevr-wrangler": {
"inputs": {
"nixpkgs": "nixpkgs_5",
"slimevr-wrangler-src": [
"slimevr-wrangler-src"
]
},
"locked": {
"lastModified": 1762856885,
"narHash": "sha256-mY6JvpcNdcY9QveTQQX4WeEWWRXTd07RA/N8MntNPqA=",
"owner": "kittywitch",
"repo": "slimevr-wrangler-flake",
"rev": "b9a45731a1039f59c38ee88b096001ab1b99f2dc",
"type": "github"
},
"original": {
"owner": "kittywitch",
"repo": "slimevr-wrangler-flake",
"type": "github"
}
},
"slimevr-wrangler-src": {
"flake": false,
"locked": {
"lastModified": 1739406050,
"narHash": "sha256-WAawquYowpv5kWYI295vy3mQX/45aVC0ntqnsmr8CTw=",
"owner": "kittywitch",
"repo": "slimevr-wrangler",
"rev": "208f90768505c1c9e7bb670df27568df7a251e54",
"type": "github"
},
"original": {
"owner": "kittywitch",
"repo": "slimevr-wrangler",
"type": "github"
}
},
"snowfall-lib": {
"inputs": {
"flake-compat": [
@ -2011,6 +2143,27 @@
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"fzfdapter",
"nixpkgs"
]
},
"locked": {
"lastModified": 1761311587,
"narHash": "sha256-Msq86cR5SjozQGCnC6H8C+0cD4rnx91BPltZ9KK613Y=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "2eddae033e4e74bf581c2d1dfa101f9033dbd2dc",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"

View file

@ -81,7 +81,7 @@
empty.url = "github:input-output-hk/empty-flake";
# self-explanatory
nixpkgs = {
follows = "chaotic/nixpkgs";
follows = "chaotic/nixpkgs"; # TODO: replace follows
#url = "github:nixos/nixpkgs/nixos-unstable";
#inputs.nixpkgs.follows = "chaotic/nixpkgs";
};
@ -267,6 +267,14 @@
flake-compat.follows = "flake-compat";
};
};
fzfdapter = {
url = "github:kittywitch/fzfdapter";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
flake-compat.follows = "flake-compat";
};
};
# file structure -> attrset
tree = {
url = "github:kittywitch/tree";
@ -345,6 +353,17 @@
flake-parts.follows = "flake-parts";
};
};
slimevr-wrangler-src = {
url = "github:kittywitch/slimevr-wrangler";
flake = false;
};
slimevr-wrangler = {
url = "github:kittywitch/slimevr-wrangler-flake";
inputs = {
#nixpkgs.follows = "nixpkgs";
slimevr-wrangler-src.follows = "slimevr-wrangler-src";
};
};
};
outputs = inputs: import ./outputs.nix {inherit inputs;};
}

View file

@ -37,8 +37,8 @@ in {
"Mod+Return".action = sh ''${getExe config.programs.alacritty.package}'';
"Mod+T".action.toggle-window-floating = {};
#"Mod+D".action = sh ''${getExe config.programs.fuzzel.package} -D no -T "${getExe config.programs.alacritty.package} --command"'';
"Mod+D".action = sh ''${noctalia} launcher toggle'';
"Mod+Shift+D".action = sh ''${noctalia} launcher clipboard'';
#"Mod+D".action = sh ''${noctalia} launcher toggle'';
#"Mod+Shift+D".action = sh ''${noctalia} launcher clipboard'';
#"Mod+Escape".action = sh ''${getExe config.programs.wlogout.package} -p layer-shell'';
"Mod+Escape".action = sh ''${noctalia} controlCenter toggle'';
"Mod+Shift+Escape".action = sh ''${noctalia} sessionMenu toggle'';

View file

@ -0,0 +1,50 @@
{
config,
lib,
pkgs,
inputs,
...
}: let
inherit (lib.meta) getExe getExe';
inherit (inputs.fzfdapter.packages.${pkgs.system}) fzfdapter;
terminal_exec = args: "${getExe pkgs.alacritty}${
if args != ""
then " ${args} "
else " "
}-e";
in {
home.packages = [
fzfdapter
pkgs.skim
];
xdg.configFile."fzfdapter/config.toml".source = (pkgs.formats.toml {}).generate "fzfdapter-config" {
terminal_exec = terminal_exec "";
fuzzy_exec = "${getExe' pkgs.skim "sk"} --layout=reverse-list";
};
# TODO: `niri msg focused-output` to handle resolution(s)
programs.niri.settings = let
sh = config.lib.niri.actions.spawn "sh" "-c";
in {
binds = {
"Mod+D".action = sh "${terminal_exec "-T fzfdapter --option 'font.size=18' --class fzfdapter"} ${getExe fzfdapter} --mode all";
};
window-rules = [
{
matches = [
{
app-id = "^fzfdapter$";
title = "fzfdapter";
}
];
max-height = 1000;
max-width = 750;
min-height = 1000;
min-width = 750;
open-focused = true;
open-floating = true;
}
];
};
}

View file

@ -196,8 +196,8 @@ in {
preferredPlayer = "";
};
ui = {
fontDefault = "CozetteCrossedSevenVector";
fontFixed = "CozetteCrossedSevenVector";
fontDefault = "Atkinson Hyperlegible Next";
fontFixed = "Atkinson Hyperlegible Mono";
fontDefaultScale = 1;
fontFixedScale = 1;
monitorsScaling = [

View file

@ -25,16 +25,16 @@
polarity = "dark";
fonts = {
sansSerif = {
name = "CozetteCrossedSevenVector";
package = pkgs.cozette;
name = "Atkinson Hyperlegible Next";
package = pkgs.atkinson-hyperlegible-next;
};
serif = {
name = "Libre Baskerville";
package = pkgs.libre-baskerville;
};
monospace = {
name = "CozetteCrossedSevenVector";
package = pkgs.cozette;
name = "Atkinson Hyperlegible Mono";
package = pkgs.atkinson-hyperlegible-mono;
};
};
autoEnable = true;

View file

@ -39,7 +39,6 @@
clearurls
df-youtube
old-reddit-redirect
privacy-badger
reddit-enhancement-suite
refined-github
stylus

View file

@ -41,6 +41,6 @@ in {
};
home.packages = with pkgs; [
yt-dlp # Watch videos from multiple sources without having to use a browser for it
ytcc # Subscriptions manager and RSS feed exporter for YouTube
ytcc # Subscriptions manager and RSS feed exporter for YouTube # TODO: Broken: 2025-10-28
];
}

View file

@ -1,6 +1,8 @@
{pkgs, ...}: {
fonts = {
packages = with pkgs; [
atkinson-hyperlegible-next
atkinson-hyperlegible-mono
twitter-color-emoji
cozette
monaspace

View file

@ -1,5 +1,6 @@
{pkgs, ...}: {
environment.systemPackages = [
pkgs.magic-wormhole
pkgs.ntfy-sh
];
}

View file

@ -1,5 +1,6 @@
ssh-notify: ENC[AES256_GCM,data:Dyuw8cxipVPKOI7/OYiK7OyyrDrIbqp8YxyLfAbY/YJZ8xVOqv1hyrrqhRYWQo+jUi9BRA==,iv:lKUdpiWBvKr5qpo5Z/Ky2SwKk5fDGAysbbDTYrjV+m4=,tag:JwbJXiA/e3qAUsLFLatUxg==,type:str]
tailscale-key: ENC[AES256_GCM,data:FK237Or4qtZGon9tevPh4q568+IUSWxfuG8s2ZNLXWgoa76GoyO+qwCmvXiVibRH1Ljo/LXoNQjb2pYV7w==,iv:UZv+EnlRDOWh86sOFh7ZNryPz1r55u+Dbr/dDL/USjo=,tag:B8DJwPXR/50ARbfyfxPtcw==,type:str]
notify-token: ENC[AES256_GCM,data:Cb6ssSkclOoqlxTvTjbbzqfJHpw6oRGZfq3csIZQoi5bqxRulF6sjFehP+zzJJP7,iv:/pG5UvuFB/eWgulmjbZtEPB2R/HVmTcwr+DuSNmhePk=,tag:8PBAgt0wPX0n539W2JV5EA==,type:str]
sops:
shamir_threshold: 1
age:
@ -84,8 +85,8 @@ sops:
RGova3pLS2VpRzB2VWhIcnRISlVUS3cKGyKpvwd5wr1melbtgbXAoo2qRYhWoJ8x
ZCn/vismSmoM+OR/JVXpDiSHGfvxWBEnLj41yV82wsT1hSqigXjdUw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-13T19:36:20Z"
mac: ENC[AES256_GCM,data:FZwCV9hd3lZfN9qXzGHPmUcRfpZhaFoZZYECIrMPdqfxQG87THS53rk1Iy0It/+G1S68I5aNR0ednVCEUO/x/T+Is3a5F+RSqIwvH4ndMKmjlFhb4Uh8cp9txJyabnuRexx08OXEC/Dz0ad7VbcmG8KCo56MJm2wbbPaBEgeY04=,iv:i/CCqPJCKOsKBkmAOo/6/zjM82LL7+YDb/v95HpISfE=,tag:hgmnmb4+PIOjSKp1STjgtg==,type:str]
lastmodified: "2025-10-28T11:05:18Z"
mac: ENC[AES256_GCM,data:OGYjjVtNUxiGIwYPc5S6eEhAAEhqZC7oWo0lH+egfpojlpFkaswoj2LhvNoehfUGuedw5hed+B3vXuKT5Cs7m+9cQWCF4wneDDikUB+j+H9L1Nfzpni/b1/xfo0sQN7p48mqRKKz3a79hefGcAbx3ntrBK2Na9aSxzS70bMuKBg=,iv:impbp557hKM5dUPvYTVtaUZ/uy7+p6tNPDewfzc195o=,tag:HfxGX6QSkdr5UMWvcL1N/w==,type:str]
pgp:
- created_at: "2025-06-27T20:11:08Z"
enc: |-

View file

@ -26,16 +26,16 @@
polarity = "dark";
fonts = {
sansSerif = {
name = "CozetteCrossedSevenVector";
package = pkgs.cozette;
name = "Atkinson Hyperlegible Next";
package = pkgs.atkinson-hyperlegible-next;
};
serif = {
name = "Libre Baskerville";
package = pkgs.libre-baskerville;
};
monospace = {
name = "CozetteCrossedSevenVector";
package = pkgs.cozette;
name = "Atkinson Hyperlegible Mono";
package = pkgs.atkinson-hyperlegible-mono;
};
};
autoEnable = true;

View file

@ -1,7 +1,18 @@
{pkgs, ...}: {
{
pkgs,
inputs,
...
}: {
environment.systemPackages = with pkgs; [
gsettings-desktop-schemas
slimevr
slimevr-server
inputs.slimevr-wrangler.packages.${pkgs.system}.slimevr-wrangler
];
networking.firewall = {
allowedUDPPorts = [6969 8266 35903];
allowedTCPPorts = [21110];
};
programs.adb.enable = true;
users.users.kat.extraGroups = ["adbusers"];
services.udev.extraRules = ''

View file

@ -1,14 +1,15 @@
{pkgs, ...}: {
{
pkgs,
inputs,
...
}: {
programs.steam = {
enable = true;
package = pkgs.steam.override {
extraProfile = ''
unset TZ
'';
};
remotePlay.openFirewall = true;
platformOptimizations.enable = true;
extraCompatPackages = [
inputs.chaotic.packages.${pkgs.system}.proton-cachyos_x86_64_v3
inputs.chaotic.packages.${pkgs.system}.proton-ge-custom
];
};
}

View file

@ -1,8 +1,27 @@
{pkgs, ...}: {
{
pkgs,
lib,
...
}: {
services.wivrn = {
enable = true;
openFirewall = true;
package = pkgs.wivrn.override {cudaSupport = true;};
package = pkgs.wivrn.overrideAttrs (old: rec {
cudaSupport = true;
version = "84e5203be3019278925ac03708567f2982360f8a";
src = pkgs.fetchFromGitHub {
owner = "notpeelz";
repo = "WiVRn";
rev = version;
# This will throw an error when evaluating and give you the correct hash - put that here
hash = "sha256-2s3j6vRtIRf6x+lQPobcuT1vzlCh1lMA54EUiCnxoFI=";
};
cmakeFlags =
old.cmakeFlags
++ [
(lib.cmakeBool "WIVRN_FEATURE_SOLARXR" true)
];
});
defaultRuntime = true;
config = {
enable = true;

View file

@ -27,17 +27,8 @@ in {
];
runnerEnvironments = {
common = {
# inherit WINEDEBUG;
PROTON_LOG = builtins.toString 1;
WINEDEBUG = concatStringsSep "," [
"+warn"
"+timestamp"
"+pid"
"+tid"
"+seh"
"+debugstr"
#"+module"
"trace:-module"
];
WINEUSERSANDBOX = builtins.toString 1;
};
dxvk = {
@ -85,6 +76,7 @@ in {
protonCommon = {
runner = "proton";
variant = "PROTON_GE";
enableGamemode = true;
environments = [
"common"
"proton"
@ -169,7 +161,10 @@ in {
gw1 = mkMerge [
protonCommon
#wineCommon
rec {
#variant = mkForce "PROTON_CACHYOS";
#variant = mkForce "PROTON_GE";
long_name = "Guild Wars 1";
prefixFolder = gameStorage + "/guild-wars";
gameFolder = prefixFolder + "/drive_c/Program Files/Guild Wars";
@ -256,6 +251,9 @@ in {
driversi686Linux.mesa
];
};
programs.gamemode = {
enable = true;
};
programs.gamescope = {
enable = true;
package = pkgs.gamescope;
@ -275,6 +273,7 @@ in {
};
pfxes = [
"Games/VNs/drive_c/windows"
"Games/guild-wars/drive_c/windows"
];
arches = {
"x32" = "system32";

View file

@ -7,7 +7,7 @@
waylandFrontend = true;
addons = with pkgs; [
fcitx5-anthy
fcitx5-gtk
fcitx5-gtk # TODO: Broken: 2025-10-28
];
};
};

View file

@ -1,4 +1,16 @@
{pkgs, ...}: {
{pkgs, ...}: let
bitrate_int = 48 * 1000;
bitrate = toString bitrate_int;
ll_quant_int = 512;
ll_quant = toString ll_quant_int;
ml_quant_int = 1024;
ml_quant = toString hl_quant_int;
hl_quant_int = 2048;
hl_quant = toString hl_quant_int;
minQuant = "${ll_quant}/${bitrate}";
midQuant = "${ml_quant}/${bitrate}";
maxQuant = "${hl_quant}/${bitrate}";
in {
environment.systemPackages = with pkgs; [pulsemixer pwvucontrol easyeffects];
services = {
@ -12,10 +24,10 @@
extraConfig = {
pipewire."92-low-latency" = {
"context.properties" = {
"default.clock.rate" = 48000;
"default.clock.quantum" = 256;
"default.clock.min-quantum" = 256;
"default.clock.max-quantum" = 256;
"default.clock.rate" = bitrate_int;
"default.clock.quantum" = ml_quant_int;
"default.clock.min-quantum" = ll_quant_int;
"default.clock.max-quantum" = hl_quant_int;
};
};
pipewire-pulse = {
@ -25,7 +37,7 @@
matches = [{"application.process.binary" = "Discord";}];
actions = {
update-props = {
"pulse.min.quantum" = "1024/48000";
"pulse.min.quantum" = midQuant;
};
};
}
@ -39,14 +51,14 @@
}
];
"pulse.properties" = {
"pulse.min.req" = "512/48000";
"pulse.default.req" = "512/48000";
"pulse.max.req" = "512/48000";
"pulse.min.quantum" = "512/48000";
"pulse.max.quantum" = "512/48000";
"pulse.min.req" = minQuant;
"pulse.default.req" = midQuant;
"pulse.max.req" = maxQuant;
"pulse.min.quantum" = minQuant;
"pulse.max.quantum" = maxQuant;
};
"stream.properties" = {
"node.latency" = "256/48000";
"node.latency" = minQuant;
"resample.quality" = 1;
};
};

View file

@ -1,4 +1,4 @@
{pkgs, ...}: {
boot.zfs.package = pkgs.zfs_cachyos;
boot.kernelPackages = pkgs.linuxPackages_cachyos-lto;
boot.kernelPackages = pkgs.linuxPackages_cachyos;
}

View file

@ -1,7 +1,7 @@
{pkgs, ...}: {
services.scx = {
enable = true;
package = pkgs.scx_git.full;
scheduler = "scx_lavd";
package = pkgs.scx.full;
scheduler = "scx_bpfland";
};
}

View file

@ -1,5 +1,5 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [bluez5-experimental];
environment.systemPackages = with pkgs; [bluez5-experimental bluetuith];
services.pipewire.wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/10-bluez.conf" ''
@ -18,6 +18,8 @@
settings = {
General = {
Enable = "Source,Sink,Media,Socket";
Experimental = true;
KernelExperimental = true;
};
};
};

View file

@ -19,7 +19,8 @@
enable = true;
packageOverrides = {treefmt = formatting.formatter.${system};};
};
flake-checker.enable = true;
# TODO: remove when cmake 4 changes aren't FUCKED
#flake-checker.enable = true;
ripsecrets.enable = true;
pre-commit-hook-ensure-sops.enable = true;
};

View file

@ -10,8 +10,10 @@ in
inherit system overlays;
config = {
allowUnfree = true;
android_sdk.accept_license = true;
permittedInsecurePackages = [
"olm-3.2.16"
"mbedtls-2.28.10"
];
};
};

View file

@ -1,3 +1,3 @@
#!/usr/bin/env bash
adb reverse tcp:9757 tcp:9757
adb shell am start -a android.intent.action.VIEW -d "wivrn+tcp://localhost" org.meumeu.wivrn
adb shell am start -a android.intent.action.VIEW -d "wivrn+tcp://localhost" org.meumeu.wivrn.github.testing