-
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8dc890d
commit e093e7e
Showing
6 changed files
with
82 additions
and
94 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,97 +1,71 @@ | ||
{ | ||
config, | ||
lib, | ||
pkgs, | ||
lib, | ||
config, | ||
osConfig, | ||
... | ||
}: | ||
with builtins; let | ||
cfg = config.programs.gtklock; | ||
with lib; let | ||
dev = osConfig.modules.device; | ||
vid = osConfig.modules.system.video; | ||
env = osConfig.modules.usrEnv; | ||
|
||
inherit (lib) types mkIf mkOption mkEnableOption mkPackageOptionMD mdDoc literalExpression optionals optionalString; | ||
inherit (lib.generators) toINI; | ||
acceptedTypes = ["desktop" "laptop" "lite" "hybrid"]; | ||
in { | ||
config = mkIf ((builtins.elem dev.type acceptedTypes && env.screenLock == "gtklock") && (vid.enable && env.isWayland)) { | ||
programs.gtklock = { | ||
enable = true; | ||
package = pkgs.gtklock; | ||
|
||
baseConfig = '' | ||
[main] | ||
${optionalString (cfg.config.gtk-theme != "") "gtk-theme=${cfg.config.gtk-theme}"} | ||
${optionalString (cfg.config.style != "") "style=${cfg.config.style}"} | ||
${optionalString (cfg.config.modules != []) "modules=${concatStringsSep ";" cfg.config.modules}"} | ||
''; | ||
config = { | ||
modules = [ | ||
"${pkgs.gtklock-powerbar-module.outPath}/lib/gtklock/powerbar-module.so" | ||
]; | ||
|
||
finalConfig = baseConfig + optionals (cfg.extraConfig != null) (toINI {} cfg.extraConfig); | ||
in { | ||
meta.maintainers = [maintainers.NotAShelf]; | ||
options.programs.gtklock = { | ||
enable = mkEnableOption "GTK-based lockscreen for Wayland"; | ||
package = mkPackageOptionMD pkgs "gtklock" {}; | ||
style = pkgs.writeText "gtklock-style.css" '' | ||
window { | ||
background-size: cover; | ||
background-repeat: no-repeat; | ||
background-position: center; | ||
} | ||
config = { | ||
gtk-theme = mkOption { | ||
type = types.str; | ||
default = ""; | ||
description = mdDoc '' | ||
GTK theme to use for gtklock. | ||
''; | ||
example = "Adwaita-dark"; | ||
}; | ||
style = mkOption { | ||
type = with types; oneOf [str path]; | ||
default = ""; | ||
description = mdDoc '' | ||
The css file to be used for gtklock. | ||
''; | ||
example = literalExpression '' | ||
pkgs.writeText "gtklock-style.css" ''' | ||
window { | ||
background-size: cover; | ||
background-repeat: no-repeat; | ||
background-position: center; | ||
} | ||
''' | ||
''; | ||
}; | ||
#clock-label { | ||
margin-bottom: 30px; | ||
font-size: 800%; | ||
font-weight: bold; | ||
color: white; | ||
text-shadow: 0px 2px 10px rgba(0,0,0,.1) | ||
} | ||
modules = mkOption { | ||
type = with types; listOf (either package str); | ||
default = []; | ||
description = mdDoc '' | ||
A list of gtklock modulesto use. Can either be packages, absolute paths, or strings. | ||
''; | ||
example = literalExpression '' | ||
[ | ||
"${pkgs.gtklock-powerbar-module.outPath}/lib/gtklock/powerbar-module.so" | ||
"${pkgs.gtklock-playerctl-module.outPath}/lib/gtklock/playerctl-module.so" | ||
]; | ||
#body { | ||
margin-top: 50px; | ||
} | ||
#unlock-button { | ||
all: unset; | ||
color: transparent; | ||
} | ||
entry { | ||
border-radius: 12px; | ||
margin: 1px; | ||
box-shadow: 1px 2px 4px rgba(0,0,0,.1) | ||
} | ||
#input-label { | ||
color: transparent; | ||
margin: -20rem; | ||
} | ||
#powerbar-box * { | ||
border-radius: 12px; | ||
box-shadow: 1px 2px 4px rgba(0,0,0,.1) | ||
} | ||
''; | ||
}; | ||
}; | ||
|
||
extraConfig = mkOption { | ||
type = with types; nullOr attrs; | ||
default = { | ||
countdown = { | ||
countdown-position = "top-right"; | ||
justify = "right"; | ||
countdown = 20; | ||
}; | ||
}; | ||
description = mdDoc '' | ||
Extra configuration to append to gtklock configuration file. | ||
Mostly used for appending module configurations. | ||
''; | ||
example = literalExpression '' | ||
countdown = { | ||
countdown-position = "top-right"; | ||
justify = "right"; | ||
countdown = 20; | ||
} | ||
''; | ||
extraConfig = {}; | ||
}; | ||
}; | ||
|
||
config = mkIf cfg.enable { | ||
home.packages = [cfg.package]; | ||
|
||
xdg.configFile."gtklock/config.ini".source = pkgs.writeText "gtklock-config.ini" finalConfig; | ||
}; | ||
} |