(6 gnome 桌面)nixos 从0实现全集 梦中情os

nixos

#输入法

添加到 configuration.nix

nix
  i18n.inputMethod = {
      enabled = "fcitx5";
      fcitx5.addons = with pkgs; [
          fcitx5-chinese-addons
          fcitx5-gtk
      ];
  };

#启用桌面

添加到 configuration.nix

nix
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;  

#去掉一些不需要的包

这些包都会被排除

nix
environment.gnome.excludePackages = (with pkgs; [
  gnome-photos
  gnome-tour
  yelp
]) ++ (with pkgs.gnome; [
  gnome-maps
  gnome-contacts 
  gnome-calendar
  cheese # webcam tool
  gnome-music
  gnome-terminal
  gedit # text editor
  epiphany # web browser
  geary # email reader
  evince # document viewer
  gnome-characters
  totem # video player
  tali # poker game
  iagno # go game
  hitori # sudoku game
  atomix # puzzle game
]);

#一些可能的错

如果你使用了unstable 一些的包和配置名称可能会变化,比如 gnome-text-editor gedit=> pkgs.gedit

#构建

plasma6 目前还在unstable阶段,并且确实很多插件都有问题,建议先用plasma5

nix
sudo nixos-rebuild switch --option  substituters https://mirror.sjtu.edu.cn/nix-channels/store

但是 国内源很多有有问题,所以最好还是科学上网
如果构建中出问题需要更换源码,可以运行下面的命令清理后重新运行

sh
sudo nix-collect-garbage -d

#进阶

flake + home-manager 管理gnome

#gnome-flake.nix

nix
{
  options,
  config,
  lib,
  pkgs,
  ...
}:
with lib;
with lib.plusultra; let
  

in {
  services.xserver.enable = true;
  services.xserver.displayManager.gdm = {
      enable = true;
      autoSuspend = false;
      wayland = true;
    };
  services.xserver.desktopManager.gnome = {
    enable = true;
    extraGSettingsOverridePackages = [pkgs.gnome.gnome-settings-daemon];
  };
  # gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true



  services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];

  # 可以和 kde-connect 协议连接的 gnome 软件
  programs.kdeconnect = {
       enable = true;
       package = pkgs.gnomeExtensions.gsconnect;
  };
 
  # 需要屏蔽的gnome 软件
    environment.gnome.excludePackages = (with pkgs; [
      gnome-photos
      gnome-tour
      yelp
      gnome-text-editor
      snapshot #摄像头Camera
      xterm
    ]) ++ (with pkgs.gnome; [
      simple-scan
      gnome-maps
      gnome-contacts
      gnome-calendar
      cheese # webcam tool
      gnome-music
      gnome-terminal
      #gedit # text editor
      pkgs.gedit
      epiphany # web browser
      geary # email reader
      evince # document viewer
      gnome-characters
      totem # video player
      tali # poker game
      iagno # go game
      hitori # sudoku game
      atomix # puzzle game
    ]);
}
 

#gnome-home-manager.nix

nix
{ config, pkgs, ... }:
let
  wallpaper = "${../../../pkgs/wallpaper-hm/pics/butterfly_surface_wooden_116623_3840x2160.jpg}";
  avatar = "${../../../staticFile/avatar.jpg}";
in
{
  imports = [
    # ../../../pkgs/wallpaper-hm
  ];
  home.file.".face".source = avatar; #头像
  home.packages = with pkgs;[
    gnome.gnome-tweaks
    gnome.gnome-themes-extra
    wl-clipboard
    gnome.adwaita-icon-theme
    pkgs.whitesur-gtk-theme
    gnome.dconf-editor

    gnomeExtensions.appindicator
    #gnomeExtensions.dash-to-dock
    gnomeExtensions.clipboard-history
    #gnomeExtensions.kimpanel #输入法样式,注释掉 使用 fcitx5.pkgs的配置
    gnomeExtensions.blur-my-shell
    #gnomeExtensions.paperwm #不太好用 alt+tab 还可以
    #gnomeExtensions.material-shell 不兼容最新版
    gnomeExtensions.bing-wallpaper-changer
  ];

  gtk = {
    enable = true;
    font = {
      package = pkgs.cantarell-fonts;
      name = "Cantarell 11";
    };

    #theme = {
    #   name = "vimix-dark-ruby";
    #   package = pkgs.vimix-gtk-themes.override {
    #     themeVariants = ["beryl"];#[doder|beryl|ruby|amethyst|jade|grey|all] 
    #     colorVariants = ["dark"];
    #     tweaks = ["flat" "grey"];
    #   };
    # };
    #Adwaita-dark
    #theme.name = "Adwaita-dark";

    theme = {
      name = "Adwaita-dark";
      package = pkgs.gnome3.gnome-themes-extra;
    };

    #cursorTheme = {
    #  name    = "Vanilla-DMZ";
    #  package = pkgs.vanilla-dmz;
    #};

    #iconTheme = {
    #  name    = "Vanilla-DMZ";
    #  package = pkgs.vanilla-dmz; # gnome3.adwaita-icon-theme;
    #};

    iconTheme = {
      package = pkgs.papirus-icon-theme;
      name = "Papirus-Dark";
    };

    gtk3.extraConfig = {
      #gtk-decoration-layout = "appmenu:";
      #gtk-decoration-layout = "appmenu:minimize,close";  #去掉最大化按钮 没啥卵用
    };
  };

  dconf = {
    enable = true;
    settings = {
      "org/gnome/shell" = {
        disable-user-extensions = false;
        enabled-extensions = [
          "[email protected]" #系统托盘
          #"[email protected]"
          "[email protected]" # 剪切板
          #"[email protected]"
          "blur-my-shell@aunetx" #毛玻璃
          "[email protected]"
          "[email protected]"
          #"[email protected]"
          #"[email protected]"
          #"[email protected]"
          #"[email protected]"
          #"native-window-placement@gnome-shell-extensions.gcampax.github.com"
          #"[email protected]"
          "screenshot-window-sizer@gnome-shell-extensions.gcampax.github.com"
          "[email protected]"
          "[email protected]"
          "[email protected]"
          #"[email protected]"

          #"[email protected]"
          #"material-shell@papyelgringo"
        ];
        favorite-apps = [
          "firefox.desktop"
          "chromium-browser.desktop"
          "microsoft-edge.desktop"
          "brave-browser.desktop"
          "com.vivaldi.Vivaldi.desktop"
          "terminator.desktop"
          "org.gnome.Terminal.desktop"
          "org.gnome.Nautilus.desktop"
          "code.desktop"
          "sublime_text.desktop"
          "nixos-manual.desktop"
          "gparted.desktop"

          "idea-ultimate.desktop"
          "rust-rover.desktop"
          "goland.desktop"
          "pycharm-professional.desktop"
          "goland.desktop"
          "jetbrains-toolbox.desktop"

          "AnotherRedisDesktopManager.desktop"
          "Hiddify-next.desktop"

          "virtualbox.desktop"
        ];

      };
      "org/gnome/desktop/background" = {
        # 壁纸
        picture-uri = wallpaper;
        picture-uri-dark = wallpaper;
      };
      "org/gnome/mutter" = {
        # 新窗口在屏幕中心打开
        center-new-windows = true;
      };

      "org/gnome/desktop/interface" = {
        # gtk-theme="Adwaita-dark";
        clock-show-date = true;
        clock-show-weekday = true;
        color-scheme = "prefer-dark";
      };
      #电源和做锁屏 ===============
      "org/gnome/desktop/screensaver" = {
        lock-delay = 0;
        lock-enabled = true;
      };
      "org/gnome/desktop/session" = {
        idle-delay = 0;
      };
      #gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
      #gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'nothing'
      "org.gnome.settings-daemon.plugins.power" = {
        sleep-inactive-ac-type = "nothing";
        sleep-inactive-battery-type = "nothing";
      };
      "org/gnome/settings-daemon/plugins/power" = {
        idle-dim = false;
        power-button-action = "suspend";
        sleep-inactive-ac-type = "nothing";
        sleep-inactive-battery-timeout = 1800;
        sleep-inactive-battery-type = "hibernate";
      };
      #电源和做锁屏 ===============

      "org/gnome/desktop/wm/preferences" = {
        resize-with-right-button = true; #win+右键 修改窗口大小  
        button-layout = "appmenu:minimize,close"; #去掉最大化按钮 没啥卵用
        focus-mode = "sloppy";
      };

      "org/gnome/desktop/wm/keybindings" = {
        close = [ "<Alt>F4" "<Super><Shift>q" ]; # 关闭窗口
        show-desktop = [ "<Super>d" ]; # win+d 显示桌面壁纸
      };
      "org/gnome/settings-daemon/plugins/media-keys" = {
        custom-keybindings = [
          "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
          "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
          "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/"
          "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/"
          "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/"
        ];
        home = [ "<Super>e" ]; # 打开文件home 使用默认文件管理器
      };
      "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
        binding = "<Super>Return";
        command = "terminator";
        name = "Open terminator";
      };
      "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
        binding = "<Super>p";
        command = "flameshot gui";
        name = "Open flameshot gui";
      };
      "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2" = {
        binding = "<Shift><Ctrl>Escape";
        command = "gnome-system-monitor";
        name = "gnome-system-monitor";
      };
      # 毛玻璃效果 ============================================================ start
      "org/gnome/shell/extensions/blur-my-shell" = { hacks-level = 3; };
      "org/gnome/shell/extensions/blur-my-shell/applications" = {
        whitelist = [ "terminator" "kitty" "emacs" ];
        blur-on-overview = true;
        sigma = 44;
        opacity = 241;
      };
      "org/gnome/shell/extensions/blur-my-shell/appfolder" = {
        blur = true;
        dialog-opacity = 1;
      };
      # 毛玻璃效果 ============================================================ end
      "org/gnome/desktop/notifications/application/com-tencent-wechat" = {
        force-expanded = true;
        show-banners = true;
      };
    };
  };

}

评论