257 lines
10 KiB
Nix
257 lines
10 KiB
Nix
{ config, lib, ... }:
|
|
# let rootPath = ./.; in
|
|
{
|
|
options.hypr = {
|
|
enable = lib.mkEnableOption "Enables hyprland";
|
|
mod_key = lib.mkOption { default = "SUPER"; };
|
|
monitor = {
|
|
details = lib.mkOption { default = []; };
|
|
};
|
|
workspace = {
|
|
workspaces = lib.mkOption { default = {}; };
|
|
scratchpad.enable = lib.mkEnableOption "Enables a scratchpad";
|
|
defaults = lib.mkOption { default = {}; };
|
|
# primary-secondary = {
|
|
# enable = lib.mkEnableOption "Enables the primary-secondary navigation style";
|
|
# primary = lib.mkOption { default = "DP-1"; };
|
|
# secondary = lib.mkOption { default = "DP-2"; };
|
|
# secondaries = lib.mkOption { default = []; };
|
|
# };
|
|
};
|
|
windows.opaque = lib.mkOption { default = []; };
|
|
background = {
|
|
enable = lib.mkEnableOption "Enables a wallpaper";
|
|
path = lib.mkOption { default = ""; };
|
|
};
|
|
cursor = {
|
|
enable = lib.mkEnableOption "Enables custom cursor";
|
|
theme = lib.mkOption { default = ""; };
|
|
size = lib.mkOption { default = "64"; };
|
|
};
|
|
xwayland.videobridge.enable = lib.mkEnableOption "Enable xwaylandvideobridge";
|
|
mouse.sensitivity = lib.mkOption { default = 0; };
|
|
master.mfact = lib.mkOption { default = 0.55; };
|
|
polkit.enable = lib.mkEnableOption "Enables polkit agent";
|
|
screenshot.enable = lib.mkEnableOption "Enables Screenshotting";
|
|
};
|
|
|
|
config.warnings = lib.mkIf config.hypr.enable [''
|
|
hypr.* has been deprecated to allow the removal of hyprland from flake inputs.
|
|
''];
|
|
|
|
# imports = [ inputs.hyprland.homeManagerModules.default ];
|
|
|
|
# config = let
|
|
# lopts = lib.lists.optionals;
|
|
# in {
|
|
# nix.settings = {
|
|
# substituters = ["https://hyprland.cachix.org"];
|
|
# trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
|
|
# };
|
|
# } // lib.mkIf config.hypr.enable {
|
|
# wayland.windowManager.hyprland = let
|
|
# mod = config.hypr.mod_key;
|
|
# # p-s = let
|
|
# # chw = config.hypr.workspace;
|
|
# # findDefaultWs = id: if (builtins.hasAttr id chw.workspaces)
|
|
# # then (builtins.head (builtins.getAttr id chw.workspaces))
|
|
# # else "";
|
|
# # in with config.hypr.workspace; lib.mkIf primary-secondary.enable {
|
|
# # primaryWs = findDefaultWs primary-secondary.primary;
|
|
# # secondaryWs = findDefaultWs primary-secondary.secondary;
|
|
# # };
|
|
# in {
|
|
# enable = true;
|
|
# settings = {
|
|
# monitor = config.hypr.monitor.details;
|
|
# workspace = let
|
|
# wsMonitor = monitor: wrksps: map (ws:
|
|
# if ws == (builtins.head wrksps)
|
|
# then "name:"+ws+", monitor:"+monitor+", persistent:true, default:true"
|
|
# else "name:"+ws+", monitor:"+monitor+", persistent:true"
|
|
# ) wrksps;
|
|
# makeRules = wsAttr: builtins.concatLists (builtins.attrValues (
|
|
# builtins.mapAttrs wsMonitor wsAttr
|
|
# ));
|
|
# in makeRules config.hypr.workspace.workspaces
|
|
# ++ [
|
|
# "w[t1], gapsout:0, gapsin:0"
|
|
# "w[tg1], gapsout:0, gapsin:0"
|
|
# "f[1], gapsout:0, gapsin:0"
|
|
# ]
|
|
# ++ lopts config.hypr.workspace.scratchpad.enable [
|
|
# "special:scratch, on-created-empty: [float; size 50% 50%; center] ${config.defaultApps.terminal}"
|
|
# ];
|
|
# input = {
|
|
# accel_profile = "flat";
|
|
# sensitivity = config.hypr.mouse.sensitivity;
|
|
# };
|
|
# general = {
|
|
# gaps_in = 3;
|
|
# gaps_out = 3;
|
|
# border_size = 2;
|
|
# "col.active_border" = "rgb(F5C2E7)";
|
|
# "col.inactive_border" = "rgb(1E1D2F)";
|
|
# layout = "master";
|
|
# };
|
|
# decoration = {
|
|
# rounding = 2;
|
|
# blur = {
|
|
# enabled = true;
|
|
# size = 12;
|
|
# passes = 2;
|
|
# special = true;
|
|
# };
|
|
# };
|
|
# animation = [
|
|
# "windows, 1, 4, default, popin 50%"
|
|
# "windowsOut, 1, 4, default, popin 50%"
|
|
# "windowsMove, 1, 3, default"
|
|
# "border, 1, 3, default"
|
|
# "fade, 1, 3, default"
|
|
# "workspaces, 1, 3, default"
|
|
# ];
|
|
# master = {
|
|
# mfact = config.hypr.master.mfact;
|
|
# };
|
|
# misc = {
|
|
# focus_on_activate = true;
|
|
# };
|
|
#
|
|
# exec-once = lopts config.hypr.polkit.enable [
|
|
# "${pkgs.kdePackages.polkit-kde-agent-1}/bin/libexec/polkit-kde-authentication-agent-1"
|
|
# ] ++ lopts config.hypr.background.enable [
|
|
# "${pkgs.swww}/bin/swww-daemon"
|
|
# "${pkgs.swww}/bin/swww img ${config.hypr.background.path}"
|
|
# ] ++ lopts config.ags.enable [
|
|
# "ags"
|
|
# ] ++ lopts config.beeper.enable [
|
|
# "[workspace name:chat silent] Beeper"
|
|
# ];
|
|
#
|
|
# env = with config.hypr; [
|
|
# # "HYPR_MON_PRIMARY, ${workspace.primary-secondary.primary}"
|
|
# # "HYPR_MON_SECONDARY, ${workspace.primary-secondary.secondary}"
|
|
# "HYPR_WORK_DB, ${config.xdg.cacheHome}/hypr/workspace.db"
|
|
# ] ++ lopts cursor.enable [
|
|
# "HYPRCURSOR_THEME,${cursor.theme}"
|
|
# "HYPRCURSOR_SIZE,${cursor.size}"
|
|
# ] ++ lopts config.nvidia.enable [
|
|
# "LIBVA_DRIVER_NAME,nvidia"
|
|
# "XDG_SESSION_TYPE,wayland"
|
|
# "GBM_BACKEND,nvidia-drm"
|
|
# "__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
|
# "WLR_RENDERER_ALLOW_SOFTWARE,1"
|
|
# "WLR_DRM_DEVICES,/dev/dri/card1"
|
|
# ];
|
|
#
|
|
# windowrulev2 = let
|
|
# workspaceDefaults = wsname: applist: map (
|
|
# app: "workspace " + wsname + ", " + app
|
|
# ) applist;
|
|
# allDefault = wsAttr: builtins.concatLists (builtins.attrValues (
|
|
# builtins.mapAttrs workspaceDefaults wsAttr
|
|
# ));
|
|
# in allDefault config.hypr.workspace.defaults
|
|
# ++ [
|
|
# "bordersize 0, floating:0, onworkspace:w[t1]"
|
|
# "rounding 0, floating:0, onworkspace:w[t1]"
|
|
# "bordersize 0, floating:0, onworkspace:w[tg1]"
|
|
# "rounding 0, floating:0, onworkspace:w[tg1]"
|
|
# "bordersize 0, floating:0, onworkspace:f[1]"
|
|
# "rounding 0, floating:0, onworkspace:f[1]"
|
|
# ]
|
|
# ++ lopts config.hypr.xwayland.videobridge.enable [
|
|
# "opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$"
|
|
# "noanim,class:^(xwaylandvideobridge)$"
|
|
# "noinitialfocus,class:^(xwaylandvideobridge)$"
|
|
# "maxsize 1 1,class:^(xwaylandvideobridge)$"
|
|
# "noblur,class:^(xwaylandvideobridge)$"
|
|
# ] ++ map (id: "opacity 1 override, " + id) config.hypr.windows.opaque
|
|
# ++ [
|
|
# "opacity 0.94 fullscreen:0"
|
|
# "opacity 0.79 override, class:^(${config.defaultApps.terminal})$"
|
|
# ];
|
|
#
|
|
# # 1, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh home
|
|
# # 2, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh web
|
|
# # 3, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh med
|
|
# # 4, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh game
|
|
# # 5, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh etc
|
|
# # _, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh hell
|
|
# # TAB, exec, $XDG_CONFIG_HOME/hypr/scripts/changesecondary.xsh
|
|
# #
|
|
# # SHIFT, 1, movetoworkspacesilent, name:home
|
|
# # SHIFT, 2, movetoworkspacesilent, name:web
|
|
# # SHIFT, 3, movetoworkspacesilent, name:med
|
|
# # SHIFT, 4, movetoworkspacesilent, name:game
|
|
# # SHIFT, TAB, movetoworkspacesilent, r-1
|
|
#
|
|
# bind = let
|
|
# modPrefix = kb: if (lib.strings.hasPrefix "&" kb)
|
|
# then ("${mod}" + kb)
|
|
# else ("${mod}, " + kb);
|
|
# in map modPrefix ([
|
|
# "Return, exec, ${config.defaultApps.terminal}"
|
|
# "&SHIFT, Q, exit"
|
|
# "h, focusmonitor, l"
|
|
# "l, focusmonitor, r"
|
|
# "j, cyclenext,"
|
|
# "k, cyclenext, prev"
|
|
# "&SHIFT, h, movecurrentworkspacetomonitor, -1"
|
|
# "&SHIFT, l, movecurrentworkspacetomonitor, +1"
|
|
# "&SHIFT, j, swapnext,"
|
|
# "&SHIFT, k, swapnext, prev"
|
|
# "c, killactive"
|
|
# "f, togglefloating"
|
|
# "&SHIFT, f, fullscreen"
|
|
# ] ++ (let
|
|
# workspaces = builtins.concatLists (
|
|
# builtins.attrValues config.hypr.workspace.workspaces);
|
|
# wsBinds = with builtins; wrksps: depth: if depth > (length wrksps)
|
|
# then []
|
|
# else let ws = builtins.elemAt wrksps (depth -1); in [
|
|
# "${toString depth}, workspace, name:${ws}"
|
|
# "&SHIFT, ${toString depth}, movetoworkspacesilent, name:${ws}"
|
|
# ] ++ wsBinds wrksps (depth + 1);
|
|
# in wsBinds workspaces 1) ++ lopts config.rofi.enable [
|
|
# "&SHIFT, return, exec, ${pkgs.rofi}/bin/rofi -show run"
|
|
# ] ++ lopts config.hypr.screenshot.enable [
|
|
# "P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copy area"
|
|
# "&SHIFT, P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copysave area"
|
|
# ] ++ lopts config.hypr.workspace.scratchpad.enable [
|
|
# "i, togglespecialworkspace, scratch"
|
|
# ]);
|
|
#
|
|
# bindm = map (kb: "${mod}, " + kb) [
|
|
# "mouse:272, movewindow"
|
|
# "mouse:273, movewindow"
|
|
# ];
|
|
# };
|
|
# };
|
|
#
|
|
# home.packages = with pkgs; [
|
|
# wlr-randr # Xrandr for wayland
|
|
# wl-clipboard # Clipboard manager for wayland
|
|
# ] ++ lopts config.hypr.xwayland.videobridge.enable [
|
|
# kdePackages.xwaylandvideobridge
|
|
# ] ++ lopts config.hypr.cursor.enable [
|
|
# hyprcursor
|
|
# ] ++ lopts config.hypr.screenshot.enable [
|
|
# hyprpicker # Colorpicker, needed for screenshot tool
|
|
# inputs.hyprland-contrib.packages.${pkgs.system}.grimblast
|
|
# ];
|
|
#
|
|
# xdg.configFile."hypr-scripts" = {
|
|
# source = rootPath + "/scripts";
|
|
# target = "hypr/scripts";
|
|
# executable = true;
|
|
# };
|
|
#
|
|
# xdg.dataFile."hypr-icons" = lib.mkIf config.hypr.cursor.enable {
|
|
# source = rootPath + "/icons";
|
|
# target = "icons/";
|
|
# recursive = true;
|
|
# };
|
|
# };
|
|
}
|