mirror of
https://github.com/Nexoniarz/nexoniarz-config-nixos.git
synced 2026-11-03 04:24:27 +00:00
Switch desktop from Budgie to KDE Plasma; OpenRGB support and misc packages
Budgie's Wayland session had been broken; Plasma 6 replaces it with SDDM still handling the Wayland greeter. Since the KDE apps in apps.nix were already installed as GTK/MATE replacements, Budgie's exclude-package list is no longer needed under native Plasma. Also: OpenRGB service + udev rule, RTL-SDR/system tweaks, lmms, qemu, qt5/qt6 qtwayland, nix flakes enabled.
This commit is contained in:
parent
33bf94bd4c
commit
095e869faa
4 changed files with 48 additions and 37 deletions
|
|
@ -5,7 +5,7 @@ My personal NixOS system configuration.
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
- **OS:** NixOS 26.05 (unstable channel)
|
- **OS:** NixOS 26.05 (unstable channel)
|
||||||
- **Desktop:** Budgie on Wayland (labwc), SDDM
|
- **Desktop:** KDE Plasma 6 on Wayland (KWin), SDDM
|
||||||
- **Bootloader:** Limine
|
- **Bootloader:** Limine
|
||||||
- **Terminal:** Konsole
|
- **Terminal:** Konsole
|
||||||
- **Shell:** Zsh
|
- **Shell:** Zsh
|
||||||
|
|
@ -19,7 +19,7 @@ My personal NixOS system configuration.
|
||||||
| `configuration.nix` | Imports only |
|
| `configuration.nix` | Imports only |
|
||||||
| `modules/system.nix` | Boot, networking, locale, audio, hardening |
|
| `modules/system.nix` | Boot, networking, locale, audio, hardening |
|
||||||
| `modules/drivers.nix` | GPU, tablet, I2C, RTL-SDR |
|
| `modules/drivers.nix` | GPU, tablet, I2C, RTL-SDR |
|
||||||
| `modules/desktop.nix` | Budgie, theming |
|
| `modules/desktop.nix` | Plasma, theming |
|
||||||
| `modules/users.nix` | Account, shell, Steam |
|
| `modules/users.nix` | Account, shell, Steam |
|
||||||
| `modules/apps.nix` | Installed packages |
|
| `modules/apps.nix` | Installed packages |
|
||||||
| `modules/scripts.nix` | Custom scripts in `modules/scripts/` |
|
| `modules/scripts.nix` | Custom scripts in `modules/scripts/` |
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,21 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
# Both SDR++ and rtl_433 default to supporting every radio ever made, which
|
# Both SDR++ and rtl_433 default to supporting every radio ever made, which
|
||||||
# drags in UHD (USRP firmware), BladeRF and LimeSuite — ~1.5 GB for hardware
|
# drags in UHD (USRP firmware), BladeRF and LimeSuite — ~1.5 GB for
|
||||||
# we don't own. These two overrides cut that down to the RTL-SDR paths.
|
# hardware we don't own. These two overrides cut that down to the RTL-SDR paths.
|
||||||
|
|
||||||
soapysdrLean = pkgs.soapysdr.override {
|
soapysdrLean = pkgs.soapysdr.override {
|
||||||
extraPackages = with pkgs; [ soapyrtlsdr soapyremote ];
|
extraPackages = with pkgs; [
|
||||||
|
soapyrtlsdr
|
||||||
|
soapyremote
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
rtl433Lean = pkgs.rtl_433.override { soapysdr-with-plugins = soapysdrLean; };
|
rtl433Lean = pkgs.rtl_433.override {
|
||||||
|
soapysdr-with-plugins = soapysdrLean;
|
||||||
|
};
|
||||||
|
|
||||||
# Leaves the RTL-SDR, rtl_tcp, file and network sources on.
|
# Leaves the RTL-SDR, rtl_tcp, file and network sources on.
|
||||||
sdrppLean = pkgs.sdrpp.override {
|
sdrppLean = pkgs.sdrpp.override {
|
||||||
|
|
@ -23,15 +30,17 @@ let
|
||||||
dragonlabs_source = false;
|
dragonlabs_source = false;
|
||||||
spectran_http_source = false;
|
spectran_http_source = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
users.users."nexoniarz".packages = with pkgs; [
|
users.users."nexoniarz".packages = with pkgs; [
|
||||||
|
|
||||||
tumbler
|
tumbler
|
||||||
brightnessctl
|
brightnessctl
|
||||||
ddcutil
|
ddcutil
|
||||||
lm_sensors # sensors-detect helps ddcutil find the I2C buses
|
lm_sensors
|
||||||
networkmanager
|
networkmanager
|
||||||
xdg-user-dirs # Resolves localized folder names (Obrazy, not Pictures)
|
xdg-user-dirs
|
||||||
|
|
||||||
# Apps
|
# Apps
|
||||||
blender
|
blender
|
||||||
|
|
@ -46,6 +55,8 @@ in
|
||||||
obs-studio
|
obs-studio
|
||||||
sdrppLean
|
sdrppLean
|
||||||
rtl433Lean
|
rtl433Lean
|
||||||
|
lmms
|
||||||
|
openrgb
|
||||||
|
|
||||||
# Games
|
# Games
|
||||||
prismlauncher
|
prismlauncher
|
||||||
|
|
@ -86,5 +97,8 @@ in
|
||||||
kdePackages.konsole
|
kdePackages.konsole
|
||||||
kdePackages.dolphin
|
kdePackages.dolphin
|
||||||
kdePackages.plasma-systemmonitor
|
kdePackages.plasma-systemmonitor
|
||||||
|
qt5.qtwayland
|
||||||
|
qt6.qtwayland
|
||||||
|
qemu
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# Budgie ships only a Wayland session here (labwc); xserver stays on for
|
# Plasma ships a proper Wayland session (KWin) with solid Xwayland
|
||||||
# Xwayland and for the xkb layout below.
|
# support; xserver stays on for that Xwayland layer and for the xkb
|
||||||
|
# layout below, not because the session itself needs it.
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
services.desktopManager.budgie.enable = true;
|
services.desktopManager.plasma6.enable = true;
|
||||||
|
|
||||||
# SDDM replaces lightdm: Qt, and it actually launches Wayland sessions.
|
# SDDM is KDE's own greeter — Qt-based, and launches Wayland sessions
|
||||||
# Its own greeter runs on weston, not kwin, so no KDE compositor tags along.
|
# natively, Plasma included.
|
||||||
services.displayManager.sddm = {
|
services.displayManager.sddm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wayland.enable = true;
|
wayland.enable = true;
|
||||||
|
|
@ -26,28 +27,11 @@
|
||||||
# xserver.nix installs xterm unconditionally; Konsole is the terminal here.
|
# xserver.nix installs xterm unconditionally; Konsole is the terminal here.
|
||||||
services.xserver.excludePackages = [ pkgs.xterm ];
|
services.xserver.excludePackages = [ pkgs.xterm ];
|
||||||
|
|
||||||
# Budgie's module installs GTK/MATE apps that duplicate the Qt ones in
|
# Icon/cursor theme packages. Plasma has no gsettings-style declarative
|
||||||
# apps.nix. Excluding gnome-terminal also flips programs.gnome-terminal.enable
|
# knob for this the way Budgie did — pick them in System Settings, or
|
||||||
# off — the module gates that on this same list.
|
# bring in plasma-manager later for a fully declarative setup.
|
||||||
environment.budgie.excludePackages = with pkgs; [
|
|
||||||
nemo # -> dolphin
|
|
||||||
gnome-terminal # -> konsole
|
|
||||||
eom # -> gwenview
|
|
||||||
pluma # -> kate
|
|
||||||
atril # -> okular
|
|
||||||
engrampa # -> ark
|
|
||||||
mate-calc # -> kcalc
|
|
||||||
mate-system-monitor # -> plasma-systemmonitor
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.gruvbox-plus-icons
|
pkgs.gruvbox-plus-icons
|
||||||
pkgs.bibata-cursors
|
pkgs.bibata-cursors
|
||||||
];
|
];
|
||||||
|
|
||||||
services.desktopManager.budgie.extraGSettingsOverrides = ''
|
|
||||||
[org.gnome.desktop.interface]
|
|
||||||
icon-theme='Gruvbox-Plus-Dark'
|
|
||||||
cursor-theme='Bibata-Modern-Classic'
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@
|
||||||
};
|
};
|
||||||
boot.kernelPackages = pkgs.linuxPackages;
|
boot.kernelPackages = pkgs.linuxPackages;
|
||||||
boot.supportedFilesystems = [ "fuse" ];
|
boot.supportedFilesystems = [ "fuse" ];
|
||||||
|
|
||||||
networking.hostName = "nixos";
|
networking.hostName = "nixos";
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
|
@ -85,6 +84,11 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
# OpenRGB
|
||||||
|
SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660"
|
||||||
|
'';
|
||||||
|
|
||||||
services.blueman.enable = true;
|
services.blueman.enable = true;
|
||||||
|
|
||||||
programs.firejail = {
|
programs.firejail = {
|
||||||
|
|
@ -133,6 +137,8 @@
|
||||||
];
|
];
|
||||||
environment.systemPackages = [ pkgs.file ];
|
environment.systemPackages = [ pkgs.file ];
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
# --- Hardening ---
|
# --- Hardening ---
|
||||||
|
|
||||||
# zram instead of disk swap: nothing sensitive is written to disk in
|
# zram instead of disk swap: nothing sensitive is written to disk in
|
||||||
|
|
@ -140,7 +146,7 @@
|
||||||
# old swap partition regardless of swapDevices, hence the kernel param.
|
# old swap partition regardless of swapDevices, hence the kernel param.
|
||||||
zramSwap.enable = true;
|
zramSwap.enable = true;
|
||||||
swapDevices = lib.mkForce [ ];
|
swapDevices = lib.mkForce [ ];
|
||||||
boot.kernelParams = [ "systemd.gpt_auto=0" ];
|
boot.kernelParams = [ "systemd.gpt_auto=0" "acpi_enforce_resources=lax" ];
|
||||||
|
|
||||||
boot.kernel.sysctl = {
|
boot.kernel.sysctl = {
|
||||||
"kernel.kptr_restrict" = 2;
|
"kernel.kptr_restrict" = 2;
|
||||||
|
|
@ -161,6 +167,10 @@
|
||||||
systemd.coredump.enable = false;
|
systemd.coredump.enable = false;
|
||||||
security.protectKernelImage = true;
|
security.protectKernelImage = true;
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"L+ /var/lib/flatpak/exports/share/applications - - - - /var/lib/flatpak/app/com.usebottles.bottles/current/active/export/share/applications"
|
||||||
|
];
|
||||||
|
|
||||||
networking.nameservers = [ "1.1.1.1#cloudflare-dns.com" "9.9.9.9#dns.quad9.net" ];
|
networking.nameservers = [ "1.1.1.1#cloudflare-dns.com" "9.9.9.9#dns.quad9.net" ];
|
||||||
services.resolved = {
|
services.resolved = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -182,6 +192,9 @@
|
||||||
uri = "";
|
uri = "";
|
||||||
interval = 0;
|
interval = 0;
|
||||||
};
|
};
|
||||||
|
services.hardware.openrgb = {
|
||||||
|
enable = true;
|
||||||
|
motherboard = "amd";
|
||||||
|
};
|
||||||
services.geoclue2.enable = false;
|
services.geoclue2.enable = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue