Compare commits

..

3 Commits

Author SHA1 Message Date
9c1e54a9b4 stash 2025-08-02 10:32:40 +08:00
a614e65597 feat: 0801 update 2025-08-02 08:36:49 +08:00
90a409b9b3 chore: remove README.md 2025-07-25 21:28:43 +08:00
13 changed files with 120 additions and 242 deletions

View File

@@ -4,6 +4,10 @@ switch:
@echo "Rebuilding NixOS..."
@nh os switch .
switch-slow:
@echo "Rebuilding NixOS..."
@nh os switch . -- --max-jobs 1
boot:
@echo "Rebuilding NixOS..."
@nh os boot .

View File

@@ -1,54 +0,0 @@
<h2 align="center">:snowflake: imxyy_soope_'s NixOS Config :snowflake:</h2>
> This configuration and READMEs in this repo borrows heavily from [ryan4yin/nix-config](https://github.com/ryan4yin/nix-config) and his
> [cookbook](https://github.com/ryan4yin/nixos-and-flakes-book). Many thanks to his spirit of sharing!
This repository is home to the nix code that builds my systems:
Currently, this repository contains the nix code that builds:
1. NixOS Desktop: NixOS with home-manager, niri, neovim, etc.
2. NixOS home server
3. NixOS WSL
See [./config/hosts](./config/hosts) for details of each host.
## Why NixOS & Flakes?
Nix allows for easy-to-manage, collaborative, reproducible deployments. This
means that once something is setup and configured once, it works (almost)
forever. If someone else shares their configuration, anyone else can just use it
(if you really understand what you're copying/refering now).
As for Flakes, refer to
[Introduction to Flakes - NixOS & Nix Flakes Book](https://nixos-and-flakes.thiscute.world/nixos-with-flakes/introduction-to-flakes)
## Components
| | NixOS(Wayland) |
| ----------------------------- | :------------------------------------------------------ |
| **Window Manager** | Niri |
| **Terminal Emulator** | Alacritty & Kitty & Foot & Ghostty |
| **Bar** | Waybar |
| **Application Launcher** | wofi |
| **Notification Daemon** | SwayNotificationCenter |
| **Input method framework** | Fcitx5 |
| **Shell** | Zsh |
| **Netease Cloudmusic Player** | go-musicfox |
| **Media Player** | mpv |
| **Text Editor** | Neovim |
| **Fonts** | Noto Sans CJK & Jetbrains Mono & Nerd Font |
| **Filesystem** | btrfs subvolumes, clean '/' every boot for impermanence |
And more...
## Folder Structure
- `modules/` - custom NixOS modules
- `config/base.nix` - generic configs
- `config/hosts/<name>/` - hosts-specific configs
- `lib/` - custom nix library
- `pkgs/` - custom packages
- `overlays/` - nixpkgs overlays
- `vars.nix` - my variables
- `secrets/` - secrets managed by sops-nix. see [./secrets](./secrets) for details
- `flake.nix` - flake entry

View File

@@ -5,8 +5,13 @@
...
}:
{
hardware.nvidia.open = true;
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.beta;
hardware.nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.latest;
modesetting.enable = true;
nvidiaSettings = true;
open = true;
};
# services.xserver.videoDrivers = [ "nvidia" ];
boot = {
initrd = {
availableKernelModules = [

View File

@@ -9,8 +9,6 @@
home.packages = with pkgs; [
localsend
rclone
wpsoffice-cn
wps-office-fonts
ttf-wps-fonts
@@ -26,6 +24,16 @@
pavucontrol
pamixer
qqmusic
lumafly
scanmem
xmind
netease-cloud-music-gtk
maven
];
programs.zsh = {
sessionVariables = {

View File

@@ -65,7 +65,11 @@
sopsFile = secrets.easytier;
format = "binary";
};
environment.systemPackages = [ pkgs.easytier ];
environment.systemPackages = with pkgs; [
inetutils
easytier
];
systemd.services."easytier" = {
enable = true;
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.easytier.path}";

View File

@@ -6,75 +6,6 @@
secrets,
...
}:
let
btreset = pkgs.writeScriptBin "btreset" ''
#!${lib.getExe pkgs.python3}
import subprocess
import os
import sys
SYM = "BT"
def action(line: str) -> bool:
if line.find(SYM) == -1:
return False
temp = line.split(" ")
bus = temp[1]
device = temp[3][:-1]
subprocess.run(["${lib.getExe usbreset}", f"/dev/bus/usb/{bus}/{device}"])
return True
if __name__ == "__main__":
if os.path.exists("/tmp/.btreseted") and len(sys.argv) == 1 and "-f" not in sys.argv[1:]:
exit(0)
res_byte = subprocess.check_output("/run/current-system/sw/bin/lsusb")
res = res_byte.decode()
lst = res.split("\n")
if any(tuple(map(action, lst))):
with open("/tmp/.btreseted", "w"):
...
'';
usbreset = pkgs.writeCBin "usbreset" ''
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/usbdevice_fs.h>
int main(int argc, char **argv)
{
const char *filename;
int fd;
int rc;
if (argc != 2) {
fprintf(stderr, "Usage: usbreset device-filename\n");
return 1;
}
filename = argv[1];
fd = open(filename, O_WRONLY);
if (fd < 0) {
perror("Error opening output file");
return 1;
}
printf("Resetting USB device %s\n", filename);
rc = ioctl(fd, USBDEVFS_RESET, 0);
if (rc < 0) {
perror("Error in ioctl");
return 1;
}
printf("Reset successful\n");
close(fd);
return 0;
}
'';
in
{
security.pam.loginLimits = [
{
@@ -85,11 +16,6 @@ in
}
];
systemd.services.btreset = {
script = lib.getExe btreset;
wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "oneshot";
};
boot.kernelParams = [
"usbcore.autosuspend=-1" # Avoid usb autosuspend (for usb bluetooth adapter)
"fsck.mode=skip"
@@ -141,6 +67,8 @@ in
};
users.extraUsers.${username}.extraGroups = [ "audio" ];
programs.nix-ld.enable = true;
fonts = {
enableDefaultPackages = false;
fontDir.enable = true;
@@ -177,39 +105,21 @@ in
services.printing.enable = true;
services.keyd = {
enable = true;
keyboards.default.settings = {
main = {
capslock = "overload(control, esc)";
home = "end";
};
shift = {
home = "home";
};
control = {
delete = "print";
};
};
};
services.gvfs.enable = true;
programs.wireshark.enable = true;
programs.wireshark.package = pkgs.wireshark;
users.users.${username}.extraGroups = [ "wireshark" ];
services.sunshine = {
enable = true;
autoStart = true;
capSysAdmin = true;
applications.apps = [
{
name = "Desktop";
image-path = "desktop.png";
}
];
};
/*
services.sunshine = {
enable = true;
autoStart = true;
capSysAdmin = true;
applications.apps = [
{
name = "Desktop";
image-path = "desktop.png";
}
];
};
*/
services.openssh = {
enable = true;
settings = {
@@ -218,9 +128,4 @@ in
PasswordAuthentication = true;
};
};
environment.systemPackages = [
pkgs.rclone
btreset
];
}

130
flake.lock generated
View File

@@ -37,11 +37,11 @@
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1748408240,
"narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=",
"lastModified": 1752979451,
"narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e",
"rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
"type": "github"
},
"original": {
@@ -107,11 +107,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1753146705,
"narHash": "sha256-WzmXODUzg8jeEsAhpmp55zk5I2fmv3kv+RofZ/+FYlg=",
"lastModified": 1753875761,
"narHash": "sha256-FqsfIWS0mQ5OzLRLFgVEBWew/7WROSNr8lvTJJ7AQ4w=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "02b3c2a45f6ddbd704f797c5730bc2d161f10ce0",
"rev": "b184ca87254844a6c2098b27b4ab493e6faf6cf7",
"type": "github"
},
"original": {
@@ -128,11 +128,11 @@
]
},
"locked": {
"lastModified": 1753134819,
"narHash": "sha256-K0dxmI2P5PG8sRkolcmSfPFd9ZCRvYgLLvMZJZyETaI=",
"lastModified": 1753219021,
"narHash": "sha256-wYL0oMGwFPbhYT0G2NcR4ud00TI06TEWOrvPpN4eNl0=",
"owner": "Bali10050",
"repo": "Darkly",
"rev": "5d5696091e706fcdcf13b90affa3e9783b8b3ac0",
"rev": "79ec260ff2a9af1f4de10e670c75b31b7fbcd5da",
"type": "github"
},
"original": {
@@ -171,11 +171,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1753166582,
"narHash": "sha256-EUjND31oxYwWw9Nl6HPLbsruNpicUQU8T/ZwgqB/OCY=",
"lastModified": 1753858083,
"narHash": "sha256-9eNLBxVBaOLGTOC1QkwrzRtnb1x9MB/3PYLb+CiALZY=",
"owner": "nix-community",
"repo": "fenix",
"rev": "a96e6ce7ec45c47aedad3728ef32de4ae4c0e416",
"rev": "2c5508b7563b9138a00cd82e213febfc9cbbb36c",
"type": "github"
},
"original": {
@@ -457,11 +457,11 @@
]
},
"locked": {
"lastModified": 1748528448,
"narHash": "sha256-Tyn+PgBm78Ibq28/WbEz8+pYJZMdbJKsyXMCpT6TjrM=",
"lastModified": 1751817769,
"narHash": "sha256-j7ORyAJFNxYWwF+6fs2z5IcJ40TpVwrkFYU9/CGHwfA=",
"owner": "imxyy1soope1",
"repo": "go-musicfox",
"rev": "1870fd3501631577ad4daef1489b03885abcb037",
"rev": "179b9440b6f209e7fd6ade589117b72bdd9042a6",
"type": "github"
},
"original": {
@@ -500,11 +500,11 @@
]
},
"locked": {
"lastModified": 1753132348,
"narHash": "sha256-0i3jU9AHuNXb0wYGzImnVwaw+miE0yW13qfjC0F+fIE=",
"lastModified": 1753761827,
"narHash": "sha256-mrVNT+aF4yR8P8Fx570W2vz+LzukSlf68Yr2YhUJHjo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e4bf85da687027cfc4a8853ca11b6b86ce41d732",
"rev": "50adf8fcaa97c9d64309f2d507ed8be54ea23110",
"type": "github"
},
"original": {
@@ -520,11 +520,11 @@
]
},
"locked": {
"lastModified": 1753132348,
"narHash": "sha256-0i3jU9AHuNXb0wYGzImnVwaw+miE0yW13qfjC0F+fIE=",
"lastModified": 1753888434,
"narHash": "sha256-xQhSeLJVsxxkwchE4s6v1CnOI6YegCqeA1fgk/ivVI4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e4bf85da687027cfc4a8853ca11b6b86ce41d732",
"rev": "0630790b31d4547d79ff247bc3ba1adda3a017d9",
"type": "github"
},
"original": {
@@ -595,11 +595,11 @@
]
},
"locked": {
"lastModified": 1752755091,
"narHash": "sha256-H/k35QJLyQxkFnXR5ckMv/Z+ElNa5f22qNKdyGBMAn4=",
"lastModified": 1753764272,
"narHash": "sha256-8/tZ3ZJpplWaVxgMeRg26cUclBZ27UUnnJdzd+RQKqE=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "0d09755fe1df1886e5f07dbb16f7ed373080f86a",
"rev": "448688ae3df3152fec412e583239473934109486",
"type": "github"
},
"original": {
@@ -668,11 +668,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1753132162,
"narHash": "sha256-ycK2rB1kltXcrz5+dpldPngiYMukgaT2atwxhTjkIZQ=",
"lastModified": 1753839324,
"narHash": "sha256-ipcsHV+XE7gaItRhqLsjLCYKIk57IAP1s9BHajQRotA=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "f7cc80e3ad7e34ac523ba401ece49c4151fc19ca",
"rev": "0108605855b3222c8965fa23fc05d713b77d0564",
"type": "github"
},
"original": {
@@ -804,11 +804,11 @@
]
},
"locked": {
"lastModified": 1752682362,
"narHash": "sha256-ZNIpqCG/CfhmV+TgIeyO/XbhDjSWpwWokHM44j0Mn0w=",
"lastModified": 1753704990,
"narHash": "sha256-5E14xuNWy2Un1nFR55k68hgbnD8U2x/rE5DXJtYKusw=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "20001f9bf0aaf2b1c307e43a5eec8cf8f800fe14",
"rev": "58c814cc6d4a789191f9c12e18277107144b0c91",
"type": "github"
},
"original": {
@@ -819,11 +819,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1752950548,
"narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=",
"lastModified": 1753694789,
"narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c87b95e25065c028d31a94f06a62927d18763fdf",
"rev": "dc9637876d0dcc8c9e5e22986b857632effeb727",
"type": "github"
},
"original": {
@@ -847,11 +847,11 @@
},
"nixpkgs-master": {
"locked": {
"lastModified": 1753168712,
"narHash": "sha256-z3xENTx8CgQjxTYwpzFgp+IGcHuEYiObaCnsZ/n7Wf4=",
"lastModified": 1753941802,
"narHash": "sha256-pQt2gqpCCA0GWEqcm4IzvkbLw4fNMn6JNq+5BBPpyAM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "52bfb2685fa0afc1394201103ab1c8511e74261e",
"rev": "ed33ba16ce8e8605d8e9ef2dc6e802bc3134781d",
"type": "github"
},
"original": {
@@ -863,11 +863,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1753168829,
"narHash": "sha256-/xbkt7rKnCgpzjRTPiqJTsauV+w1FGSgLzFISTxulfg=",
"lastModified": 1753907720,
"narHash": "sha256-rkoY2MZqt8qZbL/R+kUAm9unGXeEBaRpyls/mvImbJQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ec031223f1f94bbbaca8f7d975cb5a7441f90505",
"rev": "22e6141f9c24030dbbd0a7b7c55f5714830e22b5",
"type": "github"
},
"original": {
@@ -879,11 +879,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1753088943,
"narHash": "sha256-cIyYVyDTSR6K3+xUGvEO3GAtBsdBhBcDALqHK50QEIQ=",
"lastModified": 1753904442,
"narHash": "sha256-XHeb6yarZ9YLd3aQsnc0c8FrpnBGtHckQGZBPYXF7Uk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "91b279d8c68718659084298ea287c73b5bf6df2c",
"rev": "d02f407d2bb5a5cb2f2f75c2a7c30d5b854be11b",
"type": "github"
},
"original": {
@@ -943,11 +943,11 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1752950548,
"narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=",
"lastModified": 1753694789,
"narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c87b95e25065c028d31a94f06a62927d18763fdf",
"rev": "dc9637876d0dcc8c9e5e22986b857632effeb727",
"type": "github"
},
"original": {
@@ -963,11 +963,11 @@
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1753166477,
"narHash": "sha256-ftWDv9eUl0cNsJfhwx7RrIZvtUt0SH3LoGsBZfGyWDw=",
"lastModified": 1753942697,
"narHash": "sha256-rZfW0XNiJVQojH9jBqifnccZykcIzugXxy+J4mZAl8E=",
"owner": "nix-community",
"repo": "NUR",
"rev": "690f8c0102a674b35ac4e919bb34a8ef10d0e84c",
"rev": "fcab7393172a4a8821d70fe1df23b93fb3217ef7",
"type": "github"
},
"original": {
@@ -1008,11 +1008,11 @@
]
},
"locked": {
"lastModified": 1753090730,
"narHash": "sha256-QG14m53ZGp2Gk7xD2Q+Tf7RYCKfk/BYRaBtX3X4IKbc=",
"lastModified": 1753595452,
"narHash": "sha256-vqkSDvh7hWhPvNjMjEDV4KbSCv2jyl2Arh73ZXe274k=",
"ref": "refs/heads/master",
"rev": "db77c71c216530159c2dcf5b269ebb4706b2e2dd",
"revCount": 653,
"rev": "a5431dd02dc23d9ef1680e67777fed00fe5f7cda",
"revCount": 665,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
@@ -1049,11 +1049,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1753115469,
"narHash": "sha256-5U3eokxjR/nTDQokJVZSL3j0THxQwWbYBpLO1dp8ZOw=",
"lastModified": 1753789923,
"narHash": "sha256-z45szWoM2UZJuo2791LnkI6agdtBhZFSo87elnhp/eI=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "9a1ee18e4dccc29c41d5c642860e58641d5ed0de",
"rev": "e57f18480dc3b1a0f46cd83e2aaa1cf3b53d8ece",
"type": "github"
},
"original": {
@@ -1071,11 +1071,11 @@
]
},
"locked": {
"lastModified": 1753066249,
"narHash": "sha256-j2UBrfDRIePGx3532Bbb9UeosNX2F73hfOAHtmACfnM=",
"lastModified": 1753757591,
"narHash": "sha256-3okLvry8fRWZhJZP75pPC9P6U1dcu84VOCPhPLXYozI=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "0751b65633a1785743ca44fd7c14a633c54c1f91",
"rev": "b372cf71b4125d420d7648cbd898ab8f5c355be2",
"type": "github"
},
"original": {
@@ -1125,11 +1125,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1753117651,
"narHash": "sha256-7gWBlUOe2c0nYGyoVDa9hw15pI3DXDR0KK+nYh9KOpU=",
"lastModified": 1753919664,
"narHash": "sha256-U7Ts8VbVD4Z6n67gFx00dkpQJu27fMu173IUopX3pNI=",
"owner": "danth",
"repo": "stylix",
"rev": "ea60526c8c2a1c5df2743a9495814dc0b319ef3b",
"rev": "30f5022236cf8dd257941cb0f910e198e7e464c7",
"type": "github"
},
"original": {
@@ -1290,11 +1290,11 @@
]
},
"locked": {
"lastModified": 1753417538,
"narHash": "sha256-Z/MbHMjvHoC57sQS43/oLwzEQebT5ST8MRU8Zcb5428=",
"lastModified": 1753933355,
"narHash": "sha256-4QxMcKS6oc+cG8efwwAin4M+YOokBak1dVS8u5P3b5M=",
"ref": "refs/heads/main",
"rev": "d04bdc75b3d203b951ce00cbb6a7ab410ab110c6",
"revCount": 593,
"rev": "fa795a139a8c92b140bc21f11f61da1c97ad5b1d",
"revCount": 608,
"type": "git",
"url": "https://gh-proxy.com/github.com/0xc000022070/zen-browser-flake"
},

View File

@@ -90,6 +90,7 @@
infuse = (import inputs.infuse { inherit (nixpkgs) lib; }).v1.infuse;
in
{
packages = forAllSystems (
system:
lib.haumea.load {

View File

@@ -47,9 +47,9 @@ altScreen=true
# 双列显示,开启务必使用等宽字体
doubleColumn=true
# 下载目录,默认为$HOME/.go-musicfox/download
downloadDir=/home/imxyy/Music/go-musicfox
downloadDir=/home/ccl/Music/go-musicfox
# 缓存目录,默认为${MUSICFOX_ROOT}/cache
cacheDir=/home/imxyy/Music/go-musicfox/.cache
cacheDir=/home/ccl/Music/go-musicfox/.cache
# 缓存大小以MB为单位0为不使用缓存-1为不限制默认为0
cacheLimit=-1
# 是否显示歌单下所有歌曲默认不开启仅获取歌单前1000首开启后可能会占用更多内存大量歌曲数据和带宽会同时发送多个请求获取歌单下歌曲数据
@@ -78,7 +78,7 @@ engine=mpd
# mpd配置
mpdBin=mpd
# !!!注意!!! 一定要在配置文件中设置pid_file否则在退出时不会kill掉mpd进程
mpdConfigFile=/home/imxyy/.config/mpd/mpd.conf
mpdConfigFile=/home/ccl/.config/mpd/mpd.conf
mpdNetwork=tcp
mpdAddr=127.0.0.1:6600

View File

@@ -1,8 +1,8 @@
bind_to_address "127.0.0.1"
port "6600"
music_directory "/home/imxyy/Music/go-musicfox/.cache"
pid_file "/home/imxyy/.config/mpd/mpd.pid"
db_file "/home/imxyy/.config/mpd/mpd.db"
music_directory "/home/ccl/Music/go-musicfox/.cache"
pid_file "/home/ccl/.config/mpd/mpd.pid"
db_file "/home/ccl/.config/mpd/mpd.db"
input {
plugin "file"

View File

@@ -78,7 +78,7 @@ lib.my.makeSwitch {
};
programs.zsh = {
enable = true;
dotDir = ".config/zsh";
dotDir = "${config.my.home.xdg.configHome}/zsh";
history = {
path = "${stateHome}/zsh_history";
ignorePatterns = [

View File

@@ -38,8 +38,8 @@ lib.my.makeSwitch {
# Deduplicate and optimize nix store
auto-optimise-store = true;
substituters = [
"https://mirror.sjtu.edu.cn/nix-channels/store"
"https://mirrors.sjtug.sjtu.edu.cn/nix-channels/store"
# "https://mirror.sjtu.edu.cn/nix-channels/store"
"https://mirrors.ustc.edu.cn/nix-channels/store"
"https://nix-community.cachix.org"
"https://cache.nixos.org"

View File

@@ -22,6 +22,11 @@
cage.__output.patches.__append = [ ./cage-specify-output-name.patch ];
matrix-synapse.__assign = final.stable.matrix-synapse;
bottles.__input.removeWarningPopup.__assign = true;
vscode.__output.preFixup.__append = ''
gappsWrapperArgs+=(
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--wayland-text-input-version=3}}"
)
'';
vscodium.__output.preFixup.__append = ''
gappsWrapperArgs+=(
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--wayland-text-input-version=3}}"