diff --git a/nixos/modules/programs/browser.nix b/nixos/modules/programs/browser.nix index affe83f..84998da 100644 --- a/nixos/modules/programs/browser.nix +++ b/nixos/modules/programs/browser.nix @@ -104,23 +104,118 @@ let in allBrowser ++ xclipBrowser; - createBackupScript = name: home: backupHome: - pkgs.writeShellScriptBin "${name}-backup" # sh - '' - sudo -u ${name} \ - ${tarBin} \ - --exclude=.cache \ - --exclude=Downloads \ - --create \ - --verbos \ - --lzma \ - --file ${home}.tar.lzma \ - --directory ${home} \ - . + #createBackupScript = name: home: backupHome: + # pkgs.writeShellScriptBin "${name}-backup" # sh + # '' + # sudo -u ${name} \ + # ${tarBin} \ + # --exclude=.cache \ + # --exclude=.config/chromium/Default/Service\ Worker/CacheStorage \ + # --exclude=.config/chromium/Default/IndexedDB \ + # --exclude=".mozilla/firefox/[a-zA-Z0-9]+.default/storage" \ + # --exclude=Downloads \ + # --create \ + # --verbos \ + # --lzma \ + # --file ${home}.tar.lzma \ + # --directory ${home} \ + # . + # cp ${home}.tar.lzma ${backupHome}.tar.lzma + # ''; - cp ${home}.tar.lzma ${backupHome}.tar.lzma + createBackupScript = name: home: backupHome: + createBackupScriptTemplate { + sudo = name; + name = name; + source = home; + target = backupHome; + arguments = [ + "--exclude=Downloads" + "--exclude=.cache" + "--exclude=.config/chromium/Default/IndexedDB" + "--exclude=\".config/chromium/Default/Service Worker/CacheStorage\"" + "--exclude=\".config/google-chrome/Crash Reports\"" + "--exclude=.config/google-chrome/Default/DawnCache" + "--exclude=\".config/google-chrome/Default/Local Storage\"" + "--exclude=.config/google-chrome/Default/Storage" + "--exclude=.config/google-chrome/Default/optimization_guide_prediction_model_downloads" + "--exclude=\".mozilla/firefox/*.default/sessionstore-backups\"" + "--exclude=\".mozilla/firefox/*.default/storage\"" + "--exclude=.mozilla/firefox/*.default/storage-sync-v2.sqlite" + ]; + }; + + createBackupScriptTemplate = { sudo, name, source, target, arguments ? [ ] }: + pkgs.writers.writeBashBin "${name}-backup" + '' + sudo -u ${sudo} \ + ${tarBin} \ + ${concatStringsSep " " arguments} \ + --create \ + --verbos \ + --lzma \ + --file ${source}.tar.lzma \ + --directory ${source} \ + . + + cp ${source}.tar.lzma ${target}.tar.lzma ''; + # todo_this_is_how_I_want_to_use_tar = tar { + # sudo = "jobrad"; + # # true => tar --directory ${source} . + # # false => tar $source + # strip_path = true; + # source = "/browser/jobrad"; + # target = "/browser/jobrad.tar.lzma"; + # lzma = true; + # # also possble this is a string + # exclude = [ + # ".cache" + # ".config" + # ]; + # exclude-backup = true; + # exclude-cache-all = true; + # extraArgs = { + # # key = string or key = list + # }; + # }; + + allExcludes = + let + excludes = { + works = [ + "--exclude=Downloads" + "--exclude=.cache" + "--exclude=.config/chromium/Default/IndexedDB" + "--exclude=.config/chromium/Default/Service\ Worker/CacheStorage" + "--exclude=.config/google-chrome/Crash\ Reports" + "--exclude=.config/google-chrome/Default/DawnCache" + "--exclude=.config/google-chrome/Default/Local\ Storage" + "--exclude=.config/google-chrome/Default/Storage" + "--exclude=.config/google-chrome/Default/optimization_guide_prediction_model_downloads" + "--exclude=.mozilla/firefox/*.default/sessionstore-backups" + "--exclude=.mozilla/firefox/*.default/storage" + "--exclude=.mozilla/firefox/*.default/storage-sync-v2.sqlite" + ]; + }; + + allScripts = mapAttrs + (name: exclude: + createBackupScriptTemplate { + sudo = "jobrad"; + name = name; + source = "/browsers/jobrad"; + target = "/browsers/jobrad-${name}"; + arguments = exclude; + }) + excludes; + in + pkgs.writers.writeBashBin "test-tar" + (concatStringsSep "\n" (builtins.attrValues allScripts)); + + + allBackupScripts = let filteredConfigs = @@ -251,7 +346,7 @@ in (name: config: { home = config.home; createHome = false; - initialPassword = "${name}-browser"; + initialPassword = "${name} -browser"; shell = pkgs.bashInteractive; isNormalUser = false; isSystemUser = true; @@ -263,10 +358,15 @@ in mainUser.extraGroups = builtins.attrNames cfg.configList; }; - environment.systemPackages = [ browserSelect (desktopFile browserSelect) ] - ++ browserExecutableList - ++ (map (bin: desktopFile bin) browserExecutableList) ++ allBackupScripts - ++ allCleanScripts ++ allKillScripts; + environment.systemPackages = [ + browserSelect + (desktopFile browserSelect) + # allExcludes + ] + ++ browserExecutableList + ++ (map (bin: desktopFile bin) browserExecutableList) ++ allBackupScripts + ++ allCleanScripts ++ allKillScripts; }; } +