summaryrefslogtreecommitdiff
path: root/home-modules/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'home-modules/desktop')
-rw-r--r--home-modules/desktop/hyprland.nix95
-rw-r--r--home-modules/desktop/wayland/default.nix11
-rw-r--r--home-modules/desktop/wayland/mako.nix47
3 files changed, 120 insertions, 33 deletions
diff --git a/home-modules/desktop/hyprland.nix b/home-modules/desktop/hyprland.nix
index 1fdc801..164282e 100644
--- a/home-modules/desktop/hyprland.nix
+++ b/home-modules/desktop/hyprland.nix
@@ -15,12 +15,14 @@ with lib;
networkmanagerapplet
wl-clipboard
brightnessctl
+ hyprsunset
];
services.hyprpolkitagent.enable = true;
homeprogs.waybar.enable = true;
homeprogs.mako.enable = true;
+ homeprogs.mako.systemdWantedBy = [ "hyprland-session.target" ];
# Environment variables for hyprland.
# This can be used to configure wayland/hyprland-specific things
home.file.".config/uwsm/env-hyprland".text = ''
@@ -33,12 +35,11 @@ with lib;
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export MOZ_ENABLE_WAYLAND=1
- export -n GTK_IM_MODULE
'';
# Hyprland
wayland.windowManager.hyprland = {
- systemd.enable = false;
+ systemd.enable = true;
enable = true;
xwayland.enable = true;
settings = {
@@ -252,15 +253,32 @@ with lib;
};
};
+ systemd.user.services.hyprpaper = {
+ Install.WantedBy = lib.mkForce [ "hyprland-session.target" ];
+ };
+
+ # TODO: Put the default wallpaper somewhere else.
+ home.file.defaultWallpaper = {
+ source = ./wallpaper.png;
+ target = "Pictures/Wallpapers/wallpaper.png";
+ enable = true;
+ };
+
services.hyprpaper = {
enable = true;
settings = {
ipc = "on";
splash = false;
- splash_offset = 2.0;
+ splash_offset = 2;
- preload = [ "${./wallpaper.png}" ];
- wallpaper = [ ",${./wallpaper.png}" ];
+ # preload = [ "${./wallpaper.png}" ];
+ wallpaper = [
+ {
+ monitor = "";
+ path = "${config.home.homeDirectory}/${config.home.file.defaultWallpaper.target}";
+ fit_mode = "cover";
+ }
+ ];
};
};
@@ -299,26 +317,57 @@ with lib;
];
};
};
+ services.hyprsunset = {
+ enable = true;
+ systemdTarget = "hyprland-session.target";
+ settings = {
+ max-gamma = 140;
+ profile = [
+ {
+ # Morning
+ time = "07:00";
+ identity = true;
+ # temperature = 6500;
+ gamme = 1;
+ }
+ {
+ # Evening
+ time = "19:00";
+ temperature = 4000;
+ gamma = 0.6;
+ }
+ {
+ # Night
+ time = "22:00";
+ temperature = 3000;
+ gamma = 0.4;
+ }
+ ];
+ };
+ };
- services.hypridle.enable = true;
- services.hypridle.settings = {
- general = {
- lock_cmd = "pidof hyprlock || hyprlock";
- before_sleep_cmd = "loginctl lock-session";
- ignore_dbus_inhibit = false;
- after_sleep_cmd = "hyprctl_dispatch dpms on";
+ services.hypridle = {
+ enable = true;
+ systemdTarget = "hyprland-session.target";
+ settings = {
+ general = {
+ lock_cmd = "pidof hyprlock || hyprlock";
+ before_sleep_cmd = "loginctl lock-session";
+ ignore_dbus_inhibit = false;
+ after_sleep_cmd = "hyprctl_dispatch dpms on";
+ };
+ listener = [
+ {
+ timeout = 120;
+ on-timeout = "hyprlock";
+ }
+ {
+ timeout = 300;
+ on-timeout = "hyprctl dispatch dpms off";
+ on-resume = "hyprctl dispatch dpms on";
+ }
+ ];
};
- listener = [
- {
- timeout = 120;
- on-timeout = "hyprlock";
- }
- {
- timeout = 300;
- on-timeout = "hyprctl dispatch dpms off";
- on-resume = "hyprctl dispatch dpms on";
- }
- ];
};
};
}
diff --git a/home-modules/desktop/wayland/default.nix b/home-modules/desktop/wayland/default.nix
index 27b1176..97f5fef 100644
--- a/home-modules/desktop/wayland/default.nix
+++ b/home-modules/desktop/wayland/default.nix
@@ -1,12 +1,17 @@
-{ pkgs, ... }:
+{
+ pkgs,
+ lib,
+ hostconfig,
+ ...
+}:
{
imports = [
./waybar.nix
./mako.nix
];
- xdg.portal = {
+ xdg.portal = lib.mkIf hostconfig.addons.desktop.wayland.enable {
enable = true;
- config.common.default = "*";
+
extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
diff --git a/home-modules/desktop/wayland/mako.nix b/home-modules/desktop/wayland/mako.nix
index ddf0a91..99987db 100644
--- a/home-modules/desktop/wayland/mako.nix
+++ b/home-modules/desktop/wayland/mako.nix
@@ -1,16 +1,49 @@
{
+ pkgs,
config,
lib,
...
}:
+let
+ cfg = config.homeprogs.mako;
+in
{
- options.homeprogs.mako.enable = lib.mkEnableOption "Enable Mako notification manager";
- config = lib.mkIf config.homeprogs.mako.enable {
- services.mako = {
- enable = true;
+ options.homeprogs.mako = {
+ enable = lib.mkEnableOption "Enable Mako notification manager";
+ systemdWantedBy = lib.mkOption {
+ description = "SystemD targets where mako should start for.";
+ # TODO: Put a null here, so that we can add a non-persistent default
+ default = [ ];
+ example = [ "hyprland-session.target" ];
+ type = lib.types.listOf lib.types.str;
+ };
+ package = lib.mkOption {
+ description = "mako package to use";
+ default = pkgs.mako;
+ example = pkgs.mako;
+ type = lib.types.package;
};
- xdg.configFile."mako/config".source = ./mako.ini;
-
};
-
+ config = lib.mkIf config.homeprogs.mako.enable ({
+ home.packages = [ pkgs.mako ];
+ xdg.configFile."mako/config" = {
+ onChange = "${pkgs.mako}/bin/makoctl reload || true";
+ source = ./mako.ini;
+ };
+ systemd.user.services.mako = {
+ Install.WantedBy = config.homeprogs.mako.systemdWantedBy;
+ Unit = {
+ Description = "Lightweight Wayland notification daemon";
+ Documentation = "man:mako(1)";
+ After = "graphical-session.target";
+ };
+ Service = {
+ Type = "dbus";
+ BusName = "org.freedesktop.Notifications";
+ ExecCondition = "/bin/sh -c '[ -n \"$WAYLAND_DISPLAY\" ]'";
+ ExecStart = "${cfg.package}/bin/mako";
+ ExecReload = "${cfg.package}/bin/makoctl reload";
+ };
+ };
+ });
}