Add obsidian theme

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2024-07-11 16:37:45 +03:00
parent 99c4ee3e36
commit e21c8ff99f
5 changed files with 64 additions and 1 deletions

View File

@@ -3,7 +3,7 @@
... ...
}: }:
pkgs.stdenv.mkDerivation { pkgs.stdenv.mkDerivation {
name = "ags-config"; name = "ags.config";
src = ./.; src = ./.;

View File

@@ -57,6 +57,10 @@
name = "type"; name = "type";
value = "packages"; value = "packages";
} }
{
name = "channel";
value = "unstable";
}
{ {
name = "query"; name = "query";
value = "{searchTerms}"; value = "{searchTerms}";
@@ -78,6 +82,10 @@
name = "type"; name = "type";
value = "options"; value = "options";
} }
{
name = "channel";
value = "unstable";
}
{ {
name = "query"; name = "query";
value = "{searchTerms}"; value = "{searchTerms}";

View File

@@ -52,6 +52,8 @@
./snippets/editor-monospace.css ./snippets/editor-monospace.css
./snippets/file-explorer-separators.css ./snippets/file-explorer-separators.css
]; ];
theme = import ./themes/minimal.nix { inherit pkgs; };
}; };
}; };

View File

@@ -89,6 +89,12 @@ in
type = raw; type = raw;
default = [ ]; default = [ ];
}; };
theme = mkOption {
description = "Obsidian theme package.";
type = raw;
default = null;
};
}; };
vaults = mkOption { vaults = mkOption {
@@ -134,6 +140,12 @@ in
type = listOf path; type = listOf path;
default = cfg.sharedSettings.cssSnippets; default = cfg.sharedSettings.cssSnippets;
}; };
theme = mkOption {
description = "Obsidian theme package.";
type = nullOr package;
default = cfg.sharedSettings.theme;
};
}; };
}; };
@@ -148,6 +160,7 @@ in
config = config =
let let
vaults = builtins.filter (vault: vault.enable == true) (builtins.attrValues cfg.vaults); vaults = builtins.filter (vault: vault.enable == true) (builtins.attrValues cfg.vaults);
getThemeName = theme: (builtins.fromJSON (builtins.readFile "${theme}/manifest.json")).name;
in in
lib.mkIf cfg.enable { lib.mkIf cfg.enable {
home = { home = {
@@ -171,6 +184,9 @@ in
snippet: lib.strings.removeSuffix ".css" (builtins.baseNameOf snippet) snippet: lib.strings.removeSuffix ".css" (builtins.baseNameOf snippet)
) vault.settings.cssSnippets; ) vault.settings.cssSnippets;
} }
// lib.attrsets.optionalAttrs (vault.settings.theme != null) {
cssTheme = getThemeName vault.settings.theme;
}
); );
}; };
}; };
@@ -203,6 +219,14 @@ in
source = snippet; source = snippet;
}; };
}) vault.settings.cssSnippets; }) vault.settings.cssSnippets;
mkTheme =
vault:
lib.attrsets.optionalAttrs (vault.settings.theme != null) {
name = "${vault.target}/.obsidian/themes/${getThemeName vault.settings.theme}";
value = {
source = vault.settings.theme;
};
};
in in
builtins.listToAttrs ( builtins.listToAttrs (
lib.lists.flatten ( lib.lists.flatten (
@@ -211,6 +235,7 @@ in
(mkAppearance vault) (mkAppearance vault)
(mkCorePlugins vault) (mkCorePlugins vault)
(mkCssSnippets vault) (mkCssSnippets vault)
(mkTheme vault)
]) vaults ]) vaults
) )
); );

View File

@@ -0,0 +1,28 @@
{
pkgs ? import <nixpkgs> { },
...
}:
let
version = "7.7.7";
css = builtins.fetchurl {
url = "https://github.com/kepano/obsidian-minimal/releases/download/${version}/theme.css";
sha256 = "sha256:1j7w6dsl20fbpzy9ldplf658qhg5ka1bkd2a8ac9q4n15lbqnp3a";
};
in
pkgs.stdenv.mkDerivation {
name = "obsidian.themes.minimal";
src = builtins.fetchurl {
url = "https://github.com/kepano/obsidian-minimal/releases/download/${version}/manifest.json";
sha256 = "sha256:1hcp8kpzkb2hdj520mqdaar9dh0fcaqwcgji7dd1ws37yzw44kc5";
};
phases = [ "installPhase" ];
installPhase = ''
mkdir -p $out
cp $src $out/manifest.json
cp ${css} $out/theme.css
'';
}