172 lines
4.7 KiB
Nix
172 lines
4.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
options,
|
|
inputs,
|
|
osConfig,
|
|
...
|
|
}: {
|
|
imports = [
|
|
inputs.ags.homeManagerModules.default
|
|
inputs.anyrun.homeManagerModules.default
|
|
];
|
|
|
|
options.my.desktop.hyprland.enable = lib.mkEnableOption "my Hyprland based desktop environment";
|
|
|
|
config = lib.mkIf config.my.desktop.hyprland.enable {
|
|
my.desktop.wayland = true;
|
|
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
package = osConfig.programs.hyprland.package;
|
|
extraConfig = ''
|
|
source=${./hyprland}/hyprland.conf
|
|
'';
|
|
systemd.variables = options.wayland.windowManager.hyprland.systemd.variables.default ++ ["XDG_SESSION_TYPE"];
|
|
};
|
|
|
|
services.cliphist = {
|
|
enable = true;
|
|
systemdTarget = "hyprland-session.target"; # defaults to graphical-session.target
|
|
};
|
|
|
|
systemd.user.targets.hyprland-session.Unit.Wants = ["plasma-polkit-agent.service"];
|
|
|
|
programs.ags = {
|
|
enable = true;
|
|
configDir = ./ags;
|
|
};
|
|
systemd.user.services.ags = {
|
|
Unit.Description = "Aylur's Gtk Shell";
|
|
Unit.PartOf = ["hyprland-session.target"];
|
|
Install.WantedBy = ["hyprland-session.target"];
|
|
Service = let
|
|
app = pkgs.writeShellApplication {
|
|
name = "ags-wrapped";
|
|
runtimeInputs = [config.programs.ags.package pkgs.coreutils];
|
|
text = ''ags "$@"'';
|
|
};
|
|
in {
|
|
# Service = {
|
|
BusName = "com.github.Aylur.ags.ags";
|
|
# ExecStart = "${config.programs.ags.package}/bin/ags --config ${config.programs.ags.configDir}/config.js";
|
|
ExecStart = "${app}/bin/ags-wrapped --config ${config.programs.ags.configDir}/config.js";
|
|
OOMScoreAdjust = -500;
|
|
};
|
|
# TODO: reloadTriggers?
|
|
# restartTriggers = [ config.programs.ags.configDir ];
|
|
};
|
|
|
|
programs.anyrun = {
|
|
enable = true;
|
|
config.plugins = with inputs.anyrun.packages.${pkgs.stdenv.hostPlatform.system}; [
|
|
applications
|
|
dictionary
|
|
# kidex
|
|
randr
|
|
rink
|
|
shell
|
|
# stdin
|
|
symbols
|
|
# translate
|
|
# websearch
|
|
];
|
|
};
|
|
|
|
programs.swaylock = {
|
|
enable = true;
|
|
settings = {
|
|
color = "808080";
|
|
font-size = 24;
|
|
indicator-idle-visible = false;
|
|
indicator-radius = 100;
|
|
line-color = "ffffff";
|
|
show-failed-attempts = true;
|
|
};
|
|
};
|
|
|
|
services.swayidle = let
|
|
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
|
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
|
in {
|
|
enable = true;
|
|
systemdTarget = "hyprland-session.target"; # defaults to graphical-session.target
|
|
extraArgs = [
|
|
"-w" # Wait for command to finish executing before continuing
|
|
"idlehint"
|
|
"300"
|
|
];
|
|
events = [
|
|
{
|
|
event = "before-sleep";
|
|
command = "${swaylock} -f";
|
|
}
|
|
# after-resume
|
|
{
|
|
event = "lock";
|
|
command = "${swaylock} -f";
|
|
}
|
|
{
|
|
event = "unlock";
|
|
command = "kill -s USR1 swaylock";
|
|
}
|
|
];
|
|
timeouts = [
|
|
{
|
|
timeout = 300;
|
|
command = "${swaylock} -f";
|
|
} # 300
|
|
{
|
|
timeout = 600;
|
|
command = "${hyprctl} dispatch dpms off";
|
|
resumeCommand = "${hyprctl} dispatch dpms on";
|
|
}
|
|
# { timeout = 900; command = "${pkgs.systemd}/bin/systemctl suspend"; }
|
|
];
|
|
};
|
|
# TDOD: replace with ags
|
|
services.swayosd.enable = true;
|
|
|
|
services.udiskie.enable = osConfig.services.udisks2.enable;
|
|
|
|
systemd.user.services.swww = {
|
|
Unit.Description = "Animated wallpaper daemon for wayland";
|
|
Unit.Documentation = ["man:swww(1)"];
|
|
Unit.PartOf = ["hyprland-session.target"];
|
|
Install.WantedBy = ["hyprland-session.target"];
|
|
# Service.ExecStart = "${pkgs.swww}/bin/swww init --no-daemon";
|
|
Service.ExecStart = let
|
|
app = pkgs.writeShellApplication {
|
|
name = "swww-wrapped";
|
|
runtimeInputs = [pkgs.swww];
|
|
text = ''
|
|
swww init --no-daemon
|
|
'';
|
|
};
|
|
in "${app}/bin/swww-wrapped";
|
|
};
|
|
|
|
systemd.user.services.wayvnc = {
|
|
Unit.Description = "Wayland VNC server";
|
|
Unit.PartOf = ["graphical-session.target"];
|
|
Service.ExecStart = "${pkgs.wayvnc}/bin/wayvnc";
|
|
};
|
|
|
|
# Not sure if this should be per desktop
|
|
services.mpris-proxy.enable = true;
|
|
|
|
programs.foot.settings.colors.alpha = 0.6;
|
|
|
|
home.packages = [
|
|
pkgs.swww
|
|
pkgs.wofi
|
|
pkgs.polkit-kde-agent
|
|
pkgs.libsForQt5.qtwayland
|
|
pkgs.qt6Packages.qtwayland
|
|
pkgs.grimblast # screenshots on hyprland
|
|
pkgs.gnome.gnome-system-monitor
|
|
pkgs.gnome.nautilus
|
|
];
|
|
};
|
|
}
|