Какие настройки XFCE можно в настоящее время конфигурировать на NixOS (во время сборки или позже через Home Manager и т.д.)?

Вопрос или проблема

Какие настройки XFCE можно в настоящее время конфигурировать на NixOS (во время сборки или позже через Home Manager и т.д.)?

В настоящее время я пытаюсь создать базовую конфигурацию для своей установки NixOS 23.05 с рабочим столом и оконным менеджером XFCE. Мой подход состоит в том, чтобы использовать home-manager в автономном режиме для настройки темы XFCE и т.д. на уровне пользователя, что вдохновлено gist от nat-418.
Моя конфигурация выглядит следующим образом:

#~/.config/home-manager/home.nix

{ config, pkgs, ... }:

{
  imports = [
    ./xfce/xfce-home.nix
  ];

  home.username = USERNAME;
  home.homeDirectory = PATH/TO/HOME/DIR;

  home.stateVersion = "23.05"; # Пожалуйста, прочитайте комментарий перед изменением.

  home.packages = [
    # установка тем значков
    pkgs.matcha-gtk-theme
    pkgs.zuki-themes
    pkgs.elementary-xfce-icon-theme
    pkgs.xfce.xfce4-icon-theme
  ];

  programs.home-manager.enable = true;
}
#~/.config/home-manager/xfce/xfce-home.nix

{ config, pkgs, lib, ... }:

{
  gtk = {
    enable = true;
      iconTheme = {
      name = "xfce4-icon-theme";
      package = pkgs.xfce.xfce4-icon-theme;
    };
    theme = {
      name = "matcha-dark-sea";
      package = pkgs.matcha-gtk-theme;
    };
    gtk3.extraConfig = {
      Settings=""
        gtk-application-prefer-dark-theme=1
      '';
    };
    gtk4.extraConfig = {
      Settings=""
        gtk-application-prefer-dark-theme=1
      '';
    };
  };

  programs.gpg.enable = true;
  services.gpg-agent.enable = true;
}

Мой programs.xfconf.enable = true; уже установлен в моем configuration.nix и вызовет ошибку, если я установлю его повторно в конфигурации home-manager.

Тем не менее, изменения не применяются после выполнения home-manager switch (или любой другой применимой команды). Ошибок нет, и в выводе утверждается, что изменения применены. Но ни выход из системы, ни перезагрузка не приводят к видимым изменениям в (значке) теме, обоях и т.д. (иногда могут возникать сбои, такие как переключение с темной темы на светлую, хотя нигде это не настроено).

Большинство источников утверждают, что средств немного, кроме базовых вещей, таких как установка обоев, команды запуска или общие опции

services.xserver.desktopManager.xfce.enableScreensaver
services.xserver.desktopManager.xfce.enable
services.xserver.desktopManager.xfce.noDesktop
programs.thunar.enable
programs.xfconf.enable
programs.gnupg.agent.pinentryFlavor
sound.mediaKeys.enable
services.xserver.desktopManager.xfce.enableXfwm

#источник: https://search.nixos.org/options?channel=23.05&from=0&size=50&sort=relevance&type=packages&query=xfce

Вопросы:

  1. Я что-то упустил (например, дополнительные команды для корректного включения xfconf также для home-manager?)
  2. Так как nix является функциональным языком, я не ожидал бы этого, но: Должен ли я переместить некоторую логику установки пакетов в файлы, отличные от home-manager?
  3. Существует ли способ с помощью home-manager произвести какие-либо детальные изменения конфигурации XFCE (например, позиция панели задач) после того, как была построена стандартная версия NixOS XFCE?
  4. Легко ли внести изменения конфигурации во время сборки стандартного NixOS XFCE? И если да, то простым способом с минимальным или нулевым количеством дополнительных скриптов/настроек, которые должны быть применены пользователем вручную?

Отвечая на вопрос 1: Я не могу сказать, пропустили ли вы что-то. Ваш скопированный код nix выглядит нормально.

Отвечая на вопрос 2: Только Home-Manager имеет возможность определять пользовательские пакеты и конфигурации в таком детальном объеме.
Например, все в environment.systemPackages является глобальным, в то время как home-manager.users.<username>.programs является локальным для пользователя.

Отвечая на вопрос 3: Вы можете конфигурировать XFCE в деталях для каждого пользователя через home-manager, смотрите в nix repl:
outputs.nixosConfigurations.<hostname>.config.home-manager.users.<username>.xfconf.settings.

Вы должны указать канал, который преобразуется в конфигурационные файлы/директории и свойства с их значениями, которые преобразуются в XML-структуру конфигураций.

Чтобы перечислить все каналы, выполните xfconf-query -l.
Чтобы перечислить все свойства для, например, канала xfce4-desktop, выполните xfconf-query -c xfce4-desktop -l.

Отсюда пример конфигурации nixos может выглядеть так:

xfconf = {
    enable = true;
    settings = {
      xfce4-desktop = {
        "backdrop/screen0/monitorsLVDS-1/workplace0/color-style" = 0;
        "backdrop/screen0/monitorsLVDS-1/workplace0/image-style" = 0;
        "backdrop/screen0/monitorsLVDS-1/workplace0/last-image" = "";
      };
      xfce4-keyboard-shortcuts = {
        "commands/custom/override" = true;
        "commands/custom/<Primary><Alt>Delete" = "xfce4-session-logout";
        "commands/custom/<Primary><Alt>t" = "exo-open --launch TerminalEmulator";
        #...

        "xfwm4/custom/override" = true;
        "xfwm4/custom/<Super>Up" = "maximize_window_key";
        "xfwm4/custom/<Super>Down" = "hide_window_key";
        "xfwm4/custom/<Super>Left" = "move_window_left_key";
        "xfwm4/custom/<Super>Right" = "move_window_right_key";
        "xfwm4/custom/<Super><Shift>End" = "move_window_next_workspace_key";
        "xfwm4/custom/<Super><Shift>Home" = "move_window_prev_workspace_key";
      };
      xfce4-panel = {
        "panels/dark-mode" = true;
      };
      xsettings = {
        "Net/ThemeName" = "Adwaita-dark";
      };
    };
  };

Отвечая на вопрос 4: Этот вопрос неясен. Что вы имеете в виду под “обычной сборкой XFCE”? Не из Home-Manager? Если да, то вы сами это сказали, модуль nixos xfce довольно ограничен в своих возможностях.
С другой стороны, Home-Manager строит конфигурационные XML-файлы здесь.

Ответ или решение

Конфигурация XFCE на NixOS может быть выполнена как на этапе сборки, так и после установки с использованием Home Manager. Давайте рассмотрим советы и рекомендации, которые помогут вам настроить XFCE и решить ваши вопросы.

1. Проверка конфигурации xfconf

Если ваши изменения не применяются после выполнения home-manager switch, убедитесь, что вы действительно сохраняете настройки в правильном месте. Возможно, вам нужно добавить конфигурацию xfconf в файл xfce-home.nix. Например:

xfconf = {
  enable = true;
  settings = {
    xfce4-desktop = {
      "desktop-background" = "path/to/your/wallpaper.jpg";
    };
    xfce4-panel = {
      "panels/panel-1/size" = 50;
      # Добавьте другие настройки панели, например, положение
    };
    xfwm4 = {
      "general/theme" = "matcha-dark-sea";
    };
  };
};

Проверьте, включена ли служба xfconf в вашем configuration.nix:

programs.xfconf.enable = true;

2. Установка пакетов

Как вы указали, пакеты, установленные в home-manager, являются локальными для пользователя и не конфликтуют с глобальными настройками NixOS. Убедитесь, что все необходимые пакеты действительно указаны и установлены в блоке home.packages.

3. Детализированные настройки XFCE

С помощью home-manager можно выполнить детальную настройку XFCE. Вы можете использовать xfconf-query для получения доступных каналов и свойств:

xfconf-query -l
xfconf-query -c xfce4-desktop -l

На основе полученной информации, вы можете добавлять настройки в ваш файл xfce-home.nix, как показано выше.

4. Настройки во время сборки

Если вы хотите произвести настройки XFCE во время сборки NixOS, вы можете воспользоваться следующими параметрами в configuration.nix:

services.xserver.desktopManager.xfce.enable = true;
services.xserver.desktopManager.xfce.enableScreensaver = true;
services.xserver.desktopManager.xfce.noDesktop = false;

Однако, как упомянуто ранее, возможности модуля XFCE в NixOS ограничены. Для более детальной настройки рекомендуется использовать home-manager.

Заключение

Использование home-manager в сочетании с конфигурацией NixOS предоставит вам гибкость и контроль над вашим окружением XFCE. Важно правильно настроить xfconf и убедиться, что все пакеты установлены как на уровне системы, так и на уровне пользователя. Если у вас возникнут дополнительные вопросы или потребуется помощь в конкретных настройках, не стесняйтесь задавать вопросы.

Оцените материал
Добавить комментарий

Капча загружается...