diff --git a/flake.lock b/flake.lock index cba7fad..dc78884 100644 --- a/flake.lock +++ b/flake.lock @@ -204,7 +204,124 @@ "type": "github" } }, + "hycov": { + "inputs": { + "hyprland": [ + "hyprland" + ] + }, + "locked": { + "lastModified": 1704458811, + "narHash": "sha256-FLmj2fl3legxo8JeJciwU8WJFxUYIZ9pEYBZXi00a9Y=", + "owner": "DreamMaoMao", + "repo": "hycov", + "rev": "9420dee65f3e04d0cebf8d65ee5386711652d86b", + "type": "github" + }, + "original": { + "owner": "DreamMaoMao", + "repo": "hycov", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "nixpkgs": "nixpkgs", + "systems": "systems", + "wlroots": "wlroots", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1704475363, + "narHash": "sha256-isiBkAsjXIvb/6McVK42/iBbC4h+UL3JRkkLqTSPE48=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "7e033e48ace5406a9bc442f7d403f9ce3af193f3", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "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": "nixpkgs_2" + }, + "locked": { + "lastModified": 1704287638, + "narHash": "sha256-TuRXJGwtK440AXQNl5eiqmQqY4LZ/9+z/R7xC0ie3iA=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "6624f2bb66d4d27975766e81f77174adbe58ec97", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, "nixpkgs": { + "locked": { + "lastModified": 1704194953, + "narHash": "sha256-RtDKd8Mynhe5CFnVT8s0/0yqtWFMM9LmCzXv/YKxnq4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd645e8668ec6612439a9ee7e71f7eac4099d4f6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1702645756, + "narHash": "sha256-qKI6OR3TYJYQB3Q8mAZ+DG4o/BR9ptcv9UnRV2hzljc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "40c3c94c241286dd2243ea34d3aef8a488f9e4d0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1704194953, "narHash": "sha256-RtDKd8Mynhe5CFnVT8s0/0yqtWFMM9LmCzXv/YKxnq4=", @@ -219,7 +336,7 @@ "type": "indirect" } }, - "nixpkgs_2": { + "nixpkgs_4": { "locked": { "lastModified": 1700856099, "narHash": "sha256-RnEA7iJ36Ay9jI0WwP+/y4zjEhmeN6Cjs9VOFBH7eVQ=", @@ -238,7 +355,9 @@ "root": { "inputs": { "home-manager": "home-manager", - "nixpkgs": "nixpkgs", + "hycov": "hycov", + "hyprland": "hyprland", + "nixpkgs": "nixpkgs_3", "stylix": "stylix" } }, @@ -254,7 +373,7 @@ "base16-vim": "base16-vim", "flake-compat": "flake-compat", "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1704308480, @@ -269,6 +388,70 @@ "repo": "stylix", "type": "github" } + }, + "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": 1703963193, + "narHash": "sha256-ke8drv6PTrdQDruWbajrRJffP9A9PU6FRyjJGNZRTs4=", + "owner": "wlroots", + "repo": "wlroots", + "rev": "f81c3d93cd6f61b20ae784297679283438def8df", + "type": "gitlab" + }, + "original": { + "host": "gitlab.freedesktop.org", + "owner": "wlroots", + "repo": "wlroots", + "rev": "f81c3d93cd6f61b20ae784297679283438def8df", + "type": "gitlab" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": "hyprlang", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1704400467, + "narHash": "sha256-IsEAKBCorRlN53FwFAMbyGLRsPVu/ZrWEJtCwykPds8=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "1c802128f6cc3db29a8ef01552b1a22f894eeefd", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 4794e26..90a08b2 100644 --- a/flake.nix +++ b/flake.nix @@ -8,6 +8,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; stylix.url = "github:danth/stylix"; + hyprland.url = "github:hyprwm/Hyprland"; + hycov = { + url = "github:DreamMaoMao/hycov"; + inputs.hyprland.follows = "hyprland"; + }; }; outputs = { diff --git a/home/default.nix b/home/default.nix index 859d17c..7683b2c 100644 --- a/home/default.nix +++ b/home/default.nix @@ -71,6 +71,12 @@ in { programs.starship.enable = true; programs.zsh = { enable = true; + dotDir = ".config/zsh"; + history = { + path = "${config.xdg.dataHome}/zsh/zsh_history"; + }; + defaultKeymap = "vicmd"; + autocd = true; }; services.udiskie = { diff --git a/home/programs/hycov.nix b/home/programs/hycov.nix new file mode 100644 index 0000000..cf62e31 --- /dev/null +++ b/home/programs/hycov.nix @@ -0,0 +1,25 @@ +{pkgs, ...}: { + wayland.windowManager.hyprland = { + plugins = with pkgs; [ + hycov + ]; + settings.plugin.hycov = { + overview_gappo = 20; + }; + settings.bind = [ + # bind key to toggle overview(normal mode) + "ALT,tab,hycov:toggleoverview" + + # bind key to toggle overview(force mode,no affected by `only_active_workspace` and `only_active_monitor`) + "ALT,grave,hycov:toggleoverview,forceall" #grave key is the '~' key + + # The direction switch shortcut key binding. + # calculate the window closest to the direction to switch focus. + # This keybind is applicable not only to the overview but also to the general layout + "ALT,h,hycov:movefocus,l" + "ALT,l,hycov:movefocus,r" + "ALT,k,hycov:movefocus,u" + "ALT,j,hycov:movefocus,d" + ]; + }; +} diff --git a/home/programs/hyprland.nix b/home/programs/hyprland.nix index 9d6c5b7..a7bcf55 100644 --- a/home/programs/hyprland.nix +++ b/home/programs/hyprland.nix @@ -7,6 +7,7 @@ (import ./swaylock.nix) (import ./swayidle.nix) (import ./waybar.nix) + (import ./hycov.nix) ]; xdg.portal = { enable = true; diff --git a/home/programs/scripts.nix b/home/programs/scripts.nix index cd2088f..73f6cbf 100644 --- a/home/programs/scripts.nix +++ b/home/programs/scripts.nix @@ -130,20 +130,6 @@ in { ]; install = false; } - { - name = "switch-window"; - text = '' - ${my-deps.hyprctl} clients -j | \ - ${my-deps.jq} '.[] | .title' -r | \ - ${my-deps.sed} '/^$/d' | - ${my-deps.menu} | \ - ${my-deps.sed} 's/\([\[\(\)]\)/\\\\\1/g' | \ - ${my-deps.xargs} -I_ ${my-deps.hyprctl} dispatch focuswindow title:"_" - ''; - hotkeys = [ - {key = "TAB";} - ]; - } { name = "picker"; text = '' diff --git a/lib/mkconf.nix b/lib/mkconf.nix index 81dc28a..403dc71 100644 --- a/lib/mkconf.nix +++ b/lib/mkconf.nix @@ -16,28 +16,28 @@ nixpkgs.lib.nixosSystem { modules = [ inputs.stylix.nixosModules.stylix - ({pkgs, ...}: { - stylix.image = ../images/demonslayer.png; - stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml"; - }) - home-manager.nixosModules.home-manager { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.${user}.imports = [ - ../home/. - { - options.home.userFullname = nixpkgs.lib.mkOption {default = userName;}; - config.home.username = user; - } - ]; - } - { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.${user}.imports = [ + ../home/. + { + options.home.userFullname = nixpkgs.lib.mkOption {default = userName;}; + config.home.username = user; + } + ]; + }; + nixpkgs.config.packageOverrides = pkgs: { + hycov = inputs.hycov.packages.${system}.hycov; + }; + imports = [ (import ../hardware/${name}.nix {inherit user;}) (import ../nixos/. user) ]; + roles.work.enable = work; roles.personal.enable = !work; } diff --git a/nixos/default.nix b/nixos/default.nix index 0973b12..c9de11f 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -132,6 +132,7 @@ user: { VISUAL = "nvim"; TERMINAL = "foot"; }; + environment.pathsToLink = [ "/share/zsh" ]; services.gvfs.enable = true; environment.systemPackages = with pkgs; [ @@ -185,4 +186,13 @@ user: { services.prometheus.exporters.node.enable = true; networking.networkmanager.insertNameservers = ["1.1.1.1" "1.0.0.1"]; + + stylix = { + image = ../images/demonslayer.png; + base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml"; + }; + + fonts.packages = with pkgs; [ + nerdfonts + ]; }