change from mono-home-manager to full flake multi-system configuration
This commit is contained in:
60
home/obsidian.nix
Normal file
60
home/obsidian.nix
Normal file
@@ -0,0 +1,60 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
vaultName = "main";
|
||||
notesDir = "${config.home.homeDirectory}/Obsidian";
|
||||
vaultDir = "${notesDir}/${vaultName}";
|
||||
plugins = [
|
||||
"calendar"
|
||||
"advanced-tables"
|
||||
"dataview"
|
||||
"markdown-formatting-assistant"
|
||||
];
|
||||
pluginDir = "${vaultDir}/.obsidian/plugins";
|
||||
setupPlugins = pkgs.writeShellScriptBin "setup-obsidian-plugins" ''
|
||||
set -e
|
||||
mkdir -p "${pluginDir}"
|
||||
cd "${pluginDir}"
|
||||
|
||||
${lib.concatMapStringsSep "\n" (plugin:
|
||||
''
|
||||
if [ ! -d "${plugin}" ]; then
|
||||
echo "Installing plugin: ${plugin}"
|
||||
git clone --depth=1 https://github.com/obsidianmd/obsidian-releases/tree/master/community-plugins/${plugin} ${plugin} || true
|
||||
fi
|
||||
''
|
||||
) plugins}
|
||||
'';
|
||||
cfg = config.homeModules.obsidian;
|
||||
in
|
||||
|
||||
lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
obsidian
|
||||
setupPlugins
|
||||
];
|
||||
|
||||
# Ensure Notes and vault directory exist
|
||||
home.file."Obsidian/.keep".text = "";
|
||||
|
||||
# Shell alias
|
||||
programs.zsh.shellAliases = {
|
||||
obsidian = "obsidian ${vaultDir}";
|
||||
};
|
||||
|
||||
# Obsidian desktop entry
|
||||
xdg.desktopEntries.obsidian = {
|
||||
name = "Obsidian";
|
||||
genericName = "Markdown Notes";
|
||||
comment = "A powerful knowledge base with Markdown and local storage.";
|
||||
exec = "obsidian ${vaultDir}";
|
||||
icon = "obsidian";
|
||||
type = "Application";
|
||||
categories = [ "Office" "TextEditor" "Utility" ];
|
||||
};
|
||||
|
||||
# Reminder to run plugin setup
|
||||
home.activation.obsidianPluginSetup = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||
echo "💡 Run 'setup-obsidian-plugins' to install default plugins into ${pluginDir}"
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user