2026-02-12 18:53:24 +00:00
|
|
|
|
{
|
|
|
|
|
|
inputs,
|
|
|
|
|
|
upkgs,
|
2026-02-13 23:27:35 +10:00
|
|
|
|
spkgs,
|
2026-02-12 18:53:24 +00:00
|
|
|
|
...
|
2026-02-13 23:27:35 +10:00
|
|
|
|
}: {
|
2026-02-12 18:53:24 +00:00
|
|
|
|
imports = [
|
|
|
|
|
|
./hardware-configuration.nix
|
|
|
|
|
|
|
|
|
|
|
|
./modules/amdgpu-ignore-ctx-privileges.nix
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
# Use the systemd-boot EFI boot loader.
|
|
|
|
|
|
boot = rec {
|
|
|
|
|
|
initrd.kernelModules = ["amdgpu"];
|
|
|
|
|
|
|
|
|
|
|
|
loader = {
|
|
|
|
|
|
systemd-boot.enable = true;
|
|
|
|
|
|
efi.canTouchEfiVariables = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2026-02-13 23:27:35 +10:00
|
|
|
|
# kernelPackages = upkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4;
|
|
|
|
|
|
kernelPackages = upkgs.linuxPackages_latest;
|
2026-02-12 18:53:24 +00:00
|
|
|
|
kernelModules = ["v4l2loopback"];
|
|
|
|
|
|
extraModulePackages = with kernelPackages; [v4l2loopback];
|
|
|
|
|
|
|
|
|
|
|
|
# qemu
|
2026-02-14 18:16:29 +10:00
|
|
|
|
# binfmt.emulatedSystems = [
|
2026-02-12 18:53:24 +00:00
|
|
|
|
# "riscv64-linux"
|
|
|
|
|
|
# ];
|
|
|
|
|
|
# the following line is from:
|
|
|
|
|
|
# https://discourse.nixos.org/t/chroot-into-arm-container-with-systemd-nspawn/34735
|
|
|
|
|
|
# fixed my arch-chroot issue when trying to setup a risc v sd card for
|
|
|
|
|
|
# the mango pi mq pro
|
|
|
|
|
|
binfmt.preferStaticEmulators = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
# bluetooth
|
|
|
|
|
|
services.blueman.enable = true; # gui bluetooth manager
|
|
|
|
|
|
|
|
|
|
|
|
networking = {
|
|
|
|
|
|
hostName = "nixarawrui";
|
|
|
|
|
|
networkmanager.enable = true;
|
|
|
|
|
|
firewall = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
# allows wireguard to route all traffic through default route <3
|
|
|
|
|
|
checkReversePath = "loose";
|
|
|
|
|
|
|
|
|
|
|
|
allowedTCPPorts = [
|
|
|
|
|
|
21110 # slimevr
|
|
|
|
|
|
44949 # rquickshare
|
|
|
|
|
|
];
|
|
|
|
|
|
allowedUDPPorts = [
|
|
|
|
|
|
6969 # slimevr
|
|
|
|
|
|
8266 # slimevr
|
|
|
|
|
|
35903 # slimevr
|
|
|
|
|
|
44949 # rquickshare
|
|
|
|
|
|
];
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
nftables.enable = true;
|
|
|
|
|
|
wireguard.enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
# hardware / driver stuff
|
|
|
|
|
|
hardware = {
|
|
|
|
|
|
keyboard = {
|
|
|
|
|
|
qmk.enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
opentabletdriver.enable = true;
|
|
|
|
|
|
wooting.enable = true;
|
|
|
|
|
|
xone.enable = true;
|
|
|
|
|
|
bluetooth.enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
virtualisation = {
|
|
|
|
|
|
podman = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
dockerCompat = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
waydroid.enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
environment.sessionVariables = {
|
|
|
|
|
|
NIXOS_OZONE_WL = "1";
|
|
|
|
|
|
|
|
|
|
|
|
# makes portals work correctly
|
|
|
|
|
|
QT_QPA_PLATFORMTHEME = "xdgdesktopportal";
|
|
|
|
|
|
#QT_QPA_PLATFORMTHEME = "flatpak"; # sometimes might need this
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
xdg.portal = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
wlr = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2026-02-13 23:27:35 +10:00
|
|
|
|
extraPortals = with upkgs; [
|
2026-02-12 18:53:24 +00:00
|
|
|
|
xdg-desktop-portal-termfilechooser
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
config.common = {
|
|
|
|
|
|
"org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
time.timeZone = "Europe/London";
|
|
|
|
|
|
|
|
|
|
|
|
i18n = {
|
|
|
|
|
|
defaultLocale = "en_US.UTF-8";
|
|
|
|
|
|
supportedLocales = [
|
|
|
|
|
|
"en_US.UTF-8/UTF-8"
|
|
|
|
|
|
"ja_JP.UTF-8/UTF-8"
|
|
|
|
|
|
];
|
|
|
|
|
|
};
|
|
|
|
|
|
console = {
|
|
|
|
|
|
font = "Lat2-Terminus16";
|
|
|
|
|
|
keyMap = "us";
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
hardware.graphics = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
enable32Bit = true;
|
|
|
|
|
|
|
2026-02-13 23:27:35 +10:00
|
|
|
|
extraPackages = with upkgs; [
|
2026-02-12 18:53:24 +00:00
|
|
|
|
libva-vdpau-driver
|
|
|
|
|
|
libvdpau-va-gl
|
|
|
|
|
|
];
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
services = {
|
|
|
|
|
|
displayManager.sddm.enable = true;
|
|
|
|
|
|
displayManager.sddm.wayland.enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
udisks2.enable = true;
|
|
|
|
|
|
flatpak.enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
gnome.gnome-keyring.enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
# used for piper so u can configure silly little mice :3
|
|
|
|
|
|
ratbagd.enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
# Enable sound.
|
|
|
|
|
|
pipewire = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
audio.enable = true;
|
|
|
|
|
|
wireplumber.enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
alsa.enable = true;
|
|
|
|
|
|
alsa.support32Bit = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
udev = {
|
|
|
|
|
|
enable = true;
|
2026-02-13 23:27:35 +10:00
|
|
|
|
packages = with upkgs; [
|
2026-02-12 18:53:24 +00:00
|
|
|
|
# adds via support for keyboards and stuffs :3 (needs reboot)
|
|
|
|
|
|
via
|
|
|
|
|
|
|
|
|
|
|
|
# slimevr :33333333333 (i'm queer)
|
|
|
|
|
|
slimevr
|
|
|
|
|
|
platformio
|
|
|
|
|
|
];
|
|
|
|
|
|
extraRules = ''
|
|
|
|
|
|
# Wooting One Legacy
|
|
|
|
|
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff01", TAG+="uaccess"
|
|
|
|
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff01", TAG+="uaccess"
|
|
|
|
|
|
|
|
|
|
|
|
# Wooting One update mode
|
|
|
|
|
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402", TAG+="uaccess"
|
|
|
|
|
|
|
|
|
|
|
|
# Wooting Two LegacySUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff02", TAG+="uaccess"
|
|
|
|
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff02", TAG+="uaccess"
|
|
|
|
|
|
|
|
|
|
|
|
# Wooting Two update mode
|
|
|
|
|
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2403", TAG+="uaccess"
|
|
|
|
|
|
|
|
|
|
|
|
# Generic Wootings
|
|
|
|
|
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", TAG+="uaccess"
|
|
|
|
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="31e3", TAG+="uaccess"
|
|
|
|
|
|
'';
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
security = {
|
|
|
|
|
|
rtkit.enable = true;
|
|
|
|
|
|
polkit.enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
# Enable touchpad support (enabled default in most desktopManager).
|
|
|
|
|
|
# services.libinput.enable = true;
|
|
|
|
|
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
|
|
|
|
users = {
|
|
|
|
|
|
users.aurora = {
|
|
|
|
|
|
isNormalUser = true;
|
|
|
|
|
|
uid = 1000;
|
|
|
|
|
|
extraGroups = ["wheel" "disk" "input" "video" "audio" "networkmanager" "games"];
|
|
|
|
|
|
|
2026-02-13 23:27:35 +10:00
|
|
|
|
shell = upkgs.zsh;
|
2026-02-12 18:53:24 +00:00
|
|
|
|
|
2026-02-13 23:27:35 +10:00
|
|
|
|
packages = with upkgs; [
|
2026-02-12 18:53:24 +00:00
|
|
|
|
flatpak
|
|
|
|
|
|
tree
|
|
|
|
|
|
];
|
|
|
|
|
|
};
|
|
|
|
|
|
groups.games = {
|
|
|
|
|
|
gid = 7000;
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
programs = {
|
|
|
|
|
|
# nix-ld runs unpatched dynamic binaries on nixos :3
|
|
|
|
|
|
nix-ld.enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
# needed for gpg else no pinentry apparently
|
|
|
|
|
|
gnupg = {
|
|
|
|
|
|
agent.enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
nh = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
clean.enable = true;
|
|
|
|
|
|
clean.extraArgs = "--keep-since 14d --keep 8";
|
|
|
|
|
|
flake = "/etc/nixos"; # default flake
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
# hyprland, river, and sway have to be enabled here
|
|
|
|
|
|
# for there to be systemd entries for login managers
|
|
|
|
|
|
|
|
|
|
|
|
# hyprland has to be enabled here for xdg portals
|
|
|
|
|
|
# to work properly on hyprland
|
|
|
|
|
|
hyprland = {
|
|
|
|
|
|
enable = true;
|
2026-02-13 23:27:35 +10:00
|
|
|
|
package = upkgs.hyprland-git.hyprland;
|
|
|
|
|
|
portalPackage = upkgs.hyprland-git.xdg-desktop-portal-hyprland;
|
2026-02-12 18:53:24 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
river-classic = {
|
2026-02-13 23:27:35 +10:00
|
|
|
|
package = spkgs.river-classic; # FIX: using spkgs version as zls is broken rn ;-;
|
2026-02-12 18:53:24 +00:00
|
|
|
|
enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
sway = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
wrapperFeatures.gtk = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
# steam has to be enabled here
|
|
|
|
|
|
steam = {
|
|
|
|
|
|
enable = true;
|
2026-02-13 23:27:35 +10:00
|
|
|
|
package = upkgs.millennium-steam;
|
2026-02-12 18:53:24 +00:00
|
|
|
|
remotePlay.openFirewall = true;
|
|
|
|
|
|
dedicatedServer.openFirewall = true;
|
|
|
|
|
|
localNetworkGameTransfers.openFirewall = true;
|
|
|
|
|
|
gamescopeSession.enable = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
alvr = {
|
|
|
|
|
|
enable = true;
|
2026-02-13 23:27:35 +10:00
|
|
|
|
package = spkgs.alvr;
|
2026-02-12 18:53:24 +00:00
|
|
|
|
openFirewall = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
envision = {
|
|
|
|
|
|
enable = true;
|
|
|
|
|
|
openFirewall = true;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
# any shell that you wanna use needs to be enabled globally
|
|
|
|
|
|
# to set the default shell for users
|
|
|
|
|
|
# per-user config is done in home manager
|
|
|
|
|
|
zsh.enable = true;
|
|
|
|
|
|
fish.enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
silentSDDM = {
|
|
|
|
|
|
enable = false;
|
|
|
|
|
|
theme = "rei";
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
# List packages installed in system profile. To search, run:
|
|
|
|
|
|
# $ nix search wget
|
2026-02-13 23:27:35 +10:00
|
|
|
|
environment.systemPackages = with upkgs; [
|
2026-02-12 18:53:24 +00:00
|
|
|
|
# linux packages!!!
|
|
|
|
|
|
linuxPackages.v4l2loopback
|
|
|
|
|
|
|
|
|
|
|
|
# android yay
|
|
|
|
|
|
android-tools
|
|
|
|
|
|
|
|
|
|
|
|
# network manager extra packages
|
|
|
|
|
|
networkmanager-openvpn
|
|
|
|
|
|
|
|
|
|
|
|
# um makes my keyboard worky
|
|
|
|
|
|
via
|
|
|
|
|
|
|
|
|
|
|
|
# wine - needed for lutris :3
|
|
|
|
|
|
wineWowPackages.stable
|
|
|
|
|
|
|
|
|
|
|
|
# utils, apps, important default stuff ig :3
|
|
|
|
|
|
neovim
|
|
|
|
|
|
wget
|
|
|
|
|
|
git
|
|
|
|
|
|
bash
|
|
|
|
|
|
|
|
|
|
|
|
# waydroid needs it apparently for clipboard sharing??
|
|
|
|
|
|
wl-clipboard
|
|
|
|
|
|
(waydroid.override {
|
2026-02-13 23:27:35 +10:00
|
|
|
|
python3Packages = upkgs.python312Packages;
|
2026-02-12 18:53:24 +00:00
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
# game stuff :3
|
|
|
|
|
|
(lutris.override {
|
2026-02-14 18:16:29 +10:00
|
|
|
|
extraPkgs = upkgs: [
|
2026-02-12 18:53:24 +00:00
|
|
|
|
libadwaita
|
|
|
|
|
|
];
|
|
|
|
|
|
})
|
|
|
|
|
|
(steam.override {
|
2026-02-14 18:16:29 +10:00
|
|
|
|
extraPkgs = upkgs: [
|
2026-02-12 18:53:24 +00:00
|
|
|
|
nss
|
|
|
|
|
|
xorg.libX11
|
|
|
|
|
|
xorg.libXScrnSaver
|
|
|
|
|
|
];
|
|
|
|
|
|
}).run
|
|
|
|
|
|
|
|
|
|
|
|
inputs.nix-alien.packages.${stdenv.hostPlatform.system}.nix-alien
|
|
|
|
|
|
];
|
|
|
|
|
|
|
2026-02-15 11:12:16 +00:00
|
|
|
|
system.stateVersion = "24.11";
|
2026-02-12 18:53:24 +00:00
|
|
|
|
}
|