summaryrefslogtreecommitdiff
path: root/modules/system
diff options
context:
space:
mode:
authorApril Schleck <april@exclusivelyducks.com>2024-10-25 13:21:56 -0700
committerApril Schleck <april@exclusivelyducks.com>2024-11-02 08:53:08 -0700
commit0dacfdea635b664812b8065e6b5449c43bf1a586 (patch)
tree266fc01312002359540fda8bcc3273433ba8f1a8 /modules/system
parent7840909b00fbd5a183008a6eb251ea307fe4a76e (diff)
Configure the folder that new Finder windows open
Diffstat (limited to 'modules/system')
-rw-r--r--modules/system/defaults/finder.nix54
1 files changed, 53 insertions, 1 deletions
diff --git a/modules/system/defaults/finder.nix b/modules/system/defaults/finder.nix
index 1da93c0..51fff74 100644
--- a/modules/system/defaults/finder.nix
+++ b/modules/system/defaults/finder.nix
@@ -1,7 +1,10 @@
{ config, lib, ... }:
-with lib;
+let
+ inherit (lib) mkOption types;
+ cfg = config.system.defaults.finder;
+in
{
options = {
@@ -96,5 +99,54 @@ with lib;
'';
};
+ system.defaults.finder.NewWindowTarget = mkOption {
+ type = types.nullOr (types.enum [
+ "Computer"
+ "OS volume"
+ "Home"
+ "Desktop"
+ "Documents"
+ "Recents"
+ "iCloud Drive"
+ "Other"
+ ]);
+ apply = key: if key == null then null else {
+ "Computer" = "PfCm";
+ "OS volume" = "PfVo";
+ "Home" = "PfHm";
+ "Desktop" = "PfDe";
+ "Documents" = "PfDo";
+ "Recents" = "PfAF";
+ "iCloud Drive" = "PfID";
+ "Other" = "PfLo";
+ }.${key};
+ default = null;
+ description = ''
+ Change the default folder shown in Finder windows. "Other" corresponds to the value of
+ NewWindowTargetPath. The default is unset ("Recents").
+ '';
+ };
+
+ system.defaults.finder.NewWindowTargetPath = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = ''
+ Sets the URI to open when NewWindowTarget is "Other". Spaces and similar characters must be
+ escaped. If the value is invalid, Finder will open your home directory.
+ Example: "file:///Users/foo/long%20cat%20pics".
+ The default is unset.
+ '';
+ };
+ };
+
+ config = {
+ assertions = [{
+ assertion = cfg.NewWindowTargetPath != null -> cfg.NewWindowTarget == "PfLo";
+ message = "`system.defaults.finder.NewWindowTarget` should be set to `Other` when `NewWindowTargetPath` is non-null.";
+ }
+ {
+ assertion = cfg.NewWindowTarget == "PfLo" -> cfg.NewWindowTargetPath != null;
+ message = "`system.defaults.finder.NewWindowTargetPath` should be non-null when `NewWindowTarget` is set to `Other`.";
+ }];
};
}