From a5a17cdbfd3c534322e9a5e4c212c6cf6ec59937 Mon Sep 17 00:00:00 2001 From: IAteYourCookies Date: Thu, 30 Oct 2025 15:02:19 +0100 Subject: [PATCH] Moved desktop entries to a new file and added fingerprint sensor support (SDDM currently slowed down by it) --- .gitignore | 1 - boot-splash.nix | 0 configuration.nix | 40 +++++++++++++++- desktop-entries.nix | 94 +++++++++++++++++++++++++++++++++++++ flake.lock | 0 hardware-configuration.nix | 18 ++++--- home.nix | 82 +------------------------------- other/aliases | 2 +- other/kitty.app.png | Bin 0 -> 18810 bytes other/wallpaper2.png | Bin packages.nix | 11 +++-- plasma/NixOS-1.0.0.knsv | Bin plasma/autostart.nix | 2 +- 13 files changed, 152 insertions(+), 98 deletions(-) delete mode 100755 .gitignore mode change 100644 => 100755 boot-splash.nix create mode 100755 desktop-entries.nix mode change 100644 => 100755 flake.lock mode change 100755 => 100644 hardware-configuration.nix create mode 100644 other/kitty.app.png mode change 100644 => 100755 other/wallpaper2.png mode change 100644 => 100755 plasma/NixOS-1.0.0.knsv diff --git a/.gitignore b/.gitignore deleted file mode 100755 index 577b0a0..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -hardware-configuration.nix diff --git a/boot-splash.nix b/boot-splash.nix old mode 100644 new mode 100755 diff --git a/configuration.nix b/configuration.nix index 3921441..850ccba 100755 --- a/configuration.nix +++ b/configuration.nix @@ -34,7 +34,7 @@ grub = { enable = true; - device = "/dev/sda"; #Needs to be changed when using a new computer! (Make grub partition - look below!) + device = "/dev/nvme0n1"; #Needs to be changed when using a new computer! (Make grub partition - look below!) #devices = [ "nodev" ]; efiSupport = true; useOSProber = true; @@ -95,6 +95,10 @@ #loadModels = [ ... ]; }; + fprintd.enable = true; + fprintd.tod.enable = true; + fprintd.tod.driver = pkgs.libfprint-2-tod1-goodix; + locate = { enable = true; package = pkgs.plocate; @@ -114,6 +118,7 @@ xserver = { enable = true; + videoDrivers = [ "amdgpu" ]; xkb = { layout = "de"; @@ -158,6 +163,39 @@ # Configure console keymap console.keyMap = "de"; + hardware.enableRedistributableFirmware = true; + #Enables proprietary, redistributable firmware so hardware devices function properly + + hardware.opengl = { + enable = true; + # Mesa should be enabled by default for Vulkan, but you can be explicit + driSupport32Bit = true; # For 32-bit applications + }; + + hardware.cpu.amd.updateMicrocode = true; + + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + settings = { + General = { + # Shows battery charge of connected devices on supported + # Bluetooth adapters. Defaults to 'false'. + Experimental = true; + # When enabled other devices can connect faster to us, however + # the tradeoff is increased power consumption. Defaults to + # 'false'. + FastConnectable = true; + }; + Policy = { + # Enable all controllers when they are found. This includes + # adapters present on start as well as adapters that are plugged + # in later on. Defaults to 'true'. + AutoEnable = true; + }; + }; + }; + # security.rtkit.enable = true; # services.pipewire = { # enable = true; diff --git a/desktop-entries.nix b/desktop-entries.nix new file mode 100755 index 0000000..694de9b --- /dev/null +++ b/desktop-entries.nix @@ -0,0 +1,94 @@ +{ pkgs, ...}: +{ + xdg = { + desktopEntries.youtube = { + name = "YouTube"; + exec = "chromium --app=https://www.youtube.com"; + terminal = false; + type = "Application"; + icon = "applications-multimedia"; + categories = [ "AudioVideo" "Player" "Network" ]; + }; + + desktopEntries."org.kde.konsole" = { + name = "Konsole"; + noDisplay = true; + }; + + desktopEntries.kitty = { + name = "kitty"; + genericName = "Terminal emulator"; + comment = "Fast, feature-rich, GPU based terminal"; + exec = "kitty"; + terminal = false; + categories = [ "System" "TerminalEmulator" ]; + + icon = "/etc/nixos/other/kitty.app.png"; + }; + + desktopEntries."org.kde.kinfocenter" = { + name = "Info Center"; + noDisplay = true; + }; + + desktopEntries."org.kde.khelpcenter" = { + name = "Help Center"; + noDisplay = true; + }; + + desktopEntries."org.kde.kmenuedit" = { + name = "Menu Editor"; + noDisplay = true; + }; + + desktopEntries."micro" = { + name = "Micro"; + noDisplay = true; + }; + + desktopEntries."nvim" = { + name = "Neovim"; + noDisplay = true; + }; + + desktopEntries."btop" = { + name = "btop++"; + noDisplay = true; + }; + + desktopEntries."chromium-desktop" = { + name = "Chromium"; + noDisplay = true; + }; + + desktopEntries."nixos-manual" = { + name = "NixOS Manual"; + noDisplay = true; + }; + + desktopEntries."org.freedesktop.IBus.Setup" = { + name = "IBus Preferences"; + noDisplay = true; + }; + + desktopEntries."org.kde.drkonqi" = { + name = "Crashed Processes Viewer"; + noDisplay = true; + }; + desktopEntries."com.cloudflare.WarpTaskbar" = { + name = "Cloudflare Zero Trust"; + noDisplay = true; + }; + + desktopEntries."org.kde.kwrite" = { + name = "KWrite"; + noDisplay = true; + }; + + desktopEntries."org.kde.discover" = { + name = "Discover"; + noDisplay = true; + }; + + }; +} diff --git a/flake.lock b/flake.lock old mode 100644 new mode 100755 diff --git a/hardware-configuration.nix b/hardware-configuration.nix old mode 100755 new mode 100644 index 2a4e324..989a9c6 --- a/hardware-configuration.nix +++ b/hardware-configuration.nix @@ -8,34 +8,32 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "uas" "sd_mod" ]; + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "uas" "usbhid" "sd_mod" ]; boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; + boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; fileSystems."/" = - { device = "/dev/disk/by-uuid/908d7dfb-fb97-4b78-80b5-dc8d810522e0"; + { device = "/dev/disk/by-uuid/af8fdb25-74d8-4b33-8413-bdcb66e0d22a"; fsType = "ext4"; }; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/F4AB-9E6A"; + { device = "/dev/disk/by-uuid/58D5-0C06"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; }; - swapDevices = - [ { device = "/dev/disk/by-uuid/d969d107-c7b5-4d5e-8c47-310cacbd38d1"; } - ]; + swapDevices = [ ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.eno1.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; + # networking.interfaces.eth0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/home.nix b/home.nix index 51b41b8..1300cd1 100755 --- a/home.nix +++ b/home.nix @@ -11,6 +11,7 @@ # or inputs.zen-browser.homeModules.twilight # or inputs.zen-browser.homeModules.twilight-official ./neovim-home.nix + ./desktop-entries.nix ] ++ lib.optional hyprlandEnabled ./hyprland/hyprland-home.nix; @@ -24,87 +25,6 @@ # changes in each release. home.stateVersion = version; - xdg = { - desktopEntries.youtube = { - name = "YouTube"; - exec = "chromium --app=https://www.youtube.com"; - terminal = false; - type = "Application"; - icon = "applications-multimedia"; - categories = [ "AudioVideo" "Player" "Network" ]; - }; - - desktopEntries."org.kde.konsole" = { - name = "Konsole"; - noDisplay = true; - }; - - desktopEntries."org.kde.kinfocenter" = { - name = "Info Center"; - noDisplay = true; - }; - - desktopEntries."org.kde.khelpcenter" = { - name = "Help Center"; - noDisplay = true; - }; - - desktopEntries."org.kde.kmenuedit" = { - name = "Menu Editor"; - noDisplay = true; - }; - - desktopEntries."micro" = { - name = "Micro"; - noDisplay = true; - }; - - desktopEntries."nvim" = { - name = "Neovim"; - noDisplay = true; - }; - - desktopEntries."btop" = { - name = "btop++"; - noDisplay = true; - }; - - desktopEntries."chromium-desktop" = { - name = "Chromium"; - noDisplay = true; - }; - - desktopEntries."nixos-manual" = { - name = "NixOS Manual"; - noDisplay = true; - }; - - desktopEntries."org.freedesktop.IBus.Setup" = { - name = "IBus Preferences"; - noDisplay = true; - }; - - desktopEntries."org.kde.drkonqi" = { - name = "Crashed Processes Viewer"; - noDisplay = true; - }; - desktopEntries."com.cloudflare.WarpTaskbar" = { - name = "Cloudflare Zero Trust"; - noDisplay = true; - }; - - desktopEntries."org.kde.kwrite" = { - name = "KWrite"; - noDisplay = true; - }; - - desktopEntries."org.kde.discover" = { - name = "Discover"; - noDisplay = true; - }; - - }; - # Let Home Manager install and manage itself. programs = { home-manager = { enable = true; }; diff --git a/other/aliases b/other/aliases index 7a1e5c0..2ecad10 100755 --- a/other/aliases +++ b/other/aliases @@ -10,7 +10,7 @@ alias mcrow="echo 'you better try to use nvim you little shit! :3'" alias srcals="source /etc/nixos/other/aliases && echo 'Sourced Aliases ... successful!'" alias please="sudo" alias se="sudoedit" - +alias tt="gtypist ktde.typ" alias neofetch="fastfetch" diff --git a/other/kitty.app.png b/other/kitty.app.png new file mode 100644 index 0000000000000000000000000000000000000000..cbecb931305395bb0b79d326cce5c54369e8b303 GIT binary patch literal 18810 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