From 80209213a6b2d3fa5292fc078590db9956c97e0e Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Wed, 26 Jun 2024 12:03:20 +0200 Subject: [PATCH] Install kitty and yazi --- flake.lock | 19 +++- flake.nix | 5 + homes/x86_64-linux/julian@aspi/default.nix | 3 +- modules/home/alacritty/alacritty.toml | 5 - modules/home/fish/default.nix | 11 -- modules/home/kitty/default.nix | 51 ++++++++++ modules/home/yazi/default.nix | 111 +++++++++++++++++++++ 7 files changed, 187 insertions(+), 18 deletions(-) create mode 100644 modules/home/kitty/default.nix create mode 100644 modules/home/yazi/default.nix diff --git a/flake.lock b/flake.lock index 7321c63..5ba3db3 100644 --- a/flake.lock +++ b/flake.lock @@ -1143,7 +1143,8 @@ "persist-retro": "persist-retro", "prism": "prism", "snowfall-lib": "snowfall-lib_2", - "sops-nix": "sops-nix" + "sops-nix": "sops-nix", + "yazi-flavors": "yazi-flavors" } }, "snowfall-lib": { @@ -1413,6 +1414,22 @@ "repo": "xdg-desktop-portal-hyprland", "type": "github" } + }, + "yazi-flavors": { + "flake": false, + "locked": { + "lastModified": 1713617364, + "narHash": "sha256-gT3aMiBspYypkMdx1TDVwElK7aotolE1JJuJtkC9RRc=", + "owner": "yazi-rs", + "repo": "flavors", + "rev": "55e4bf55fb07b41927a9dd3528a4fa1b269531af", + "type": "github" + }, + "original": { + "owner": "yazi-rs", + "repo": "flavors", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 34a9d5d..17c8202 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,11 @@ flake = false; }; + yazi-flavors = { + url = "github:yazi-rs/flavors"; + flake = false; + }; + nix-matlab.url = "gitlab:doronbehar/nix-matlab"; nix-matlab.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/homes/x86_64-linux/julian@aspi/default.nix b/homes/x86_64-linux/julian@aspi/default.nix index 5816065..e1e21ae 100644 --- a/homes/x86_64-linux/julian@aspi/default.nix +++ b/homes/x86_64-linux/julian@aspi/default.nix @@ -32,7 +32,8 @@ }; topgrade.enable = true; neovim.enable = true; - alacritty.enable = true; + kitty.enable = true; + yazi.enable = true; emacs.enable = true; i3.enable = true; diff --git a/modules/home/alacritty/alacritty.toml b/modules/home/alacritty/alacritty.toml index e9f81b9..4b1a386 100644 --- a/modules/home/alacritty/alacritty.toml +++ b/modules/home/alacritty/alacritty.toml @@ -1,8 +1,3 @@ import = [ "~/.config/alacritty/theme/themes/smoooooth.toml" ] - -# [[keyboard.bindings]] -# chars = "fzf-z \r" -# key = "Z" -# mods = "Control" diff --git a/modules/home/fish/default.nix b/modules/home/fish/default.nix index c9a4197..abd0f25 100644 --- a/modules/home/fish/default.nix +++ b/modules/home/fish/default.nix @@ -58,18 +58,7 @@ in interactiveShellInit = "set fish_greeting"; # Disable default greeting - plugins = [ - { - name = "z"; - src = pkgs.fishPlugins.z.src; - } - ]; - functions = { - fzf-z = '' - set dir $(z --list | fzf --tiebreak=index | sed -E 's/^[0-9\.]+[[:space:]]+//') - cd $dir - ''; mkcd = '' mkdir $argv cd $argv diff --git a/modules/home/kitty/default.nix b/modules/home/kitty/default.nix new file mode 100644 index 0000000..92ef8d0 --- /dev/null +++ b/modules/home/kitty/default.nix @@ -0,0 +1,51 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + ... +}: + +let + cfg = config.modules.kitty; +in +{ + options.modules.kitty = { + enable = lib.mkOption { default = false; }; + }; + + config = lib.mkIf cfg.enable { + programs.kitty = { + enable = true; + shellIntegration.enableFishIntegration = true; + theme = "Catppuccin-Mocha"; + settings = { + enable_audo_bell = false; + confirm_os_window_close = 0; # disabled + }; + font = { + package = pkgs.dejavu_fonts; + name = "DejaVu Sans"; + size = 12; + }; + }; + home.shellAliases = { + y = "ya"; # Yazi shell wrapper (cd on quit) + }; + + systemd.user.sessionVariables.TERMINAL = "kitty"; + }; +} diff --git a/modules/home/yazi/default.nix b/modules/home/yazi/default.nix new file mode 100644 index 0000000..bc9b464 --- /dev/null +++ b/modules/home/yazi/default.nix @@ -0,0 +1,111 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + ... +}: + +let + cfg = config.modules.yazi; +in +{ + options.modules.yazi = { + enable = lib.mkOption { default = false; }; + }; + + config = lib.mkIf cfg.enable { + programs.zoxide.enable = true; + programs.zoxide.enableFishIntegration = true; + + home.packages = with pkgs; [ + exiftool + unar # extract archives + xdragon # dragndrop + poppler_utils # pdf preview + fd + ripgrep + fzf + jq # json preview + ffmpegthumbnailer + xclip + ]; + programs.yazi.enable = true; + programs.yazi.enableFishIntegration = true; + programs.yazi.settings.manager = { + sort_by = "modified"; + sort_reverse = true; + show_hidden = true; + }; + + programs.yazi.keymap = { + manager.prepend_keymap = [ + # Override defaults + { + on = [ "e" ]; + run = ''shell --orphan --confirm "thunar &"''; + desc = "Open gui file manager"; + } + { + on = [ "" ]; + run = ''shell "$SHELL" --block --confirm''; + desc = "Open shell here"; + } + { + on = [ "" ]; + run = ''shell 'dragon -x -i -T "$1"' --confirm''; + desc = "Dragndrop via dragon"; + } + { + on = [ "" ]; + run = "plugin --sync smart-enter"; + desc = "Enter the child directory, or open the file"; + } + ]; + input.prepend_keymap = [ + { + on = [ "" ]; + run = "close"; + desc = "Cancel input"; + } + ]; + }; + + programs.yazi.settings.opener = { + play = [ + { + run = ''vlc "$1"''; + orphan = true; + } + ]; + }; + + xdg.configFile."yazi/flavors" = { + source = "${inputs.yazi-flavors}"; + }; + xdg.configFile."yazi/plugins/smart-enter.yazi/init.lua".text = '' + return { + entry = function() + local h = cx.active.current.hovered + ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true }) + end, + } + ''; + programs.yazi.theme = { + flavor.use = "catppuccin-mocha"; + }; + }; +}