diff --git a/flake.lock b/flake.lock index 1252c66..f341338 100644 --- a/flake.lock +++ b/flake.lock @@ -7,16 +7,15 @@ ] }, "locked": { - "lastModified": 1687871164, - "narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=", + "lastModified": 1691672736, + "narHash": "sha256-HNPA/dKHerA0p4OsToEcW/DtTSXBcK5gFRsy/yPgV/Y=", "owner": "nix-community", "repo": "home-manager", - "rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38", + "rev": "6e1eff9aac0e8d84bda7f2d60ba6108eea9b7e79", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-23.05", "repo": "home-manager", "type": "github" } @@ -81,16 +80,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1690927903, - "narHash": "sha256-D5gCaCROnjEKDOel//8TO/pOP87pAEtT0uT8X+0Bj/U=", + "lastModified": 1691654369, + "narHash": "sha256-gSILTEx1jRaJjwZxRlnu3ZwMn1FVNk80qlwiCX8kmpo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "bd836ac5e5a7358dea73cb74a013ca32864ccb86", + "rev": "ce5e4a6ef2e59d89a971bc434ca8ca222b9c7f5e", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-23.05", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 211b267..9490257 100644 --- a/flake.nix +++ b/flake.nix @@ -2,10 +2,10 @@ description = "NixOS configuration"; inputs = { # All flake references - nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05"; # Default stable nix packages + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Default stable nix packages home-manager = { # User package management - url = "github:nix-community/home-manager/release-23.05"; + url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/home/default.nix b/home/default.nix index 7a058e0..4916d2c 100644 --- a/home/default.nix +++ b/home/default.nix @@ -7,8 +7,10 @@ ./git.nix ./gtk.nix ./hyprland.nix + ./joshuto.nix ./kitty.nix ./librewolf.nix + ./mpv.nix ./neovim.nix ./swaylock.nix ./waybar.nix diff --git a/home/joshuto.nix b/home/joshuto.nix new file mode 100644 index 0000000..ba03764 --- /dev/null +++ b/home/joshuto.nix @@ -0,0 +1,899 @@ +{ pkgs, ... }: + +{ + programs.joshuto = { + enable = true; + + settings = { + display = { + automatically_count_files = true; + show_borders = false; + show_hidden = true; + show_icons = true; + line_number_style = "absolute"; + collapse_preview = false; + }; + + preview = { + max_preview_size = 10000000000; + preview_script = "~/.config/joshuto/preview.sh"; + preview_shown_hook_script = "~/.config/joshuto/kitty-show.sh"; + preview_removed_hook_script = "~/.config/joshuto/kitty-remove.sh"; + }; + }; + + mimetype = { + class = { + audio_default = [ + { command = "mpv"; args = [ "--" ]; } + { command = "mediainfo"; confirm_exit = true; } + ]; + + image_default = [ + { command = "pqiv"; args = [ "--" ]; fork = true; silent = true; } + ]; + + video_default = [ + { command = "mpv"; args = [ "--" ]; fork = true; silent = true; } + { command = "mediainfo"; confirm_exit = true; } + { command = "mpv"; args = [ "--mute" "on" "--" ]; fork = true; silent = true; } + ]; + + text_default = [ + { command = "nvim"; } + ]; + + reader_default = [ + { command = "zathura"; fork = true; silent = true; } + ]; + + libreoffice_default = [ + { command = "libreoffice"; fork = true; silent = true; } + ]; + }; + + extension = { + ## image formats + avif."inherit" = "image_default"; + bmp."inherit" = "image_default"; + gif."inherit" = "image_default"; + heic."inherit" = "image_default"; + jpeg."inherit" = "image_default"; + jpe."inherit" = "image_default"; + jpg."inherit" = "image_default"; + pgm."inherit" = "image_default"; + png."inherit" = "image_default"; + ppm."inherit" = "image_default"; + webp."inherit" = "image_default"; + + ## audio formats + flac."inherit" = "audio_default"; + m4a."inherit" = "audio_default"; + mp3."inherit" = "audio_default"; + ogg."inherit" = "audio_default"; + wav."inherit" = "audio_default"; + + ## video formats + avi."inherit" = "video_default"; + av1."inherit" = "video_default"; + flv."inherit" = "video_default"; + mkv."inherit" = "video_default"; + m4v."inherit" = "video_default"; + mov."inherit" = "video_default"; + mp4."inherit" = "video_default"; + ts."inherit" = "video_default"; + webm."inherit" = "video_default"; + wmv."inherit" = "video_default"; + + ## text formats + build."inherit" = "text_default"; + c."inherit" = "text_default"; + cmake."inherit" = "text_default"; + conf."inherit" = "text_default"; + cpp."inherit" = "text_default"; + css."inherit" = "text_default"; + csv."inherit" = "text_default"; + cu."inherit" = "text_default"; + ebuild."inherit" = "text_default"; + eex."inherit" = "text_default"; + env."inherit" = "text_default"; + ex."inherit" = "text_default"; + exs."inherit" = "text_default"; + go."inherit" = "text_default"; + h."inherit" = "text_default"; + hpp."inherit" = "text_default"; + hs."inherit" = "text_default"; + html."inherit" = "text_default"; + ini."inherit" = "text_default"; + java."inherit" = "text_default"; + js."inherit" = "text_default"; + json."inherit" = "text_default"; + kt."inherit" = "text_default"; + lock."inherit" = "text_default"; + lua."inherit" = "text_default"; + log."inherit" = "text_default"; + md."inherit" = "text_default"; + micro."inherit" = "text_default"; + ninja."inherit" = "text_default"; + py."inherit" = "text_default"; + rkt."inherit" = "text_default"; + rs."inherit" = "text_default"; + scss."inherit" = "text_default"; + sh."inherit" = "text_default"; + srt."inherit" = "text_default"; + svelte."inherit" = "text_default"; + toml."inherit" = "text_default"; + tsx."inherit" = "text_default"; + txt."inherit" = "text_default"; + vim."inherit" = "text_default"; + xml."inherit" = "text_default"; + yaml."inherit" = "text_default"; + yml."inherit" = "text_default"; + + # archive formats + "7z".app_list = [{ command = "7z"; args = [ "x" ]; confirm_exit = true; }]; + rar.app_list = [ + { command = "unar"; confirm_exit = true; } + { command = "file-roller"; fork = true; silent = true; } + ]; + zip.app_list = [ + { command = "unzip"; confirm_exit = true; } + { command = "file-roller"; fork = true; silent = true; } + ]; + + # misc formats + aup.app_list = [ + { command = "audacity"; fork = true; silent = true; } + ]; + + odt."inherit" = "libreoffice_default"; + odf."inherit" = "libreoffice_default"; + ods."inherit" = "libreoffice_default"; + odp."inherit" = "libreoffice_default"; + + doc."inherit" = "libreoffice_default"; + docx."inherit" = "libreoffice_default"; + xls."inherit" = "libreoffice_default"; + xlsx."inherit" = "libreoffice_default"; + ppt."inherit" = "libreoffice_default"; + pptx."inherit" = "libreoffice_default"; + + pdf."inherit" = "reader_default"; + + kra.app_list = [ + { command = "krita"; fork = true; silent = true; } + ]; + kdenlive.app_list = [ + { command = "kdenlive"; fork = true; silent = true; } + ]; + + tex.app_list = [ + { command = "micro"; } + { command = "gedit"; fork = true; silent = true; } + { command = "bat"; confirm_exit = true; } + { command = "pdflatex"; } + ]; + + torrent.app_list = [ + { command = "transmission-gtk"; } + ]; + }; + + mimetype = { + application.subtype.octet-stream."inherit" = "video_default"; + text."inherit" = "text_default"; + video."inherit" = "video_default"; + }; + }; + + keymap = { + default_view = { + keymap = [ + { keys = [ "escape" ]; command = "escape"; } + { keys = [ "ctrl+t" ]; command = "new_tab"; } + { keys = [ "alt+t" ]; command = "new_tab --cursor"; } + { keys = [ "T" ]; command = "new_tab --current"; } + { keys = [ "W" ]; command = "close_tab"; } + { keys = [ "ctrl+w" ]; command = "close_tab"; } + { keys = [ "q" ]; command = "close_tab"; } + { keys = [ "ctrl+c" ]; command = "quit"; } + { keys = [ "o" ]; command = "quit --output-selected-files"; } + + { keys = [ "R" ]; command = "reload_dirlist"; } + { keys = [ "z" "h" ]; command = "toggle_hidden"; } + { keys = [ "ctrl+h" ]; command = "toggle_hidden"; } + { keys = [ "\t" ]; command = "tab_switch 1"; } + { keys = [ "backtab" ]; command = "tab_switch -1"; } + + { keys = [ "alt+1" ]; command = "tab_switch_index 1"; } + { keys = [ "alt+2" ]; command = "tab_switch_index 2"; } + { keys = [ "alt+3" ]; command = "tab_switch_index 3"; } + { keys = [ "alt+4" ]; command = "tab_switch_index 4"; } + { keys = [ "alt+5" ]; command = "tab_switch_index 5"; } + + { keys = [ "1" ]; command = "numbered_command 1"; } + { keys = [ "2" ]; command = "numbered_command 2"; } + { keys = [ "3" ]; command = "numbered_command 3"; } + { keys = [ "4" ]; command = "numbered_command 4"; } + { keys = [ "5" ]; command = "numbered_command 5"; } + { keys = [ "6" ]; command = "numbered_command 6"; } + { keys = [ "7" ]; command = "numbered_command 7"; } + { keys = [ "8" ]; command = "numbered_command 8"; } + { keys = [ "9" ]; command = "numbered_command 9"; } + + # arrow keys + { keys = [ "arrow_up" ]; command = "cursor_move_up"; } + { keys = [ "arrow_down" ]; command = "cursor_move_down"; } + { keys = [ "arrow_left" ]; command = "cd .."; } + { keys = [ "arrow_right" ]; command = "open"; } + { keys = [ "\n" ]; command = "open"; } + { keys = [ "home" ]; command = "cursor_move_home"; } + { keys = [ "end" ]; command = "cursor_move_end"; } + { keys = [ "page_up" ]; command = "cursor_move_page_up"; } + { keys = [ "page_down" ]; command = "cursor_move_page_down"; } + { keys = [ "ctrl+u" ]; command = "cursor_move_page_up 0.5"; } + { keys = [ "ctrl+d" ]; command = "cursor_move_page_down 0.5"; } + + # vim-like keybindings + { keys = [ "j" ]; command = "cursor_move_down"; } + { keys = [ "k" ]; command = "cursor_move_up"; } + { keys = [ "h" ]; command = "cd .."; } + { keys = [ "l" ]; command = "open"; } + { keys = [ "g" "g" ]; command = "cursor_move_home"; } + { keys = [ "G" ]; command = "cursor_move_end"; } + { keys = [ "r" ]; command = "open_with"; } + + { keys = [ "H" ]; command = "cursor_move_page_home"; } + { keys = [ "L" ]; command = "cursor_move_page_middle"; } + { keys = [ "M" ]; command = "cursor_move_page_end"; } + + { keys = [ "[" ]; command = "parent_cursor_move_up"; } + { keys = [ "]" ]; command = "parent_cursor_move_down"; } + + { keys = [ "c" "d" ]; command = ":cd "; } + { keys = [ "d" "d" ]; command = "cut_files"; } + { keys = [ "y" "y" ]; command = "copy_files"; } + { keys = [ "y" "n" ]; command = "copy_filename"; } + { keys = [ "y" "." ]; command = "copy_filename_without_extension"; } + { keys = [ "y" "p" ]; command = "copy_filepath"; } + { keys = [ "y" "d" ]; command = "copy_dirpath"; } + + { keys = [ "p" "l" ]; command = "symlink_files --relative=false"; } + { keys = [ "p" "L" ]; command = "symlink_files --relative=true"; } + + { keys = [ "delete" ]; command = "delete_files"; } + { keys = [ "d" "D" ]; command = "delete_files"; } + { keys = [ "D" ]; command = "delete_files"; } + + { keys = [ "p" "p" ]; command = "paste_files"; } + { keys = [ "p" "o" ]; command = "paste_files --overwrite=true"; } + + { keys = [ "a" ]; command = "rename_append"; } + { keys = [ "A" ]; command = "rename_prepend"; } + + { keys = [ "f" "t" ]; command = ":touch "; } + + { keys = [ " " ]; command = "select --toggle=true"; } + { keys = [ "t" ]; command = "select --all=true --toggle=true"; } + { keys = [ "V" ]; command = "toggle_visual"; } + + { keys = [ "w" ]; command = "show_tasks --exit-key=w"; } + { keys = [ "b" "b" ]; command = "bulk_rename"; } + { keys = [ "=" ]; command = "set_mode"; } + + { keys = [ ":" ]; command = ":"; } + { keys = [ ";" ]; command = ":"; } + + { keys = [ "'" ]; command = ":shell "; } + { keys = [ "m" "k" ]; command = ":mkdir "; } + { keys = [ "c" "w" ]; command = ":rename "; } + + { keys = [ "/" ]; command = ":search "; } + { keys = [ "|" ]; command = ":search_inc "; } + { keys = [ "\\" ]; command = ":search_glob "; } + { keys = [ "S" ]; command = "search_fzf"; } + { keys = [ "C" ]; command = "subdir_fzf"; } + + { keys = [ "n" ]; command = "search_next"; } + { keys = [ "N" ]; command = "search_prev"; } + + { keys = [ "s" "r" ]; command = "sort reverse"; } + { keys = [ "s" "l" ]; command = "sort lexical"; } + { keys = [ "s" "m" ]; command = "sort mtime"; } + { keys = [ "s" "n" ]; command = "sort natural"; } + { keys = [ "s" "s" ]; command = "sort size"; } + { keys = [ "s" "e" ]; command = "sort ext"; } + + { keys = [ "m" "s" ]; command = "linemode size"; } + { keys = [ "m" "m" ]; command = "linemode mtime"; } + { keys = [ "m" "M" ]; command = "linemode sizemtime"; } + + { keys = [ "g" "r" ]; command = "cd /"; } + { keys = [ "g" "c" ]; command = "cd ~/.config"; } + { keys = [ "g" "d" ]; command = "cd ~/Downloads"; } + { keys = [ "g" "e" ]; command = "cd /etc"; } + { keys = [ "g" "h" ]; command = "cd ~/"; } + { keys = [ "?" ]; command = "help"; } + ]; + }; + + task_view = { + keymap = [ + # arrow keys + { keys = [ "arrow_up" ]; command = "cursor_move_up"; } + { keys = [ "arrow_down" ]; command = "cursor_move_down"; } + { keys = [ "home" ]; command = "cursor_move_home"; } + { keys = [ "end" ]; command = "cursor_move_end"; } + + # vim-like keybindings + { keys = [ "j" ]; command = "cursor_move_down"; } + { keys = [ "k" ]; command = "cursor_move_up"; } + { keys = [ "g" "g" ]; command = "cursor_move_home"; } + { keys = [ "G" ]; command = "cursor_move_end"; } + + { keys = [ "w" ]; command = "show_tasks"; } + { keys = [ "escape" ]; command = "show_tasks"; } + ]; + }; + + help_view = { + keymap = [ + # arrow keys + { keys = [ "arrow_up" ]; command = "cursor_move_up"; } + { keys = [ "arrow_down" ]; command = "cursor_move_down"; } + { keys = [ "home" ]; command = "cursor_move_home"; } + { keys = [ "end" ]; command = "cursor_move_end"; } + + # vim-like keybindings + { keys = [ "j" ]; command = "cursor_move_down"; } + { keys = [ "k" ]; command = "cursor_move_up"; } + { keys = [ "g" "g" ]; command = "cursor_move_home"; } + { keys = [ "G" ]; command = "cursor_move_end"; } + + { keys = [ "w" ]; command = "show_tasks"; } + { keys = [ "escape" ]; command = "show_tasks"; } + ]; + }; + }; + + theme = { + selection = { + fg = "light_yellow"; + bold = true; + }; + + visual_mode_selection = { + fg = "light_red"; + bold = true; + }; + + selection.prefix = { + prefix = " "; + size = 2; + }; + + executable = { + fg = "light_green"; + bold = true; + }; + + regular = { + fg = "white"; + }; + + directory = { + fg = "light_blue"; + bold = true; + }; + + link = { + fg = "cyan"; + bold = true; + }; + + link_invalid = { + fg = "red"; + bold = true; + }; + + socket = { + fg = "light_magenta"; + bold = true; + }; + + ext = { + bmp.fg = "yellow"; + gif.fg = "yellow"; + heic.fg = "yellow"; + jpg.fg = "yellow"; + jpeg.fg = "yellow"; + pgm.fg = "yellow"; + png.fg = "yellow"; + ppm.fg = "yellow"; + svg.fg = "yellow"; + + wav.fg = "magenta"; + flac.fg = "magenta"; + mp3.fg = "magenta"; + amr.fg = "magenta"; + + avi.fg = "magenta"; + flv.fg = "magenta"; + m3u.fg = "magenta"; + m4a.fg = "magenta"; + m4v.fg = "magenta"; + mkv.fg = "magenta"; + mov.fg = "magenta"; + mp4.fg = "magenta"; + mpg.fg = "magenta"; + rmvb.fg = "magenta"; + webm.fg = "magenta"; + wmv.fg = "magenta"; + + "7z".fg = "red"; + bz2.fg = "red"; + gz.fg = "red"; + rar.fg = "red"; + tar.fg = "red"; + tgz.fg = "red"; + xz.fg = "red"; + zip.fg = "red"; + }; + }; + }; + + xdg.configFile = { + "joshuto/preview.sh" = { + executable = true; + text = /* bash */ '' + #!/usr/bin/env bash + + IFS=$'\n' + set -o noclobber -o noglob -o nounset -o pipefail + + FILE_PATH="" + PREVIEW_WIDTH=10 + PREVIEW_HEIGHT=10 + + while [ "$#" -gt 0 ]; do + case "$1" in + "--path") + shift + FILE_PATH="$1" + ;; + "--preview-width") + shift + PREVIEW_WIDTH="$1" + ;; + "--preview-height") + shift + PREVIEW_HEIGHT="$1" + ;; + esac + shift + done + + realpath=$(realpath "$FILE_PATH") + + handle_extension() { + case "''${FILE_EXTENSION_LOWER}" in + lock) + cat "''${FILE_PATH}" && exit 0 + exit 1;; + + rar) + lsar "''${FILE_PATH}" && exit 0 + exit 1;; + 7z) + 7z l -p -- "''${FILE_PATH}" && exit 0 + exit 1;; + + pdf) + pdftotext -l 10 -nopgbrk -q -- "''${FILE_PATH}" - | \ + fmt -w "''${PREVIEW_WIDTH}" && exit 0 + mutool draw -F txt -i -- "''${FILE_PATH}" 1-10 | \ + fmt -w "''${PREVIEW_WIDTH}" && exit 0 + exiftool "''${FILE_PATH}" && exit 0 + exit 1;; + + torrent) + transmission-show -- "''${FILE_PATH}" && exit 0 + exit 1;; + + json) + jq --color-output . "''${FILE_PATH}" && exit 0 + ;; + esac + } + + handle_mime() { + local mimetype="''${1}" + + case "''${mimetype}" in + ## Text + text/* | */xml) + bat --color=always --paging=never \ + --style=plain \ + --terminal-width="''${PREVIEW_WIDTH}" \ + "''${FILE_PATH}" && exit 0 + cat "''${FILE_PATH}" && exit 0 + exit 1;; + + ## Image + image/*) + exit 5;; + + ## Video and audio + video/* | audio/*) + echo "$realpath" + mediainfo "''${FILE_PATH}" && exit 0 + exiftool "''${FILE_PATH}" && exit 0 + exit 1;; + esac + } + + FILE_EXTENSION="''${FILE_PATH##*.}" + FILE_EXTENSION_LOWER="$(printf "%s" "''${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')" + handle_extension + MIMETYPE="$( file --dereference --brief --mime-type -- "''${FILE_PATH}" )" + handle_mime "''${MIMETYPE}" + + exit 1 + ''; + }; + + "joshuto/kitty-show.sh" = { + executable = true; + text = /* bash */ '' + #!/usr/bin/env bash + + FILE_PATH="$1" # Full path of the previewed file + PREVIEW_X_COORD="$2" # x coordinate of upper left cell of preview area + PREVIEW_Y_COORD="$3" # y coordinate of upper left cell of preview area + PREVIEW_WIDTH="$4" # Width of the preview pane (number of fitting characters) + PREVIEW_HEIGHT="$5" # Height of the preview pane (number of fitting characters) + + TMP_FILE="$HOME/.cache/joshuto/thumbcache.png" + + mimetype=$(file --mime-type -Lb "$FILE_PATH") + + function image { + kitty +kitten icat \ + --transfer-mode=file \ + --clear 2>/dev/null + kitty +kitten icat \ + --transfer-mode=file \ + --place "''${PREVIEW_WIDTH}x''${PREVIEW_HEIGHT}@''${PREVIEW_X_COORD}x''${PREVIEW_Y_COORD}" \ + "$1" 2>/dev/null + } + + case "$mimetype" in + image/*) + image "''${FILE_PATH}" + ;; + *) + kitty +kitten icat \ + --transfer-mode=file \ + --clear 2>/dev/null + ;; + esac + ''; + }; + + "joshuto/kitty-remove.sh" = { + executable = true; + text = /* bash */ '' + #!/usr/bin/env bash + + kitty +kitten icat --transfer-mode=file --clear 2>/dev/null + ''; + }; + }; + + xdg.configFile."joshuto/icons.toml".text = /* toml */ '' + # Default fallback icons + [defaults] + file = "" + directory = "" + + # Directory exact match icons + [directory_exact] + # English + ".git" = "" + "Desktop" = "" + "Documents" = "" + "Downloads" = "" + "Dotfiles" = "" + "Dropbox" = "" + "Music" = "" + "Pictures" = "" + "Public" = "" + "Templates" = "" + "Videos" = "" + + # File exact match icons + [file_exact] + ".bash_aliases" = "" + ".bash_history" = "" + ".bash_logout" = "" + ".bash_profile" = "" + ".bashprofile" = "" + ".bashrc" = "" + ".dmrc" = "" + ".DS_Store" = "" + ".fasd" = "" + ".fehbg" = "" + ".gitattributes" = "" + ".gitconfig" = "" + ".gitignore" = "" + ".gitlab-ci.yml" = "" + ".gvimrc" = "" + ".inputrc" = "" + ".jack-settings" = "" + ".mime.types" = "" + ".ncmpcpp" = "" + ".nvidia-settings-rc" = "" + ".pam_environment" = "" + ".profile" = "" + ".recently-used" = "" + ".selected_editor" = "" + ".vim" = "" + ".viminfo" = "" + ".vimrc" = "" + ".Xauthority" = "" + ".Xdefaults" = "" + ".xinitrc" = "" + ".xinputrc" = "" + ".Xresources" = "" + ".zshrc" = "" + "_gvimrc" = "" + "_vimrc" = "" + "a.out" = "" + "authorized_keys" = "" + "bspwmrc" = "" + "cmakelists.txt" = "" + "config" = "" + "config.ac" = "" + "config.m4" = "" + "config.mk" = "" + "config.ru" = "" + "configure" = "" + "docker-compose.yml" = "" + "dockerfile" = "" + "Dockerfile" = "" + "dropbox" = "" + "exact-match-case-sensitive-1.txt" = "X1" + "exact-match-case-sensitive-2" = "X2" + "favicon.ico" = "" + "gemfile" = "" + "gruntfile.coffee" = "" + "gruntfile.js" = "" + "gruntfile.ls" = "" + "gulpfile.coffee" = "" + "gulpfile.js" = "" + "gulpfile.ls" = "" + "ini" = "" + "known_hosts" = "" + "ledger" = "" + "license" = "" + "LICENSE" = "" + "LICENSE.md" = "" + "LICENSE.txt" = "" + "Makefile" = "" + "makefile" = "" + "Makefile.ac" = "" + "Makefile.in" = "" + "mimeapps.list" = "" + "mix.lock" = "" + "node_modules" = "" + "package-lock.json" = "" + "package.json" = "" + "playlists" = "" + "procfile" = "" + "Rakefile" = "" + "rakefile" = "" + "react.jsx" = "" + "README" = "" + "README.markdown" = "" + "README.md" = "" + "README.rst" = "" + "README.txt" = "" + "sxhkdrc" = "" + "user-dirs.dirs" = "" + "webpack.config.js" = "" + + # File extension match + [ext] + "7z" = "" + "a" = "" + "ai" = "" + "apk" = "" + "asm" = "" + "asp" = "" + "aup" = "" + "avi" = "" + "awk" = "" + "bash" = "" + "bat" = "" + "bmp" = "" + "bz2" = "" + "c" = "" + "c++" = "" + "cab" = "" + "cbr" = "" + "cbz" = "" + "cc" = "" + "class" = "" + "clj" = "" + "cljc" = "" + "cljs" = "" + "cmake" = "" + "coffee" = "" + "conf" = "" + "cp" = "" + "cpio" = "" + "cpp" = "" + "cs" = "" + "csh" = "" + "css" = "" + "cue" = "" + "cvs" = "" + "cxx" = "" + "d" = "" + "dart" = "" + "db" = "" + "deb" = "" + "diff" = "" + "dll" = "" + "doc" = "" + "docx" = "" + "dump" = "" + "edn" = "" + "eex" = "" + "efi" = "" + "ejs" = "" + "elf" = "" + "elm" = "" + "epub" = "" + "erl" = "" + "ex" = "" + "exe" = "" + "exs" = "" + "f//" = "" + "fifo" = "|" + "fish" = "" + "flac" = "" + "flv" = "" + "fs" = "" + "fsi" = "" + "fsscript" = "" + "fsx" = "" + "gem" = "" + "gemspec" = "" + "gif" = "" + "go" = "" + "gz" = "" + "gzip" = "" + "h" = "" + "haml" = "" + "hbs" = "" + "hh" = "" + "hpp" = "" + "hrl" = "" + "hs" = "" + "htaccess" = "" + "htm" = "" + "html" = "" + "htpasswd" = "" + "hxx" = "" + "ico" = "" + "img" = "" + "ini" = "" + "iso" = "" + "jar" = "" + "java" = "" + "jl" = "" + "jpeg" = "" + "jpg" = "" + "js" = "" + "json" = "" + "jsx" = "" + "key" = "" + "ksh" = "" + "leex" = "" + "less" = "" + "lha" = "" + "lhs" = "" + "log" = "" + "lua" = "" + "lzh" = "" + "lzma" = "" + "m4a" = "" + "m4v" = "" + "markdown" = "" + "md" = "" + "mdx" = "" + "mjs" = "" + "mkv" = "" + "ml" = "λ" + "mli" = "λ" + "mov" = "" + "mp3" = "" + "mp4" = "" + "mpeg" = "" + "mpg" = "" + "msi" = "" + "mustache" = "" + "nix" = "" + "o" = "" + "ogg" = "" + "pdf" = "" + "php" = "" + "pl" = "" + "pm" = "" + "png" = "" + "pp" = "" + "ppt" = "" + "pptx" = "" + "ps1" = "" + "psb" = "" + "psd" = "" + "pub" = "" + "py" = "" + "pyc" = "" + "pyd" = "" + "pyo" = "" + "r" = "ﳒ" + "rake" = "" + "rar" = "" + "rb" = "" + "rc" = "" + "rlib" = "" + "rmd" = "" + "rom" = "" + "rpm" = "" + "rproj" = "鉶" + "rs" = "" + "rss" = "" + "rtf" = "" + "s" = "" + "sass" = "" + "scala" = "" + "scss" = "" + "sh" = "" + "slim" = "" + "sln" = "" + "so" = "" + "sql" = "" + "styl" = "" + "suo" = "" + "swift" = "" + "t" = "" + "tar" = "" + "tex" = "ﭨ" + "tgz" = "" + "toml" = "" + "ts" = "" + "tsx" = "" + "twig" = "" + "vim" = "" + "vimrc" = "" + "vue" = "﵂" + "wav" = "" + "webm" = "" + "webmanifest" = "" + "webp" = "" + "xbps" = "" + "xcplayground" = "" + "xhtml" = "" + "xls" = "" + "xlsx" = "" + "xml" = "" + "xul" = "" + "xz" = "" + "yaml" = "" + "yml" = "" + "zip" = "" + "zsh" = "" + ''; +} diff --git a/home/mpv.nix b/home/mpv.nix new file mode 100644 index 0000000..7687322 --- /dev/null +++ b/home/mpv.nix @@ -0,0 +1,45 @@ +{ pkgs, ... }: + +{ + programs.mpv = { + enable = true; + + config = { + profile = "gpu-hq"; + scale = "ewa_lanczossharp"; + cscale = "ewa_lanczossharp"; + video-sync = "display-resample"; + interpolation = true; + tscale = "oversample"; + + sub-auto = "fuzzy"; + sub-font = "Noto Sans CJK JP Medium"; + sub-blur = 10; + sub-file-paths = "subs:subtitles:字幕"; + + screenshot-format = "png"; + + title = "\${filename} - mpv"; + script-opts = "osc-title=\${filename},osc-boxalpha=150,osc-visibility=never,osc-boxvideo=yes"; + + osc = "no"; + osd-on-seek = "no"; + osd-bar = "no"; + osd-bar-w = 30; + osd-bar-h = "0.2"; + osd-duration = 750; + + really-quiet = "yes"; + autofit = "65%"; + }; + + bindings = { + "ctrl+shift+a" = "script-message osc-visibility cycle"; + }; + + scripts = with pkgs.mpvScripts; [ + mpris + thumbnail + ]; + }; +} diff --git a/home/neovim.nix b/home/neovim.nix index b4949eb..e0b3b8d 100644 --- a/home/neovim.nix +++ b/home/neovim.nix @@ -1,7 +1,7 @@ { config, pkgs, ...}: { - home.sessionVariables.Editor = "nvim"; + home.sessionVariables.EDITOR = "nvim"; programs = { neovim = { diff --git a/modules/packages.nix b/modules/packages.nix index 970ec82..66a70a1 100644 --- a/modules/packages.nix +++ b/modules/packages.nix @@ -1,10 +1,15 @@ { config, pkgs, ... }: { environment.systemPackages = with pkgs; [ brightnessctl + dig + file git jq + mediainfo neofetch networkmanagerapplet + p7zip + pqiv python3 ripgrep # rg in home/hyprland.nix tree