Configuration for my NixOS based systems and Home Manager
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

WIP: add obsidian sync to Misaki

+73 -11
+1
default-home.nix
··· 117 117 inputs.claude-code.packages.${system}.claude-code-bun 118 118 inputs.claude-code.packages.${system}.claude-code 119 119 opencode 120 + unstable.obsidian-headless 120 121 121 122 # Python dev tools 122 123 pyright
+1
flake.nix
··· 147 147 sha256 = "HA779rkjy8QBlW2+IsRmgu4t5PT2Gy0oaqcJm+9zCYE="; 148 148 }; 149 149 }; 150 + obsidian-headless = final.pkgs.callPackage ./overlays/obsidian-headless.nix { }; 150 151 ## Override the json object that contains verions and hashes for Immich 151 152 #immich = prev.immich.override { sourcesJSON = ./overrides/immich-sources.json; }; 152 153 ## Fix errors wit numpy version failing to resolve in the immich ML package
+1
host-specific/misaki/configuration.nix
··· 7 7 ./networking.nix 8 8 ./packages.nix 9 9 ./services.nix 10 + ../../overlays/obsidian-sync.nix 10 11 ]; 11 12 nixpkgs.config.allowUnfree = true; 12 13 system.stateVersion = "23.11"; # Did you read the comment?
+29
host-specific/misaki/services.nix
··· 314 314 settings = builtins.fromJSON (builtins.readFile /home/noah/.step/config/ca.json); 315 315 }; 316 316 317 + #age.secrets.obsidian_auth_token = { 318 + # file = ../../secrets/obsidian-auth-token.age; 319 + # owner = "noah"; 320 + # group = "nas"; 321 + # mode = "640"; 322 + #}; 323 + services.obsidian-sync = { 324 + enable = true; 325 + path = "/srv/shokuhou/applications/obsidian-sync"; 326 + authTokenFile = "/dev/null"; # config.age.secrets.obsidian_auth_token.path; 327 + package = unstable.obsidian-headless; 328 + user = "noah"; 329 + group = "nas"; 330 + vaults = { 331 + "Athenaeum" = { 332 + path = "/srv/shokuhou/applications/obsidian-sync/Athenaeum"; 333 + }; 334 + "Celestial Grimoire" = { 335 + path = "/srv/shokuhou/applications/obsidian-sync/Celestial Grimoire"; 336 + }; 337 + "Uldoron" = { 338 + path = "/srv/shokuhou/applications/obsidian-sync/Uldoron"; 339 + }; 340 + "Ambient" = { 341 + path = "/srv/shokuhou/applications/obsidian-sync/Ambient"; 342 + }; 343 + }; 344 + }; 345 + 317 346 services.tangled.knot = { 318 347 enable = true; 319 348 server = {
+36 -10
overlays/obsidian-headless.nix
··· 1 1 { 2 2 lib, 3 - buildNpmPackage, 3 + stdenv, 4 4 fetchFromGitHub, 5 + fetchPnpmDeps, 5 6 nodejs_22, 7 + pnpm_9, 8 + pnpmConfigHook, 6 9 python3, 10 + makeBinaryWrapper, 7 11 }: 8 - buildNpmPackage rec { 12 + stdenv.mkDerivation (finalAttrs: { 9 13 pname = "obsidian-headless"; 10 14 version = "0.0.3"; 11 15 12 16 src = fetchFromGitHub { 13 17 owner = "obsidianmd"; 14 18 repo = "obsidian-headless"; 15 - rev = "v${version}"; 16 - hash = lib.fakeHash; 19 + rev = "b69b55e9261d05fb7c4c0ec82f6dc2b6af81b359"; 20 + hash = "sha256-moU0p6Mk9GBzKgaZ7Kj7rA3RIaerqd78mA9w5h10K8U="; 17 21 }; 18 22 19 - nodejs = nodejs_22; 20 - npmDepsHash = lib.fakeHash; 23 + nativeBuildInputs = [ 24 + nodejs_22 25 + pnpm_9 26 + pnpmConfigHook 27 + python3 28 + makeBinaryWrapper 29 + ]; 21 30 22 - # better-sqlite3 needs python3 + native build tools 23 - nativeBuildInputs = [ python3 ]; 31 + pnpmDeps = fetchPnpmDeps { 32 + inherit (finalAttrs) pname version src; 33 + pnpm = pnpm_9; 34 + fetcherVersion = 3; 35 + hash = "sha256-Y/atHIJQzrt6ctpI2ks7Mj0bnTCQx4d5mDtY/YIEcow="; 36 + }; 24 37 25 - dontNpmBuild = true; 38 + dontBuild = true; 39 + 40 + installPhase = '' 41 + runHook preInstall 42 + 43 + mkdir -p $out/lib/obsidian-headless 44 + cp -r . $out/lib/obsidian-headless 45 + 46 + mkdir -p $out/bin 47 + makeBinaryWrapper ${nodejs_22}/bin/node $out/bin/ob \ 48 + --add-flags "$out/lib/obsidian-headless/cli.js" 49 + 50 + runHook postInstall 51 + ''; 26 52 27 53 meta = { 28 54 description = "Headless client for Obsidian Sync"; ··· 31 57 platforms = lib.platforms.linux ++ lib.platforms.darwin; 32 58 mainProgram = "ob"; 33 59 }; 34 - } 60 + })
+4 -1
overlays/obsidian-sync.nix
··· 93 93 94 94 systemd.services = lib.mapAttrs' ( 95 95 name: vault: 96 - lib.nameValuePair "obsidian-sync-${name}" { 96 + let 97 + safeName = builtins.replaceStrings [ " " ] [ "-" ] name; 98 + in 99 + lib.nameValuePair "obsidian-sync-${safeName}" { 97 100 description = "Obsidian Sync - ${name}"; 98 101 after = [ "network-online.target" ]; 99 102 wants = [ "network-online.target" ];
+1
secrets/secrets.nix
··· 30 30 "garage_admin_secret.age".publicKeys = [ misaki ] ++ noah; 31 31 "garage_metrics_secret.age".publicKeys = [ misaki ] ++ noah; 32 32 "victoria-secret.age".publicKeys = [ misaki ] ++ noah; 33 + "obsidian-auth-token.age".publicKeys = [ misaki ] ++ noah; 33 34 }