nixos/gnome: Remove global with expressions

The can potentially mask evaluation errors due to laziness of variable access within.

+3 -5
nixos/modules/programs/evince.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
let cfg = config.programs.evince;
in {
···
programs.evince = {
-
enable = mkEnableOption "Evince, the GNOME document viewer";
+
enable = lib.mkEnableOption "Evince, the GNOME document viewer";
-
package = mkPackageOption pkgs "evince" { };
+
package = lib.mkPackageOption pkgs "evince" { };
};
···
###### implementation
-
config = mkIf config.programs.evince.enable {
+
config = lib.mkIf config.programs.evince.enable {
environment.systemPackages = [ cfg.package ];
+3 -5
nixos/modules/programs/file-roller.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
let cfg = config.programs.file-roller;
in {
···
programs.file-roller = {
-
enable = mkEnableOption "File Roller, an archive manager for GNOME";
+
enable = lib.mkEnableOption "File Roller, an archive manager for GNOME";
-
package = mkPackageOption pkgs [ "gnome" "file-roller" ] { };
+
package = lib.mkPackageOption pkgs [ "gnome" "file-roller" ] { };
};
···
###### implementation
-
config = mkIf cfg.enable {
+
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
+4 -6
nixos/modules/programs/gnome-disks.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
programs.gnome-disks = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable GNOME Disks daemon, a program designed to
···
###### implementation
-
config = mkIf config.programs.gnome-disks.enable {
+
config = lib.mkIf config.programs.gnome-disks.enable {
environment.systemPackages = [ pkgs.gnome.gnome-disk-utility ];
+3 -5
nixos/modules/programs/gnome-terminal.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
let
cfg = config.programs.gnome-terminal;
···
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
options = {
-
programs.gnome-terminal.enable = mkEnableOption "GNOME Terminal";
+
programs.gnome-terminal.enable = lib.mkEnableOption "GNOME Terminal";
};
-
config = mkIf cfg.enable {
+
config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkgs.gnome.gnome-terminal ];
services.dbus.packages = [ pkgs.gnome.gnome-terminal ];
systemd.packages = [ pkgs.gnome.gnome-terminal ];
+3 -5
nixos/modules/programs/gpaste.nix
···
# GPaste.
{ config, lib, pkgs, ... }:
-
with lib;
-
{
###### interface
options = {
programs.gpaste = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable GPaste, a clipboard manager.
···
};
###### implementation
-
config = mkIf config.programs.gpaste.enable {
+
config = lib.mkIf config.programs.gpaste.enable {
environment.systemPackages = [ pkgs.gnome.gpaste ];
services.dbus.packages = [ pkgs.gnome.gpaste ];
systemd.packages = [ pkgs.gnome.gpaste ];
+3 -5
nixos/modules/programs/seahorse.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
{
###### interface
···
programs.seahorse = {
-
enable = mkEnableOption "Seahorse, a GNOME application for managing encryption keys and passwords in the GNOME Keyring";
+
enable = lib.mkEnableOption "Seahorse, a GNOME application for managing encryption keys and passwords in the GNOME Keyring";
};
···
###### implementation
-
config = mkIf config.programs.seahorse.enable {
+
config = lib.mkIf config.programs.seahorse.enable {
-
programs.ssh.askPassword = mkDefault "${pkgs.gnome.seahorse}/libexec/seahorse/ssh-askpass";
+
programs.ssh.askPassword = lib.mkDefault "${pkgs.gnome.seahorse}/libexec/seahorse/ssh-askpass";
environment.systemPackages = [
pkgs.gnome.seahorse
+6 -8
nixos/modules/services/desktops/gnome/at-spi2-core.nix
···
{ config, lib, pkgs, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.at-spi2-core = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable at-spi2-core, a service for the Assistive Technologies
···
###### implementation
-
config = mkMerge [
-
(mkIf config.services.gnome.at-spi2-core.enable {
+
config = lib.mkMerge [
+
(lib.mkIf config.services.gnome.at-spi2-core.enable {
environment.systemPackages = [ pkgs.at-spi2-core ];
services.dbus.packages = [ pkgs.at-spi2-core ];
systemd.packages = [ pkgs.at-spi2-core ];
})
-
(mkIf (!config.services.gnome.at-spi2-core.enable) {
+
(lib.mkIf (!config.services.gnome.at-spi2-core.enable) {
environment.sessionVariables = {
NO_AT_BRIDGE = "1";
GTK_A11Y = "none";
+11 -13
nixos/modules/services/desktops/gnome/evolution-data-server.nix
···
{ config, lib, pkgs, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
options = {
services.gnome.evolution-data-server = {
-
enable = mkEnableOption "Evolution Data Server, a collection of services for storing addressbooks and calendars";
-
plugins = mkOption {
-
type = types.listOf types.package;
+
enable = lib.mkEnableOption "Evolution Data Server, a collection of services for storing addressbooks and calendars";
+
plugins = lib.mkOption {
+
type = lib.types.listOf lib.types.package;
default = [ ];
description = "Plugins for Evolution Data Server.";
};
};
programs.evolution = {
-
enable = mkEnableOption "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality";
-
plugins = mkOption {
-
type = types.listOf types.package;
+
enable = lib.mkEnableOption "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality";
+
plugins = lib.mkOption {
+
type = lib.types.listOf lib.types.package;
default = [ ];
-
example = literalExpression "[ pkgs.evolution-ews ]";
+
example = lib.literalExpression "[ pkgs.evolution-ews ]";
description = "Plugins for Evolution.";
};
···
let
bundle = pkgs.evolutionWithPlugins.override { inherit (config.services.gnome.evolution-data-server) plugins; };
in
-
mkMerge [
-
(mkIf config.services.gnome.evolution-data-server.enable {
+
lib.mkMerge [
+
(lib.mkIf config.services.gnome.evolution-data-server.enable {
environment.systemPackages = [ bundle ];
services.dbus.packages = [ bundle ];
systemd.packages = [ bundle ];
})
-
(mkIf config.programs.evolution.enable {
+
(lib.mkIf config.programs.evolution.enable {
services.gnome.evolution-data-server = {
enable = true;
plugins = [ pkgs.evolution ] ++ config.programs.evolution.plugins;
+3 -5
nixos/modules/services/desktops/gnome/glib-networking.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.glib-networking = {
-
enable = mkEnableOption "network extensions for GLib";
+
enable = lib.mkEnableOption "network extensions for GLib";
};
···
###### implementation
-
config = mkIf config.services.gnome.glib-networking.enable {
+
config = lib.mkIf config.services.gnome.glib-networking.enable {
services.dbus.packages = [ pkgs.glib-networking ];
+4 -6
nixos/modules/services/desktops/gnome/gnome-initial-setup.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
let
# GNOME initial setup's run is conditioned on whether
···
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.gnome-initial-setup = {
-
enable = mkEnableOption "GNOME Initial Setup, a Simple, easy, and safe way to prepare a new system";
+
enable = lib.mkEnableOption "GNOME Initial Setup, a Simple, easy, and safe way to prepare a new system";
};
···
###### implementation
-
config = mkIf config.services.gnome.gnome-initial-setup.enable {
+
config = lib.mkIf config.services.gnome.gnome-initial-setup.enable {
environment.systemPackages = [
pkgs.gnome.gnome-initial-setup
]
-
++ optional (versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
+
++ lib.optional (lib.versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
;
systemd.packages = [
+4 -6
nixos/modules/services/desktops/gnome/gnome-keyring.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.gnome-keyring = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable GNOME Keyring daemon, a service designed to
···
###### implementation
-
config = mkIf config.services.gnome.gnome-keyring.enable {
+
config = lib.mkIf config.services.gnome.gnome-keyring.enable {
environment.systemPackages = [ pkgs.gnome.gnome-keyring ];
+4 -6
nixos/modules/services/desktops/gnome/gnome-online-accounts.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.gnome-online-accounts = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable GNOME Online Accounts daemon, a service that provides
···
###### implementation
-
config = mkIf config.services.gnome.gnome-online-accounts.enable {
+
config = lib.mkIf config.services.gnome.gnome-online-accounts.enable {
environment.systemPackages = [ pkgs.gnome-online-accounts ];
+4 -6
nixos/modules/services/desktops/gnome/gnome-online-miners.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.gnome-online-miners = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable GNOME Online Miners, a service that
···
###### implementation
-
config = mkIf config.services.gnome.gnome-online-miners.enable {
+
config = lib.mkIf config.services.gnome.gnome-online-miners.enable {
environment.systemPackages = [ pkgs.gnome.gnome-online-miners ];
+3 -5
nixos/modules/services/desktops/gnome/gnome-remote-desktop.nix
···
# Remote desktop daemon using Pipewire.
{ config, lib, pkgs, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
options = {
services.gnome.gnome-remote-desktop = {
-
enable = mkEnableOption "Remote Desktop support using Pipewire";
+
enable = lib.mkEnableOption "Remote Desktop support using Pipewire";
};
};
###### implementation
-
config = mkIf config.services.gnome.gnome-remote-desktop.enable {
+
config = lib.mkIf config.services.gnome.gnome-remote-desktop.enable {
services.pipewire.enable = true;
systemd.packages = [ pkgs.gnome.gnome-remote-desktop ];
+3 -5
nixos/modules/services/desktops/gnome/gnome-settings-daemon.nix
···
{ config, lib, pkgs, ... }:
-
with lib;
-
let
cfg = config.services.gnome.gnome-settings-daemon;
···
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.gnome-settings-daemon = {
-
enable = mkEnableOption "GNOME Settings Daemon";
+
enable = lib.mkEnableOption "GNOME Settings Daemon";
};
···
###### implementation
-
config = mkIf cfg.enable {
+
config = lib.mkIf cfg.enable {
environment.systemPackages = [
pkgs.gnome.gnome-settings-daemon
+3 -5
nixos/modules/services/desktops/gnome/gnome-user-share.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.gnome-user-share = {
-
enable = mkEnableOption "GNOME User Share, a user-level file sharing service for GNOME";
+
enable = lib.mkEnableOption "GNOME User Share, a user-level file sharing service for GNOME";
};
···
###### implementation
-
config = mkIf config.services.gnome.gnome-user-share.enable {
+
config = lib.mkIf config.services.gnome.gnome-user-share.enable {
environment.systemPackages = [
pkgs.gnome.gnome-user-share
+4 -6
nixos/modules/services/desktops/gnome/rygel.nix
···
# rygel service.
{ config, lib, pkgs, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
options = {
services.gnome.rygel = {
-
enable = mkOption {
+
enable = lib.mkOption {
default = false;
description = ''
Whether to enable Rygel UPnP Mediaserver.
You will need to also allow UPnP connections in firewall, see the following [comment](https://github.com/NixOS/nixpkgs/pull/45045#issuecomment-416030795).
'';
-
type = types.bool;
+
type = lib.types.bool;
};
};
};
###### implementation
-
config = mkIf config.services.gnome.rygel.enable {
+
config = lib.mkIf config.services.gnome.rygel.enable {
environment.systemPackages = [ pkgs.gnome.rygel ];
services.dbus.packages = [ pkgs.gnome.rygel ];
+4 -6
nixos/modules/services/desktops/gnome/sushi.nix
···
{ config, lib, pkgs, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.sushi = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable Sushi, a quick previewer for nautilus.
···
###### implementation
-
config = mkIf config.services.gnome.sushi.enable {
+
config = lib.mkIf config.services.gnome.sushi.enable {
environment.systemPackages = [ pkgs.gnome.sushi ];
+4 -6
nixos/modules/services/desktops/gnome/tracker-miners.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.tracker-miners = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable Tracker miners, indexing services for Tracker
···
###### implementation
-
config = mkIf config.services.gnome.tracker-miners.enable {
+
config = lib.mkIf config.services.gnome.tracker-miners.enable {
environment.systemPackages = [ pkgs.tracker-miners ];
+6 -8
nixos/modules/services/desktops/gnome/tracker.nix
···
{ config, pkgs, lib, ... }:
-
with lib;
-
let
cfg = config.services.gnome.tracker;
in
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gnome.tracker = {
-
enable = mkOption {
-
type = types.bool;
+
enable = lib.mkOption {
+
type = lib.types.bool;
default = false;
description = ''
Whether to enable Tracker services, a search engine,
···
'';
};
-
subcommandPackages = mkOption {
-
type = types.listOf types.package;
+
subcommandPackages = lib.mkOption {
+
type = lib.types.listOf lib.types.package;
default = [ ];
internal = true;
description = ''
···
###### implementation
-
config = mkIf cfg.enable {
+
config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkgs.tracker ];
+4 -6
nixos/modules/services/desktops/gvfs.nix
···
{ config, lib, pkgs, ... }:
-
with lib;
-
let
cfg = config.services.gvfs;
···
{
meta = {
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
###### interface
···
services.gvfs = {
-
enable = mkEnableOption "GVfs, a userspace virtual filesystem";
+
enable = lib.mkEnableOption "GVfs, a userspace virtual filesystem";
# gvfs can be built with multiple configurations
-
package = mkPackageOption pkgs [ "gnome" "gvfs" ] { };
+
package = lib.mkPackageOption pkgs [ "gnome" "gvfs" ] { };
};
···
###### implementation
-
config = mkIf cfg.enable {
+
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
+16 -17
nixos/modules/services/x11/desktop-managers/gnome.nix
···
{ config, lib, pkgs, utils, ... }:
-
with lib;
-
let
+
inherit (lib) mkOption types mkDefault mkEnableOption literalExpression;
cfg = config.services.xserver.desktopManager.gnome;
serviceCfg = config.services.gnome;
···
destination = "/share/gnome-background-properties/nixos.xml";
};
-
flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0;
-
flashbackWms = optional cfg.flashback.enableMetacity {
+
flashbackEnabled = cfg.flashback.enableMetacity || lib.length cfg.flashback.customSessions > 0;
+
flashbackWms = lib.optional cfg.flashback.enableMetacity {
wmName = "metacity";
wmLabel = "Metacity";
wmCommand = "${pkgs.gnome.metacity}/bin/metacity";
···
meta = {
doc = ./gnome.md;
-
maintainers = teams.gnome.members;
+
maintainers = lib.teams.gnome.members;
};
options = {
···
};
-
config = mkMerge [
-
(mkIf (cfg.enable || flashbackEnabled) {
+
config = lib.mkMerge [
+
(lib.mkIf (cfg.enable || flashbackEnabled) {
# Seed our configuration into nixos-generate-config
system.nixos-generate-config.desktopConfiguration = [''
# Enable the GNOME Desktop Environment.
···
services.displayManager.sessionPackages = [ pkgs.gnome.gnome-session.sessions ];
environment.extraInit = ''
-
${concatMapStrings (p: ''
+
${lib.concatMapStrings (p: ''
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
fi
···
environment.systemPackages = cfg.sessionPath;
-
environment.sessionVariables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1";
+
environment.sessionVariables.GNOME_SESSION_DEBUG = lib.mkIf cfg.debug "1";
# Override GSettings schemas
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
})
-
(mkIf flashbackEnabled {
+
(lib.mkIf flashbackEnabled {
services.displayManager.sessionPackages =
let
wmNames = map (wm: wm.wmName) flashbackWms;
namesAreUnique = lib.unique wmNames == wmNames;
in
-
assert (assertMsg namesAreUnique "Flashback WM names must be unique.");
+
assert (lib.assertMsg namesAreUnique "Flashback WM names must be unique.");
map
(wm:
pkgs.gnome.gnome-flashback.mkSessionForWm {
···
++ (map (wm: gnome-flashback.mkGnomeSession { inherit (wm) wmName wmLabel enableGnomePanel; }) flashbackWms);
})
-
(mkIf serviceCfg.core-os-services.enable {
+
(lib.mkIf serviceCfg.core-os-services.enable {
hardware.bluetooth.enable = mkDefault true;
hardware.pulseaudio.enable = mkDefault true;
programs.dconf.enable = true;
···
];
})
-
(mkIf serviceCfg.core-shell.enable {
+
(lib.mkIf serviceCfg.core-shell.enable {
services.xserver.desktopManager.gnome.sessionPath =
let
mandatoryPackages = [
···
services.gnome.gnome-user-share.enable = mkDefault true;
services.gnome.rygel.enable = mkDefault true;
services.gvfs.enable = true;
-
services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
+
services.system-config-printer.enable = (lib.mkIf config.services.printing.enable (mkDefault true));
systemd.packages = with pkgs.gnome; [
gnome-session
···
})
# Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/gnome-45/elements/core/meta-gnome-core-utilities.bst
-
(mkIf serviceCfg.core-utilities.enable {
+
(lib.mkIf serviceCfg.core-utilities.enable {
environment.systemPackages =
with pkgs.gnome;
utils.removePackagesByName
···
];
})
-
(mkIf serviceCfg.games.enable {
+
(lib.mkIf serviceCfg.games.enable {
environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
aisleriot
atomix
···
})
# Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/3.38.0/elements/core/meta-gnome-core-developer-tools.bst
-
(mkIf serviceCfg.core-developer-tools.enable {
+
(lib.mkIf serviceCfg.core-developer-tools.enable {
environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
dconf-editor
devhelp