From 1530686ee7235d146d1fb2ca06880350ea66229c Mon Sep 17 00:00:00 2001 From: punkfairie Date: Sun, 20 Oct 2024 12:59:09 -0700 Subject: [PATCH] feat(swaylock): Catppuccin -> Rose Pine --- .sources/sources.json | 12 ++++++ modules/home-manager/swaylock.nix | 68 ++++++++++++++++++------------- 2 files changed, 52 insertions(+), 28 deletions(-) diff --git a/.sources/sources.json b/.sources/sources.json index cd6cf06..6033fe0 100644 --- a/.sources/sources.json +++ b/.sources/sources.json @@ -288,6 +288,18 @@ "url": "https://github.com/d2718nis/rose-pine-dunst/archive/496499eaed38a07ce4f79ec91baaf6e1e4c28bc5.tar.gz", "hash": "0x7cqbcn7zygab9xbmbarz06wxkj3wxxffwmka33ljhm8gk3x0ay" }, + "rose-pine-swaylock": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "d2718nis", + "repo": "rose-pine-swaylock" + }, + "branch": "main", + "revision": "8a2aefbc9996941535bb10f0df5357687c43c06a", + "url": "https://github.com/d2718nis/rose-pine-swaylock/archive/8a2aefbc9996941535bb10f0df5357687c43c06a.tar.gz", + "hash": "15inlf8j6vn5k9d71lzmxsrqn55qha1idmpxbk4v1ji0sywrw1f6" + }, "starship": { "type": "Git", "repository": { diff --git a/modules/home-manager/swaylock.nix b/modules/home-manager/swaylock.nix index 93e490b..1df2b5c 100644 --- a/modules/home-manager/swaylock.nix +++ b/modules/home-manager/swaylock.nix @@ -1,39 +1,51 @@ -{ config, lib, ... }: -let - inherit (config.catppuccin) sources; - cfg = config.programs.swaylock.catppuccin; -in { - options.programs.swaylock.catppuccin = { - enable = lib.mkEnableOption "Catppuccin theme" // { - /* - global `catppuccin.enable` purposefully doesn't work here in configurations with a `home.stateVersion` - that is >= 23.05 + config, + lib, + ... +}: let + inherit (config.rose-pine) sources; - this is because the upstream module will automatically enable itself if `programs.swaylock.settings` - is set in configurations with a `home.stateVersion` that is < 23.05. so, we can't use the - `programs.swaylock.enable` option to guard against defining this like we usually do, as when the - upstream `enable` option is unset on these systems it checks that same `settings` option we would be - defining if *our* and the upstream's `enable` option is `true` ...leading to a case of infinite - recursion where `programs.swaylock.settings` is only being defined if `programs.swaylock.settings` is - defined + cfg = config.programs.swaylock.rose-pine; - debugging this was the most confusing and horrifying thing i've had to deal with throughout working on - this project. + themeName = + if (cfg.flavor == "main") + then "rose-pine" + else "rose-pine-${cfg.flavor}"; +in { + options.programs.swaylock.rose-pine = { + enable = + lib.mkEnableOption "Rosé Pine theme" + // { + /* + global `rose-pine.enable` purposefully doesn't work here in + configurations with a `home.stateVersion` that is >= 23.05 + + this is because the upstream module will automatically enable itself if + `programs.swaylock.settings` is set in configurations with a + `home.stateVersion` that is < 23.05. so, we can't use the + `programs.swaylock.enable` option to guard against defining this like we + usually do, as when the upstream `enable` option is unset on these + systems it checks that same `settings` option we would be defining if + *our* and the upstream's `enable` option is `true` ...leading to a case + of infinite recursion where `programs.swaylock.settings` is only being + defined if `programs.swaylock.settings` is defined + + debugging this was the most confusing and horrifying thing i've had to + deal with throughout working on this project. - @getchoo - */ - default = lib.versionAtLeast config.home.stateVersion "23.05" && config.catppuccin.enable; - defaultText = lib.literalExpression '' - `catppuccin.enable` if `home.stateVersion` is >= 23.05, false otherwise + */ + default = lib.versionAtLeast config.home.stateVersion "23.05" && config.rose-pine.enable; + defaultText = lib.literalExpression '' + `rose-pine.enable` if `home.stateVersion` is >= 23.05, false otherwise. - Yes this is weird, and there's a funny story about it in the code comments - ''; - }; + Yes this is weird, and there's a funny story about it in the code comments. + ''; + }; - flavor = lib.ctp.mkFlavorOpt "swaylock"; + flavor = lib.rp.mkFlavorOpt "swaylock"; }; config = lib.mkIf cfg.enable { - programs.swaylock.settings = lib.ctp.fromINI (sources.swaylock + "/themes/${cfg.flavor}.conf"); + programs.swaylock.settings = lib.rp.fromINI (sources.swaylock + "/${themeName}"); }; }