nixos/system/hyprland.nix
Evie Litherland-Smith d973beca07 Remove emacsclient, use emacs directly instead
Add some specific workspaces (emacs, firefox, libreoffice, chat,
steam) with custom icons, reduce persistent workspaces to those 5,
update windowrules and binds accordingly
2024-03-13 17:52:48 +00:00

137 lines
3.7 KiB
Nix

{
lib,
pkgs,
...
}: {
imports = [./desktop.nix ./firefox.nix ./chromium.nix];
nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
environment = {
sessionVariables = {
NIXOS_OZONE_WL = "1";
XDG_SESSION_TYPE = "wayland";
XDG_SESSION_DESKTOP = "Hyprland";
XDG_CURRENT_DESKTOP = "Hyprland";
GRIM_DEFAULT_DIR = "$HOME/Pictures/Grim";
};
systemPackages = with pkgs; [
hyprlock
hyprpaper
xdg-utils
wtype
wl-clipboard
swayimg
pamixer
pavucontrol
playerctl
brightnessctl
mpv
streamlink
];
};
security.pam.services.hyprlock = {};
services = {
xserver.enable = false;
blueman.enable = true;
udisks2.enable = true;
tumbler.enable = true;
gvfs = {
enable = true;
package = lib.mkForce pkgs.gnome3.gvfs;
};
greetd.settings = let
command = "Hyprland";
in {
default_session = {inherit command;};
initial_session = {inherit command;};
};
};
xdg.portal.enable = true;
xdg.mime = let
emacs = ["emacs.desktop"];
# TODO add nyxt back to browser when I can fix opening
# links in existing sessions
browser = ["firefox.desktop"]; # nyxt.desktop
applications = {
"inode/directory" = emacs;
"inode/symlink" = emacs;
"image/jpeg" = ["swayimg.desktop"] ++ emacs;
"image/png" = ["swayimg.desktop"] ++ emacs;
"video/mp4" = ["mpv.desktop"];
"text/plain" = emacs;
"text/richtext" = emacs;
"text/org" = emacs;
"text/markdown" = emacs;
"text/rust" = emacs;
"text/csv" = emacs;
"text/html" = emacs;
"text/css" = emacs;
"text/tab-separated-values" = emacs;
"text/x-emacs-lisp" = emacs;
"text/x-fortran" = emacs;
"text/x-idl" = emacs;
"text/x-log" = emacs;
"text/x-lua" = emacs;
"text/x-makefile" = emacs;
"text/x-python" = emacs;
"text/x-python3" = emacs;
"text/x-readme" = emacs;
"text/x-scheme" = emacs;
"text/x-tex" = emacs;
"text/x-texinfo" = emacs;
"application/json" = emacs;
"application/toml" = emacs;
"application/yaml" = emacs;
"application/xml" = emacs;
"application/pdf" = emacs;
"application/epub+zip" = emacs;
"application/rss+xml" = emacs;
"application/oxps" = emacs;
# "application/msword" = emacs;
"application/xhtml+xml" = browser;
"application/x-shellscript" = emacs;
"application/x-extension-htm" = browser;
"application/x-extension-html" = browser;
"application/x-extension-shtml" = browser;
"application/x-extension-xhtml" = browser;
"application/x-extension-xht" = browser;
"application/x-mozilla-bookmarks" = browser;
"x-scheme-handler/http" = browser;
"x-scheme-handler/https" = browser;
"x-scheme-handler/about" = browser;
"x-scheme-handler/chrome" = browser;
"x-scheme-handler/webcal" = browser;
# "x-scheme-handler/ms-word" = emacs;
# "x-scheme-handler/ms-powerpoint" = emacs;
# "x-scheme-handler/ms-excel" = emacs;
"x-scheme-handler/unknown" = emacs;
"x-scheme-handler/msteams" = ["teams-for-linux.desktop"];
};
in {
enable = true;
defaultApplications = applications;
addedAssociations = applications;
removedAssociations = {
"x-scheme-handler/msteams" = browser;
"x-scheme-handler/zoomus" = browser;
};
};
programs = {
dconf.enable = true;
light.enable = true;
thunar = {
enable = true;
plugins = with pkgs.xfce; [thunar-archive-plugin thunar-volman];
};
hyprland = {
enable = true;
xwayland.enable = true;
};
};
}