diff --git a/flake.lock b/flake.lock index 4ba5ec5b..817c43e0 100644 --- a/flake.lock +++ b/flake.lock @@ -30,11 +30,11 @@ ] }, "locked": { - "lastModified": 1688307440, - "narHash": "sha256-7PTjbN+/+b799YN7Tk2SS5Vh8A0L3gBo8hmB7Y0VXug=", + "lastModified": 1694497842, + "narHash": "sha256-z03v/m0OwcLBok97KcUgMl8ZFw5Xwsi2z+n6nL7JdXY=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "b06bab83bdf285ea0ae3c8e145a081eb95959047", + "rev": "4496ab26628c5f43d2a5c577a06683c753e32fe2", "type": "github" }, "original": { @@ -54,11 +54,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1686747123, - "narHash": "sha256-XUQK9kwHpTeilHoad7L4LjMCCyY13Oq383CoFADecRE=", + "lastModified": 1694513707, + "narHash": "sha256-wE5kHco3+FQjc+MwTPwLVqYz4hM7uno2CgXDXUFMCpc=", "owner": "serokell", "repo": "deploy-rs", - "rev": "724463b5a94daa810abfc64a4f87faef4e00f984", + "rev": "31c32fb2959103a796e07bbe47e0a5e287c343a8", "type": "github" }, "original": { @@ -238,24 +238,6 @@ } }, "flake-utils_4": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1687171271, - "narHash": "sha256-BJlq+ozK2B1sJDQXS3tzJM5a+oVZmi1q0FlBK/Xqv7M=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -270,6 +252,22 @@ "type": "github" } }, + "fork": { + "locked": { + "lastModified": 1692960587, + "narHash": "sha256-39SKGdhn8jKKkdqhULbCvQOpdUPE9NNJpy5HTB++Jvg=", + "owner": "teutat3s", + "repo": "nixpkgs", + "rev": "312709dd70684f52496580e533d58645526b1c90", + "type": "github" + }, + "original": { + "owner": "teutat3s", + "ref": "nvfetcher-fix", + "repo": "nixpkgs", + "type": "github" + } + }, "home": { "inputs": { "nixpkgs": [ @@ -277,11 +275,11 @@ ] }, "locked": { - "lastModified": 1687871164, - "narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=", + "lastModified": 1694465129, + "narHash": "sha256-8BQiuobMrCfCbGM7w6Snx+OBYdtTIm0+cGVaKwQ5BFg=", "owner": "nix-community", "repo": "home-manager", - "rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38", + "rev": "9787dffff5d315c9593d3f9fb0f9bf2097e1b57b", "type": "github" }, "original": { @@ -316,11 +314,11 @@ }, "latest": { "locked": { - "lastModified": 1689192006, - "narHash": "sha256-QM0f0d8oPphOTYJebsHioR9+FzJcy1QNIzREyubB91U=", + "lastModified": 1694422566, + "narHash": "sha256-lHJ+A9esOz9vln/3CJG23FV6Wd2OoOFbDeEs4cMGMqc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2de8efefb6ce7f5e4e75bdf57376a96555986841", + "rev": "3a2786eea085f040a66ecde1bc3ddc7099f6dbeb", "type": "github" }, "original": { @@ -332,11 +330,11 @@ }, "nixos": { "locked": { - "lastModified": 1689209875, - "narHash": "sha256-8AVcBV1DiszaZzHFd5iLc8HSLfxRAuqcU0QdfBEF3Ag=", + "lastModified": 1694499547, + "narHash": "sha256-R7xMz1Iia6JthWRHDn36s/E248WB1/je62ovC/dUVKI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fcc147b1e9358a8386b2c4368bd928e1f63a7df2", + "rev": "e5f018cf150e29aac26c61dac0790ea023c46b24", "type": "github" }, "original": { @@ -348,11 +346,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1686838567, - "narHash": "sha256-aqKCUD126dRlVSKV6vWuDCitfjFrZlkwNuvj5LtjRRU=", + "lastModified": 1694591211, + "narHash": "sha256-NPP7XGZH+Q5ey7nE2zGLrBrzKmLYPhj8YgsTSdhH0D4=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "429f232fe1dc398c5afea19a51aad6931ee0fb89", + "rev": "3ccd87fcdae4732fe33773cefa4375c641a057e7", "type": "github" }, "original": { @@ -377,30 +375,6 @@ "type": "github" } }, - "nvfetcher": { - "inputs": { - "flake-compat": [ - "flake-compat" - ], - "flake-utils": "flake-utils_4", - "nixpkgs": [ - "nixos" - ] - }, - "locked": { - "lastModified": 1687440270, - "narHash": "sha256-aOAXvfVn+MBSkU+xlQEiyoGpRaF6NvQdpWIhw5OH/Dc=", - "owner": "berberman", - "repo": "nvfetcher", - "rev": "44196458acc2c28c32e456c50277d6148e71e708", - "type": "github" - }, - "original": { - "owner": "berberman", - "repo": "nvfetcher", - "type": "github" - } - }, "root": { "inputs": { "agenix": "agenix", @@ -408,12 +382,12 @@ "deploy": "deploy", "digga": "digga", "flake-compat": "flake-compat", + "fork": "fork", "home": "home", "keycloak-theme-pub-solar": "keycloak-theme-pub-solar", "latest": "latest", "nixos": "nixos", "nixos-hardware": "nixos-hardware", - "nvfetcher": "nvfetcher", "triton-vmtools": "triton-vmtools" } }, @@ -447,24 +421,9 @@ "type": "github" } }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "triton-vmtools": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_4", "nixpkgs": [ "nixos" ] diff --git a/flake.nix b/flake.nix index ced6bdf3..71f94dad 100644 --- a/flake.nix +++ b/flake.nix @@ -8,6 +8,8 @@ nixos.url = "github:nixos/nixpkgs/nixos-23.05"; latest.url = "github:nixos/nixpkgs/nixos-unstable"; + fork.url = "github:teutat3s/nixpkgs/nvfetcher-fix"; + flake-compat.url = "github:edolstra/flake-compat"; flake-compat.flake = false; @@ -35,10 +37,6 @@ nixos-hardware.url = "github:nixos/nixos-hardware"; - nvfetcher.url = "github:berberman/nvfetcher"; - nvfetcher.inputs.nixpkgs.follows = "nixos"; - nvfetcher.inputs.flake-compat.follows = "flake-compat"; - triton-vmtools.url = "git+https://git.pub.solar/pub-solar/infra?ref=main&dir=vmtools"; triton-vmtools.inputs.nixpkgs.follows = "nixos"; @@ -54,7 +52,6 @@ nixos-hardware, agenix, deploy, - nvfetcher, triton-vmtools, keycloak-theme-pub-solar, ... @@ -82,6 +79,7 @@ ]; }; latest = {}; + fork = {}; }; lib = import ./lib {lib = digga.lib // nixos.lib;}; @@ -94,7 +92,6 @@ }); }) agenix.overlays.default - nvfetcher.overlays.default (import ./pkgs) ]; diff --git a/modules/docker/default.nix b/modules/docker/default.nix index ef733b45..e4558255 100644 --- a/modules/docker/default.nix +++ b/modules/docker/default.nix @@ -14,6 +14,7 @@ in { config = mkIf cfg.enable { virtualisation.docker.enable = true; + virtualisation.docker.package = pkgs.docker_24; users.users = with pkgs; pkgs.lib.setAttrByPath [psCfg.user.name] { extraGroups = ["docker"]; diff --git a/modules/graphical/network-manager-applet.service.nix b/modules/graphical/network-manager-applet.service.nix index 4252c065..a3214651 100644 --- a/modules/graphical/network-manager-applet.service.nix +++ b/modules/graphical/network-manager-applet.service.nix @@ -1,6 +1,6 @@ pkgs: { Unit = { - Description = "Lightweight Wayland notification daemon"; + Description = "Network Manager applet"; BindsTo = ["sway-session.target"]; After = ["sway-session.target"]; # ConditionEnvironment requires systemd v247 to work correctly diff --git a/modules/sway/config/config.d/custom-keybindings.conf b/modules/sway/config/config.d/custom-keybindings.conf index 1b851675..317667a0 100644 --- a/modules/sway/config/config.d/custom-keybindings.conf +++ b/modules/sway/config/config.d/custom-keybindings.conf @@ -18,9 +18,6 @@ bindsym $mod+Shift+h exec psos help bindsym $mod+F2 exec firefox -bindsym $mod+F3 exec $term -e vifm -bindsym $mod+Shift+F3 exec gksu $term -e vifm - bindsym $mod+F4 exec nautilus -w bindsym $mod+Shift+F4 exec signal-desktop --use-tray-icon diff --git a/modules/terminal-life/bash/default.nix b/modules/terminal-life/bash/default.nix index 3d0c7311..29698df0 100644 --- a/modules/terminal-life/bash/default.nix +++ b/modules/terminal-life/bash/default.nix @@ -100,8 +100,6 @@ in { mutt = "neomutt"; ls = "exa"; la = "exa --group-directories-first -lag"; - fm = "vifm ."; - vifm = "vifm ."; wget = "wget --hsts-file=$XDG_CACHE_HOME/wget-hsts"; irssi = "irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_DATA_HOME/irssi"; drone = "DRONE_TOKEN=$(secret-tool lookup drone token) drone"; @@ -109,5 +107,6 @@ in { # fix nixos-option nixos-option = "nixos-option -I nixpkgs=${self}/lib/compat"; myip = "dig +short myip.opendns.com @208.67.222.222 2>&1"; + nnn = "nnn -d -e -H -r"; }; } diff --git a/modules/terminal-life/default.nix b/modules/terminal-life/default.nix index b83c5e79..8d03f041 100644 --- a/modules/terminal-life/default.nix +++ b/modules/terminal-life/default.nix @@ -52,10 +52,15 @@ in { gh glow jump - nnn + (nnn.overrideAttrs (o: { + patches = + (o.patches or []) + ++ [ + ./nnn/0001-feat-use-wasd-keybindings-for-jkli.patch + ]; + })) powerline silver-searcher - vifm watson ]; diff --git a/modules/terminal-life/nnn/0001-feat-use-wasd-keybindings-for-jkli.patch b/modules/terminal-life/nnn/0001-feat-use-wasd-keybindings-for-jkli.patch new file mode 100644 index 00000000..f06cb042 --- /dev/null +++ b/modules/terminal-life/nnn/0001-feat-use-wasd-keybindings-for-jkli.patch @@ -0,0 +1,38 @@ +From a81ee68923412c0fb8fab46f2f918a7ec865b384 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Benjamin=20B=C3=A4dorf?= +Date: Sun, 9 Jul 2023 04:19:51 +0200 +Subject: [PATCH] feat: use wasd keybindings for jkli + +--- + src/nnn.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/nnn.h b/src/nnn.h +index d476ddd2..5f106987 100644 +--- a/src/nnn.h ++++ b/src/nnn.h +@@ -131,7 +131,7 @@ struct key { + static struct key bindings[] = { + /* Back */ + { KEY_LEFT, SEL_BACK }, +- { 'h', SEL_BACK }, ++ { 'j', SEL_BACK }, + /* Inside or select */ + { KEY_ENTER, SEL_OPEN }, + { '\r', SEL_OPEN }, +@@ -139,10 +139,10 @@ static struct key bindings[] = { + { KEY_RIGHT, SEL_NAV_IN }, + { 'l', SEL_NAV_IN }, + /* Next */ +- { 'j', SEL_NEXT }, ++ { 'k', SEL_NEXT }, + { KEY_DOWN, SEL_NEXT }, + /* Previous */ +- { 'k', SEL_PREV }, ++ { 'i', SEL_PREV }, + { KEY_UP, SEL_PREV }, + /* Page down */ + { KEY_NPAGE, SEL_PGDN }, +-- +2.40.1 + diff --git a/modules/terminal-life/nvim/default.nix b/modules/terminal-life/nvim/default.nix index a2a2171a..87e2ae09 100644 --- a/modules/terminal-life/nvim/default.nix +++ b/modules/terminal-life/nvim/default.nix @@ -47,62 +47,130 @@ in { plugins = with pkgs.vimPlugins; [] ++ lib.optionals (!cfg.lite) [ + (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ + p.ini + p.json + p.json5 + p.markdown + p.nix + p.toml + p.yaml + + p.css + p.graphql + p.html + p.javascript + p.scss + p.tsx + p.typescript + p.vue + + p.c + p.cpp + p.go + p.gomod + p.gosum + p.haskell + p.lua + p.php + p.python + p.ruby + p.rust + + p.vim + p.vimdoc + + p.passwd + p.sql + + p.diff + p.gitcommit + p.gitignore + p.git_config + p.gitattributes + p.git_rebase + + p.bash + p.dockerfile + p.make + p.ninja + p.terraform + ])) + + # Dependencies for nvim-lspconfig nvim-cmp cmp-nvim-lsp cmp_luasnip luasnip + # Quickstart configs for neovim LSP lsp_extensions-nvim nvim-lspconfig + # Collaborative editing in Neovim using built-in capabilities instant-nvim-nvfetcher + # Search functionality behind :Ack ack-vim + + # The status bar in the bottom of the screen with the mode indication and file location vim-airline + + # Automatically load editorconfig files in repos to configure nvim settings editorconfig-vim + + # File browser. Use n to access nnn-vim + + # Highlight characters when using f, F, t, and T quick-scope + + # Get sudo in vim; :SudaWrite suda-vim - syntastic - vim-gutentags - vim-vinegar + + # Undo history etc. per project vim-workspace-nvfetcher + # JSON schemas + SchemaStore-nvim + + # Work with tags files + vim-gutentags + + # Neovim colorschemes / themes sonokai vim-hybrid-material vim-airline-themes vim-apprentice-nvfetcher + # Git integrations + # A Git wrapper so awesome, it should be illegal fugitive + # Shows git diff markers in the sign column vim-gitgutter + # GitHub extension for fugitive vim-rhubarb + # Ease your git workflow within Vim vimagit-nvfetcher + # FZF fuzzy finder fzf-vim fzfWrapper + # Make the yanked region apparent vim-highlightedyank + # :Beautify Code beautifier vim-beautify-nvfetcher - vim-surround + # Unload, delete or wipe a buffer without closing the window vim-bufkill + # Defaults everyone can agree on vim-sensible - ansible-vim + # emmet for vim: http://emmet.io/ emmet-vim - rust-vim + # Caddyfile syntax support for Vim vim-caddyfile-nvfetcher - vim-go - vim-javascript - vim-json - SchemaStore-nvim - vim-markdown - vim-nix - vim-nixhash - vim-ruby - vim-toml - vim-vue - yats-vim ]; extraConfig = builtins.concatStringsSep "\n" [ diff --git a/modules/terminal-life/nvim/init.vim b/modules/terminal-life/nvim/init.vim index 4ce8a197..5b01f80f 100644 --- a/modules/terminal-life/nvim/init.vim +++ b/modules/terminal-life/nvim/init.vim @@ -101,3 +101,6 @@ if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif +nmap - :NnnPicker % +nmap n :NnnPicker % +nmap N :NnnPicker diff --git a/modules/terminal-life/nvim/plugins.vim b/modules/terminal-life/nvim/plugins.vim index 7678c476..85891b16 100644 --- a/modules/terminal-life/nvim/plugins.vim +++ b/modules/terminal-life/nvim/plugins.vim @@ -83,3 +83,5 @@ if executable('ag') let g:ackprg = 'ag --vimgrep' endif +" nnn +let g:nnn#command = 'nnn -d -e -H -r' diff --git a/overlays/overrides.nix b/overlays/overrides.nix index 37a8e0e8..40fe2f70 100644 --- a/overlays/overrides.nix +++ b/overlays/overrides.nix @@ -4,6 +4,12 @@ channels: final: prev: { inherit (channels.latest) nixd + docker_24 + ; + + inherit + (channels.fork) + nvfetcher ; haskellPackages = diff --git a/profiles/base-user/.config/git/gitmessage.nix b/profiles/base-user/.config/git/gitmessage.nix index 839ca0dc..223bfc3e 100644 --- a/profiles/base-user/.config/git/gitmessage.nix +++ b/profiles/base-user/.config/git/gitmessage.nix @@ -6,19 +6,27 @@ user = config.pub-solar.user; xdg = config.home-manager.users."${user.name}".xdg; in '' - # Title: Summary, imperative, start upper case, don't end with a period - # No more than 50 chars. #### 50 chars is here: # - # +# What happened? +# +# fix feat build chore ci docs style refactor perf test +# +# type!(optional scope): --------------# +# - # ^ Remember ending with an extra blank line - # Body: Explain *what* and *why* (not *how*). Include issue number. - # Wrap at 72 chars. ################################## which is here: # - # +# ^\n +# What exactly was done and why? --------------------------------------# +# - # ^ Remember ending with an extra blank line - # At the end: Include Co-authored-by for all contributors. - # - # Co-authored-by: Example Name +# ^\n +# +# Any issue numbers or links? +# +# Ref: #123 + + +# ^\n +# +# Co-authored-by: Example Name '' diff --git a/profiles/base-user/.config/vifm/colors/base16.vifm b/profiles/base-user/.config/vifm/colors/base16.vifm deleted file mode 100644 index 70ae0ee9..00000000 --- a/profiles/base-user/.config/vifm/colors/base16.vifm +++ /dev/null @@ -1,26 +0,0 @@ -" Reset all styles first -highlight clear - -highlight Border cterm=none ctermfg=235 ctermbg=0 - -highlight TopLine cterm=none ctermfg=20 ctermbg=18 -highlight TopLineSel cterm=none ctermfg=1 ctermbg=18 - -highlight Win cterm=none ctermfg=188 ctermbg=0 -highlight Directory cterm=bold ctermfg=4 ctermbg=0 -highlight CurrLine cterm=none ctermfg=3 ctermbg=19 -highlight OtherLine cterm=none ctermfg=3 ctermbg=19 -highlight Selected cterm=none ctermfg=5 ctermbg=19 - -highlight JobLine cterm=bold ctermfg=0 ctermbg=18 -highlight StatusLine cterm=bold ctermfg=0 ctermbg=18 -highlight ErrorMsg cterm=bold ctermfg=0 ctermbg=18 -highlight WildMenu cterm=bold ctermfg=0 ctermbg=18 -highlight CmdLine cterm=none ctermfg=20 ctermbg=0 - -highlight Executable cterm=bold ctermfg=2 ctermbg=0 -highlight Link cterm=none ctermfg=9 ctermbg=0 -highlight BrokenLink cterm=none ctermfg=1 ctermbg=0 -highlight Device cterm=none ctermfg=228 ctermbg=0 -highlight Fifo cterm=none ctermfg=109 ctermbg=0 -highlight Socket cterm=none ctermfg=110 ctermbg=0 diff --git a/profiles/base-user/.config/vifm/vifmrc b/profiles/base-user/.config/vifm/vifmrc deleted file mode 100644 index ea4862aa..00000000 --- a/profiles/base-user/.config/vifm/vifmrc +++ /dev/null @@ -1,495 +0,0 @@ -" vim: filetype=vifm : -" Sample configuration file for vifm (last updated: 2 June, 2019) -" You can edit this file by hand. -" The " character at the beginning of a line comments out the line. -" Blank lines are ignored. -" The basic format for each item is shown with an example. - -" ------------------------------------------------------------------------------ - -" Command used to edit files in various contexts. The default is vim. -" If you would like to use another vi clone such as Elvis or Vile -" you will need to change this setting. - -set vicmd=nvim -" set vicmd=elvis\ -G\ termcap -" set vicmd=vile - -" This makes vifm perform file operations on its own instead of relying on -" standard utilities like `cp`. While using `cp` and alike is a more universal -" solution, it's also much slower when processing large amounts of files and -" doesn't support progress measuring. - -set syscalls - -" Trash Directory -" The default is to move files that are deleted with dd or :d to -" the trash directory. If you change this you will not be able to move -" files by deleting them and then using p to put the file in the new location. -" I recommend not changing this until you are familiar with vifm. -" This probably shouldn't be an option. - -set trash - -" This is how many directories to store in the directory history. - -set history=100 - -" Automatically resolve symbolic links on l or Enter. - -set nofollowlinks - -" With this option turned on you can run partially entered commands with -" unambiguous beginning using :! (e.g. :!Te instead of :!Terminal or :!Te). - -" set fastrun - -" Natural sort of (version) numbers within text. - -set sortnumbers - -" Maximum number of changes that can be undone. - -set undolevels=100 - -" Use Vim's format of help file (has highlighting and "hyperlinks"). -" If you would rather use a plain text help file set novimhelp. - -set vimhelp - -" If you would like to run an executable file when you -" press return on the file name set this. - -set norunexec - -" Selected color scheme - -colorscheme base16 - -" Format for displaying time in file list. For example: -" TIME_STAMP_FORMAT=%m/%d-%H:%M -" See man date or man strftime for details. - -set timefmt=%m/%d\ %H:%M - -" Show list of matches on tab completion in command-line mode - -set wildmenu - -" Display completions in a form of popup with descriptions of the matches - -set wildstyle=popup - -" Display suggestions in normal, visual and view modes for keys, marks and -" registers (at most 5 files). In other view, when available. - -set suggestoptions=normal,visual,view,otherpane,keys,marks,registers - -" Ignore case in search patterns unless it contains at least one uppercase -" letter - -set ignorecase -set smartcase - -" Don't highlight search results automatically - -set nohlsearch - -" Use increment searching (search while typing) -set incsearch - -" Try to leave some space from cursor to upper/lower border in lists - -set scrolloff=4 - -" Don't do too many requests to slow file systems - -if !has('win') - set slowfs=curlftpfs -endif - -" Set custom status line look - -set statusline=" Hint: %z%= %A %10u:%-7g %15s %20d " - -" ------------------------------------------------------------------------------ - -" :mark mark /full/directory/path [filename] - -mark b ~/bin/ -mark h ~/ - -" ------------------------------------------------------------------------------ - -" :com[mand][!] command_name action -" The following macros can be used in a command -" %a is replaced with the user arguments. -" %c the current file under the cursor. -" %C the current file under the cursor in the other directory. -" %f the current selected file, or files. -" %F the current selected file, or files in the other directory. -" %b same as %f %F. -" %d the current directory name. -" %D the other window directory name. -" %m run the command in a menu window - -command! df df -h %m 2> /dev/null -command! diff vim -d %f %F -command! zip zip -r %f.zip %f -command! unzip unzip %c %c.extracted -command! run !! ./%f -command! make !!make %a -command! mkcd :mkdir %a | cd %a -command! vgrep vim "+grep %a" -command! reload :write | restart - -" ------------------------------------------------------------------------------ - -" The file type is for the default programs to be used with -" a file extension. -" :filetype pattern1,pattern2 defaultprogram,program2 -" :fileviewer pattern1,pattern2 consoleviewer -" The other programs for the file type can be accessed with the :file command -" The command macros %f, %F, %d, %F may be used in the commands. -" The %a macro is ignored. To use a % you must put %%. - -" For automated FUSE mounts, you must register an extension with :file[x]type -" in one of following formats: -" -" :filetype extensions FUSE_MOUNT|some_mount_command using %SOURCE_FILE and %DESTINATION_DIR variables -" %SOURCE_FILE and %DESTINATION_DIR are filled in by vifm at runtime. -" A sample line might look like this: -" :filetype *.zip,*.jar,*.war,*.ear FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR -" -" :filetype extensions FUSE_MOUNT2|some_mount_command using %PARAM and %DESTINATION_DIR variables -" %PARAM and %DESTINATION_DIR are filled in by vifm at runtime. -" A sample line might look like this: -" :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR -" %PARAM value is filled from the first line of file (whole line). -" Example first line for SshMount filetype: root@127.0.0.1:/ -" -" You can also add %CLEAR if you want to clear screen before running FUSE -" program. - -" Pdf -filextype *.pdf epdfview %c %i &, apvlv %c, xpdf %c -fileviewer *.pdf - \ vifmimg pdfpreview %px %py %pw %ph %c - \ %pc - \ vifmimg clear - " \ pdftotext -nopgbrk %c - - -" PostScript -filextype *.ps,*.eps,*.ps.gz - \ {View in zathura} - \ zathura %f, - \ {View in gv} - \ gv %c %i &, - -" Djvu -filextype *.djvu - \ {View in zathura} - \ zathura %f, - \ {View in apvlv} - \ apvlv %f, - -" Audio -filetype *.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus - \ {Play using vlc} - \ vlc %c, - \ {Play using ffplay} - \ ffplay -nodisp -autoexit %c, -fileviewer *.mp3 mp3info -fileviewer *.flac soxi - -" Video -filextype *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob, - \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx, - \*.as[fx] - \ {View using vlc} - \ vlc %f, - \ {View using ffplay} - \ ffplay -fs -autoexit %f, -fileviewer *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob, - \*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx, - \*.as[fx] - \ vifmimg videopreview %px %py %pw %ph %c - \ %pc - \ vifmimg clear - " \ ffprobe -pretty %c 2>&1 - -" Web -filextype *.html,*.htm - \ {Open with vim} - \ nvim %f, - \ {Open with firefox} - \ firefox %f &, -filetype *.html,*.htm links, lynx - -" Object -filetype *.o nm %f | less - -" Man page -filetype *.[1-8] man ./%c -fileviewer *.[1-8] man ./%c | col -b - -" Images -filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm - \ {View in viewnior} - \ viewnior %f, -fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.xpm - \ vifmimg draw %px %py %pw %ph %c - \ %pc - \ vifmimg clear - " Get w3m image previews inside vifm - " \ imgt %px %py %pw %ph %c - " \ %pc - " \ imgc %px %py %pw %ph NOT NEEDED IN XTERM -fileviewer *.gif - \ vifmimg gifpreview %px %py %pw %ph %c - \ %pc - \ vifmimg clear - -" OpenRaster -filextype *.ora - \ {Edit in MyPaint} - \ mypaint %f, - -" Mindmap -filextype *.vym - \ {Open with VYM} - \ vym %f &, - -" MD5 -filetype *.md5 - \ {Check MD5 hash sum} - \ md5sum -c %f %S, - -" SHA1 -filetype *.sha1 - \ {Check SHA1 hash sum} - \ sha1sum -c %f %S, - -" SHA256 -filetype *.sha256 - \ {Check SHA256 hash sum} - \ sha256sum -c %f %S, - -" SHA512 -filetype *.sha512 - \ {Check SHA512 hash sum} - \ sha512sum -c %f %S, - -" GPG signature -filetype *.asc - \ {Check signature} - \ !!gpg --verify %c, - -" Torrent -filetype *.torrent ktorrent %f & -fileviewer *.torrent dumptorrent -v %c - -" FuseZipMount -filetype *.zip,*.jar,*.war,*.ear,*.oxt,*.apkg - \ {Mount with fuse-zip} - \ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR, - \ {View contents} - \ zip -sf %c | less, - \ {Extract here} - \ tar -xf %c, -fileviewer *.zip,*.jar,*.war,*.ear,*.oxt zip -sf %c - -" ArchiveMount -filetype *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz - \ {Mount with archivemount} - \ FUSE_MOUNT|archivemount %SOURCE_FILE %DESTINATION_DIR, -fileviewer *.tgz,*.tar.gz tar -tzf %c -fileviewer *.tar.bz2,*.tbz2 tar -tjf %c -fileviewer *.tar.txz,*.txz xz --list %c -fileviewer *.tar tar -tf %c - -" Rar2FsMount and rar archives -filetype *.rar - \ {Mount with rar2fs} - \ FUSE_MOUNT|rar2fs %SOURCE_FILE %DESTINATION_DIR, -fileviewer *.rar unrar v %c - -" IsoMount -filetype *.iso - \ {Mount with fuseiso} - \ FUSE_MOUNT|fuseiso %SOURCE_FILE %DESTINATION_DIR, - -" SshMount -filetype *.ssh - \ {Mount with sshfs} - \ FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR %FOREGROUND, - -" FtpMount -filetype *.ftp - \ {Mount with curlftpfs} - \ FUSE_MOUNT2|curlftpfs -o ftp_port=-,,disable_eprt %PARAM %DESTINATION_DIR %FOREGROUND, - -" Fuse7z and 7z archives -filetype *.7z - \ {Mount with fuse-7z} - \ FUSE_MOUNT|fuse-7z %SOURCE_FILE %DESTINATION_DIR, -fileviewer *.7z 7z l %c - -" Office files -filextype *.odt,*.doc,*.docx,*.xls,*.xlsx,*.odp,*.pptx libreoffice %f & -fileviewer *.doc catdoc %c -fileviewer *.docx docx2txt.pl %f - - -" TuDu files -filetype *.tudu tudu -f %c - -" Qt projects -filextype *.pro qtcreator %f & - -" All others -filetype *.ts,*.js,*.css,*.sass,*.scss,*.go,*.rs,*.py,*.html,*.xhtml,*.json,*.jsx,*.tsx,*.vue,*.svelte,*.sql - \ {Open in editor} - \ nvim %c, -fileviewer *.ts,*.js,*.css,*.sass,*.scss,*.go,*.rs,*.py,*.html,*.xhtml,*.json,*.jsx,*.tsx,*.vue,*.svelte,*.sql bat %c - -" Directories -filextype */ - \ {View in thunar} - \ Thunar %f &, - -" Syntax highlighting in preview -" -" Explicitly set highlight type for some extensions -" -" 256-color terminal -" fileviewer *.[ch],*.[ch]pp highlight -O xterm256 -s dante --syntax c %c -" fileviewer Makefile,Makefile.* highlight -O xterm256 -s dante --syntax make %c -" -" 16-color terminal -" fileviewer *.c,*.h highlight -O ansi -s dante %c -" -" Or leave it for automatic detection -" -" fileviewer *[^/] pygmentize -O style=monokai -f console256 -g - -" Displaying pictures in terminal -" -" fileviewer *.jpg,*.png shellpic %c - -" Open all other files with default system programs (you can also remove all -" :file[x]type commands above to ensure they don't interfere with system-wide -" settings). By default all unknown files are opened with 'vi[x]cmd' -" uncommenting one of lines below will result in ignoring 'vi[x]cmd' option -" for unknown file types. -" For *nix: -" filetype * xdg-open -" For OS X: -" filetype * open -" For Windows: -" filetype * start, explorer - -" ------------------------------------------------------------------------------ - -" What should be saved automatically between vifm sessions. Drop "savedirs" -" value if you don't want vifm to remember last visited directories for you. -set vifminfo=dhistory,savedirs,chistory,state,tui,shistory, - \phistory,fhistory,dirstack,registers,bookmarks,bmarks - -" ------------------------------------------------------------------------------ - -" Examples of configuring both panels - -" Customize view columns a bit (enable ellipsis for truncated file names) -" -" set viewcolumns=-{name}..,6{}. - -" Filter-out build and temporary files -" -" filter! /^.*\.(lo|o|d|class|py[co])$|.*~$/ - -" ------------------------------------------------------------------------------ - -" Sample mappings - -" Start shell in current directory -nnoremap s :shell - -" Display sorting dialog -nnoremap S :sort - -" Toggle visibility of preview window -nnoremap w :view -vnoremap w :viewgv - -" Open file in existing instance of nvim -nnoremap o :!vim %f -" Open file in new instance of vim -nnoremap O :!vim %f - -" Open file in the background using its default program -nnoremap gb :file &l - -" Interaction with system clipboard -if has('win') - " Yank current directory path to Windows clipboard with forward slashes - nnoremap yp :!echo %"d:gs!\!/! %i | clip - " Yank path to current file to Windows clipboard with forward slashes - nnoremap yf :!echo %"c:gs!\!/! %i | clip -elseif executable('xclip') - " Yank current directory path into the clipboard - nnoremap yd :!echo %d | xclip %i - " Yank current file path into the clipboard - nnoremap yf :!echo %c:p | xclip %i -elseif executable('xsel') - " Yank current directory path into primary and selection clipboards - nnoremap yd :!echo -n %d | xsel --input --primary %i && - \ echo -n %d | xsel --clipboard --input %i - " Yank current file path into into primary and selection clipboards - nnoremap yf :!echo -n %c:p | xsel --input --primary %i && - \ echo -n %c:p | xsel --clipboard --input %i -endif - -" Mappings for faster renaming -nnoremap I cw -nnoremap cc cw -nnoremap A cw - -" Open console in current directory -nnoremap ,t :!xterm & - -" Open editor to edit vifmrc and apply settings after returning to vifm -nnoremap ,c :write | edit $MYVIFMRC | restart -" Open gvim to edit vifmrc -nnoremap ,C :!gvim --remote-tab-silent $MYVIFMRC & - -" Toggle wrap setting on ,w key -nnoremap ,w :set wrap! - -" Example of standard two-panel file managers mappings -nnoremap :!less %f -nnoremap :edit -nnoremap :copy -nnoremap :move -nnoremap :mkdir -nnoremap :delete - -" Arrow remapping -map i -map j -map k -noremap h i - -vnoremap K L -vnoremap I H -vnoremap H I - -nnoremap K L -nnoremap I H -nnoremap H I - -" Escape overwrite -cmap jj - -" fzf -command! FZFfind :set noquickview | :execute 'goto "'.system('fd --hidden --exclude .git --exclude node_modules | fzf --preview "ls -lhA --group-directories-first --color=always {}" --preview-window wrap 2>/dev/tty ').'"%IU' | redraw -nnoremap :FZFfind diff --git a/profiles/base-user/home.nix b/profiles/base-user/home.nix index 52ee6fd5..5b5b5877 100644 --- a/profiles/base-user/home.nix +++ b/profiles/base-user/home.nix @@ -61,8 +61,6 @@ in { xdg.configFile."user-dirs.locale".source = ./.config/user-dirs.locale; xdg.configFile."xsettingsd/xsettingsd.conf".source = ./.config/xsettingsd/xsettingsd.conf; xdg.configFile."mako/config".source = ./.config/mako/config; - xdg.configFile."vifm/vifmrc".source = ./.config/vifm/vifmrc; - xdg.configFile."vifm/colors/base16.vifm".source = ./.config/vifm/colors/base16.vifm; xdg.configFile."libinput-gestures.conf".source = ./.config/libinput-gestures.conf; xdg.configFile."waybar/config".source = ./.config/waybar/config; xdg.configFile."waybar/style.css".source = ./.config/waybar/style.css; diff --git a/profiles/base-user/session-variables.nix b/profiles/base-user/session-variables.nix index ea602d67..17d20e1c 100644 --- a/profiles/base-user/session-variables.nix +++ b/profiles/base-user/session-variables.nix @@ -87,6 +87,23 @@ # FZF shell history widget default colors FZF_DEFAULT_OPTS = lib.mkForce "--color=bg+:#2d2a2e,bg:#1a181a,spinner:#ef9062,hl:#7accd7 --color=fg:#d3d1d4,header:#7accd7,info:#e5c463,pointer:#ef9062 --color=marker:#ef9062,fg+:#d3d1d4,prompt:#e5c463,hl+:#7accd7"; + + # nnn theme colors + NNN_FCOLORS = let + BLK = "04"; + CHR = "04"; + DIR = "04"; + EXE = "02"; + REG = "00"; + HARDLINK = "01"; + SYMLINK = "01"; + MISSING = "01"; + ORPHAN = "07"; + FIFO = "05"; + SOCK = "05"; + OTHER = "02"; + in + BLK + CHR + DIR + EXE + REG + HARDLINK + SYMLINK + MISSING + ORPHAN + FIFO + SOCK + OTHER; }; envListNames = lib.attrsets.mapAttrsToList (name: value: name) variables;