nix/hosts/nixarawrui/default.nix

330 lines
7.4 KiB
Nix
Raw Normal View History

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
];
system.stateVersion = "24.11";
2026-02-12 18:53:24 +00:00
}