最近回到家,又开始折腾nixos了,当前主题

nixos-desktop1

fish+starship 安装及美化 @

最近把shell从zsh+p10k的模式切换成了fish+starship,发现fish的性能要好很多,同时starship的配置也很方便,配置如下,很简单。

{ config, pkgs, ... }:

{
  home.packages = [ pkgs.starship ];

  # 这里是starship的主题配置文件,网上可以随便找一个
  home.file.".config/starship.toml".source = ./starship.toml;

  programs.fish = {
    enable = true;

    # 这里是删除fish的欢迎信息
    interactiveShellInit = ''
      set fish_greeting
    '';
  };

  programs.starship = {
    enable = true;
    package = pkgs.starship;
  };
}

overview wallpaper配置 @

其实之前壁纸设置好之后,但在壁纸的缩略图中,背景还是灰色,很难看。其实需要将工作区的壁纸也同时配置在overview才行。

nixos-desktop2

首先在niri-config.kdl配置文件添加这个layer-rule的设置

// Set the overview wallpaper on the backdrop.
layer-rule {
  match namespace="^noctalia-overview.*"
  place-within-backdrop true
}

然后在noctalia的配置里开启overview壁纸

wallpaper = {
    enabled = true;
    overviewEnabled = true;     # 这里开启
    useSolidColor = false;
    directory = "${config.home.homeDirectory}/.config/noctalia/wallpapers";
    viewMode = "crop";
    wallpaperChangeMode = "random";
};

安装chrome和splayer @

chrome浏览器当然不用说,现在基本都用这个。splayer则是一个网易云的播放器,UI做的挺好看的,比较推荐, 安装也很简单。

home.packages = with pkgs; [
    google-chrome
    splayer
  ];

图标主题更换 @

我认为noctalia的默认主题有点丑,并且小部分应用是确实图标的,所以必须安装一个图标主题。我选择的是WhiteSur-dark。

按照以下配置即可,需要适配gtk2/gtk3/gtk4各种应用的图标主题。

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

let
  iconThemeName = "WhiteSur-dark";
in
{
  gtk = {
    enable = true;
    iconTheme = {
      name = iconThemeName;
      package = pkgs.whitesur-icon-theme;
    };
  };

  gtk.gtk3 = {
    enable = lib.mkDefault true;
  };

  gtk.gtk4 = {
    enable = lib.mkDefault true;
  };

  home.sessionVariables = {
    XDG_ICON_THEME = iconThemeName;
    QT_QPA_PLATFORMTHEME = "gtk3";
    QS_ICON_THEME = iconThemeName;
  };

  home.packages = with pkgs; [
    whitesur-icon-theme
    hicolor-icon-theme
  ];
}

在hosts/default/defualt.nix,也就是全局环境变量,也需要配置, 否则可能不生效

environment.sessionVariables = {
    QS_ICON_THEME = "WhiteSur-dark";
};

hyprlock锁屏 @

hyprlock是hyprland下的一个锁屏软件,但是niri也能用,新建一个hyprlock.nix用于管理hyprlock配置,然后在你的home.nix里import它。

nixos-desktop3

具体配置如下

{pkgs, ...}: {
  home.packages = with pkgs; [
    hyprlock
  ];

  programs.hyprlock.enable = true;

  home.file."/.config/hypr/hyprlock.conf".source = ./hyprlock.conf;
}

hyprlock.conf的内容如下, 这份配置是我在github抄的配置,如有侵权,请联系我删除。

# ~/.config/hypr/hyprlock.conf - 轻松惬意中文版

general {
    hide_cursor = true
    immediate_render = true
    no_fade_in = true
    fail_timeout = 2500
}

# 背景设置 - 柔焦效果
background {
    monitor =
    path = screenshot
    # path = /home/youth/wallpapers/wallpaper1.png
    blur_passes = 3    # 适度模糊
    blur_size = 8      # 柔和程度
    noise = 0.03       # 轻微噪点
    contrast = 0.95    # 柔和对比
    brightness = 1.02  # 稍暗背景
    # color =  rgba(44, 51, 71, 0.9)
}

# 用户头像 - 圆形设计
image {
    monitor =
    size = 128
    rounding = -1      # 正圆形
    border_size = 3
    border_color = rgba(143, 188, 187, 0.8) # 薄荷绿边框
    position = 0, -180
    halign = center
    valign = center
    shadow_passes = 2
    shadow_size = 5
    shadow_color = rgba(0, 0, 0, 0.15)
}

# 用户名显示 - 中文友好字体
label {
    monitor =
    text = <span font_weight="bold">你好,$USER</span>
    color = rgba(236, 239, 244, 0.9) # 雪白色
    font_size = 24
    font_family = "Noto Sans CJK SC" # 中文更友好的字体
    position = 0, -120
    halign = center
    valign = center
}

# 时间显示 - 主视觉焦点
label {
    monitor =
    text = cmd[update:1000] echo "<span font_weight='bold'>$(date +"%H:%M")</span>"
    color = rgba(216, 222, 233, 0.95) # 淡冰川蓝
    font_size = 64
    font_family = "JetBrains Mono Nerd Font"
    position = 0, 0
    halign = center
    valign = center
}

# 日期显示 - 中文格式
label {
    monitor =
    text = cmd[update:60000] echo "<span>$(LC_TIME=zh_CN.UTF-8 date +"%Y年%m月%d %A")</span>"
    color = rgba(180, 196, 211, 0.9) # 浅钢蓝
    font_size = 18
    font_family = "Noto Sans CJK SC"
    position = 0, 70
    halign = center
    valign = center
}

# 密码输入框 - 圆润设计
input-field {
    monitor =
    size = 360, 56
    outline_thickness = 0
    dots_size = 0.3
    dots_spacing = 0.15
    rounding = 28       # 椭圆造型
    inner_color = rgba(76, 86, 106, 0.6) # 深灰蓝
    font_color = rgb(228, 229, 232)
    font_family = "JetBrains Mono Nerd Font"
    placeholder_text = <i><span foreground="##a6b0c0">请输入密码...</span></i>
    hide_input = false
    check_color = rgba(163, 190, 140, 1.0) # 抹茶绿
    fail_color = rgba(191, 97, 106, 1.0)   # 珊瑚红
    fail_text = <i><span foreground="##BF616A">$FAIL (尝试 $ATTEMPTS )</span></i>
    position = 0, 150
    halign = center
    valign = center
}

# 系统信息 - 更简约
label {
    monitor =
    text = cmd[update:10000] echo "<span>$(uname -n) · 运行 $(uptime -p | sed -e 's/up //' -e 's/days/天/' -e 's/hours/小时/' -e 's/minutes/分钟/')</span>"
    color = rgba(158, 173, 191, 0.8) # 灰蓝色
    font_size = 12
    font_family = "Noto Sans CJK SC"
    position = 20, -20
    halign = left
    valign = bottom
}

# 键盘布局 - 中文标识
label {
    monitor =
    text = <span>$LAYOUT[EN,中文]</span>
    color = rgba(166, 218, 214, 0.9) # 浅水绿色
    font_size = 14
    font_family = "Noto Sans CJK SC"
    position = -20, -20
    halign = right
    valign = bottom
}

# 指纹提示 - 中文显示
label {
    monitor =
    text = cmd[update:1000] if [ "$(systemctl is-active fprintd)" = "active" ]; then echo "<span font_size='14'>🖐️ 指纹识别就绪</span>"; fi
    color = rgba(166, 218, 214, 0.9) # 与水绿色统一
    position = 0, 100
    halign = center
    valign = center
}

fuzzel启动器 @

fuzzel是一个启动器,用来搜索系统中的应用程序,比较简洁,配置如下

nixos-desktop5

{ ... }:
{
  programs.fuzzel = {
    enable = true;
    settings = {
      main = {
        font = "JetBrainsMono Nerd Font:weight=bold:size=14";
        line-height = 25;
        fields = "name,generic,comment,categories,filename,keywords";
        terminal = "kitty";
        prompt = "' ➜  '";
        icon-theme = "Papirus-Dark";
        layer = "top";
        lines = 10;
        width = 35;
        horizontal-pad = 25;
        inner-pad = 5;
      };
      colors = {
        background = "1e1e2ecc";
        text = "cdd6f4ff";
        match = "f38ba8ff";
        selection = "b4befeaa";
        selection-match = "f38ba8ff";
        selection-text = "cdd6f4ff";
        border = "b4befeff";
      };
      border = {
        radius = 15;
        width = 3;
      };
    };
  };
}

结尾 @

由于目前的flake项目已经相对完善了,于是我可以把github的链接放出来,给大家参考,因为我也是参考了很多别人的配置写的,希望nixos社区越来越好。 我的nixos-config