Trying out nixvim and fish again. And other stuff

master
Dustin Swan 4 months ago
parent a889460bc4
commit ecf2a0db9f
Signed by: dustinswan
GPG Key ID: AB49BD6B2B3A6377

@ -2,6 +2,7 @@
let let
secrets = import ./secrets.nix; secrets = import ./secrets.nix;
nixvim = import (builtins.fetchGit { url = "https://github.com/nix-community/nixvim"; });
in in
{ {
home.stateVersion = "18.09"; home.stateVersion = "18.09";
@ -9,8 +10,15 @@ in
home.username = "dustinswan"; home.username = "dustinswan";
home.homeDirectory = "/Users/dustinswan"; home.homeDirectory = "/Users/dustinswan";
nix = {
package = pkgs.nix;
settings.experimental-features = [ "nix-command" "flakes" ];
};
imports = [ imports = [
<catppuccin/modules/home-manager> <catppuccin/modules/home-manager>
nixvim.homeManagerModules.nixvim
./home-nvim.nix
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [
@ -21,7 +29,7 @@ in
httpie httpie
ngrok ngrok
ddev ddev
bitwarden-cli # bitwarden-cli
mkcert mkcert
gnupg gnupg
rage rage
@ -38,6 +46,7 @@ in
yarn yarn
php83 php83
stack stack
cargo
ruby ruby
# haskellPackages.ghcup # haskellPackages.ghcup
php83Packages.composer php83Packages.composer
@ -70,6 +79,11 @@ in
xdg.enable = true; xdg.enable = true;
catppuccin = {
enable = true;
flavor = "mocha";
};
programs.home-manager.enable = true; programs.home-manager.enable = true;
programs.tmux = { programs.tmux = {
@ -97,19 +111,19 @@ in
extraConfig = '' extraConfig = ''
set -ag terminal-overrides ",xterm-256color:RGB" set -ag terminal-overrides ",xterm-256color:RGB"
''; '';
catppuccin.enable = true;
}; };
programs.eza = { programs.eza = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
enableFishIntegration = true;
git = true; git = true;
}; };
programs.zoxide = { programs.zoxide = {
# z doc -> cd ~/Documents; zi -> interactive
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
enableFishIntegration = true;
}; };
programs.zsh = { programs.zsh = {
@ -118,39 +132,57 @@ in
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
oh-my-zsh = { oh-my-zsh = {
enable = true; enable = true;
plugins = [ "git" "httpie" "aws" "fzf" "mosh" "npm" "rsync" "sudo" "yarn" "vi-mode" ]; plugins = [ "git" "httpie" "aws" "mosh" "npm" "rsync" "sudo" "yarn" "vi-mode" ];
}; };
syntaxHighlighting.catppuccin.enable = true; };
programs.fish = {
enable = true;
plugins = [
{
name = "plugin-git";
src = pkgs.fishPlugins.plugin-git.src;
}
{
name = "foreign-env";
src = pkgs.fetchFromGitHub {
owner = "oh-my-fish";
repo = "plugin-foreign-env";
rev = "dddd9213272a0ab848d474d0cbde12ad034e65bc";
sha256 = "00xqlyl3lffc5l0viin1nyp819wf81fncqyz87jx8ljjdhilmgbs";
};
}
];
# https://codeberg.org/adamcstephens/dotfiles/src/commit/e14f35f6e9a9cb9174016948c512c0db364e0dec/apps/fish/init.fish
shellInit = ''
fenv source "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.fish
source /nix/var/nix/profiles/default/etc/profile.d/nix.fish
'';
}; };
programs.direnv = { programs.direnv = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
# enableFishIntegration = true;
}; };
programs.starship = { programs.starship = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
catppuccin.enable = true; enableFishIntegration = true;
}; };
# programs.skim = {
# enable = true;
# enableFishIntegration = true;
# enableZshIntegration = true;
# };
programs.fzf = { programs.fzf = {
# ctrl-t, ctrl-r, ssh **<tab>
enable = true; enable = true;
enableFishIntegration = true;
enableZshIntegration = true; enableZshIntegration = true;
defaultCommand = "fd --type file --color=always";
defaultOptions = [
"--height 40%"
"--border"
"--ansi"
"--color bg+:#302D41,bg:#1E1E2E,spinner:#F8BD96,hl:#F28FAD"
"--color=fg:#D9E0EE,header:#F28FAD,info:#DDB6F2,pointer:#F8BD96"
"--color=marker:#F8BD96,fg+:#F2CDCD,prompt:#DDB6F2,hl+:#F28FAD"
];
fileWidgetCommand = "fd --type file --color=always";
fileWidgetOptions = [ "--min-height 30 --preview-window noborder --preview '(bat --style=numbers,changes --wrap never --color always {} || cat {} || tree -C {}) 2> /dev/null'" ];
catppuccin.enable = true;
}; };
programs.ssh = { programs.ssh = {
@ -189,41 +221,16 @@ in
userName = "Dustin Swan"; userName = "Dustin Swan";
userEmail = "dustin@dustinswan.com"; userEmail = "dustin@dustinswan.com";
signing = { signing = {
# signByDefault = true; signByDefault = true;
key = "AD11750151C10881970BD943AB49BD6B2B3A6377"; key = "AD11750151C10881970BD943AB49BD6B2B3A6377";
}; };
delta = { delta.enable = true;
enable = true;
catppuccin.enable = true;
};
};
programs.lazygit = {
enable = true;
catppuccin.enable = true;
};
programs.gitui = {
enable = true;
catppuccin.enable = true;
};
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
withNodeJs = true;
withPython3 = true;
withRuby = true;
}; };
# xdg.configFile."nvim/lua/plugins/lazyvim-plugins.lua".source = ./lazyvim-plugins.lua;
programs.bat = { programs.lazygit.enable = true;
enable = true; programs.gitui.enable = true;
catppuccin.enable = true;
};
programs.bat.enable = true;
programs.gpg.enable = true; programs.gpg.enable = true;
programs.tealdeer.enable = true; programs.tealdeer.enable = true;
programs.ripgrep.enable = true; programs.ripgrep.enable = true;
@ -231,6 +238,7 @@ in
programs.keychain = { programs.keychain = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
enableFishIntegration = true;
inheritType = "any"; inheritType = "any";
agents = [ "gpg" "ssh" ]; agents = [ "gpg" "ssh" ];
keys = [ "id_rsa" "id_rsa_mr" "2B3A6377" ]; keys = [ "id_rsa" "id_rsa_mr" "2B3A6377" ];

@ -1,7 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
# home.packages = with pkgs; [ iosevka-bin ];
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
programs.alacritty = { programs.alacritty = {
@ -22,6 +21,5 @@
size = 16.0; size = 16.0;
}; };
}; };
catppuccin.enable = true;
}; };
} }

@ -4,14 +4,15 @@ let
secrets = import ./secrets.nix; secrets = import ./secrets.nix;
in in
{ {
home.packages = with pkgs; [ vdirsyncer khard khal imapnotify ];
programs.mbsync.enable = true; programs.mbsync.enable = true;
programs.msmtp.enable = true; programs.msmtp.enable = true;
programs.himalaya.enable = true; programs.himalaya.enable = true;
programs.notmuch.enable = true; # programs.notmuch.enable = true;
programs.aerc.enable = true; programs.aerc.enable = true;
programs.aerc.extraConfig.general.unsafe-accounts-conf = true; programs.aerc.extraConfig.general.unsafe-accounts-conf = true;
programs.khal.enable = true;
programs.khard.enable = true;
programs.vdirsyncer.enable = true;
accounts.email = { accounts.email = {
maildirBasePath = "Mail"; maildirBasePath = "Mail";
@ -47,19 +48,19 @@ in
# onNotify = "\${pkgs.isync}/bin/mbsync -a"; # onNotify = "\${pkgs.isync}/bin/mbsync -a";
# onNotifyPost = { mail = "\${pkgs.noti}/bin/noti 'New mail'"; }; # onNotifyPost = { mail = "\${pkgs.noti}/bin/noti 'New mail'"; };
# }; # };
notmuch.enable = true; # notmuch.enable = true;
msmtp.enable = true; msmtp.enable = true;
aerc.enable = true; aerc.enable = true;
# himalaya = { himalaya = {
# enable = true; enable = true;
# settings = { settings = {
# backend = "maildir"; # backend = "imap";
# maildir.root-dir = ""; # maildir.root-dir = "/Users/dustinswan/Mail/FastMail";
# message.send.backend = "smtp"; message.send.backend = "smtp";
# sent-folder = "Sent"; # sent-folder = "Sent";
# draft-folder = "Drafts"; # draft-folder = "Drafts";
# }; };
# }; };
signature = { signature = {
text = ''Dustin Swan | dustinswan.com''; text = ''Dustin Swan | dustinswan.com'';
showSignature = "append"; showSignature = "append";
@ -85,7 +86,7 @@ in
expunge = "maildir"; expunge = "maildir";
}; };
msmtp.enable = true; msmtp.enable = true;
notmuch.enable = true; # notmuch.enable = true;
aerc.enable = true; aerc.enable = true;
# himalaya = { # himalaya = {
# enable = true; # enable = true;
@ -98,100 +99,124 @@ in
}; };
}; };
# TODO: home-manager now supports all this, don't need to do custom config files accounts.calendar = {
basePath = "Calendars";
home.file.vdirsyncer = { accounts = {
target = ".config/vdirsyncer/config"; FastMail = {
text = ''[general] khal = {
status_path = "~/.vdirsyncer/status/" enable = true;
# addresses = [ "dustin@dustinswan.com" ];
[pair fastmail_contacts] type = "discover";
a = "fastmail_contacts_local" };
b = "fastmail_contacts_remote" primary = true;
collections = ["from b"] remote = {
conflict_resolution = "b wins" passwordCommand = ["~/dotfiles/bin/decrypt-password" "dustinswan@fastmail.com"];
type = "caldav";
[storage fastmail_contacts_local] url = "https://caldav.fastmail.com/";
type = "filesystem" userName = "dustinswan@fastmail.com";
path = "~/Contacts/" };
fileext = ".vcf" vdirsyncer = {
enable = true;
[storage fastmail_contacts_remote] };
type = "carddav" };
url = "https://carddav.messagingengine.com/" };
username = "dustinswan@fastmail.com" };
password.fetch = ["command", "~/dotfiles/bin/decrypt-password", "dustinswan@fastmail.com"] }
[pair fastmail_calendar]
a = "fastmail_calendar_local"
b = "fastmail_calendar_remote"
collections = ["from b"]
conflict_resolution = "b wins"
metadata = ["color", "displayname"]
[storage fastmail_calendar_local]
type = "filesystem"
path = "~/Calendars/Fastmail"
fileext = ".ics"
[storage fastmail_calendar_remote]
type = "caldav"
url = "https://caldav.messagingengine.com/"
username = "dustinswan@fastmail.com"
password.fetch = ["command", "~/dotfiles/bin/decrypt-password", "dustinswan@fastmail.com"]
# TODO: home-manager now supports all this, don't need to do custom config files
[pair google_calendar] #
a = "google_calendar_local" # home.file.vdirsyncer = {
b = "google_calendar_remote" # target = ".config/vdirsyncer/config";
collections = null # text = ''[general]
# status_path = "~/.vdirsyncer/status/"
#
# [pair fastmail_contacts]
# a = "fastmail_contacts_local"
# b = "fastmail_contacts_remote"
# collections = ["from b"]
# conflict_resolution = "b wins"
#
# [storage fastmail_contacts_local]
# type = "filesystem"
# path = "~/Contacts/"
# fileext = ".vcf"
#
# [storage fastmail_contacts_remote]
# type = "carddav"
# url = "https://carddav.messagingengine.com/"
# username = "dustinswan@fastmail.com"
# password.fetch = ["command", "~/dotfiles/bin/decrypt-password", "dustinswan@fastmail.com"]
#
#
# [pair fastmail_calendar]
# a = "fastmail_calendar_local"
# b = "fastmail_calendar_remote"
# collections = ["from b"]
# conflict_resolution = "b wins" # conflict_resolution = "b wins"
# metadata = ["color", "displayname"] # metadata = ["color", "displayname"]
#
[storage google_calendar_local] # [storage fastmail_calendar_local]
type = "filesystem" # type = "filesystem"
path = "~/Calendars/Google" # path = "~/Calendars/Fastmail"
fileext = ".ics" # fileext = ".ics"
#
[storage google_calendar_remote] # [storage fastmail_calendar_remote]
type = "http" # type = "caldav"
url = "${secrets.google-calendar.our-stuff}" # url = "https://caldav.messagingengine.com/"
# type = "google_calendar" # username = "dustinswan@fastmail.com"
# token_file = "~/token_file" # password.fetch = ["command", "~/dotfiles/bin/decrypt-password", "dustinswan@fastmail.com"]
# client_id = "${secrets.google-vdirsyncer.id}" #
# client_secret = "${secrets.google-vdirsyncer.secret}" #
''; # [pair google_calendar]
}; # a = "google_calendar_local"
# b = "google_calendar_remote"
home.file.khard = { # collections = null
target = ".config/khard/khard.conf"; # # conflict_resolution = "b wins"
text = ''[addressbooks] # # metadata = ["color", "displayname"]
[[contacts]] #
path = ~/Contacts/Default # [storage google_calendar_local]
# type = "filesystem"
[general] # path = "~/Calendars/Google"
default_action = list''; # fileext = ".ics"
}; #
# [storage google_calendar_remote]
home.file.khal = { # type = "http"
target = ".config/khal/config"; # url = "${secrets.google-calendar.our-stuff}"
text = ''[calendars] # # type = "google_calendar"
[[Fastmail]] # # token_file = "~/token_file"
path = ~/Calendars/Fastmail/* # # client_id = "${secrets.google-vdirsyncer.id}"
color = light green # # client_secret = "${secrets.google-vdirsyncer.secret}"
type = discover # '';
# };
[[Google]] #
path = ~/Calendars/Google # home.file.khard = {
color = light blue # target = ".config/khard/khard.conf";
type = discover # text = ''[addressbooks]
# [[contacts]]
[locale] # path = ~/Contacts/Default
timeformat = %H:%M #
dateformat = %Y-%m-%d # [general]
longdateformat = %Y-%m-%d # default_action = list'';
datetimeformat = %Y-%m-%d %H:%M # };
longdatetimeformat = %Y-%m-%d %H:%M''; #
}; # home.file.khal = {
} # target = ".config/khal/config";
# text = ''[calendars]
# [[Fastmail]]
# path = ~/Calendars/Fastmail/*
# color = light green
# type = discover
#
# [[Google]]
# path = ~/Calendars/Google
# color = light blue
# type = discover
#
# [locale]
# timeformat = %H:%M
# dateformat = %Y-%m-%d
# longdateformat = %Y-%m-%d
# datetimeformat = %Y-%m-%d %H:%M
# longdatetimeformat = %Y-%m-%d %H:%M'';
# };

@ -0,0 +1,105 @@
{ ... }:
{
programs.nixvim = {
enable = true;
viAlias = true;
vimAlias = true;
withNodeJs = true;
withRuby = true;
colorschemes.catppuccin.enable = true;
colorschemes.catppuccin.settings.transparent_background = true;
opts = {
number = true;
ignorecase = true;
smartcase = true;
tabstop = 4;
shiftwidth = 4;
softtabstop = 0;
expandtab = true;
smarttab = true;
clipboard = "unnamedplus";
};
globals = {
mapleader = " ";
maplocalleader = " ";
};
keymaps = [
{ key = "<leader>e"; action = "<cmd>Neotree toggle<cr>"; }
{ key = "<leader>ff"; action = "<cmd>Telescope find_files<cr>"; }
{ key = "<leader>fr"; action = "<cmd>Telescope oldfiles<cr>"; }
{ key = "<leader>bd"; action = "<cmd>bdelete<cr>"; }
{ key = "<S-l>"; action = "<cmd>bnext<cr>"; }
{ key = "<S-h>"; action = "<cmd>bprev<cr>"; }
];
plugins = {
bufferline.enable = true;
cmp = {
enable = true;
autoEnableSources = true;
settings.sources = [
{ name = "nvim_lsp"; }
{ name = "path"; }
{ name = "buffer"; }
];
};
cmp-nvim-lsp.enable = true;
cmp-buffer.enable = true;
cmp-path.enable = true;
codeium-nvim.enable = true;
commentary.enable = true;
# conform-nvim.enable = true;
dashboard.enable = true;
emmet.enable = true;
gitsigns.enable = true;
lazygit.enable = true;
lint.enable = true;
lualine.enable = true;
luasnip.enable = true;
lsp = {
enable = true;
inlayHints = true;
servers = {
eslint.enable = true;
html.enable = true;
lua-ls.enable = true;
nil-ls.enable = true;
# phpactor.enable = true;
intelephense.enable = true;
# rust-analyzer.enable = true;
tsserver.enable = true;
};
};
lsp-format.enable = true;
lsp-lines.enable = true;
neo-tree.enable = true;
notify.enable = true;
nix.enable = true;
noice.enable = true;
nvim-autopairs.enable = true;
oil.enable = true;
orgmode = {
enable = true;
settings.org_agenda_files = "~/Sync/Notes/*";
settings.org_default_notes_file = "~/Sync/Notes/Main.org";
};
persistence.enable = true;
surround.enable = true;
telescope.enable = true;
tmux-navigator.enable = true;
todo-comments.enable = true;
treesitter.enable = true;
trouble.enable = true;
ts-autotag.enable = true;
which-key.enable = true;
};
};
}

@ -1,6 +0,0 @@
-- Options are automatically loaded before lazy.nvim startup
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
-- Add any additional options here
vim.opt.relativenumber = false
vim.g.autoformat = false

@ -1,121 +0,0 @@
return {
{ "tpope/vim-sleuth" },
{
"catppuccin/nvim",
name = "catppuccin",
config = function()
require("catppuccin").setup({
transparent_background = true,
})
end,
},
-- {
-- "f-person/auto-dark-mode.nvim",
-- config = {
-- set_dark_mode = function()
-- vim.api.nvim_set_option("background", "dark")
-- vim.cmd("colorscheme catppuccin")
-- -- vim.cmd("colorscheme rose-pine")
-- end,
-- set_light_mode = function()
-- vim.api.nvim_set_option("background", "light")
-- vim.cmd("colorscheme catppuccin")
-- -- vim.cmd("colorscheme rose-pine")
-- end,
-- },
-- },
{
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin",
background_colour = "#000000",
},
},
{
"nvim-orgmode/orgmode",
config = function()
-- require("orgmode").setup_ts_grammar()
require("nvim-treesitter.configs").setup({
highlight = {
enable = true,
additional_vim_regex_highlighting = { "org" }, -- Required for spellcheck, some LaTex highlights and code block highlights that do not have ts grammar
},
ensure_installed = { "org" }, -- Or run :TSUpdate org
})
require("orgmode").setup({
org_agenda_files = { "~/Sync/Notes/*" },
org_default_notes_file = "~/Sync/Notes/Main.org",
})
end,
},
{ "dhruvasagar/vim-table-mode" },
{
"akinsho/toggleterm.nvim",
version = "*",
config = true,
keys = {
{ [[<C-\>]] },
{
"<leader>TT",
"<cmd>ToggleTerm direction=horizontal<cr>",
desc = "Open a horizontal terminal",
},
{
"<leader>TV",
"<cmd>ToggleTerm size=60 direction=vertical<cr>",
desc = "Open a vertical terminal",
},
},
},
{
"christoomey/vim-tmux-navigator",
cmd = {
"TmuxNavigateLeft",
"TmuxNavigateDown",
"TmuxNavigateUp",
"TmuxNavigateRight",
"TmuxNavigatePrevious",
},
keys = {
{ "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" },
{ "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" },
{ "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" },
{ "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" },
{ "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" },
},
},
{ "lukas-reineke/headlines.nvim", opts = { org = { fat_headlines = false } } },
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"php",
})
end,
},
{
"chrisgrieser/nvim-rip-substitute",
cmd = "RipSubstitute",
keys = {
{
"<leader>fs",
function() require("rip-substitute").sub() end,
mode = { "n", "x" },
desc = " rip substitute",
},
},
},
}
Loading…
Cancel
Save