diff --git a/assets/wallpaper.jpg b/assets/wallpapers/hyprland.jpg similarity index 100% rename from assets/wallpaper.jpg rename to assets/wallpapers/hyprland.jpg diff --git a/assets/wallpapers/kde.png b/assets/wallpapers/kde.png new file mode 100644 index 0000000..f5f6b01 Binary files /dev/null and b/assets/wallpapers/kde.png differ diff --git a/flake.nix b/flake.nix index ce92bda..797ebad 100644 --- a/flake.nix +++ b/flake.nix @@ -9,28 +9,41 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + + plasma-manager = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; }; - outputs = { nixpkgs, impermanence, home-manager, nur, ... } @ inputs: - let - lib = nixpkgs.lib.extend (final: prev: - import ./lib { lib = final; } - ); - in - { - nixosConfigurations = lib.mkHosts { - modules = [ - home-manager.nixosModules.home-manager { - home-manager.sharedModules = [ - nur.hmModules.nur - ]; - } - impermanence.nixosModules.impermanence - nur.nixosModules.nur - ]; - nixpkgs = nixpkgs; - inputs = inputs; - }; + outputs = { + nixpkgs, + impermanence, + home-manager, + nur, + plasma-manager, + ... + } @ inputs: let + lib = nixpkgs.lib.extend (final: prev: + import ./lib { lib = final; } + ); + in { + nixosConfigurations = lib.mkHosts { + modules = [ + home-manager.nixosModules.home-manager { + home-manager.sharedModules = [ + nur.hmModules.nur + plasma-manager.homeManagerModules.plasma-manager + ]; + } + + impermanence.nixosModules.impermanence + nur.nixosModules.nur + ]; + nixpkgs = nixpkgs; + inputs = inputs; }; + }; } diff --git a/hosts/workstation/default.nix b/hosts/workstation/default.nix index d177fff..828c5ff 100644 --- a/hosts/workstation/default.nix +++ b/hosts/workstation/default.nix @@ -6,8 +6,8 @@ ./persist.nix ../../home/default.nix + ../../modules/desktop/environments/kde.nix ../../modules/system/basic.nix - ../../modules/desktop/environments/hyprland.nix ../../modules/system/security.nix ../../modules/desktop/apps/communication.nix ../../modules/desktop/apps/games.nix diff --git a/modules/desktop/environments/hyprland.nix b/modules/desktop/environments/hyprland.nix index 80d8ba9..459958c 100644 --- a/modules/desktop/environments/hyprland.nix +++ b/modules/desktop/environments/hyprland.nix @@ -104,10 +104,10 @@ ipc = "on"; splash = false; preload = [ - "/nix/config/assets/wallpaper.jpg" + "/nix/config/assets/wallpapers/hyprland.jpg" ]; wallpaper = [ - ",/nix/config/assets/wallpaper.jpg" + ",/nix/config/wallpapers/hyprland.jpg" ]; }; }; diff --git a/modules/desktop/environments/kde.nix b/modules/desktop/environments/kde.nix new file mode 100644 index 0000000..fd70280 --- /dev/null +++ b/modules/desktop/environments/kde.nix @@ -0,0 +1,95 @@ +{ pkgs, ... }: + +{ + imports = [ + ../../system/fonts.nix + ]; + + environment.sessionVariables = { + LIBVA_DRIVER_NAME = "nvidia"; + XDG_SESSION_TYPE = "wayland"; + GBM_BACKEND = "nvidia-drm"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + NVD_BACKEND = "direct"; + MOZ_DISABLE_RDD_SANDBOX = 1; + NIXOS_OZONE_WL = 1; + }; + + services.desktopManager.plasma6.enable = true; + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + + environment.plasma6.excludePackages = with pkgs.kdePackages; [ + plasma-browser-integration + khelpcenter + krdp + ]; + + environment.systemPackages = with pkgs; [ + nvidia-vaapi-driver + ]; + + home-manager.users.hu = { + dconf.settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + }; + + gtk = { + enable = true; + theme = { + name = "breeze"; + package = pkgs.kdePackages.breeze-gtk; + }; + }; + + programs.plasma = { + enable = true; + workspace = { + lookAndFeel = "org.kde.breezedark.desktop"; + wallpaper = "/nix/config/assets/wallpapers/kde.png"; + }; + + panels = [ + { + location = "bottom"; + widgets = [ + { + kickoff = { + icon = "nix-snowflake-white"; + }; + } + { + iconTasks = { + launchers = [ + "applications:org.kde.dolphin.desktop" + "applications:org.kde.konsole.desktop" + "applications:org.mozilla.firefox.desktop" + ]; + }; + } + "org.kde.plasma.marginsseperator" + { + digialclock = { + calendar.firstDayOfWeek = "monday"; + time.format = "24h"; + }; + } + { + systemTray.items = { + shown = [ + "org.kde.plasma.networkmanagement" + "org.kde.plasma.volume" + ]; + }; + } + ]; + } + ]; + }; + }; +} +