From 9ce9a7ec6abe33b8250397a80376ab96c547d42d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20Schwarz=C3=A4ugl?= Date: Tue, 21 Oct 2025 13:16:49 +0200 Subject: [PATCH] feat[client]: reduce file clobbering --- SwarselSystems.org | 97 +++++++++++++++------------ modules/home/common/desktop.nix | 85 ++++++++++++----------- modules/home/common/obsidian.nix | 11 ++- modules/nixos/common/home-manager.nix | 1 + 4 files changed, 106 insertions(+), 88 deletions(-) diff --git a/SwarselSystems.org b/SwarselSystems.org index b04ce82..71667e7 100644 --- a/SwarselSystems.org +++ b/SwarselSystems.org @@ -4227,6 +4227,7 @@ We enable the use of =home-manager= as a NixoS module. A nice trick here is the useGlobalPkgs = true; useUserPackages = true; verbose = true; + backupFileExtension = "hm-bak"; users.${config.swarselsystems.mainUser}.imports = [ inputs.nix-index-database.homeModules.nix-index inputs.sops-nix.homeManagerModules.sops @@ -11577,48 +11578,51 @@ TODO: Non-NixOS machines (=sp3) should not use these by default, but instead the }; - xdg.mimeApps = { - enable = true; - defaultApplications = { - "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; - "application/metalink+xml" = [ "emacsclient.desktop" ]; - "application/msword" = [ "writer.desktop" ]; - "application/pdf" = [ "org.gnome.Evince.desktop" ]; - "application/sql" = [ "emacsclient.desktop" ]; - "application/vnd.ms-excel" = [ "calc.desktop" ]; - "application/vnd.ms-powerpoint" = [ "impress.desktop" ]; - "application/x-extension-htm" = [ "firefox.desktop" ]; - "application/x-extension-html" = [ "firefox.desktop" ]; - "application/x-extension-shtml" = [ "firefox.desktop" ]; - "application/x-extension-xht" = [ "firefox.desktop" ]; - "application/x-extension-xhtml" = [ "firefox.desktop" ]; - "application/xhtml+xml" = [ "firefox.desktop" ]; - "audio/flac" = [ "mpv.desktop" ]; - "audio/mp3" = [ "mpv.desktop" ]; - "audio/ogg" = [ "mpv.desktop" ]; - "audio/wav" = [ "mpv.desktop" ]; - "image/gif" = [ "imv.desktop" ]; - "image/jpeg" = [ "imv.desktop" ]; - "image/png" = [ "imv.desktop" ]; - "image/svg" = [ "imv.desktop" ]; - "image/vnd.adobe.photoshop" = [ "gimp.desktop" ]; - "image/vnd.dxf" = [ "org.inkscape.Inkscape.desktop" ]; - "image/webp" = [ "firefox.desktop" ]; - "text/csv" = [ "emacsclient.desktop" ]; - "text/html" = [ "firefox.desktop" ]; - "text/plain" = [ "emacsclient.desktop" ]; - "video/3gp" = [ "umpv.desktop" ]; - "video/flv" = [ "umpv.desktop" ]; - "video/mkv" = [ "umpv.desktop" ]; - "video/mp4" = [ "umpv.desktop" ]; - "x-scheme-handler/chrome" = [ "firefox.desktop" ]; - "x-scheme-handler/http" = [ "firefox.desktop" ]; - "x-scheme-handler/https" = [ "firefox.desktop" ]; - }; - associations = { - added = { - "application/x-zerosize" = [ "emacsclient.desktop" ]; + xdg = { + configFile."mimeapps.list".force = true; + mimeApps = { + enable = true; + defaultApplications = { "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; + "application/metalink+xml" = [ "emacsclient.desktop" ]; + "application/msword" = [ "writer.desktop" ]; + "application/pdf" = [ "org.gnome.Evince.desktop" ]; + "application/sql" = [ "emacsclient.desktop" ]; + "application/vnd.ms-excel" = [ "calc.desktop" ]; + "application/vnd.ms-powerpoint" = [ "impress.desktop" ]; + "application/x-extension-htm" = [ "firefox.desktop" ]; + "application/x-extension-html" = [ "firefox.desktop" ]; + "application/x-extension-shtml" = [ "firefox.desktop" ]; + "application/x-extension-xht" = [ "firefox.desktop" ]; + "application/x-extension-xhtml" = [ "firefox.desktop" ]; + "application/xhtml+xml" = [ "firefox.desktop" ]; + "audio/flac" = [ "mpv.desktop" ]; + "audio/mp3" = [ "mpv.desktop" ]; + "audio/ogg" = [ "mpv.desktop" ]; + "audio/wav" = [ "mpv.desktop" ]; + "image/gif" = [ "imv.desktop" ]; + "image/jpeg" = [ "imv.desktop" ]; + "image/png" = [ "imv.desktop" ]; + "image/svg" = [ "imv.desktop" ]; + "image/vnd.adobe.photoshop" = [ "gimp.desktop" ]; + "image/vnd.dxf" = [ "org.inkscape.Inkscape.desktop" ]; + "image/webp" = [ "firefox.desktop" ]; + "text/csv" = [ "emacsclient.desktop" ]; + "text/html" = [ "firefox.desktop" ]; + "text/plain" = [ "emacsclient.desktop" ]; + "video/3gp" = [ "umpv.desktop" ]; + "video/flv" = [ "umpv.desktop" ]; + "video/mkv" = [ "umpv.desktop" ]; + "video/mp4" = [ "umpv.desktop" ]; + "x-scheme-handler/chrome" = [ "firefox.desktop" ]; + "x-scheme-handler/http" = [ "firefox.desktop" ]; + "x-scheme-handler/https" = [ "firefox.desktop" ]; + }; + associations = { + added = { + "application/x-zerosize" = [ "emacsclient.desktop" ]; + "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; + }; }; }; }; @@ -14529,14 +14533,19 @@ This service changes the screen hue at night. I am not sure if that really does let moduleName = "obsidian"; inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters; + name = "Main"; in { options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} with settings"; config = lib.mkIf config.swarselmodules.${moduleName} { + + home.file = { + "${config.programs.obsidian.vaults.${name}.target}/.obsidian/app.json".force = true; + "${config.programs.obsidian.vaults.${name}.target}/.obsidian/appearance.json".force = true; + "${config.programs.obsidian.vaults.${name}.target}/.obsidian/core-plugins.json".force = true; + }; + programs.obsidian = - let - name = "Main"; - in { enable = true; package = pkgs.obsidian; diff --git a/modules/home/common/desktop.nix b/modules/home/common/desktop.nix index cf04c2a..cd37b36 100644 --- a/modules/home/common/desktop.nix +++ b/modules/home/common/desktop.nix @@ -55,48 +55,51 @@ }; - xdg.mimeApps = { - enable = true; - defaultApplications = { - "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; - "application/metalink+xml" = [ "emacsclient.desktop" ]; - "application/msword" = [ "writer.desktop" ]; - "application/pdf" = [ "org.gnome.Evince.desktop" ]; - "application/sql" = [ "emacsclient.desktop" ]; - "application/vnd.ms-excel" = [ "calc.desktop" ]; - "application/vnd.ms-powerpoint" = [ "impress.desktop" ]; - "application/x-extension-htm" = [ "firefox.desktop" ]; - "application/x-extension-html" = [ "firefox.desktop" ]; - "application/x-extension-shtml" = [ "firefox.desktop" ]; - "application/x-extension-xht" = [ "firefox.desktop" ]; - "application/x-extension-xhtml" = [ "firefox.desktop" ]; - "application/xhtml+xml" = [ "firefox.desktop" ]; - "audio/flac" = [ "mpv.desktop" ]; - "audio/mp3" = [ "mpv.desktop" ]; - "audio/ogg" = [ "mpv.desktop" ]; - "audio/wav" = [ "mpv.desktop" ]; - "image/gif" = [ "imv.desktop" ]; - "image/jpeg" = [ "imv.desktop" ]; - "image/png" = [ "imv.desktop" ]; - "image/svg" = [ "imv.desktop" ]; - "image/vnd.adobe.photoshop" = [ "gimp.desktop" ]; - "image/vnd.dxf" = [ "org.inkscape.Inkscape.desktop" ]; - "image/webp" = [ "firefox.desktop" ]; - "text/csv" = [ "emacsclient.desktop" ]; - "text/html" = [ "firefox.desktop" ]; - "text/plain" = [ "emacsclient.desktop" ]; - "video/3gp" = [ "umpv.desktop" ]; - "video/flv" = [ "umpv.desktop" ]; - "video/mkv" = [ "umpv.desktop" ]; - "video/mp4" = [ "umpv.desktop" ]; - "x-scheme-handler/chrome" = [ "firefox.desktop" ]; - "x-scheme-handler/http" = [ "firefox.desktop" ]; - "x-scheme-handler/https" = [ "firefox.desktop" ]; - }; - associations = { - added = { - "application/x-zerosize" = [ "emacsclient.desktop" ]; + xdg = { + configFile."mimeapps.list".force = true; + mimeApps = { + enable = true; + defaultApplications = { "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; + "application/metalink+xml" = [ "emacsclient.desktop" ]; + "application/msword" = [ "writer.desktop" ]; + "application/pdf" = [ "org.gnome.Evince.desktop" ]; + "application/sql" = [ "emacsclient.desktop" ]; + "application/vnd.ms-excel" = [ "calc.desktop" ]; + "application/vnd.ms-powerpoint" = [ "impress.desktop" ]; + "application/x-extension-htm" = [ "firefox.desktop" ]; + "application/x-extension-html" = [ "firefox.desktop" ]; + "application/x-extension-shtml" = [ "firefox.desktop" ]; + "application/x-extension-xht" = [ "firefox.desktop" ]; + "application/x-extension-xhtml" = [ "firefox.desktop" ]; + "application/xhtml+xml" = [ "firefox.desktop" ]; + "audio/flac" = [ "mpv.desktop" ]; + "audio/mp3" = [ "mpv.desktop" ]; + "audio/ogg" = [ "mpv.desktop" ]; + "audio/wav" = [ "mpv.desktop" ]; + "image/gif" = [ "imv.desktop" ]; + "image/jpeg" = [ "imv.desktop" ]; + "image/png" = [ "imv.desktop" ]; + "image/svg" = [ "imv.desktop" ]; + "image/vnd.adobe.photoshop" = [ "gimp.desktop" ]; + "image/vnd.dxf" = [ "org.inkscape.Inkscape.desktop" ]; + "image/webp" = [ "firefox.desktop" ]; + "text/csv" = [ "emacsclient.desktop" ]; + "text/html" = [ "firefox.desktop" ]; + "text/plain" = [ "emacsclient.desktop" ]; + "video/3gp" = [ "umpv.desktop" ]; + "video/flv" = [ "umpv.desktop" ]; + "video/mkv" = [ "umpv.desktop" ]; + "video/mp4" = [ "umpv.desktop" ]; + "x-scheme-handler/chrome" = [ "firefox.desktop" ]; + "x-scheme-handler/http" = [ "firefox.desktop" ]; + "x-scheme-handler/https" = [ "firefox.desktop" ]; + }; + associations = { + added = { + "application/x-zerosize" = [ "emacsclient.desktop" ]; + "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; + }; }; }; }; diff --git a/modules/home/common/obsidian.nix b/modules/home/common/obsidian.nix index f23d789..0e2e7f4 100644 --- a/modules/home/common/obsidian.nix +++ b/modules/home/common/obsidian.nix @@ -2,14 +2,19 @@ let moduleName = "obsidian"; inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters; + name = "Main"; in { options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} with settings"; config = lib.mkIf config.swarselmodules.${moduleName} { + + home.file = { + "${config.programs.obsidian.vaults.${name}.target}/.obsidian/app.json".force = true; + "${config.programs.obsidian.vaults.${name}.target}/.obsidian/appearance.json".force = true; + "${config.programs.obsidian.vaults.${name}.target}/.obsidian/core-plugins.json".force = true; + }; + programs.obsidian = - let - name = "Main"; - in { enable = true; package = pkgs.obsidian; diff --git a/modules/nixos/common/home-manager.nix b/modules/nixos/common/home-manager.nix index 4bcb21a..38eea3c 100644 --- a/modules/nixos/common/home-manager.nix +++ b/modules/nixos/common/home-manager.nix @@ -6,6 +6,7 @@ useGlobalPkgs = true; useUserPackages = true; verbose = true; + backupFileExtension = "hm-bak"; users.${config.swarselsystems.mainUser}.imports = [ inputs.nix-index-database.homeModules.nix-index inputs.sops-nix.homeManagerModules.sops