diff --git a/flake.lock b/flake.lock index c952944..59742ec 100644 --- a/flake.lock +++ b/flake.lock @@ -362,11 +362,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1684543135, - "narHash": "sha256-MQCw6PDfUO5s9z6i2QvPZ7ePXsycQFBjISUsT+leThY=", + "lastModified": 1685954414, + "narHash": "sha256-m8WugdsXg7MOPQ+uiDgNghp0yI6hrp40KEzQ2RpMxCQ=", "owner": "helix-editor", "repo": "helix", - "rev": "d3cca0f3571fd30f4d7067a82c02753686297a67", + "rev": "2022e6175ba72a772b6b6fda4479a8e554e0de02", "type": "github" }, "original": { @@ -383,11 +383,11 @@ ] }, "locked": { - "lastModified": 1684596126, - "narHash": "sha256-4RZZmygeEXpuBqEXGs38ZAcWjWKGwu13Iqbxub6wuJk=", + "lastModified": 1685885003, + "narHash": "sha256-+OB0EvZBfGvnlTGg6mtyUCqkMnUp9DkmRUU4d7BZBVE=", "owner": "nix-community", "repo": "home-manager", - "rev": "27ef11f0218d9018ebb2948d40133df2b1de622d", + "rev": "607d8fad96436b134424b9935166a7cd0884003e", "type": "github" }, "original": { @@ -396,6 +396,24 @@ "type": "github" } }, + "hypr-contrib": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1684479483, + "narHash": "sha256-NCkOkgR7PtkAQmYgeYd6vOzkulQjxlf+vWGUmrQu4uw=", + "owner": "hyprwm", + "repo": "contrib", + "rev": "805bedf51a2f75a2279b6fc75b3066ff21f235ee", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "contrib", + "type": "github" + } + }, "mk-naked-shell": { "flake": false, "locked": { @@ -455,7 +473,7 @@ "flake-utils": "flake-utils_2", "format-all": "format-all", "nix-straight": "nix-straight", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nose": "nose", "ob-racket": "ob-racket", "org": "org", @@ -484,7 +502,7 @@ }, "nix-software-center": { "inputs": { - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "utils": "utils" }, "locked": { @@ -519,11 +537,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1684169666, - "narHash": "sha256-N5jrykeSxLVgvm3Dd3hZ38/XwM/jU+dltqlXgrGlYxk=", + "lastModified": 1684899633, + "narHash": "sha256-NtwerXX8UFsoNy6k+DukJMriWtEjQtMU/Urbff2O2Dg=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "71ce85372a614d418d5e303dd5702a79d1545c04", + "rev": "4cc688ee711159b9bcb5a367be44007934e1a49d", "type": "github" }, "original": { @@ -568,11 +586,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1684599006, - "narHash": "sha256-Z5KGSkQpi2TdklVRyI6JZCWhHhXCRTSPnwLtr48cTYU=", + "lastModified": 1685964393, + "narHash": "sha256-x7JI25teVRewSsw+IpwOeIVcR3k92mrTc+LsC/Yi/TE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d0f31c3daf21de8d670e6b7854e23488327cabc3", + "rev": "a6c64b2c29b11b3a9206918a46a37a1c53cdf1a0", "type": "github" }, "original": { @@ -598,6 +616,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1658161305, + "narHash": "sha256-X/nhnMCa1Wx4YapsspyAs6QYz6T/85FofrI6NpdPDHg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e4d49de45a3b5dbcb881656b4e3986e666141ea9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1682566018, "narHash": "sha256-HPzPRFiy2o/7k7mtnwfM1E6NVZHiFbPdmYCMoIpkHO4=", @@ -612,7 +646,7 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1680213900, "narHash": "sha256-cIDr5WZIj3EkKyCgj/6j3HBH4Jj1W296z7HTcWj1aMA=", @@ -628,13 +662,13 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { - "lastModified": 1684570954, - "narHash": "sha256-FX5y4Sm87RWwfu9PI71XFvuRpZLowh00FQpIJ1WfXqE=", + "lastModified": 1685931219, + "narHash": "sha256-8EWeOZ6LKQfgAjB/USffUSELPRjw88A+xTcXnOUvO5M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3005f20ce0aaa58169cdee57c8aa12e5f1b6e1b3", + "rev": "7409480d5c8584a1a83c422530419efe4afb0d19", "type": "github" }, "original": { @@ -800,10 +834,11 @@ "inputs": { "helix": "helix", "home-manager": "home-manager", + "hypr-contrib": "hypr-contrib", "nix-doom-emacs": "nix-doom-emacs", "nix-software-center": "nix-software-center", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "nixpkgs-master": "nixpkgs-master" } }, diff --git a/flake.nix b/flake.nix index 0f8c21b..b29b444 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,8 @@ nixos-hardware.url = "github:NixOS/nixos-hardware"; nixpkgs-master.url = "github:NixOS/nixpkgs/master"; + hypr-contrib.url = "github:hyprwm/contrib"; + # hyprland.url = "github:hyprwm/Hyprland"; }; outputs = { self, nixpkgs, home-manager, ... }@inputs: { @@ -29,6 +31,10 @@ "nixos-config=/home/ultra/.nixdotfiles" ]; } + + # Hyprland + # inputs.hyprland.nixosModules.default + # { programs.hyprland.enable = true; } ]; }; ultrapi = nixpkgs.lib.nixosSystem { @@ -55,6 +61,9 @@ xdg.configFile."nix/inputs/nixpkgs".source = nixpkgs.outPath; home.sessionVariables.NIX_PATH = "nixpkgs=${args.config.xdg.configHome}/nix/inputs/nixpkgs$\{NIX_PATH:+:$NIX_PATH}"; }) + # Hyprland + # inputs.hyprland.homeManagerModules.default + # { wayland.windowManager.hyprland.enable = true; } ]; }; }; diff --git a/hosts/ultrapc/configuration.nix b/hosts/ultrapc/configuration.nix index 33f6843..dec0d5a 100644 --- a/hosts/ultrapc/configuration.nix +++ b/hosts/ultrapc/configuration.nix @@ -13,7 +13,12 @@ in { ./cachix.nix ]; - nix.settings.trusted-users = [ "root" "ultra" ]; + nix.settings = { + trusted-users = [ "root" "ultra" ]; + experimental-features = [ "nix-command" "flakes" ]; + substituters = [ "https://hyprland.cachix.org" ]; + trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; + }; boot = { kernelPackages = pkgs.linuxPackages_latest; # Use the latest kernel @@ -128,6 +133,7 @@ in { plymouth clang-tools nil + pkgconfig ]; variables = { NIX_AUTO_RUN = "!"; @@ -138,6 +144,9 @@ in { kdeconnect = { enable = true; }; + hyprland = { + enable = true; + }; }; # programs.nushell.enable = true; # users.defaultUserShell = pkgs.zsh; @@ -239,7 +248,6 @@ in { }; twingate.enable = false; }; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; # NVIDIA config diff --git a/users/ultra/configs/hyprland/hyprland.conf b/users/ultra/configs/hyprland/hyprland.conf new file mode 100644 index 0000000..3f81ab5 --- /dev/null +++ b/users/ultra/configs/hyprland/hyprland.conf @@ -0,0 +1,195 @@ + +######################################################################################## +AUTOGENERATED HYPR CONFIG. +PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, +OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. +######################################################################################## + + + +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +autogenerated = 0 # remove this line to remove the warning + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor = DP-1, 2560x1440@165, 1920x0, 1 +monitor = HDMI-A-2, 1920x1080@120, 0x360, 1 + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +# exec-once = waybar & hyprpaper & firefox +exec-once = dunst & polkit-kde-agent +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Some default env vars. +env = XCURSOR_SIZE,24 + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = ro + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 4 + gaps_out = 8 + border_size = 3 + col.active_border = rgba(33ffbbfe) rgba(0080ffee) 45deg + col.inactive_border = rgba(50a0a0aa) + + layout = dwindle +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + blur = yes + blur_size = 10 + blur_passes = 2 + blur_new_optimizations = on + + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + # bezier = myBezier, 0.79, 0.33, 0.14, 0.53 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_is_master = true +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = off +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more +device:epic-mouse-v1 { + sensitivity = -0.5 +} + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +windowrule = float,title:launcher + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER +$secondMod = ALT + +# Example binds, see https://wiki.hnyprland.org/Configuring/Binds/ for more +bind = $mainMod, Q, exec, konsole +bind = $mainMod, C, killactive, +bind = $secondMod, Q, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, dolphin +bind = $mainMod, V, togglefloating, +# bind = $mainMod, D, execr, [float], alacritty -T launcher --class launcher -e /home/ultra/.local/bin/fzf-launch +# bind = $mainMod, R, exec, fish -c 'eval (tofi-drun) & disown (jobs -p)' +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod + Shift, F, fullscreen +bind = $mainMod, F, togglefloating +bind = $mainMod, Return, exec, konsole +bind = , Print, exec, grimblast copy area +bind = $mainMod, Space, exec, tofi-drun +bind = $mainMod, S, exec, scratchpad +bind = $mainMod + Shift, S, exec, scratchpad -g + +# Resize windows with the keyboard +bind = $secondMod, R, submap, resize + +submap = resize + +binde = , H, resizeactive, -10 0 +binde = , J, resizeactive, 0 10 +binde = , K, resizeactive, 0 -10 +binde = , L, resizeactive, 10 0 + +bind = , escape, submap, reset + +submap = reset + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow diff --git a/users/ultra/home.nix b/users/ultra/home.nix index ab3d207..ab1ad82 100644 --- a/users/ultra/home.nix +++ b/users/ultra/home.nix @@ -11,8 +11,12 @@ let inherit (config.nixpkgs) config overlays; inherit (pkgs) system; }; + hypr-contrib = inputs.hypr-contrib.packages.${pkgs.system}; in { - imports = [ inputs.nix-doom-emacs.hmModule ]; + imports = [ + inputs.nix-doom-emacs.hmModule + # inputs.hyprland.homeManagerModules.default + ]; # Allow unfree packages nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfreePredicate = (pkg: true); @@ -95,9 +99,26 @@ in { man-pages ckan cool-retro-term - # helix + wofi + hyprpaper + alacritty + tofi + dunst + wl-clipboard + polkit-kde-agent + grim + hypr-contrib.grimblast + hypr-contrib.scratchpad + kitty + waybar + eww-wayland + notify-desktop + libnotify + xdg-desktop-portal-hyprland ]; }; + + # ${config.xdg.configFile}."hypr/hyprland.conf".source = ./configs/hyprland/hyprland.conf; programs = { home-manager.enable = true; doom-emacs = { @@ -165,5 +186,12 @@ in { }; }; }; + /* + hyprland = { + enable = true; + extraConfig = builtins.readFile ./configs/hyprland/hyprland.conf; + }; + */ }; -} + + }