From 2f389641cde6eaa0645efc297e91f08ca082e817 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Fri, 2 Feb 2024 11:09:35 +0800 Subject: [PATCH] users/foo-dogsquared/programs/nixvim: init We've also set a conditional for Neovim module. --- .../home-manager/foo-dogsquared/default.nix | 3 +- .../foo-dogsquared/modules/default.nix | 1 + .../foo-dogsquared/modules/dotfiles.nix | 46 ++++++++++--------- .../modules/programs/nixvim/default.nix | 19 ++++++++ .../modules/programs/nixvim/note-taking.nix | 46 +++++++++++++++++++ .../modules/setups/development.nix | 4 +- 6 files changed, 95 insertions(+), 24 deletions(-) create mode 100644 configs/home-manager/foo-dogsquared/modules/programs/nixvim/default.nix create mode 100644 configs/home-manager/foo-dogsquared/modules/programs/nixvim/note-taking.nix diff --git a/configs/home-manager/foo-dogsquared/default.nix b/configs/home-manager/foo-dogsquared/default.nix index 411677b6..74b4d137 100644 --- a/configs/home-manager/foo-dogsquared/default.nix +++ b/configs/home-manager/foo-dogsquared/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, options, pkgs, ... }: { imports = [ ./modules ]; @@ -13,6 +13,7 @@ browsers.firefox.enable = true; browsers.misc.enable = true; doom-emacs.enable = true; + nixvim.enable = options?programs.nixvim.enable; email.enable = true; email.thunderbird.enable = true; research.enable = true; diff --git a/configs/home-manager/foo-dogsquared/modules/default.nix b/configs/home-manager/foo-dogsquared/modules/default.nix index 46bc7f3d..fec67e08 100644 --- a/configs/home-manager/foo-dogsquared/modules/default.nix +++ b/configs/home-manager/foo-dogsquared/modules/default.nix @@ -9,6 +9,7 @@ ./programs/email.nix ./programs/git.nix ./programs/keys.nix + ./programs/nixvim ./programs/research.nix ./programs/shell.nix ./programs/terminal-multiplexer.nix diff --git a/configs/home-manager/foo-dogsquared/modules/dotfiles.nix b/configs/home-manager/foo-dogsquared/modules/dotfiles.nix index 1a3a64a8..b640294c 100644 --- a/configs/home-manager/foo-dogsquared/modules/dotfiles.nix +++ b/configs/home-manager/foo-dogsquared/modules/dotfiles.nix @@ -11,27 +11,31 @@ in options.users.foo-dogsquared.dotfiles.enable = lib.mkEnableOption "custom outside dotfiles for other programs"; - config = lib.mkIf cfg.enable { - home.mutableFile."library/dotfiles" = { - url = "https://github.com/foo-dogsquared/dotfiles.git"; - type = "git"; - }; + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + home.mutableFile."library/dotfiles" = { + url = "https://github.com/foo-dogsquared/dotfiles.git"; + type = "git"; + }; - home.sessionPath = [ - "${config.home.mutableFile."library/dotfiles".path}/bin" - ]; + home.sessionPath = [ + "${config.home.mutableFile."library/dotfiles".path}/bin" + ]; - xdg.configFile = { - doom.source = - lib.mkIf userCfg.programs.doom-emacs.enable (getDotfiles "emacs"); - kitty.source = - lib.mkIf userCfg.setups.development.enable (getDotfiles "kitty"); - nvim.source = - lib.mkIf userCfg.setups.development.enable (getDotfiles "nvim"); - nyxt.source = - lib.mkIf userCfg.programs.browsers.misc.enable (getDotfiles "nyxt"); - wezterm.source = - lib.mkIf userCfg.setups.development.enable (getDotfiles "wezterm"); - }; - }; + xdg.configFile = { + doom.source = + lib.mkIf userCfg.programs.doom-emacs.enable (getDotfiles "emacs"); + kitty.source = + lib.mkIf userCfg.setups.development.enable (getDotfiles "kitty"); + nyxt.source = + lib.mkIf userCfg.programs.browsers.misc.enable (getDotfiles "nyxt"); + wezterm.source = + lib.mkIf userCfg.setups.development.enable (getDotfiles "wezterm"); + }; + } + + (lib.mkIf (!config.programs.nixvim.enable) { + xdg.configFile.nvim.source = getDotfiles "nvim"; + }) + ]); } diff --git a/configs/home-manager/foo-dogsquared/modules/programs/nixvim/default.nix b/configs/home-manager/foo-dogsquared/modules/programs/nixvim/default.nix new file mode 100644 index 00000000..d8a5f928 --- /dev/null +++ b/configs/home-manager/foo-dogsquared/modules/programs/nixvim/default.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: + +let + userCfg = config.users.foo-dogsquared; + cfg = userCfg.programs.nixvim; +in +{ + options.users.foo-dogsquared.programs.nixvim.enable = + lib.mkEnableOption "NixVim setup"; + + config = lib.mkIf cfg.enable { + programs.nixvim = { + enable = true; + imports = [ + ./note-taking.nix + ]; + }; + }; +} diff --git a/configs/home-manager/foo-dogsquared/modules/programs/nixvim/note-taking.nix b/configs/home-manager/foo-dogsquared/modules/programs/nixvim/note-taking.nix new file mode 100644 index 00000000..1d7c9a7d --- /dev/null +++ b/configs/home-manager/foo-dogsquared/modules/programs/nixvim/note-taking.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: + +{ + # The main star of the show. + plugins.neorg.enable = true; + + # Set it up, set it up, set it up. + plugins.neorg.extraOptions = { + lazy_loading = true; + + load = { + # Pretty much required with tree-sitter integration and all. + "core.defaults" = { __empty = null; }; + + # Conceal your blade (which is the markup, in which it is pretty sharp to + # look at). + "core.concealer" = { __empty = null; }; + + # Dear diary... + "core.journal" = { + strategy = "flat"; + toc_format = [ "yy" "mm" "dd" "link" "title" ]; + }; + + # Norg ripping a page from org-mode. + "core.ui.calendar" = { __empty = null; }; + + # Manage your note workspaces. + "core.dirman" = { + config.workspaces = { + personal = "~/library/notes"; + }; + }; + }; + }; + + # Install the tree-sitter parsers required for the core.defaults Neorg + # module. + plugins.treesitter.grammarPackages = + lib.mkIf + (config.plugins.neorg.extraOptions ? load."core.defaults") + (with pkgs.tree-sitter-grammars; [ + tree-sitter-norg + tree-sitter-norg-meta + ]); +} diff --git a/configs/home-manager/foo-dogsquared/modules/setups/development.nix b/configs/home-manager/foo-dogsquared/modules/setups/development.nix index 3bcba1cd..34aec176 100644 --- a/configs/home-manager/foo-dogsquared/modules/setups/development.nix +++ b/configs/home-manager/foo-dogsquared/modules/setups/development.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, options, ... }: let userCfg = config.users.foo-dogsquared; @@ -26,7 +26,7 @@ in servers.enable = true; }; - programs.neovim = { + programs.neovim = lib.mkIf (!config.programs.nixvim.enable) { enable = true; package = pkgs.neovim-nightly; vimAlias = true;