refactor
This commit is contained in:
parent
66c05f9093
commit
45d6f4b0f3
205 changed files with 9040 additions and 342 deletions
118
modules/nixos/desktop/addons/gtk/default.nix
Normal file
118
modules/nixos/desktop/addons/gtk/default.nix
Normal file
|
@ -0,0 +1,118 @@
|
|||
{ options
|
||||
, config
|
||||
, lib
|
||||
, pkgs
|
||||
, ...
|
||||
}:
|
||||
with lib;
|
||||
with lib.plusultra; let
|
||||
cfg = config.plusultra.desktop.addons.gtk;
|
||||
gdmCfg = config.services.xserver.displayManager.gdm;
|
||||
in
|
||||
{
|
||||
options.plusultra.desktop.addons.gtk = with types; {
|
||||
enable = mkBoolOpt false "Whether to customize GTK and apply themes.";
|
||||
theme = {
|
||||
name =
|
||||
mkOpt str "Nordic-darker"
|
||||
"The name of the GTK theme to apply.";
|
||||
pkg = mkOpt package pkgs.nordic "The package to use for the theme.";
|
||||
};
|
||||
cursor = {
|
||||
name =
|
||||
mkOpt str "Bibata-Modern-Ice"
|
||||
"The name of the cursor theme to apply.";
|
||||
pkg = mkOpt package pkgs.plusultra.bibata-cursors "The package to use for the cursor theme.";
|
||||
};
|
||||
icon = {
|
||||
name =
|
||||
mkOpt str "Papirus"
|
||||
"The name of the icon theme to apply.";
|
||||
pkg = mkOpt package pkgs.papirus-icon-theme "The package to use for the icon theme.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [
|
||||
cfg.icon.pkg
|
||||
cfg.cursor.pkg
|
||||
];
|
||||
|
||||
environment.sessionVariables = {
|
||||
XCURSOR_THEME = cfg.cursor.name;
|
||||
};
|
||||
|
||||
plusultra.home.extraOptions = {
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
theme = {
|
||||
name = cfg.theme.name;
|
||||
package = cfg.theme.pkg;
|
||||
};
|
||||
|
||||
cursorTheme = {
|
||||
name = cfg.cursor.name;
|
||||
package = cfg.cursor.pkg;
|
||||
};
|
||||
|
||||
iconTheme = {
|
||||
name = cfg.icon.name;
|
||||
package = cfg.icon.pkg;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# NOTE: In order to set the cursor theme in GDM we have to specify it in the
|
||||
# dconf profile. However, the NixOS module doesn't provide an easy way to do this so the relevant
|
||||
# parts have been extracted from:
|
||||
# https://github.com/NixOS/nixpkgs/blob/96e18717904dfedcd884541e5a92bf9ff632cf39/nixos/modules/services/x11/display-managers/gdm.nix
|
||||
#
|
||||
# NOTE: The GTK and icon themes don't seem to affect recent GDM versions. I've
|
||||
# left them here as reference for the future.
|
||||
programs.dconf.profiles = mkIf gdmCfg.enable {
|
||||
gdm =
|
||||
let
|
||||
customDconf = pkgs.writeTextFile {
|
||||
name = "gdm-dconf";
|
||||
destination = "/dconf/gdm-custom";
|
||||
text = ''
|
||||
${optionalString (!gdmCfg.autoSuspend) ''
|
||||
[org/gnome/settings-daemon/plugins/power]
|
||||
sleep-inactive-ac-type='nothing'
|
||||
sleep-inactive-battery-type='nothing'
|
||||
sleep-inactive-ac-timeout=0
|
||||
sleep-inactive-battery-timeout=0
|
||||
''}
|
||||
|
||||
[org/gnome/desktop/interface]
|
||||
gtk-theme='${cfg.theme.name}'
|
||||
cursor-theme='${cfg.cursor.name}'
|
||||
icon-theme='${cfg.icon.name}'
|
||||
'';
|
||||
};
|
||||
|
||||
customDconfDb = pkgs.stdenv.mkDerivation {
|
||||
name = "gdm-dconf-db";
|
||||
buildCommand = ''
|
||||
${pkgs.dconf}/bin/dconf compile $out ${customDconf}/dconf
|
||||
'';
|
||||
};
|
||||
in
|
||||
mkForce (
|
||||
pkgs.stdenv.mkDerivation {
|
||||
name = "dconf-gdm-profile";
|
||||
buildCommand = ''
|
||||
# Check that the GDM profile starts with what we expect.
|
||||
if [ $(head -n 1 ${pkgs.gnome.gdm}/share/dconf/profile/gdm) != "user-db:user" ]; then
|
||||
echo "GDM dconf profile changed, please update gtk/default.nix"
|
||||
exit 1
|
||||
fi
|
||||
# Insert our custom DB behind it.
|
||||
sed '2ifile-db:${customDconfDb}' ${pkgs.gnome.gdm}/share/dconf/profile/gdm > $out
|
||||
'';
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue