diff --git a/flake.nix b/flake.nix index 9449225..b2c2c90 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,7 @@ email = "librephoenix3@pm.me"; # email (used for certain configurations) dotfilesDir = "~/.dotfiles"; # absolute path of the local repo theme = "ayu-dark"; # selcted theme from my themes directory (./themes/) - wm = "xmonad"; # Selected window manager or desktop environment; must select one in both ./user/wm/ and ./system/wm/ + wm = "hyprland"; # Selected window manager or desktop environment; must select one in both ./user/wm/ and ./system/wm/ browser = "librewolf"; # Default browser; must select one from ./user/app/browser/ editor = "emacsclient"; # Default editor; term = "alacritty -o font.size=20"; # Default terminal command; diff --git a/system/wm/hyprland.nix b/system/wm/hyprland.nix new file mode 100644 index 0000000..f1552cb --- /dev/null +++ b/system/wm/hyprland.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: + +{ + # Import wayland config + imports = [ ./wayland.nix + ./pipewire.nix + ./dbus.nix + ]; + + # Security + security = { + pam.services.swaylock = { + text = '' + auth include login + ''; + }; + }; + + programs = { + hyprland = { + enable = true; + xwayland = { + enable = true; + }; + }; + waybar = { + enable = true; + package = pkgs.waybar.overrideAttrs (oldAttrs: { + mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; + }); + }; + }; +} diff --git a/system/wm/wayland.nix b/system/wm/wayland.nix new file mode 100644 index 0000000..272c42f --- /dev/null +++ b/system/wm/wayland.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ ./pipewire.nix + ./dbus.nix + ./gnome-keyring.nix + ./fonts.nix + ]; + + environment.systemPackages = [ pkgs.wayland ]; + + # Configure xwayland + services.xserver = { + enable = true; + layout = "us"; + xkbVariant = ""; + xkbOptions = "caps:escape"; + displayManager.gdm = { + enable = true; + wayland = true; + }; + }; +} diff --git a/system/wm/x11.nix b/system/wm/x11.nix index 38aaec2..7c2a445 100644 --- a/system/wm/x11.nix +++ b/system/wm/x11.nix @@ -14,10 +14,6 @@ xkbVariant = ""; xkbOptions = "caps:escape"; excludePackages = [ pkgs.xterm ]; - windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - }; displayManager = { lightdm.enable = true; sessionCommands = '' diff --git a/user/app/browser/librewolf-wayland.nix b/user/app/browser/librewolf-wayland.nix new file mode 100644 index 0000000..9255027 --- /dev/null +++ b/user/app/browser/librewolf-wayland.nix @@ -0,0 +1,42 @@ +{ config, lib, pkgs, ... }: + +{ + # Module installing librewolf as default browser + home.packages = [ pkgs.librewolf-wayland ]; + + home.file.".librewolf/librewolf.overrides.cfg".text = '' + defaultPref("font.name.serif.x-western","Inconsolata"); + defaultPref("font.size.variable.x-western",20); + defaultPref("browser.toolbars.bookmarks.visibility","always"); + defaultPref("privacy.resisttFingerprinting.letterboxing", true); + defaultPref("network.http.referer.XOriginPolicy",2); + defaultPref("privacy.clearOnShutdown.history",true); + defaultPref("privacy.clearOnShutdown.downloads",true); + defaultPref("privacy.clearOnShutdown.cookies",true); + defaultPref("gfx.webrender.software.opengl",false); + defaultPref("webgl.disabled",true); + pref("font.name.serif.x-western","Inconsolata"); + pref("font.size.variable.x-western",20); + pref("browser.toolbars.bookmarks.visibility","always"); + pref("privacy.resisttFingerprinting.letterboxing", true); + pref("network.http.referer.XOriginPolicy",2); + pref("privacy.clearOnShutdown.history",true); + pref("privacy.clearOnShutdown.downloads",true); + pref("privacy.clearOnShutdown.cookies",true); + pref("gfx.webrender.software.opengl",false); + pref("webgl.disabled",true); + ''; + + xdg.mimeApps.defaultApplications = { + "text/html" = "librewolf.desktop"; + "x-scheme-handler/http" = "librewolf.desktop"; + "x-scheme-handler/https" = "librewolf.desktop"; + "x-scheme-handler/about" = "librewolf.desktop"; + "x-scheme-handler/unknown" = "librewolf.desktop"; + }; + + home.sessionVariables = { + DEFAULT_BROWSER = "${pkgs.librewolf-wayland}/bin/librewolf"; + }; + +} diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix new file mode 100644 index 0000000..fb12ef2 --- /dev/null +++ b/user/wm/hyprland/hyprland.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, ... }: + +{ + wayland.windowManager.hyprland = { + enable = true; + plugins = []; + settings = {}; + extraConfig = '' + bind=SUPER,RETURN,exec,alacritty + bind=SUPER,A,exec,emacs + bind=SUPER,S,exec,librewolf + ''; + xwayland = { + enable = true; + }; + systemdIntegration = true; + }; + + home.packages = with pkgs; [ + alacritty + kitty + feh + killall + polkit_gnome + libva-utils + gsettings-desktop-schemas + swaynotificationcenter + wlr-randr + ydotool + hyprland-share-picker + wl-clipboard + hyprland-protocols + hyprpicker + swayidle + swaylock + hyprpaper + wofi + swww + grim + qt5.qtwayland + qt6.qtwayland + xdg-utils + xdg-desktop-portal + xdg-desktop-portal-gtk + xdg-desktop-portal-hyprland + ]; +}