summaryrefslogtreecommitdiff
path: root/home
diff options
context:
space:
mode:
authorLinnnus <[email protected]>2024-12-21 15:47:33 +0100
committerLinnnus <[email protected]>2024-12-21 16:19:04 +0100
commit8353554315564b89dfe27d5130080ed04a0a65ad (patch)
tree896de88b6ea2701692b3ffe977c23947a786318e /home
parent9b7ed17b27157a25e57a6e38be3bcfeaa70ec9e8 (diff)
Move to a profile-based configuration where common
This patch makes it so common configuration is now located in shared/ and each host basically just becomes a bunch of import statements. The exception here is host-specific configuration like the `*.linus.onl` that live inside `hosts/ahmed/`. Specifically I have: - moved common configuration `shared/{nixos,home-manager,nix-darwin}`. - moved `hosts/common.nix` to `shared/nixos/common-{nix,shell}-settings.nix`. - split `hosts/muhammed/{dev-utils,neovim}` into per-language configuration. This patch was done in preparation for the arrival of a new host, which will need to share a lot of configuration with Muhammed.
Diffstat (limited to 'home')
-rw-r--r--home/default.nix30
-rw-r--r--home/git/aliases.nix25
-rw-r--r--home/git/default.nix41
-rw-r--r--home/git/ignore.nix37
-rw-r--r--home/neovim/completion.nix47
-rw-r--r--home/neovim/default.nix27
-rw-r--r--home/neovim/editing-plugins.nix26
-rw-r--r--home/neovim/init.vim274
-rw-r--r--home/networking-utils/default.nix10
-rw-r--r--home/shell-utils/default.nix34
-rw-r--r--home/zsh/default.nix31
-rw-r--r--home/zsh/editing.nix43
-rw-r--r--home/zsh/plugins.nix47
13 files changed, 0 insertions, 672 deletions
diff --git a/home/default.nix b/home/default.nix
deleted file mode 100644
index fde81b7..0000000
--- a/home/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- flakeInputs,
- flakeOutputs,
- metadata,
- ...
-}: {
- # Use the flake input pkgs so Home Manager configuration can share overlays
- # etc. with the rest of the configuration.
- home-manager.useGlobalPkgs = true;
-
- # Pass special arguments from flake.nix further down the chain. I really hate
- # this split module system.
- home-manager.extraSpecialArgs = {inherit flakeInputs flakeOutputs metadata;};
-
- # OKAY FUCK THIS SHIT. THERE IS ONE USER. IT IS ME. LINUS. I WILL ADD
- # MULTIUSER SUPPORT IF IT EVER BECOMES A REQUIREMENT.
- home-manager.users.linus = {
- imports =
- [
- ./neovim
- ./zsh
- ./git
- ./networking-utils
- ./shell-utils
- ]
- ++ builtins.attrValues flakeOutputs.homeModules;
-
- xdg.enable = true;
- };
-}
diff --git a/home/git/aliases.nix b/home/git/aliases.nix
deleted file mode 100644
index 03e586c..0000000
--- a/home/git/aliases.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-# This module defines my personal git aliases. Some of these are
-# pseudo-subcommands which are easier to remember while others simply save me
-# some keystrokes.
-{...}: {
- programs.git.aliases = {
- unstage = "restore --staged"; # remove file from staging area
- undo = "reset --soft HEAD~"; # undo last commit
- };
-
- home.shellAliases = {
- gs = "git status";
- gd = "git diff --";
- gl = "git log --oneline HEAD~10..HEAD --";
-
- gc = "git commit";
- gcp = "git commit --patch";
- gf = "git commit --amend --no-edit --";
- gfp = "git commit --amend --no-edit --patch --";
-
- ga = "git add --";
- gan = "git add -N";
- gap = "git add --patch";
- gu = "git unstage";
- };
-}
diff --git a/home/git/default.nix b/home/git/default.nix
deleted file mode 100644
index a761484..0000000
--- a/home/git/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- pkgs,
- lib,
- ...
-}: let
- inherit (lib) optional;
- inherit (pkgs.stdenv.hostPlatform) isDarwin;
-in {
- imports = [./ignore.nix ./aliases.nix];
-
- programs.git = {
- enable = true;
-
- # Set privacy-respecting user information.
- userName = "Linnnus";
- userEmail = "[email protected]";
-
- extraConfig = {
- init.defaultBranch = "master";
-
- help.autoCorrect = "prompt";
-
- # Make sure we don't accidentally update submodules with changes that are only available locally.
- # See: https://git-scm.com/book/en/v2/Git-Tools-Submodules
- push.recurseSubmodules = "check";
-
- # It seems like a de facto standard to have a file with this name in the
- # project root containing all the commits that should be ignored when
- # running `git blame`.
- blame.ignoreRevsFile = ".git-blame-ignore-revs";
-
- credential = {
- "https://github.com/" = {
- username = "linnnus";
- helper = "${pkgs.gh}/bin/gh auth git-credential";
- };
- helper = (optional isDarwin "osxkeychain") ++ ["cache"];
- };
- };
- };
-}
diff --git a/home/git/ignore.nix b/home/git/ignore.nix
deleted file mode 100644
index 8d1da2f..0000000
--- a/home/git/ignore.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-# This module defines the contents of `~/.config/git/ignore`. It fetches the
-# templates for different gitignores and compiles them into one.
-{
- pkgs,
- lib,
- ...
-}: let
- gitignore = ignores:
- pkgs.stdenv.mkDerivation {
- name = (lib.concatStringsSep "+" ignores) + ".gitignore";
-
- src = pkgs.fetchFromGitHub {
- owner = "toptal";
- repo = "gitignore";
- rev = "7e72ecd8af69b39c25aedc645117f0dc261cedfd";
- hash = "sha256-Ln3w6wx+pX4UFLY2gGJGax2/nxgp/Svrn0uctSIRdEc=";
- };
-
- inherit ignores;
- buildPhase = ''
- for i in $ignores; do
- cat ./templates/$i.gitignore >>$out
- done
- '';
- };
-
- targets =
- [
- "Node"
- "Deno"
- "C"
- ]
- ++ (lib.optional pkgs.stdenv.isDarwin "MacOS")
- ++ (lib.optional pkgs.stdenv.isLinux "Linux");
-in {
- xdg.configFile."git/ignore".source = gitignore targets;
-}
diff --git a/home/neovim/completion.nix b/home/neovim/completion.nix
deleted file mode 100644
index 3776674..0000000
--- a/home/neovim/completion.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-# This module sets up auto completion for Neovim.
-{pkgs, ...}: {
- programs.neovim.plugins = with pkgs.vimPlugins; [
- # This is the actual completion engine.
- {
- plugin = nvim-cmp;
- type = "lua";
- config = ''
- local cmp = require("cmp")
-
- cmp.setup({
- mapping = cmp.mapping.preset.insert({
- ["<C-b>"] = cmp.mapping.scroll_docs(-4),
- ["<C-f>"] = cmp.mapping.scroll_docs(4),
- ["<C-j>"] = cmp.mapping.select_next_item(),
- ["<C-k>"] = cmp.mapping.select_prev_item(),
- ["<C-Space>"] = cmp.mapping.complete(),
- ["<C-e>"] = cmp.mapping.abort(),
- ["<Tab>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
- }),
- sources = cmp.config.sources({
- { name = "nvim_lsp" },
- { name = "calc" },
- { name = "path" },
- { name = "buffer" },
- }),
- -- disable completion in comments
- enabled = function()
- local context = require("cmp.config.context")
- -- keep command mode completion enabled when cursor is in a comment
- if vim.api.nvim_get_mode().mode == "c" then
- return true
- else
- return not context.in_treesitter_capture("comment")
- and not context.in_syntax_group("Comment")
- end
- end
- })
- '';
- }
- # The following are plugins for the... completion plugin.
- cmp-nvim-lsp
- cmp-calc
- cmp-buffer
- cmp-path
- ];
-}
diff --git a/home/neovim/default.nix b/home/neovim/default.nix
deleted file mode 100644
index f5ace73..0000000
--- a/home/neovim/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-# This file contains the HM configuration options for Neovim.
-{...}: {
- imports = [
- ./completion.nix
- ./editing-plugins.nix
- ];
-
- programs.neovim = {
- enable = true;
-
- # Import my existing config. I've been working on this for years and when
- # my enthusiasm for Nix eventually dies off, I want to take it with me.
- extraConfig = builtins.readFile ./init.vim;
-
- # Typing `vi`, `vim`, or `vimdiff` will also run neovim.
- viAlias = true;
- vimAlias = true;
- vimdiffAlias = true;
- };
-
- # Set Neovim as the default editor.
- home.sessionVariables.EDITOR = "nvim";
- home.sessionVariables.VISUAL = "nvim";
-
- # Use neovim as man pager.
- home.sessionVariables.MANPAGER = "nvim +Man!";
-}
diff --git a/home/neovim/editing-plugins.nix b/home/neovim/editing-plugins.nix
deleted file mode 100644
index 23c7d63..0000000
--- a/home/neovim/editing-plugins.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-# This module sets up and configures various miscellaneous plugins.
-# TODO: I fear this file will become the utils.lua of my Neovim configuration. Remove it!
-{pkgs, ...}: {
- programs.neovim.plugins = [
- {
- plugin = pkgs.vimPlugins.vim-localvimrc;
- type = "viml";
- config = ''
- let g:localvimrc_persistent = 1
- let g:localvimrc_name = [ "local.vim", "editors/local.vim" ]
- '';
- }
- {
- plugin = pkgs.vimPlugins.vim-sneak;
- type = "viml";
- config = ''
- let g:sneak#s_next = 1
- let g:sneak#use_ic_scs = 1
- map f <Plug>Sneak_f
- map F <Plug>Sneak_F
- map t <Plug>Sneak_t
- map T <Plug>Sneak_T
- '';
- }
- ];
-}
diff --git a/home/neovim/init.vim b/home/neovim/init.vim
deleted file mode 100644
index eeb6920..0000000
--- a/home/neovim/init.vim
+++ /dev/null
@@ -1,274 +0,0 @@
-" Settings
-"""""""""""""""""""""""""""
-
-" Leave boomer mode
-set nocompatible
-
-set history=1000
-
-" Backspace in insert mode
-set backspace=indent,eol,start
-
-" Hide buffer when abandoned (you can gd away, etc)
-set hid
-
-" Searching
-" NOTE: ignorecase and smartcase must be used together (see :h 'smartcase')
-set incsearch gdefault ignorecase smartcase nohlsearch
-
-" Only auto-continue comments when i_<cr> is pressed (not n_o)
-" Must be set after :filetype-plugin-on
-filetype plugin indent on
-au FileType * setlocal fo-=o fo+=r
-
-" Enable syntax highlighting
-syn on
-
-" Colorscheme
-" au VimEnter * ++nested colorscheme ansi_linus
-
-" Persistent undo
-set undofile
-
-" Give me some thinking time, jesus!
-set timeout timeoutlen=2000
-
-" Line numbers
-set number relativenumber
-
-" Improve macro performance
-set lazyredraw
-
-" Show matching brackets
-set showmatch
-set matchtime=2
-
-set listchars=tab:>-,eol:$,space:.,trail:@,nbsp:%
-
-" Enable mouse input for all modes but visual.
-"
-" I disable mouse in visual mode so I can select text in the terminal using
-" the mouse. This is useful when copying text from a remote instance of vim
-" SSH session where "* doesn't work.
-set mouse=nicr
-
-" sussy sus the sussy sus
-set nowrap
-
-" Mappings
-"""""""""""""""""""""""""""
-
-let g:mapleader = "\<space>"
-let g:maplocalleader = "\<space>"
-
-" Some keys are hard to press with the Danish layout. Luckily, we have some
-" spare keys! Note that ctrl and esc are swapped at the OS level.
-nnoremap æ $
-nnoremap Æ 0
-
-" Switching windows
-" TODO: make this work with iTerm2 panes
-" nnoremap <c-h> <c-w><c-h>
-" nnoremap <c-j> <c-w><c-j>
-" nnoremap <c-k> <c-w><c-k>
-" nnoremap <c-l> <c-w><c-l>
-" tnoremap <c-h> <c-\><c-n><c-w><c-h>
-" tnoremap <c-j> <c-\><c-n><c-w><c-j>
-" tnoremap <c-k> <c-\><c-n><c-w><c-k>
-" tnoremap <c-l> <c-\><c-n><c-w><c-l>
-
-" Resize windows
-nnoremap + <c-w>+
-nnoremap - <c-w>-
-
-" Switching tabs
-nnoremap <silent> <leader>tt :tabnext<CR>
-nnoremap <silent> <leader>tn :tabnew<CR>
-nnoremap <silent> <leader>to :tabonly<CR>
-nnoremap <silent> <leader>tc :tabclose<CR>
-nnoremap <silent> <leader>tm :tabmove
-" Just use gt and gT
-" nnoremap <silent> <leader>tl :tabn<CR>
-" nnoremap <silent> <leader>th :tabN<CR>
-nnoremap <silent> <leader>t<S-L> :tabl<CR>
-nnoremap <silent> <leader>t<S-H> :tabr<CR>
-
-" Fast macros (qq to record)
-nnoremap Q @q
-vnoremap Q :norm! @q<cr>
-
-" Make Y act like C and D
-nnoremap <s-y> y$
-vnoremap <s-y> $y
-
-" Indent using tab key
-nnoremap <Tab> >l
-nnoremap <S-Tab> <l
-vnoremap <Tab> >gv
-vnoremap <S-Tab> <gv
-
-noremap! <C-j> <down>
-noremap! <C-k> <up>
-noremap! <C-h> <left>
-noremap! <C-l> <right>
-
-" Toggle showing 'listchars'
-nnoremap <silent> <leader>l :set list!<cr>
-
-" Escape in terminal mode
-tnoremap <esc><esc> <c-\><c-n>
-
-" Seamlessly enter/leave terminal buffer.
-tnoremap <c-w> <c-\><c-n><c-w>
-au BufEnter term://* norm! i
-
-" Join to end of line below
-" This is already used by the window switching mappings
-nnoremap <c-j> ddpkJ
-
-" Move window to the left and switch to the eastern window.
-" I do this move pretty frequently.
-nnoremap <c-w><c-w> <c-w>L<c-w>h
-
-" If the fzf executable is available, assume that the fzf plugin is going to
-" be loaded. In that case we want an easy way to load a file.
-if executable("fzf")
- nnoremap <leader><leader> <CMD>FZF<CR>
-else
- nnoremap <leader><leader> <CMD>echo "FZF not found!"<CR>
-endif
-
-" Define go-to-definition help pages, otherwise see the mappings in the hook
-" for LSP configuration.
-autocmd Filetype help nnoremap <buffer> gd <C-]>
-
-" Commands
-"""""""""""""""""""""""""""
-
-" Create a temporary buffer
-" NOTE: relied on by other commands
-command Temp new | setlocal buftype=nofile bufhidden=wipe noswapfile nomodified nobuflisted
-command TempTab tabnew | setlocal buftype=nofile bufhidden=wipe noswapfile nomodified nobuflisted
-
-" Reverse lines
-command! -bar -range=% Reverse <line1>,<line2>g/^/m<line1>-1|nohl
-
-" Redraw screen
-" CTRL-L mapping is used in other thing
-command Redraw norm!
-
-" Run buffer contents as vimscript
-command! -bar -range=% Run execute 'silent!' . <line1> . ',' . <line2> . 'y|@"'
-
-" Output the result of a command to the buf
-command! -nargs=+ -complete=command Output
- \ redir => output |
- \ silent execute <q-args> |
- \ redir END |
- \ tabnew |
- \ setlocal buftype=nofile bufhidden=wipe noswapfile nobuflisted nomodified |
- \ silent put=output |
- \ if <q-args> =~ ':!' |
- \ silent 1,2delete _ |
- \ else |
- \ silent 1,4delete _ |
- \ endif
-
-" Copy buffer to system clipboard
-command! Copy silent w !pbcopy
-
-" Copy the location of the current file
-command! CopyDir !echo %:r | pbcopy
-
-" View in-memory changes before writing to disk
-command! DiffOnDisk
- \ let orig_filetype=&ft |
- \ vert new |
- \ read ++edit # | 0d_ |
- \ setlocal bt=nofile bh=wipe nobl noswf ro |
- \ let &l:filetype = orig_filetype |
- \ diffthis |
- \ wincmd p |
- \ diffthis
-
-command WrapItUp setlocal wrap
- \| nnoremap <buffer> j gj
- \| nnoremap <buffer> k gk
- \| nnoremap <buffer> 0 g0
- \| nnoremap <buffer> $ g$
-
-" Miscellaneous
-"""""""""""""""""""""""""""
-
-" Show the color column only if insert mode (and only if cc is set)
-augroup ShowCCInInsertMode
- au!
- au InsertEnter * if &tw != 0 | let &cc = &tw + 1 | endif
- au InsertLeave * let &cc = 0
-augroup END
-
-" Auto-refresh vim config
-" au BufWritePost $XDG_CONFIG_HOME/*.{vim,lua} so %
-
-" Jump to last editing location when opening files
-au BufReadPost *
- \ if line("'\"") > 0 && line("'\"") <= line("$") |
- \ exe "normal! g'\"" |
- \ endif
-
-augroup Sus
- au!
-
- " Add syntax groups if relevant. This conditional is compensating for
- " the lack of negative matches in :au.
- "
- " See: https://vim.fandom.com/wiki/Highlight_unwanted_spaces
- " See: https://stackoverflow.com/questions/6496778/vim-run-autocmd-on-all-filetypes-except
- fun! s:AddSyntax()
- if bufname() !~ 'term://\|man://'
- " Any trailing whitespace at the end of lines.
- syn match SusWhitespace /\s\+$/ containedin=ALL
-
- " Any non-breaking spaces. These are generated by
- " CMD+SPACE and deeply annoying.
- syn match SusWhitespace /\%u00A0/ containedin=ALL
-
- " Any characters beyond the maximum width of the text.
- if &tw > 0
- let reg = '\%' . (&tw + 1) . 'v.\+'
- exe 'syn match SusWhitespace /'.reg.'/ containedin=ALL'
- endif
- endif
- endfun
-
- " Remove highligt group.
- "
- " Note that we have to do abit more work since the the syntax rules
- " have changed under Vim's nose. Hopefully the perfomance
- " characteristics don't come back to haunt us.
- fun! s:RemoveSyntax()
- syn clear SusWhitespace
- syn sync fromstart
- endfun
-
- " Add a persistent highligt group, which matches are going to use.
- au VimEnter,ColorScheme * hi SusWhitespace ctermbg=red guibg=red
-
- " Create some persistent syntax highlighting groups.
- au Syntax * call s:AddSyntax()
-
- " When 'textwidth' changes, we may need to recalculate.
- au OptionSet textwidth call s:RemoveSyntax()
- \ | call s:AddSyntax()
-
- " Temporarily remove the groups when in insert mode.
- au InsertEnter * call s:RemoveSyntax()
- au InsertLeave * call s:AddSyntax()
-augroup END
-
-" Allow for quick prototyping outside of NixOS/Home-Manager by loading some
-" extra configuration if relevant.
-let extra_vimrc = expand("~/extra-temporary.vimrc")
-if filereadable(extra_vimrc)
- execute "source " . extra_vimrc
-endif
diff --git a/home/networking-utils/default.nix b/home/networking-utils/default.nix
deleted file mode 100644
index 70802a9..0000000
--- a/home/networking-utils/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-# This module adds some networking utilities to my home managed environment.
-{pkgs, ...}: {
- home.packages = with pkgs;
- [
- nmap
- inetutils
- socat
- ]
- ++ lib.optional (!pkgs.stdenv.isDarwin) netcat;
-}
diff --git a/home/shell-utils/default.nix b/home/shell-utils/default.nix
deleted file mode 100644
index 8635ceb..0000000
--- a/home/shell-utils/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-# This module adds some common shell utilities to my home managed environment.
-{pkgs, ...}: let
- isLinux = pkgs.stdenv.isLinux;
- isDarwin = pkgs.stdenv.isDarwin;
-in {
- home.packages = with pkgs;
- [
- human-sleep
- ripgrep
- jc
- jq
- nowrap
- echoargs
- ]
- ++ lib.optionals isLinux [
- file # File is not included in NixOS, but *is* included in Darwin.
- ]
- ++ lib.optionals isDarwin [
- pbv
- trash
- disable-sleep
-
- # Unlike the `stat` command on Linux (from coreutils or whatever), OSX's
- # `stat` does not automatically use the nicer format when stdout is a
- # sterminal.
- (pkgs.writeShellScriptBin "stat" ''
- if [ -t 1 ]; then
- /usr/bin/stat -x "$@"
- else
- /usr/bin/stat "$@"
- fi
- '')
- ];
-}
diff --git a/home/zsh/default.nix b/home/zsh/default.nix
deleted file mode 100644
index 31796a9..0000000
--- a/home/zsh/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{config, ...}: {
- imports = [
- ./plugins.nix
- ./editing.nix
- ];
-
- programs.zsh = {
- enable = true;
-
- # Feeble attempt at cleaning up home directory.
- # TODO: dotDir = (pathRelativeTo config.xdg.configHome config.home) + "/zsh";
- dotDir = ".config/zsh";
- history.path = config.xdg.cacheHome + "/zsh/history";
-
- initExtra = ''
- set -o PROMPTSUBST
- if [ -v NVIM -o -v VIM ]; then
- # smol prompt
- PROMPT='%# '
- else
- # loong looooong prooooompt – Nagāi Sakeru Gumi
- PROMPT='%B%(2L.LVL%L .)%b%F{red}%(?..E%? )%f%F{93}%n%f@%F{35}%m%f%# '
- fi
- RPROMPT='%F{green}%$((COLUMNS/4))<...<%~%<<%f'
-
- mkcd () {
- mkdir "$1" && cd "$1"
- }
- '';
- };
-}
diff --git a/home/zsh/editing.nix b/home/zsh/editing.nix
deleted file mode 100644
index 241ef3c..0000000
--- a/home/zsh/editing.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-# This module contains all ZSH configuration related to the editing experience (e.g. setting VI mode).
-{
- pkgs,
- lib,
- ...
-}: let
- inherit (lib.strings) concatStringsSep;
- inherit (lib.attrsets) catAttrs;
-
- plugins = [
- {
- name = "zsh-vi-mode-cursor";
- src = pkgs.fetchFromGitHub {
- owner = "Buckmeister";
- repo = "zsh-vi-mode-cursor";
- rev = "fa7cc0973ee71636e906e25e782d0aea19545d60";
- hash = "sha256-j73M4bvAoHWt5Wwg47hM0p5Or74x/3btTOPnI22SqG8=";
- };
- }
- ];
-in {
- programs.zsh = {
- # VIM! VIM! VIM!
- defaultKeymap = "viins";
-
- plugins = map (p: removeAttrs p ["config"]) plugins;
-
- initExtra = ''
- # Set up external editing by pressing '!' in normal mode.
- autoload -z edit-command-line
- zle -N edit-command-line
- bindkey -M vicmd '!' edit-command-line
-
- # Plugins config.
- ${concatStringsSep "\n" (catAttrs "config" plugins)}
- '';
- };
-
- programs.fzf = {
- enable = true;
- enableZshIntegration = true;
- };
-}
diff --git a/home/zsh/plugins.nix b/home/zsh/plugins.nix
deleted file mode 100644
index 6dbc151..0000000
--- a/home/zsh/plugins.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-# This module manages behavioral plugins – plugins that alter how ZSH acts (e.g. autovenv, direnv).
-{
- pkgs,
- lib,
- config,
- ...
-}: let
- inherit (lib.strings) concatStringsSep;
- inherit (lib.attrsets) catAttrs;
-
- plugins = [
- {
- name = "autovenv";
- src = pkgs.fetchFromGitHub {
- owner = "linnnus";
- repo = "autovenv";
- rev = "d9f0cd7";
- hash = "sha256-GfJIybMYxE97xLSkrOSGsn+AREmnCyqe9n2aZwjw4w4=";
- };
- }
- {
- name = "zsh-vi-mode-cursor";
- src = pkgs.fetchFromGitHub {
- owner = "Buckmeister";
- repo = "zsh-vi-mode-cursor";
- rev = "fa7cc0973ee71636e906e25e782d0aea19545d60";
- hash = "sha256-j73M4bvAoHWt5Wwg47hM0p5Or74x/3btTOPnI22SqG8=";
- };
- }
- {
- name = "zsh-nix-shell";
- file = "nix-shell.plugin.zsh";
- src = pkgs.fetchFromGitHub {
- owner = "chisui";
- repo = "zsh-nix-shell";
- rev = "v0.7.0";
- sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1";
- };
- }
- ];
-in {
- programs.zsh = {
- plugins = map (p: removeAttrs p ["config"]) plugins;
-
- initExtra = concatStringsSep "\n" (catAttrs "config" plugins);
- };
-}