summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--disko.nix41
-rw-r--r--flake.lock323
-rw-r--r--flake.nix46
-rw-r--r--home-manager/home.nix13
-rw-r--r--home-manager/modules/alacritty.nix19
-rw-r--r--home-manager/modules/bundle.nix12
-rw-r--r--home-manager/modules/cursor.nix14
-rw-r--r--home-manager/modules/git.nix7
-rw-r--r--home-manager/modules/htop.nix8
-rw-r--r--home-manager/modules/qt.nix16
-rw-r--r--home-manager/modules/wms/hyprland.nix210
-rw-r--r--home-manager/modules/wms/waybar.nix345
-rw-r--r--home-manager/zsh.nix37
-rw-r--r--nixos/configuration.nix21
-rw-r--r--nixos/hardware-configuration.nix37
-rw-r--r--nixos/modules/bootloader.nix6
-rw-r--r--nixos/modules/bundle.nix15
-rw-r--r--nixos/modules/env.nix8
-rw-r--r--nixos/modules/hyprland.nix3
-rw-r--r--nixos/modules/nixvim/autocmds.nix10
-rw-r--r--nixos/modules/nixvim/keymaps.nix15
-rw-r--r--nixos/modules/nixvim/nixvim.nix16
-rw-r--r--nixos/modules/nixvim/opts.nix64
-rw-r--r--nixos/modules/nixvim/plugins/barbar.nix12
-rw-r--r--nixos/modules/nixvim/plugins/cmp.nix32
-rw-r--r--nixos/modules/nixvim/plugins/comment.nix10
-rw-r--r--nixos/modules/nixvim/plugins/floaterm.nix12
-rw-r--r--nixos/modules/nixvim/plugins/lsp.nix46
-rw-r--r--nixos/modules/nixvim/plugins/lualine.nix47
-rw-r--r--nixos/modules/nixvim/plugins/mini.nix20
-rw-r--r--nixos/modules/nixvim/plugins/neotree.nix7
-rw-r--r--nixos/modules/nixvim/plugins/nix.nix3
-rw-r--r--nixos/modules/nixvim/plugins/plugins-bundle.nix15
-rw-r--r--nixos/modules/nixvim/plugins/telescope.nix29
-rw-r--r--nixos/modules/nixvim/plugins/transparent.nix3
-rw-r--r--nixos/modules/nm.nix3
-rw-r--r--nixos/modules/sound.nix18
-rw-r--r--nixos/modules/trim.nix3
-rw-r--r--nixos/modules/user.nix17
-rw-r--r--nixos/modules/virtmanager.nix8
-rw-r--r--nixos/modules/xserver.nix26
-rw-r--r--nixos/modules/zram.nix8
-rw-r--r--nixos/packages.nix116
43 files changed, 1721 insertions, 0 deletions
diff --git a/disko.nix b/disko.nix
new file mode 100644
index 0000000..6046c50
--- /dev/null
+++ b/disko.nix
@@ -0,0 +1,41 @@
+{
+ disko.devices = {
+ disk = {
+ my-disk = {
+ device = "/dev/sdb";
+ type = "disk";
+ content = {
+ type = "gpt";
+ partitions = {
+ ESP = {
+ type = "EF00";
+ size = "256M";
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ };
+ };
+
+ swap = {
+ size = "8G";
+ content = {
+ type = "swap";
+ resumeDevice = true;
+ };
+ };
+
+ root = {
+ size = "100%";
+ content = {
+ type = "filesystem";
+ format = "ext4";
+ mountpoint = "/";
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..8d18527
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,323 @@
+{
+ "nodes": {
+ "devshell": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": [
+ "nixvim",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1711099426,
+ "narHash": "sha256-HzpgM/wc3aqpnHJJ2oDqPBkNsqWbW0WfWUO8lKu8nGk=",
+ "owner": "numtide",
+ "repo": "devshell",
+ "rev": "2d45b54ca4a183f2fdcf4b19c895b64fbf620ee8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "devshell",
+ "type": "github"
+ }
+ },
+ "flake-compat": {
+ "locked": {
+ "lastModified": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "revCount": 57,
+ "type": "tarball",
+ "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
+ },
+ "original": {
+ "type": "tarball",
+ "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
+ }
+ },
+ "flake-compat_2": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": [
+ "nixvim",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1712014858,
+ "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1701680307,
+ "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "inputs": {
+ "systems": "systems_2"
+ },
+ "locked": {
+ "lastModified": 1710146030,
+ "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "gitignore": {
+ "inputs": {
+ "nixpkgs": [
+ "nixvim",
+ "pre-commit-hooks",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1709087332,
+ "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "type": "github"
+ }
+ },
+ "home-manager": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1713294767,
+ "narHash": "sha256-LmaabaQZdx52MPGKPRt9Opoc9Gd9RbwvCdysUUYQoXI=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "fa8c16e2452bf092ac76f09ee1fb1e9f7d0796e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "type": "github"
+ }
+ },
+ "home-manager_2": {
+ "inputs": {
+ "nixpkgs": [
+ "nixvim",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1712989663,
+ "narHash": "sha256-r2X/DIAyKOLiHoncjcxUk1TENWDTTaigRBaY53Cts/w=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "40ab43ae98cb3e6f07eaeaa3f3ed56d589da21b0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "type": "github"
+ }
+ },
+ "nix-darwin": {
+ "inputs": {
+ "nixpkgs": [
+ "nixvim",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1711763326,
+ "narHash": "sha256-sXcesZWKXFlEQ8oyGHnfk4xc9f2Ip0X/+YZOq3sKviI=",
+ "owner": "lnl7",
+ "repo": "nix-darwin",
+ "rev": "36524adc31566655f2f4d55ad6b875fb5c1a4083",
+ "type": "github"
+ },
+ "original": {
+ "owner": "lnl7",
+ "repo": "nix-darwin",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1713248628,
+ "narHash": "sha256-NLznXB5AOnniUtZsyy/aPWOk8ussTuePp2acb9U+ISA=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "5672bc9dbf9d88246ddab5ac454e82318d094bb8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-stable": {
+ "locked": {
+ "lastModified": 1713145326,
+ "narHash": "sha256-m7+IWM6mkWOg22EC5kRUFCycXsXLSU7hWmHdmBfmC3s=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "53a2c32bc66f5ae41a28d7a9a49d321172af621e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-23.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixvim": {
+ "inputs": {
+ "devshell": "devshell",
+ "flake-compat": "flake-compat",
+ "flake-parts": "flake-parts",
+ "home-manager": "home-manager_2",
+ "nix-darwin": "nix-darwin",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "pre-commit-hooks": "pre-commit-hooks"
+ },
+ "locked": {
+ "lastModified": 1713294906,
+ "narHash": "sha256-xJJZdCBzVFpVppaYyUK4lTTNOnbAxrjhodoJL3Oi91E=",
+ "owner": "nix-community",
+ "repo": "nixvim",
+ "rev": "514a51877df9fe41ffc38c5237e3c4e5327e7607",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixvim",
+ "type": "github"
+ }
+ },
+ "pre-commit-hooks": {
+ "inputs": {
+ "flake-compat": "flake-compat_2",
+ "flake-utils": "flake-utils_2",
+ "gitignore": "gitignore",
+ "nixpkgs": [
+ "nixvim",
+ "nixpkgs"
+ ],
+ "nixpkgs-stable": [
+ "nixvim",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1712897695,
+ "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=",
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "home-manager": "home-manager",
+ "nixpkgs": "nixpkgs",
+ "nixpkgs-stable": "nixpkgs-stable",
+ "nixvim": "nixvim"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "systems_2": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..70c1df0
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,46 @@
+{
+ description = "My system configuration";
+
+ inputs = {
+
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";
+
+ home-manager = {
+ url = "github:nix-community/home-manager";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ nixvim = {
+ url = "github:nix-community/nixvim";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ outputs = { self, nixpkgs, nixpkgs-stable, home-manager, ... }@inputs:
+
+ let
+ system = "x86_64-linux";
+ in {
+
+ # nixos - system hostname
+ nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
+ specialArgs = {
+ pkgs-stable = import nixpkgs-stable {
+ inherit system;
+ config.allowUnfree = true;
+ };
+ inherit inputs system;
+ };
+ modules = [
+ ./nixos/configuration.nix
+ inputs.nixvim.nixosModules.nixvim
+ ];
+ };
+
+ homeConfigurations.amper = home-manager.lib.homeManagerConfiguration {
+ pkgs = nixpkgs.legacyPackages.${system};
+ modules = [ ./home-manager/home.nix ];
+ };
+ };
+}
diff --git a/home-manager/home.nix b/home-manager/home.nix
new file mode 100644
index 0000000..e2ea67f
--- /dev/null
+++ b/home-manager/home.nix
@@ -0,0 +1,13 @@
+{
+
+ imports = [
+ ./zsh.nix
+ ./modules/bundle.nix
+ ];
+
+ home = {
+ username = "amper";
+ homeDirectory = "/home/amper";
+ stateVersion = "23.11";
+ };
+}
diff --git a/home-manager/modules/alacritty.nix b/home-manager/modules/alacritty.nix
new file mode 100644
index 0000000..4b986c6
--- /dev/null
+++ b/home-manager/modules/alacritty.nix
@@ -0,0 +1,19 @@
+{
+ programs.alacritty = {
+ enable = true;
+ settings = {
+ window.opacity = 0.95;
+
+ font = {
+ size = 13.0;
+ # draw_bold_text_with_bright_colors = true;
+ normal = {
+ family = "JetBrains Mono";
+ style = "Bold";
+ };
+ };
+
+ colors.primary.background = "#1d2021";
+ };
+ };
+}
diff --git a/home-manager/modules/bundle.nix b/home-manager/modules/bundle.nix
new file mode 100644
index 0000000..3f58742
--- /dev/null
+++ b/home-manager/modules/bundle.nix
@@ -0,0 +1,12 @@
+{
+ imports = [
+ ./cursor.nix
+ ./git.nix
+ ./htop.nix
+ ./alacritty.nix
+ ./qt.nix
+
+ ./wms/hyprland.nix
+ ./wms/waybar.nix
+ ];
+}
diff --git a/home-manager/modules/cursor.nix b/home-manager/modules/cursor.nix
new file mode 100644
index 0000000..85bea31
--- /dev/null
+++ b/home-manager/modules/cursor.nix
@@ -0,0 +1,14 @@
+{ pkgs, ... }: {
+ home = {
+ pointerCursor = {
+ package = pkgs.vanilla-dmz;
+ name = "Vanilla-DMZ";
+ size = 36;
+ gtk.enable = true;
+ x11 = {
+ enable = true;
+ defaultCursor = true;
+ };
+ };
+ };
+}
diff --git a/home-manager/modules/git.nix b/home-manager/modules/git.nix
new file mode 100644
index 0000000..c3dbae7
--- /dev/null
+++ b/home-manager/modules/git.nix
@@ -0,0 +1,7 @@
+{
+ programs.git = {
+ enable = true;
+ userName = "Andrey0189";
+ userEmail = "varnavsky06@gmail.com";
+ };
+}
diff --git a/home-manager/modules/htop.nix b/home-manager/modules/htop.nix
new file mode 100644
index 0000000..a781214
--- /dev/null
+++ b/home-manager/modules/htop.nix
@@ -0,0 +1,8 @@
+{
+ programs.htop = {
+ enable = true;
+ settings = {
+ tree_view = 1;
+ };
+ };
+}
diff --git a/home-manager/modules/qt.nix b/home-manager/modules/qt.nix
new file mode 100644
index 0000000..795b2d3
--- /dev/null
+++ b/home-manager/modules/qt.nix
@@ -0,0 +1,16 @@
+{
+ qt = {
+ enable = true;
+ platformTheme = "qtct";
+ style.name = "kvantum";
+ };
+
+ # xdg.configFile = {
+ # "Kvantum/kvantum.kvconfig".text = ''
+ # [General]
+ # theme=GraphiteNordDark
+ # '';
+ #
+ # "Kvantum/GraphiteNord".source = "${pkgs.graphite-kde-theme}/share/Kvantum/GraphiteNord";
+ # };
+}
diff --git a/home-manager/modules/wms/hyprland.nix b/home-manager/modules/wms/hyprland.nix
new file mode 100644
index 0000000..9f52da2
--- /dev/null
+++ b/home-manager/modules/wms/hyprland.nix
@@ -0,0 +1,210 @@
+{
+ wayland.windowManager.hyprland = {
+ enable = true;
+ xwayland.enable = true;
+
+ settings = {
+ "$mainMod" = "SUPER";
+
+ monitor = ",preferred,auto,1";
+
+ env = [
+ "XDG_CURRENT_DESKTOP,Hyprland"
+ "XDG_SESSION_TYPE,wayland"
+ "XDG_SESSION_DESKTOP,Hyprland"
+ "XCURSOR_SIZE,36"
+ "QT_QPA_PLATFORM,wayland"
+ "XDG_SCREENSHOTS_DIR,~/screens"
+ ];
+
+ debug = {
+ disable_logs = false;
+ enable_stdout_logs = true;
+ };
+
+ input = {
+ kb_layout = "us,ru";
+ kb_variant = "lang";
+ kb_options = "grp:caps_toggle";
+
+ follow_mouse = 1;
+
+ touchpad = {
+ natural_scroll = false;
+ };
+
+ sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
+ };
+
+ general = {
+ gaps_in = 5;
+ gaps_out = 20;
+ border_size = 3;
+ "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
+ "col.inactive_border" = "rgba(595959aa)";
+
+ layout = "dwindle";
+
+ no_cursor_warps = false;
+ };
+
+ decoration = {
+ rounding = 10;
+
+ blur = {
+ enabled = true;
+ size = 16;
+ passes = 2;
+ new_optimizations = true;
+ };
+
+ drop_shadow = true;
+ shadow_range = 4;
+ shadow_render_power = 3;
+ "col.shadow" = "rgba(1a1a1aee)";
+ };
+
+ animations = {
+ enabled = true;
+
+ bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
+ # bezier = "myBezier, 0.33, 0.82, 0.9, -0.08";
+
+ animation = [
+ "windows, 1, 7, myBezier"
+ "windowsOut, 1, 7, default, popin 80%"
+ "border, 1, 10, default"
+ "borderangle, 1, 8, default"
+ "fade, 1, 7, default"
+ "workspaces, 1, 6, default"
+ ];
+ };
+
+ dwindle = {
+ pseudotile = true; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+ preserve_split = true; # you probably want this
+ };
+
+ master = {
+ new_is_master = true;
+ };
+
+ gestures = {
+ workspace_swipe = true;
+ workspace_swipe_fingers = 3;
+ workspace_swipe_invert = false;
+ workspace_swipe_distance = 200;
+ };
+
+ misc = {
+ animate_manual_resizes = true;
+ animate_mouse_windowdragging = true;
+ enable_swallow = true;
+ render_ahead_of_time = false;
+ disable_hyprland_logo = true;
+ };
+
+ windowrule = [
+ "float, ^(imv)$"
+ "float, ^(mpv)$"
+ ];
+
+ exec-once = [
+ "swww init"
+ "swww img ~/Downloads/nixos-chan.png"
+ "waybar"
+ "wl-paste --type text --watch cliphist store"
+ "wl-paste --type image --watch cliphist store"
+ ];
+
+ bind = [
+ "$mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy"
+
+ "$mainMod, Return, exec, alacritty"
+ "$mainMod, Q, killactive,"
+ "$mainMod, M, exit,"
+ "$mainMod, E, exec, dolphin"
+ "$mainMod, F, togglefloating,"
+ "$mainMod, D, exec, wofi --show drun"
+ "$mainMod, P, pseudo, # dwindle"
+ "$mainMod, J, togglesplit, # dwindle"
+
+ # Move focus with mainMod + arrow keys
+ "$mainMod, left, movefocus, l"
+ "$mainMod, right, movefocus, r"
+ "$mainMod, up, movefocus, u"
+ "$mainMod, down, movefocus, d"
+
+ # Moving windows
+ "$mainMod SHIFT, left, swapwindow, l"
+ "$mainMod SHIFT, right, swapwindow, r"
+ "$mainMod SHIFT, up, swapwindow, u"
+ "$mainMod SHIFT, down, swapwindow, d"
+
+ # Window resizing X Y
+ "$mainMod CTRL, left, resizeactive, -60 0"
+ "$mainMod CTRL, right, resizeactive, 60 0"
+ "$mainMod CTRL, up, resizeactive, 0 -60"
+ "$mainMod CTRL, down, resizeactive, 0 60"
+
+ # Switch workspaces with mainMod + [0-9]
+ "$mainMod, 1, workspace, 1"
+ "$mainMod, 2, workspace, 2"
+ "$mainMod, 3, workspace, 3"
+ "$mainMod, 4, workspace, 4"
+ "$mainMod, 5, workspace, 5"
+ "$mainMod, 6, workspace, 6"
+ "$mainMod, 7, workspace, 7"
+ "$mainMod, 8, workspace, 8"
+ "$mainMod, 9, workspace, 9"
+ "$mainMod, 0, workspace, 10"
+
+ # Move active window to a workspace with mainMod + SHIFT + [0-9]
+ "$mainMod SHIFT, 1, movetoworkspacesilent, 1"
+ "$mainMod SHIFT, 2, movetoworkspacesilent, 2"
+ "$mainMod SHIFT, 3, movetoworkspacesilent, 3"
+ "$mainMod SHIFT, 4, movetoworkspacesilent, 4"
+ "$mainMod SHIFT, 5, movetoworkspacesilent, 5"
+ "$mainMod SHIFT, 6, movetoworkspacesilent, 6"
+ "$mainMod SHIFT, 7, movetoworkspacesilent, 7"
+ "$mainMod SHIFT, 8, movetoworkspacesilent, 8"
+ "$mainMod SHIFT, 9, movetoworkspacesilent, 9"
+ "$mainMod SHIFT, 0, movetoworkspacesilent, 10"
+
+ # Scroll through existing workspaces with mainMod + scroll
+ "$mainMod, mouse_down, workspace, e+1"
+ "$mainMod, mouse_up, workspace, e-1"
+
+ # Keyboard backlight
+ "$mainMod, F3, exec, brightnessctl -d *::kbd_backlight set +33%"
+ "$mainMod, F2, exec, brightnessctl -d *::kbd_backlight set 33%-"
+
+ # Volume and Media Control
+ ", XF86AudioRaiseVolume, exec, pamixer -i 5 "
+ ", XF86AudioLowerVolume, exec, pamixer -d 5 "
+ ", XF86AudioMute, exec, pamixer -t"
+ ", XF86AudioMicMute, exec, pamixer --default-source -m"
+
+ # Configuration files
+ ''$mainMod SHIFT, N, exec, alacritty -e sh -c "rb"''
+ ''$mainMod SHIFT, C, exec, alacritty -e sh -c "conf"''
+ ''$mainMod SHIFT, H, exec, alacritty -e sh -c "nvim ~/nix/home-manager/modules/wms/hyprland.nix"''
+ ''$mainMod SHIFT, W, exec, alacritty -e sh -c "nvim ~/nix/home-manager/modules/wms/waybar.nix''
+ '', Print, exec, grim -g "$(slurp)" - | swappy -f -''
+
+ # Waybar
+ "$mainMod, B, exec, pkill -SIGUSR1 waybar"
+ "$mainMod, W, exec, pkill -SIGUSR2 waybar"
+
+ # Disable all effects
+ "$mainMod Shift, G, exec, ~/.config/hypr/gamemode.sh "
+ ];
+
+ # Move/resize windows with mainMod + LMB/RMB and dragging
+ bindm = [
+ "$mainMod, mouse:272, movewindow"
+ "$mainMod, mouse:273, resizewindow"
+ ];
+ };
+ };
+}
diff --git a/home-manager/modules/wms/waybar.nix b/home-manager/modules/wms/waybar.nix
new file mode 100644
index 0000000..34e8e43
--- /dev/null
+++ b/home-manager/modules/wms/waybar.nix
@@ -0,0 +1,345 @@
+{
+ programs.waybar = {
+ enable = true;
+ settings = {
+ mainBar = {
+ layer = "top";
+ position = "top";
+ margin = "9 13 -10 18";
+
+ modules-left = ["hyprland/workspaces" "hyprland/language" "keyboard-state" "hyprland/submap"];
+ modules-center = ["clock" "custom/weather"];
+ modules-right = ["pulseaudio" "custom/mem" "cpu" "backlight" "battery" "tray"];
+
+ "hyprland/workspaces" = {
+ disable-scroll = true;
+ };
+
+ "hyprland/language" = {
+ format-en = "US";
+ format-ru = "RU";
+ min-length = 5;
+ tooltip = false;
+ };
+
+ "keyboard-state" = {
+ #numlock = true;
+ capslock = true;
+ format = "{icon} ";
+ format-icons = {
+ locked = " ";
+ unlocked = "";
+ };
+ };
+
+ "clock" = {
+ # timezone = "America/New_York";
+ tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
+ format = "{:%a; %d %b, %I:%M %p}";
+ };
+
+ "custom/weather" = {
+ format = "{}";
+ tooltip = true;
+ interval = 1800;
+ exec = "$HOME/.config/waybar/scripts/wttr.py";
+ return-type = "json";
+ };
+
+ "pulseaudio" = {
+ # scroll-step = 1; # %, can be a float
+ reverse-scrolling = 1;
+ format = "{volume}% {icon} {format_source}";
+ format-bluetooth = "{volume}% {icon} {format_source}";
+ format-bluetooth-muted = " {icon} {format_source}";
+ format-muted = " {format_source}";
+ format-source = "{volume}% ";
+ format-source-muted = "";
+ format-icons = {
+ headphone = "";
+ hands-free = "";
+ headset = "";