diff --git a/nixosModules/desktop/default.nix b/nixosModules/desktop/default.nix index 9696431a..464eca44 100644 --- a/nixosModules/desktop/default.nix +++ b/nixosModules/desktop/default.nix @@ -6,6 +6,7 @@ }: { imports = [ ./greetd + ./gnome ./hyprland ./sway ./waylandComp.nix @@ -13,7 +14,8 @@ config = lib.mkIf ( - config.ar.desktop.hyprland.enable + config.ar.desktop.gnome.enable + || config.ar.desktop.hyprland.enable || config.ar.desktop.steam.enable || config.ar.desktop.sway.enable ) { diff --git a/nixosModules/desktop/gnome/default.nix b/nixosModules/desktop/gnome/default.nix new file mode 100644 index 00000000..890bdd25 --- /dev/null +++ b/nixosModules/desktop/gnome/default.nix @@ -0,0 +1,66 @@ +{ + config, + lib, + pkgs, + ... +}: { + config = lib.mkIf config.ar.desktop.gnome.enable { + # nixpkgs.overlays = [ + # # GNOME 46: triple-buffering-v4-46 + # (final: prev: { + # gnome = prev.gnome.overrideScope (gnomeFinal: gnomePrev: { + # mutter = gnomePrev.mutter.overrideAttrs (old: { + # src = pkgs.fetchFromGitLab { + # domain = "gitlab.gnome.org"; + # owner = "vanvugt"; + # repo = "mutter"; + # rev = "triple-buffering-v4-46"; + # hash = "sha256-nz1Enw1NjxLEF3JUG0qknJgf4328W/VvdMjJmoOEMYs="; + # }; + # }); + # }); + # }) + # ]; + + security.pam.services = { + login.fprintAuth = false; + + gdm = { + enableGnomeKeyring = true; + gnupg.enable = true; + kwallet.enable = true; + }; + + gdm-fingerprint = lib.mkIf (config.services.fprintd.enable) { + text = '' + auth required pam_shells.so + auth requisite pam_nologin.so + auth requisite pam_faillock.so preauth + auth required ${pkgs.fprintd}/lib/security/pam_fprintd.so + auth optional pam_permit.so + auth required pam_env.so + auth [success=ok default=1] ${pkgs.gnome.gdm}/lib/security/pam_gdm.so + auth optional ${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so + + account include login + + password required pam_deny.so + + session include login + session optional ${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start + ''; + }; + }; + + # Enable GNOME and GDM. + services = { + gnome.tracker-miners.enable = true; + udev.packages = with pkgs; [gnome.gnome-settings-daemon]; + + xserver = { + desktopManager.gnome.enable = true; + displayManager.gdm.enable = true; + }; + }; + }; +} \ No newline at end of file diff --git a/nixosModules/options.nix b/nixosModules/options.nix index 61cf0b90..0959db3d 100644 --- a/nixosModules/options.nix +++ b/nixosModules/options.nix @@ -29,6 +29,7 @@ }; }; + gnome.enable = lib.mkEnableOption "GNOME desktop session."; hyprland.enable = lib.mkEnableOption "Hyprland wayland session."; steam.enable = lib.mkEnableOption "Steam + Gamescope session."; sway.enable = lib.mkEnableOption "Sway wayland session.";