diff --git a/flake.lock b/flake.lock index dce7f63..46db645 100644 --- a/flake.lock +++ b/flake.lock @@ -21,19 +21,148 @@ "type": "github" } }, - "nixpkgs": { + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, "locked": { - "lastModified": 1712588820, - "narHash": "sha256-y31s5idk3jMJMAVE4Ud9AdI7HT3CgTAeMTJ0StqKN7Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d272ca50d1f7424fbfcd1e6f1c9e01d92f6da167", + "lastModified": 1712434681, + "narHash": "sha256-qwmR2p1oc48Bj7gUDvb1oGL19Rjs2PmEmk4ChV01A5o=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "818d8c4b69e0997483d60b75f701fe14b561a7a3", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-23.11", - "type": "indirect" + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "hyprcursor": "hyprcursor", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "nixpkgs": "nixpkgs", + "systems": "systems", + "wlroots": "wlroots", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1712797985, + "narHash": "sha256-2WS5zErQC7DuGUoVIiWUqQPXsIpdYBqFJip5XSpCVrU=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "ac0f3411c18497a39498b756b711e092512de9e0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-plugins": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "systems": [ + "hyprland-plugins", + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1712420644, + "narHash": "sha256-h2X8qhN5RKYQXzT1kxKgUz1u1QthqOrP9xk800mTM6E=", + "owner": "hyprwm", + "repo": "hyprland-plugins", + "rev": "5ec0140d4aeca42b8a33e7f335f979e376d1b549", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-plugins", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1691753796, + "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1711671891, + "narHash": "sha256-C/Wwsy/RLxHP1axFFl+AnwJRWfd8gxDKKoa8nt8Qk3c=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "c1402612146ba06606ebf64963a02bc1efe11e74", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1712439257, + "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs-unstable": { @@ -51,12 +180,96 @@ "type": "indirect" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1712588820, + "narHash": "sha256-y31s5idk3jMJMAVE4Ud9AdI7HT3CgTAeMTJ0StqKN7Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d272ca50d1f7424fbfcd1e6f1c9e01d92f6da167", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-23.11", + "type": "indirect" + } + }, "root": { "inputs": { "home-manager": "home-manager", - "nixpkgs": "nixpkgs", + "hyprland": "hyprland", + "hyprland-plugins": "hyprland-plugins", + "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable" } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "wlroots": { + "flake": false, + "locked": { + "host": "gitlab.freedesktop.org", + "lastModified": 1709983277, + "narHash": "sha256-wXWIJLd4F2JZeMaihWVDW/yYXCLEC8OpeNJZg9a9ly8=", + "owner": "wlroots", + "repo": "wlroots", + "rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", + "type": "gitlab" + }, + "original": { + "host": "gitlab.freedesktop.org", + "owner": "wlroots", + "repo": "wlroots", + "rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", + "type": "gitlab" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1709299639, + "narHash": "sha256-jYqJM5khksLIbqSxCLUUcqEgI+O2LdlSlcMEBs39CAU=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "2d2fb547178ec025da643db57d40a971507b82fe", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index c19742a..7f872ff 100644 --- a/flake.nix +++ b/flake.nix @@ -4,11 +4,23 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-23.11"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; - home-manager.url = "github:nix-community/home-manager/release-23.11"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager = { + url = "github:nix-community/home-manager/release-23.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hyprland = { + url = "github:hyprwm/Hyprland"; + # inputs.nixpkgs.follows = "nixpkgs"; + }; + hyprland-plugins = { + url = "github:hyprwm/hyprland-plugins"; + inputs.hyprland.follows = "hyprland"; + }; }; - outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... }: + outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... }@inputs: + # outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, hyprland, ... }@inputs: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; @@ -50,24 +62,24 @@ rice = { transparency = "0.9"; color = rec { - background = "000000"; # #000000 - foreground = "dddddd"; # #dddddd - black = "282B35"; # #282B35 - bright-black = "686A71"; # #686A71 - blue = "9d00ff"; # #9d00ff - bright-blue = "c76eff"; # #c76eff - cyan = "00ddff"; # #00ddff - bright-cyan = "33f9ff"; # #33f9ff - green = "0048ff"; # #0048ff - bright-green = "1166ff"; # #1166ff - magenta = "B21889"; # #B21889 - bright-magenta = "ff75f6"; # #ff75f6 - red = "ff0044"; # #ff0044 - bright-red = "ff4576"; # #ff4576 - white = "939599"; # #939599 - bright-white = "ffffff"; # #ffffff - yellow = "ff4000"; # #ff4000 - bright-yellow = "ff8454"; # #ff8454 + background = "000000"; # #000000 + foreground = "dddddd"; # #dddddd + black = "282B35"; # #282B35 + bright-black = "686A71"; # #686A71 + blue = "9d00ff"; # #9d00ff + bright-blue = "c76eff"; # #c76eff + cyan = "00ddff"; # #00ddff + bright-cyan = "33f9ff"; # #33f9ff + green = "0048ff"; # #0048ff + bright-green = "1166ff"; # #1166ff + magenta = "B21889"; # #B21889 + bright-magenta = "ff75f6"; # #ff75f6 + red = "ff0044"; # #ff0044 + bright-red = "ff4576"; # #ff4576 + white = "939599"; # #939599 + bright-white = "ffffff"; # #ffffff + yellow = "ff4000"; # #ff4000 + bright-yellow = "ff8454"; # #ff8454 border = red; }; font = { @@ -84,40 +96,28 @@ in { nixosConfigurations = { - NxXPS = - let - host = "NxXPS"; - in - nixpkgs.lib.nixosSystem { - inherit system; - modules = [ - ./configuration.nix - ]; - specialArgs = { inherit user host pkgs-unstable allowed secrets rice nvidia; }; - }; - NxNORTH = - let - host = "NxNORTH"; - in - nixpkgs.lib.nixosSystem { - inherit system; - modules = [ - ./configuration.nix - ]; - specialArgs = { inherit user host pkgs-unstable allowed secrets rice nvidia; }; - }; + NxXPS = let host = "NxXPS"; in nixpkgs.lib.nixosSystem { + inherit system; + modules = [ ./configuration.nix ]; + specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; + }; + NxNORTH = let host = "NxNORTH"; in nixpkgs.lib.nixosSystem { + inherit system; + modules = [ ./configuration.nix ]; + specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; + }; }; homeConfigurations = { - NxXPS = home-manager.lib.homeManagerConfiguration { + NxXPS = let host = "NxXPS"; in home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = [ ./home.nix ]; - extraSpecialArgs = let host = "NxXPS"; in { inherit system user host allowed secrets pkgs-unstable rice nvidia; }; + extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; }; - NxNORTH = home-manager.lib.homeManagerConfiguration { + NxNORTH = let host = "NxNORTH"; in home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = [ ./home.nix ]; - extraSpecialArgs = let host = "NxNORTH"; in { inherit system user host allowed secrets pkgs-unstable rice nvidia; }; + extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; }; }; }; diff --git a/home-modules/hyprland/hyprland.nix b/home-modules/hyprland/hyprland.nix index 87c176b..cd699d6 100644 --- a/home-modules/hyprland/hyprland.nix +++ b/home-modules/hyprland/hyprland.nix @@ -1,4 +1,4 @@ -{ config, pkgs, pkgs-unstable, host, nvidia, rice, lib, ... }: +{ config, pkgs, pkgs-unstable, inputs, host, nvidia, rice, lib, ... }: let animation-speed = "2"; transparency = rice.transparency; @@ -90,13 +90,14 @@ in wayland.windowManager.hyprland = { enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; xwayland.enable = true; systemd.enable = true; - # plugins = []; + plugins = let plugins = inputs.hyprland-plugins.packages.${pkgs.system}; in with plugins; [ + hyprexpo + ]; settings = { - # source = /home/nx2/.config/hypr/hyprland-nosync.conf; - monitor = if host == "NxXPS" then [ "${monitors.xps.main.name}, ${monitors.xps.main.resolution}, ${monitors.xps.main.position}, ${monitors.xps.main.scale}" @@ -112,10 +113,10 @@ in d1 = if host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name; d2 = if host == "NxXPS" then monitors.xps.second.name else monitors.north.left.name; d3 = if host == "NxXPS" then monitors.xps.main.name else monitors.north.right.name; - compact = ",gapsin:0,gapsout:0,rounding:0,bordersize:0"; + compact = ",gapsin:0, gapsout:0, rounding:0, bordersize:0"; in [ - "${d1}, 11" + "${d1}, 11, default:true" "${d1}, 12" "${d1}, 13" "${d1}, 14" @@ -124,9 +125,9 @@ in "${d1}, 17" "${d1}, 18" "${d1}, 19" - "${d1}, 10${compact}" - "${d1}, 100${compact}" - "${d2}, 21${compact}" + "${d1}, 10 ${compact}" + "${d1}, 100 ${compact}" + "${d2}, 21 ${compact}" "${d2}, 22" "${d2}, 23" "${d2}, 24" @@ -136,7 +137,7 @@ in "${d2}, 28" "${d2}, 29" "${d2}, 20" - "${d3}, 31" + "${d3}, 31, default:true" "${d3}, 32" "${d3}, 33" "${d3}, 34" @@ -145,12 +146,12 @@ in "${d3}, 37" "${d3}, 38" "${d3}, 39" - "${d3}, 30" + "${d3}, 30 ${compact}" ]; - "device:logitech-wireless-mouse-mx-master-1" = { - sensitivity = -0.2; - }; + # "device:logitech-wireless-mouse-mx-master-1" = { + # sensitivity = -0.2; + # }; env = if nvidia.enable == true then [ @@ -216,11 +217,11 @@ in # bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o # bezier = "myBezier, 0.83, 0, 0.17, 1"; # io bezier = "myBezier, 0.33, 1, 0.68, 1"; - animation = [ + animation = let direction = if host == "NxXPS" then "slide" else "slidevert"; in [ "windows, 1, ${animation-speed}, myBezier, slide" "border, 1, ${animation-speed}, myBezier" "fade, 1, ${animation-speed}, myBezier" - "workspaces, 1, ${animation-speed}, myBezier, slide" + "workspaces, 1, ${animation-speed}, myBezier, ${direction}" ]; }; @@ -382,6 +383,7 @@ in ## ROW 2: #bind = SUPER, TAB, hycov:toggleoverview + "SUPER, TAB, hyprexpo:expo, toggle" "ALT, TAB, focuscurrentorlast" "SUPER, Q, killactive" "SUPER, W, exec, waybar_mode set '󰈹 '" @@ -407,7 +409,6 @@ in "SUPER, A, execr, waybar_mode set ' 󰹑 '" "SUPER, A, submap, scrL" "SUPER, S, exec, spotify" - # "SUPER, D, exec, discord " "SUPER, D, exec, vesktop" "SUPER, F, fullscreen" "SUPER, G, exec, xrandr --verbose --output 'DP-1' --primary && lutris" @@ -495,6 +496,21 @@ in bindl = [ # ",switch:on:Lid Switch, exec, hyprlock &" ]; + + # plugin = { + # hyprexpo = { + # columns = 1; + # gap_size = gap-size; + # bg_col = "rgb(ff1111)"; + # workspace_method = "center current"; # [center/first] [workspace] e.g. first 1 or center m+1 + + # enable_gesture = true; # laptop touchpad, 4 fingers + # gesture_distance = "300"; # how far is the "max" + # gesture_positive = true; # positive = swipe down. Negative = swipe up. + # }; + # }; + + }; @@ -787,6 +803,22 @@ in bind = , Escape, execr, waybar_mode unset bind = , Escape, submap, reset submap = reset + + + + + plugin { + hyprexpo { + columns = 3 + gap_size = ${builtins.toString gap-size} + bg_col = rgb(${rice.color.background}) + workspace_method = [10] # [center/first] [workspace] e.g. first 1 or center m+1 + + enable_gesture = true # laptop touchpad, 4 fingers + gesture_distance = 300 # how far is the "max" + gesture_positive = true # positive = swipe down. Negative = swipe up. + } + } ''; }; diff --git a/home.nix b/home.nix index da2eb5c..e5e682e 100644 --- a/home.nix +++ b/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, lib, system, host, user, allowed, secrets, ... }: +{ config, pkgs, lib, system, inputs, host, user, allowed, secrets, ... }: { imports = [ ./home-modules/vscode.nix @@ -61,6 +61,7 @@ element sssnake pipes nodejs + gnumake speedtest-go