reorganised options
This commit is contained in:
		
							parent
							
								
									bf3bb961f3
								
							
						
					
					
						commit
						0b5941f31d
					
				
					 17 changed files with 389 additions and 458 deletions
				
			
		| 
						 | 
				
			
			@ -17,7 +17,14 @@
 | 
			
		|||
    laser.enable = true;
 | 
			
		||||
    windowManager = "niri-session";
 | 
			
		||||
    wm.niri.enable = true;
 | 
			
		||||
    hyprland.enable = false;
 | 
			
		||||
    fuzzel.enable = true;
 | 
			
		||||
    hyprlock.enable = true;
 | 
			
		||||
    hyprpaper.enable = true;
 | 
			
		||||
    hypridle.enable = true;
 | 
			
		||||
    mako.enable = true;
 | 
			
		||||
    waybar.enable = true;
 | 
			
		||||
    wlogout.enable = true;
 | 
			
		||||
    utils.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  common.syncthing = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,9 @@
 | 
			
		|||
{
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./hyprland.nix
 | 
			
		||||
    ./niri.nix
 | 
			
		||||
    ./river.nix
 | 
			
		||||
    ./waybar.nix
 | 
			
		||||
    ./options.nix
 | 
			
		||||
    ./wlroots_utils.nix
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -260,5 +260,11 @@ lib.mkIf config.desktop.hyprland.enable {
 | 
			
		|||
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    home.packages = [
 | 
			
		||||
      (pkgs.writeShellScriptBin "hyprexit" ''
 | 
			
		||||
        ${pkgs.hyprland}/bin/hyprctl dispatch exit
 | 
			
		||||
        ${pkgs.systemd}/bin/loginctl terminate-user willifan
 | 
			
		||||
      '')
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3,15 +3,11 @@
 | 
			
		|||
  options = {
 | 
			
		||||
    desktop = {
 | 
			
		||||
      fuzzel.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      hyprexit.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      hypridle.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -36,24 +32,29 @@
 | 
			
		|||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      waybar.enable = lib.mkOption {
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      hyprlock.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      hyprpaper.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      mako.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      utils.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      wlogout.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			@ -1,19 +0,0 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.desktop.wm.river.enable {
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    wayland.windowManager.river = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        map = {
 | 
			
		||||
          normal = {
 | 
			
		||||
            "Super Q" = "spawn 'kitty'";
 | 
			
		||||
            "Super R" = "spawn 'fuzzel'";
 | 
			
		||||
            "Super E" = "spawn 'thunar'";
 | 
			
		||||
 | 
			
		||||
            "Super C" = "close";
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,153 +0,0 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
let
 | 
			
		||||
  icons = fetchTarball {
 | 
			
		||||
    url = "https://files.huwe.mooo.com/waybar.tar.gz";
 | 
			
		||||
    sha256 = "0h5r8r7vscm6yv25kgyzx5y325n5ri78n28vmdvgmysp351drm57";
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
lib.mkIf config.desktop.wm.niri.enable {
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    programs.waybar = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        mainBar = {
 | 
			
		||||
          layer = "top";
 | 
			
		||||
          position = "top";
 | 
			
		||||
          height = 25;
 | 
			
		||||
          output = [
 | 
			
		||||
            "eDP-1"
 | 
			
		||||
          ];
 | 
			
		||||
          modules-left = [ "clock" "mpris" ];
 | 
			
		||||
          modules-center = [ "niri/workspaces" ];
 | 
			
		||||
          modules-right = [ "tray" "group/ressources" "group/peripherals" "group/wireless" "group/power" ];
 | 
			
		||||
 | 
			
		||||
          "group/ressources" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "group/cpu" "group/memory" ];
 | 
			
		||||
          };
 | 
			
		||||
          "group/peripherals" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "group/volume" "group/backlight" ];
 | 
			
		||||
          };
 | 
			
		||||
          "group/wireless" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "group/networking" "group/bluetooth" ];
 | 
			
		||||
          };
 | 
			
		||||
          "group/power" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "group/battery" "image#power" ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          "clock" = {
 | 
			
		||||
            interval = 1;
 | 
			
		||||
            format = "{:%H:%M:%S}";
 | 
			
		||||
          };
 | 
			
		||||
          "mpris" = {
 | 
			
		||||
            format = "";
 | 
			
		||||
            format-playing = "{dynamic}";
 | 
			
		||||
            dynamic-order = [ "title" "artist" "album" "position" "length" ];
 | 
			
		||||
            dynamic-len = 30; 
 | 
			
		||||
          };
 | 
			
		||||
          "niri/workspaces" = {
 | 
			
		||||
            all-outputs = true;
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/cpu" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#cpu" "cpu" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#cpu" = {
 | 
			
		||||
            path = "${icons}/cpu.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "cpu" = {
 | 
			
		||||
            format = "{usage}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/memory" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#memory" "memory" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#memory" = {
 | 
			
		||||
            path = "${icons}/ram.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "memory" = {
 | 
			
		||||
            format = "{percentage}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/volume" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#volume" "wireplumber" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#volume" = {
 | 
			
		||||
            path = "${icons}/volume.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "wireplumber" = {
 | 
			
		||||
            format = "{volume}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/backlight" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#backlight" "backlight" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#backlight" = {
 | 
			
		||||
            path = "${icons}/brightness.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "backlight" = {
 | 
			
		||||
            format = "{percent}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/networking" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#networking" "network" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#networking" = {
 | 
			
		||||
            path = "${icons}/wifiHigh.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "network" = {
 | 
			
		||||
            format = "{signalStrength}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/bluetooth" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#bluetooth" "bluetooth" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#bluetooth" = {
 | 
			
		||||
            path = "${icons}/bluetooth.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "bluetooth" = {
 | 
			
		||||
            format = "{status}";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/battery" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#battery" "battery" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#battery" = {
 | 
			
		||||
            path = "${icons}/battery.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "battery" = {
 | 
			
		||||
            format = "{capacity}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "image#power" = {
 | 
			
		||||
            path = "${icons}/power.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      systemd = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										360
									
								
								modules/home-manager/desktop/compositors/wlroots_utils.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										360
									
								
								modules/home-manager/desktop/compositors/wlroots_utils.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,360 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
let
 | 
			
		||||
  icons = fetchTarball {
 | 
			
		||||
    url = "https://files.huwe.mooo.com/waybar.tar.gz";
 | 
			
		||||
    sha256 = "0h5r8r7vscm6yv25kgyzx5y325n5ri78n28vmdvgmysp351drm57";
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    home.packages = lib.mkIf config.desktop.utils.enable [
 | 
			
		||||
 | 
			
		||||
      pkgs.hyprpicker
 | 
			
		||||
      pkgs.hyprcursor
 | 
			
		||||
 | 
			
		||||
      pkgs.grim
 | 
			
		||||
      pkgs.slurp
 | 
			
		||||
      pkgs.wl-clipboard
 | 
			
		||||
      pkgs.playerctl
 | 
			
		||||
 | 
			
		||||
      pkgs.dconf
 | 
			
		||||
 | 
			
		||||
      pkgs.papirus-icon-theme
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    programs.fuzzel = lib.mkIf config.desktop.fuzzel.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        main = {
 | 
			
		||||
          lines = 12;
 | 
			
		||||
          width = 45;
 | 
			
		||||
          line-height = 20;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    services.hyprpaper = lib.mkIf config.desktop.hyprpaper.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        splash = true;
 | 
			
		||||
        ipc = "off";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    services.mako = lib.mkIf config.desktop.mako.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      borderRadius = 10;
 | 
			
		||||
      borderSize = 2;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    services.hypridle = lib.mkIf config.desktop.hypridle.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
 | 
			
		||||
        general = {
 | 
			
		||||
          lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
 | 
			
		||||
          before_sleep_cmd = "loginctl lock-session && sleep 2"; # lock before suspend.
 | 
			
		||||
          after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        listener = [
 | 
			
		||||
          #{
 | 
			
		||||
          #  timeout = 150;                                # 2.5min.
 | 
			
		||||
          #  on-timeout = brightnessctl -s set 10;         # set monitor backlight to minimum, avoid 0 on OLED monitor.
 | 
			
		||||
          #  on-resume = brightnessctl -r;                 # monitor backlight restor.
 | 
			
		||||
          #}
 | 
			
		||||
 | 
			
		||||
          {
 | 
			
		||||
            timeout = 300; # 5min
 | 
			
		||||
            on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          {
 | 
			
		||||
            timeout = 380; # 5.5min
 | 
			
		||||
            on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
 | 
			
		||||
            on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          {
 | 
			
		||||
            timeout = 600; # 30min
 | 
			
		||||
            on-timeout = "systemctl suspend-then-hibernate"; # suspend pc
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    programs.waybar = lib.mkIf config.desktop.waybar.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        mainBar = {
 | 
			
		||||
          layer = "top";
 | 
			
		||||
          position = "top";
 | 
			
		||||
          height = 25;
 | 
			
		||||
          output = [
 | 
			
		||||
            "eDP-1"
 | 
			
		||||
          ];
 | 
			
		||||
          modules-left = [ "clock" "mpris" ];
 | 
			
		||||
          modules-center = [ "niri/workspaces" ];
 | 
			
		||||
          modules-right = [ "tray" "group/ressources" "group/peripherals" "group/wireless" "group/power" ];
 | 
			
		||||
 | 
			
		||||
          "group/ressources" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "group/cpu" "group/memory" ];
 | 
			
		||||
          };
 | 
			
		||||
          "group/peripherals" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "group/volume" "group/backlight" ];
 | 
			
		||||
          };
 | 
			
		||||
          "group/wireless" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "group/networking" "group/bluetooth" ];
 | 
			
		||||
          };
 | 
			
		||||
          "group/power" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "group/battery" "image#power" ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          "clock" = {
 | 
			
		||||
            interval = 1;
 | 
			
		||||
            format = "{:%H:%M:%S}";
 | 
			
		||||
          };
 | 
			
		||||
          "mpris" = {
 | 
			
		||||
            format = "";
 | 
			
		||||
            format-playing = "{dynamic}";
 | 
			
		||||
            dynamic-order = [ "title" "artist" "album" "position" "length" ];
 | 
			
		||||
            dynamic-len = 30;
 | 
			
		||||
          };
 | 
			
		||||
          "niri/workspaces" = {
 | 
			
		||||
            all-outputs = true;
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/cpu" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#cpu" "cpu" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#cpu" = {
 | 
			
		||||
            path = "${icons}/cpu.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "cpu" = {
 | 
			
		||||
            format = "{usage}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/memory" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#memory" "memory" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#memory" = {
 | 
			
		||||
            path = "${icons}/ram.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "memory" = {
 | 
			
		||||
            format = "{percentage}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/volume" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#volume" "wireplumber" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#volume" = {
 | 
			
		||||
            path = "${icons}/volume.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "wireplumber" = {
 | 
			
		||||
            format = "{volume}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/backlight" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#backlight" "backlight" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#backlight" = {
 | 
			
		||||
            path = "${icons}/brightness.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "backlight" = {
 | 
			
		||||
            format = "{percent}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/networking" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#networking" "network" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#networking" = {
 | 
			
		||||
            path = "${icons}/wifiHigh.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "network" = {
 | 
			
		||||
            format = "{signalStrength}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/bluetooth" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#bluetooth" "bluetooth" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#bluetooth" = {
 | 
			
		||||
            path = "${icons}/bluetooth.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "bluetooth" = {
 | 
			
		||||
            format = "{status}";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "group/battery" = {
 | 
			
		||||
            orientation = "inherit";
 | 
			
		||||
            modules = [ "image#battery" "battery" ];
 | 
			
		||||
          };
 | 
			
		||||
          "image#battery" = {
 | 
			
		||||
            path = "${icons}/battery.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
          "battery" = {
 | 
			
		||||
            format = "{capacity}%";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          "image#power" = {
 | 
			
		||||
            path = "${icons}/power.png";
 | 
			
		||||
            size = 16;
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      systemd = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    programs.hyprlock = lib.mkIf config.desktop.hyprlock.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        background = {
 | 
			
		||||
          monitor = "";
 | 
			
		||||
          # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
 | 
			
		||||
          blur_passes = 3; # 0 disables blurring
 | 
			
		||||
          blur_size = 7;
 | 
			
		||||
          noise = 0.0117;
 | 
			
		||||
          contrast = 0.8916;
 | 
			
		||||
          brightness = 0.8172;
 | 
			
		||||
          vibrancy = 0.1696;
 | 
			
		||||
          vibrancy_darkness = 0.0;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        input-field = {
 | 
			
		||||
          monitor = "";
 | 
			
		||||
          size = "300, 75";
 | 
			
		||||
          outline_thickness = 3;
 | 
			
		||||
          dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
 | 
			
		||||
          dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
 | 
			
		||||
          dots_center = false;
 | 
			
		||||
          dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
 | 
			
		||||
          fade_on_empty = true;
 | 
			
		||||
          fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
 | 
			
		||||
          placeholder_text = "<i>Input Password...</i>"; # Text rendered in the input box when it's empty.
 | 
			
		||||
          hide_input = false;
 | 
			
		||||
          rounding = -1; # -1 means complete rounding (circle/oval)
 | 
			
		||||
          fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>"; # can be set to empty
 | 
			
		||||
          fail_transition = 300; # transition time in ms between normal outer_color and fail_color
 | 
			
		||||
          capslock_color = -1;
 | 
			
		||||
          numlock_color = -1;
 | 
			
		||||
          bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
 | 
			
		||||
          invert_numlock = false; # change color if numlock is off
 | 
			
		||||
          position = "0, -20";
 | 
			
		||||
          halign = "center";
 | 
			
		||||
          valign = "center";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        label = {
 | 
			
		||||
          monitor = "";
 | 
			
		||||
          text = "Hi there, $USER";
 | 
			
		||||
          color = "rgba(200, 200, 200, 1.0)";
 | 
			
		||||
          font_size = 25;
 | 
			
		||||
          font_family = "Noto Sans";
 | 
			
		||||
          position = "0, 80";
 | 
			
		||||
          halign = "center";
 | 
			
		||||
          valign = "center";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    programs.wlogout = lib.mkIf config.desktop.wlogout.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      layout = [
 | 
			
		||||
        {
 | 
			
		||||
          label = "shutdown";
 | 
			
		||||
          action = "systemctl poweroff";
 | 
			
		||||
          text = "Shutdown";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "hyprland";
 | 
			
		||||
          action = "hyprctl dispatch exit";
 | 
			
		||||
          text = "Exit Hyprland";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "whatever";
 | 
			
		||||
          action = "";
 | 
			
		||||
          text = "whatever";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "reboot";
 | 
			
		||||
          action = "systemctl reboot";
 | 
			
		||||
          text = "Reboot";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "suspend";
 | 
			
		||||
          action = "systemctl suspend";
 | 
			
		||||
          text = "Suspend";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "hibernate";
 | 
			
		||||
          action = "systemctl hibernate";
 | 
			
		||||
          text = "Hibernate";
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      style = ''
 | 
			
		||||
        @import url("file:///home/willifan/.config/gtk-4.0/gtk.css");
 | 
			
		||||
        * {
 | 
			
		||||
        	background-image: none;
 | 
			
		||||
        	box-shadow: none;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        window {
 | 
			
		||||
        	background-color: rgba(12, 12, 12, 0.9);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        button {
 | 
			
		||||
          border-radius: 10px;
 | 
			
		||||
          border-color: #ffa44b;
 | 
			
		||||
        	border-style: solid;
 | 
			
		||||
          border-width: 2px;
 | 
			
		||||
        	background-repeat: no-repeat;
 | 
			
		||||
        	background-position: center;
 | 
			
		||||
        	background-size: 25%;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        button:focus, button:active, button:hover {
 | 
			
		||||
        	/*background-color: #3700B3;*/
 | 
			
		||||
        	outline-style: none;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #suspend {
 | 
			
		||||
          background-image: image(url("${icons}/suspend.png"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #hibernate {
 | 
			
		||||
          background-image: image(url("${icons}/hibernate.png"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #shutdown {
 | 
			
		||||
          background-image: image(url("${icons}/shutdown.png"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #reboot {
 | 
			
		||||
          background-image: image(url("${icons}/reboot.png"));
 | 
			
		||||
        }
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2,7 +2,6 @@
 | 
			
		|||
{
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./hyprland
 | 
			
		||||
    ./compositors
 | 
			
		||||
 | 
			
		||||
    ./options.nix
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,21 +0,0 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  #home-manager.users.willifan = {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./fuzzel.nix
 | 
			
		||||
    ./hyprexit.nix
 | 
			
		||||
    ./hypridle.nix
 | 
			
		||||
    ./hyprlock.nix
 | 
			
		||||
    ./hyprpaper.nix
 | 
			
		||||
    ./mako.nix
 | 
			
		||||
    ./utils.nix
 | 
			
		||||
    ./wlogout.nix
 | 
			
		||||
    ./options.nix
 | 
			
		||||
    ./hyprland.nix
 | 
			
		||||
  ];
 | 
			
		||||
  #};
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    programs.fuzzel = lib.mkIf config.desktop.fuzzel.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        main = {
 | 
			
		||||
          lines = 12;
 | 
			
		||||
          width = 45;
 | 
			
		||||
          line-height = 20;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,11 +0,0 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    home.packages = lib.mkIf config.desktop.hyprexit.enable [
 | 
			
		||||
      (pkgs.writeShellScriptBin "hyprexit" ''
 | 
			
		||||
        ${pkgs.hyprland}/bin/hyprctl dispatch exit
 | 
			
		||||
        ${pkgs.systemd}/bin/loginctl terminate-user willifan
 | 
			
		||||
      '')
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,40 +0,0 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    services.hypridle = lib.mkIf config.desktop.hypridle.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
 | 
			
		||||
        general = {
 | 
			
		||||
          lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
 | 
			
		||||
          before_sleep_cmd = "loginctl lock-session && sleep 2"; # lock before suspend.
 | 
			
		||||
          after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        listener = [
 | 
			
		||||
          #{
 | 
			
		||||
          #  timeout = 150;                                # 2.5min.
 | 
			
		||||
          #  on-timeout = brightnessctl -s set 10;         # set monitor backlight to minimum, avoid 0 on OLED monitor.
 | 
			
		||||
          #  on-resume = brightnessctl -r;                 # monitor backlight restor.
 | 
			
		||||
          #}
 | 
			
		||||
 | 
			
		||||
          {
 | 
			
		||||
            timeout = 300; # 5min
 | 
			
		||||
            on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          {
 | 
			
		||||
            timeout = 380; # 5.5min
 | 
			
		||||
            on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
 | 
			
		||||
            on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          {
 | 
			
		||||
            timeout = 600; # 30min
 | 
			
		||||
            on-timeout = "systemctl suspend-then-hibernate"; # suspend pc
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,56 +0,0 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    programs.hyprlock = lib.mkIf config.desktop.hyprlock.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        background = {
 | 
			
		||||
          monitor = "";
 | 
			
		||||
          # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
 | 
			
		||||
          blur_passes = 3; # 0 disables blurring
 | 
			
		||||
          blur_size = 7;
 | 
			
		||||
          noise = 0.0117;
 | 
			
		||||
          contrast = 0.8916;
 | 
			
		||||
          brightness = 0.8172;
 | 
			
		||||
          vibrancy = 0.1696;
 | 
			
		||||
          vibrancy_darkness = 0.0;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        input-field = {
 | 
			
		||||
          monitor = "";
 | 
			
		||||
          size = "300, 75";
 | 
			
		||||
          outline_thickness = 3;
 | 
			
		||||
          dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
 | 
			
		||||
          dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
 | 
			
		||||
          dots_center = false;
 | 
			
		||||
          dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
 | 
			
		||||
          fade_on_empty = true;
 | 
			
		||||
          fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
 | 
			
		||||
          placeholder_text = "<i>Input Password...</i>"; # Text rendered in the input box when it's empty.
 | 
			
		||||
          hide_input = false;
 | 
			
		||||
          rounding = -1; # -1 means complete rounding (circle/oval)
 | 
			
		||||
          fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>"; # can be set to empty
 | 
			
		||||
          fail_transition = 300; # transition time in ms between normal outer_color and fail_color
 | 
			
		||||
          capslock_color = -1;
 | 
			
		||||
          numlock_color = -1;
 | 
			
		||||
          bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
 | 
			
		||||
          invert_numlock = false; # change color if numlock is off
 | 
			
		||||
          position = "0, -20";
 | 
			
		||||
          halign = "center";
 | 
			
		||||
          valign = "center";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        label = {
 | 
			
		||||
          monitor = "";
 | 
			
		||||
          text = "Hi there, $USER";
 | 
			
		||||
          color = "rgba(200, 200, 200, 1.0)";
 | 
			
		||||
          font_size = 25;
 | 
			
		||||
          font_family = "Noto Sans";
 | 
			
		||||
          position = "0, 80";
 | 
			
		||||
          halign = "center";
 | 
			
		||||
          valign = "center";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    services.hyprpaper = lib.mkIf config.desktop.hyprpaper.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
 | 
			
		||||
        splash = true;
 | 
			
		||||
 | 
			
		||||
        ipc = "off";
 | 
			
		||||
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,11 +0,0 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    services.mako = lib.mkIf config.desktop.mako.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      borderRadius = 10;
 | 
			
		||||
      borderSize = 2;
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,19 +0,0 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    home.packages = lib.mkIf config.desktop.utils.enable [
 | 
			
		||||
 | 
			
		||||
      pkgs.hyprpicker
 | 
			
		||||
      pkgs.hyprcursor
 | 
			
		||||
 | 
			
		||||
      pkgs.grim
 | 
			
		||||
      pkgs.slurp
 | 
			
		||||
      pkgs.wl-clipboard
 | 
			
		||||
      pkgs.playerctl
 | 
			
		||||
 | 
			
		||||
      pkgs.dconf
 | 
			
		||||
 | 
			
		||||
      pkgs.papirus-icon-theme
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,83 +0,0 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    programs.wlogout = lib.mkIf config.desktop.wlogout.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      layout = [
 | 
			
		||||
        {
 | 
			
		||||
          label = "shutdown";
 | 
			
		||||
          action = "systemctl poweroff";
 | 
			
		||||
          text = "Shutdown";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "hyprland";
 | 
			
		||||
          action = "hyprctl dispatch exit";
 | 
			
		||||
          text = "Exit Hyprland";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "whatever";
 | 
			
		||||
          action = "";
 | 
			
		||||
          text = "whatever";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "reboot";
 | 
			
		||||
          action = "systemctl reboot";
 | 
			
		||||
          text = "Reboot";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "suspend";
 | 
			
		||||
          action = "systemctl suspend";
 | 
			
		||||
          text = "Suspend";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          label = "hibernate";
 | 
			
		||||
          action = "systemctl hibernate";
 | 
			
		||||
          text = "Hibernate";
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      style = ''
 | 
			
		||||
        @import url("file:///home/willifan/.config/gtk-4.0/gtk.css");
 | 
			
		||||
        * {
 | 
			
		||||
        	background-image: none;
 | 
			
		||||
        	box-shadow: none;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        window {
 | 
			
		||||
        	background-color: rgba(12, 12, 12, 0.9);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        button {
 | 
			
		||||
          border-radius: 10px;
 | 
			
		||||
          border-color: #ffa44b;
 | 
			
		||||
        	border-style: solid;
 | 
			
		||||
          border-width: 2px;
 | 
			
		||||
        	background-repeat: no-repeat;
 | 
			
		||||
        	background-position: center;
 | 
			
		||||
        	background-size: 25%;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        button:focus, button:active, button:hover {
 | 
			
		||||
        	/*background-color: #3700B3;*/
 | 
			
		||||
        	outline-style: none;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #suspend {
 | 
			
		||||
          background-image: image(url("/home/willifan/.config/desktop-utils/images/suspend.png"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #hibernate {
 | 
			
		||||
          background-image: image(url("/home/willifan/.config/desktop-utils/images/hibernate.png"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #shutdown {
 | 
			
		||||
          background-image: image(url("/home/willifan/.config/desktop-utils/images/shutdown.png"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #reboot {
 | 
			
		||||
          background-image: image(url("/home/willifan/.config/desktop-utils/images/reboot.png"));
 | 
			
		||||
        }
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue