Files
nix/hosts/common/user/configs/gui/obsidian/default.nix
2024-07-17 14:15:53 +01:00

439 lines
16 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
username ? throw "username argument is required",
}:
{
config,
lib,
pkgs,
...
}:
let
userConfig = config.users.users.${username};
hmConfig = config.home-manager.users.${username};
in
{
home-manager.users.${username} = {
imports = [ ./options.nix ];
programs = {
obsidian = {
enable = true;
sharedSettings = {
app = {
defaultViewMode = "preview";
livePreview = false;
readableLineLength = false;
showLineNumber = true;
tabSize = 2;
promptDelete = false;
trashOption = "local";
alwaysUpdateLinks = true;
newFileLocation = "folder";
newFileFolderPath = "inbox";
newLinkFormat = "absolute";
showUnsupportedFiles = true;
attachmentFolderPath = "./assets";
};
corePlugins = [
"bookmarks"
"canvas"
"command-palette"
"editor-status"
"file-explorer"
"global-search"
"graph"
"note-composer"
"outgoing-link"
"outline"
"page-preview"
"slash-command"
"switcher"
"tag-pane"
];
plugins = [
{
pkg = import ./plugins/custom-sort { inherit pkgs; };
extraFiles."data.json".source = (pkgs.formats.json { }).generate "data.json" {
suspended = false;
statusBarEntryEnabled = false;
notificationsEnabled = false;
mobileNotificationsEnabled = true;
customSortContextSubmenu = false;
bookmarksGroupToConsumeAsOrderingReference = "Sort";
bookmarksContextMenus = false;
};
}
{
pkg = import ./plugins/dataview { inherit pkgs; };
extraFiles."data.json".source = (pkgs.formats.json { }).generate "data.json" {
enableDataviewJs = true;
enableInlineDataviewJs = true;
warnOnEmptyResult = false;
defaultDateFormat = "dd/MM/yyyy";
defaultDateTimeFormat = "HH:mm - dd/MM/yyyy";
};
}
{
pkg = import ./plugins/excalidraw { inherit pkgs; };
extraFiles."data.json".source = (pkgs.formats.json { }).generate "data.json" {
folder = "Inbox";
templateFilePath = "Templates";
scriptFolderPath = "Scripts";
compress = false;
drawingFilenamePrefix = "";
drawingEmbedPrefixWithFilename = false;
drawingFilenameDateTime = "YYYY-MM-DD-HH.mm.ss";
previewImageType = "SVG";
previewMatchObsidianTheme = true;
defaultPenMode = "mobile";
parseTODO = true;
focusOnFileTab = true;
pngExportScale = 2;
exportWithTheme = false;
exportWithBackground = false;
exportEmbedScene = true;
showReleaseNotes = false;
showNewVersionNotification = false;
};
}
{
pkg = import ./plugins/kanban { inherit pkgs; };
extraFiles."data.json".source = (pkgs.formats.json { }).generate "data.json" {
move-tags = true;
move-dates = true;
date-display-format = "DD/MM/YYYY";
show-relative-date = true;
date-picker-week-start = 1;
inline-metadata-position = "footer";
move-task-metadata = true;
show-archive-all = false;
show-board-settings = false;
};
}
{
pkg = import ./plugins/linter { inherit pkgs; };
extraFiles."data.json".source = (pkgs.formats.json { }).generate "data.json" {
lintOnSave = true;
displayChanged = false;
lintOnFileChange = true;
ruleConfigs = {
add-blank-line-after-yaml.enabled = true;
dedupe-yaml-array-values.enabled = true;
escape-yaml-special-characters = {
enabled = true;
try-to-escape-single-line-arrays = true;
};
format-tags-in-yaml.enabled = true;
format-yaml-array = {
enabled = true;
default-array-style = "multi-line";
};
sort-yaml-array-values.enabled = true;
yaml-key-sort = {
enabled = true;
yaml-sort-order-for-other-keys = "Ascending Alphabetical";
};
capitalize-headings = {
enabled = true;
ignore-words = "";
};
header-increment = {
enabled = true;
start-at-h2 = true;
};
headings-start-line.enabled = true;
remove-trailing-punctuation-in-heading.enabled = true;
auto-correct-common-misspellings.enabled = true;
blockquote-style.enabled = true;
convert-bullet-list-markers.enabled = true;
emphasis-style = {
enabled = true;
style = "asterisk";
};
no-bare-urls = {
enabled = true;
no-bare-uris = true;
};
ordered-list-style.enabled = true;
quote-style.enabled = true;
remove-consecutive-list-markers.enabled = true;
remove-empty-list-markers.enabled = true;
remove-hyphenated-line-breaks.enabled = true;
remove-multiple-spaces.enabled = true;
strong-style = {
enabled = true;
style = "asterisk";
};
two-spaces-between-lines-with-content.enabled = true;
unordered-list-style = {
enabled = true;
list-style = "-";
};
compact-yaml = {
enabled = true;
inner-new-lines = true;
};
consecutive-blank-lines.enabled = true;
empty-line-around-blockquotes.enabled = true;
empty-line-around-code-fences.enabled = true;
empty-line-around-math-blocks.enabled = true;
empty-line-around-tables.enabled = true;
heading-blank-lines.enabled = true;
line-break-at-document-end.enabled = true;
move-math-block-indicators-to-their-own-line.enabled = true;
paragraph-blank-lines.enabled = true;
remove-empty-lines-between-list-markers-and-checklists.enabled = true;
remove-link-spacing.enabled = true;
space-after-list-markers.enabled = true;
trailing-spaces.enabled = true;
add-blockquote-indentation-on-paste.enabled = true;
prevent-double-checklist-indicator-on-paste.enabled = true;
prevent-double-list-item-indicator-on-paste.enabled = true;
remove-hyphens-on-paste.enabled = true;
remove-leading-or-trailing-whitespace-on-paste.enabled = true;
remove-leftover-footnotes-from-quote-on-paste.enabled = true;
remove-multiple-blank-lines-on-paste.enabled = true;
};
customRegexes = [
{
label = "Open Double Quote";
find = "";
replace = "\"";
flags = "gm";
}
{
label = "Close Double Quote";
find = "";
replace = "\"";
flags = "gm";
}
{
label = "Elipsis";
find = "";
replace = "...";
flags = "gm";
}
{
label = "Open Quote";
find = "";
replace = "'";
flags = "gm";
}
{
label = "Close Quote";
find = "";
replace = "'";
flags = "gm";
}
{
label = "Long Dash";
find = "";
replace = "---";
flags = "gm";
}
{
label = "Short Dash";
find = "";
replace = "--";
flags = "gm";
}
{
label = "Long Dash with Text";
find = "([^\\s])---([^\\s])";
replace = "$1 --- $2";
flags = "gm";
}
{
label = "Short Dash with Text";
find = "([^\\s])--([^\\s])";
replace = "$1 -- $2";
flags = "gm";
}
];
commonStyles = {
removeUnnecessaryEscapeCharsForMultiLineArrays = true;
};
};
}
{
pkg = import ./plugins/minimal-settings { inherit pkgs; };
extraFiles."data.json".source = (pkgs.formats.json { }).generate "data.json" {
editorFont = "var(--font-monospace)";
};
}
{
pkg = import ./plugins/outliner { inherit pkgs; };
extraFiles."data.json".source = (pkgs.formats.json { }).generate "data.json" {
styleLists = false;
stickCursor = "never";
};
}
(import ./plugins/style-settings { inherit pkgs; })
{
pkg = import ./plugins/tasks { inherit pkgs; };
extraFiles."data.json".source = (pkgs.formats.json { }).generate "data.json" {
globalQuery = "short mode";
globalFilter = "#todo";
removeGlobalFilter = true;
setCreatedDate = true;
statusSettings = {
coreStatuses = [
{
symbol = " ";
name = "to-do";
nextStatusSymbol = "/";
type = "TODO";
}
{
symbol = "x";
name = "done";
nextStatusSymbol = " ";
type = "DONE";
}
];
customStatuses = [
{
symbol = "/";
name = "in-progress";
nextStatusSymbol = "x";
type = "IN_PROGRESS";
}
{
symbol = "-";
name = "canceled";
nextStatusSymbol = " ";
type = "CANCELLED";
}
{
symbol = ">";
name = "forwarded";
nextStatusSymbol = "/";
type = "IN_PROGRESS";
}
{
symbol = "<";
name = "scheduling";
nextStatusSymbol = "/";
type = "TODO";
}
{
symbol = "?";
name = "question";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "!";
name = "important";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "*";
name = "star";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "\"";
name = "quote";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "l";
name = "location";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "b";
name = "bookmark";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "i";
name = "information";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "S";
name = "savings";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "I";
name = "idea";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "p";
name = "pros";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "c";
name = "cons";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "f";
name = "fire";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "k";
name = "key";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "w";
name = "win";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "u";
name = "up";
nextStatusSymbol = " ";
type = "TODO";
}
{
symbol = "d";
name = "down";
nextStatusSymbol = " ";
type = "TODO";
}
];
};
};
}
];
cssSnippets = [ ./snippets/file-explorer-separators.css ];
themes = [ (import ./themes/minimal { inherit pkgs; }) ];
};
};
matugen.settings.templates = builtins.mapAttrs (name: _: {
input_path = ./theme.json;
output_path = "${userConfig.home}/${name}/.obsidian/plugins/obsidian-style-settings/data.json";
}) hmConfig.programs.obsidian.vaults;
};
home.persistence."/cache${userConfig.home}".directories = [ ".config/obsidian" ];
};
}