Compare commits

...

6 Commits

7 changed files with 123 additions and 6 deletions

View File

@@ -35,4 +35,14 @@ in
inputs.kwin-effects-forceblur.packages.${pkgs.system}.default inputs.kwin-effects-forceblur.packages.${pkgs.system}.default
]; ];
}; };
# Auto-start linux-wallpaperengine for dual monitors via XDG autostart
xdg.configFile."autostart/linux-wallpaperengine.desktop".text = ''
[Desktop Entry]
Type=Application
Name=Wallpaper Engine
Exec=${pkgs.linux-wallpaperengine}/bin/linux-wallpaperengine --screen-root DP-1 --bg 2935872330 --screen-root DP-2 --bg 2935872330
X-KDE-autostart-after=panel
X-KDE-StartupNotify=false
'';
} }

View File

@@ -16,11 +16,19 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.obs-studio = { programs.obs-studio = {
enable = true; enable = true;
plugins = [ pkgs.obs-studio-plugins.droidcam-obs ]; plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
obs-vaapi #optional AMD hardware acceleration
obs-gstreamer
obs-vkcapture
pkgs.my-namespace.droidcam-obs # Custom override with FFmpeg 6
];
}; };
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
# obs-studio config.programs.obs-studio.finalPackage
droidcam droidcam
]; ];
}; };

View File

@@ -0,0 +1,35 @@
{ config, lib, pkgs, namespace, ... }:
let
cfg = config.${namespace}.gnome-keyring;
in {
options.${namespace}.gnome-keyring = {
enable = lib.mkEnableOption "Enable GNOME Keyring integration";
};
config = lib.mkIf cfg.enable {
services.gnome-keyring = {
enable = true;
components = [ "secrets" "ssh" ];
};
# If using SDDM:
security.pam.services.sddm.enableGnomeKeyring = true;
# Also generally useful for other login methods
security.pam.services.login.enableGnomeKeyring = true;
# If using GDM:
security.pam.services.gdm.enableGnomeKeyring = true;
environment.systemPackages = with pkgs; [
gnome.seahorse # Provides a GUI for managing the keyring
];
environment.variables = {
# Ensure GNOME Keyring is used for SSH keys
SSH_AUTH_SOCK = "${pkgs.gnome-keyring}/run/gnome-keyring-ssh-socket";
PASSWORD_STORE = "gnome-libsecret";
};
my-namespace.home.home.packages = with pkgs; [ # Ensure keyring integration in home environments
gcr
];
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
pkgs,
stdenv,
fetchurl,
autoPatchelfHook,
namespace,
...
}:
stdenv.mkDerivation rec {
pname = "droidcam-obs";
version = "2.4.1";
src = fetchurl {
url = "https://github.com/dev47apps/droidcam-obs-plugin/releases/download/${version}/droidcam_obs_${version}_linux_x86_64.zip";
sha256 = "sha256-18IjC3+WR5XLo464RuwAtWRNSpQcsnarXu56CrxCMhM=";
};
nativeBuildInputs = [ pkgs.unzip autoPatchelfHook ];
buildInputs = with pkgs; [
stdenv.cc.cc.lib
obs-studio
];
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/lib/obs-plugins
mkdir -p $out/share/obs/obs-plugins/droidcam-obs
cp bin/64bit/*.so $out/lib/obs-plugins/
cp -r data/* $out/share/obs/obs-plugins/droidcam-obs/
runHook postInstall
'';
meta = with lib; {
description = "DroidCam OBS Plugin - Use your phone as a camera in OBS (FFmpeg 7 compatible)";
homepage = "https://www.dev47apps.com/obs/";
license = licenses.unfree;
platforms = platforms.linux;
};
}

View File

@@ -51,6 +51,9 @@
displayManager.defaultSession = "gnome"; displayManager.defaultSession = "gnome";
desktopManager.plasma6.enable = true; desktopManager.plasma6.enable = true;
# Enable GNOME Keyring and KDE KWallet integration
my-namespace.gnome-keyring.enable = true;
xserver = { xserver = {
enable = true; # Enable the deprecated X11 teletype terminal connection system. enable = true; # Enable the deprecated X11 teletype terminal connection system.
@@ -143,8 +146,15 @@
# Install firefox. # Install firefox.
programs.firefox.enable = true; programs.firefox.enable = true;
# Enable XWayland for X11 application compatibility
programs.xwayland.enable = true; programs.xwayland.enable = true;
# docker
virtualisation.docker = {
enable = true;
};
# Allow unfree packages # Allow unfree packages
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
@@ -156,6 +166,13 @@
(python312.withPackages (ps: with ps; [ websockets ])) (python312.withPackages (ps: with ps; [ websockets ]))
kdePackages.qtwebsockets kdePackages.qtwebsockets
kdePackages.qtwebchannel kdePackages.qtwebchannel
kdePackages.korganizer
kdePackages.akonadi
kdePackages.akonadi-calendar
kdePackages.akonadi-contacts
javaPackages.compiler.openjdk25
javaPackages.compiler.openjdk21
linux-wallpaperengine
qt6.qtwebengine qt6.qtwebengine
gnome-tweaks gnome-tweaks
qemu qemu

View File

@@ -43,7 +43,7 @@ in
users.users.andreas = { users.users.andreas = {
isNormalUser = true; isNormalUser = true;
description = "Andreas Schaafsma"; description = "Andreas Schaafsma";
extraGroups = [ "networkmanager" "wheel" "libvirtd" "plugdev" ] ; extraGroups = [ "networkmanager" "wheel" "libvirtd" "plugdev" "docker" ] ;
packages = with pkgs; [ packages = with pkgs; [
# Packages from inputs # Packages from inputs
inputs.game-of-life.packages.x86_64-linux.default inputs.game-of-life.packages.x86_64-linux.default

View File

@@ -17,10 +17,10 @@
# boot.kernelPackages = pkgs.linuxPackages; # boot.kernelPackages = pkgs.linuxPackages;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.kernelModules = [ "kvm-amd" "4vl2loopback" ]; boot.kernelModules = [ "kvm-amd" "r8125" "4vl2loopback" ];
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback r8125 ];
boot.supportedFilesystems = [ "ntfs" ]; boot.supportedFilesystems = [ "ntfs" ];
boot.blacklistedKernelModules = [ ]; boot.blacklistedKernelModules = [ "r8169" ];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76"; device = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76";
fsType = "ext4"; fsType = "ext4";
@@ -44,6 +44,7 @@
boot.resumeDevice = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76"; # the unlocked drive mapping boot.resumeDevice = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76"; # the unlocked drive mapping
boot.kernelParams = [ boot.kernelParams = [
"resume_offset=78399488" #sudo filefrag -v /var/lib/swapfile|awk 'NR==4{gsub(/\./,"");print $4;}' "resume_offset=78399488" #sudo filefrag -v /var/lib/swapfile|awk 'NR==4{gsub(/\./,"");print $4;}'
"r8125.aspm=0" # realtek network adapter fix
]; ];
security.protectKernelImage = false; security.protectKernelImage = false;