From c133e5637fa5a121d39f702055bad384b477824b Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 5 May 2025 18:59:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96stable/unstable=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E7=9A=84=E6=96=B9=E5=BC=8F=EF=BC=9B=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=80=A7=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E7=89=88=E6=9C=AC=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flake.nix | 15 +++++++- home/core.nix | 7 +++- modules/home/fcitx.nix | 11 ++++-- modules/home/vscode/default.nix | 35 +++++++++-------- modules/nixos/core/nixld.nix | 62 ++++++++++++++++--------------- modules/nixos/fonts/default.nix | 24 ++++++------ profiles/apollo/configuration.nix | 7 ++-- profiles/apollo/default.nix | 11 ++---- profiles/gaea/configuration.nix | 6 +-- profiles/gaea/default.nix | 11 ++---- profiles/luna/configuration.nix | 6 +-- profiles/luna/default.nix | 11 ++---- 12 files changed, 113 insertions(+), 93 deletions(-) diff --git a/flake.nix b/flake.nix index 45fad95..54daa25 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,19 @@ useremail = "reizero@live.com"; sourcepath = "/home/${username}/.nix"; libs = import ./libs; + + nixos = { + stable = { + nixpkgs = nixpkgs; + home-manager = home-manager; + version = "24.11"; + }; + unstable = { + nixpkgs = nixpkgs-unstable; + home-manager = home-manager-unstable; + version = "25.05"; + }; + }; in rec { # Your custom packages and modifications, exported as overlays @@ -20,7 +33,7 @@ (profile: { name = profile; value = import ./profiles/${profile} { - inherit self inputs outputs libs sourcepath username useremail; + inherit self inputs outputs libs nixos sourcepath username useremail; }; }) (attrNames (readDir ./profiles)) diff --git a/home/core.nix b/home/core.nix index 2cd6d24..26e20fe 100644 --- a/home/core.nix +++ b/home/core.nix @@ -1,7 +1,10 @@ # This is your home-manager configuration file # Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) -{ outputs, pkgs, username, useremail, sysversion, ... }: { +{ self, outputs, pkgs, username, useremail, version, ... }: { + imports = [ + "${self}/libs/home-libs.nix" + ]; home = { inherit username; @@ -108,5 +111,5 @@ systemd.user.startServices = "sd-switch"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = sysversion; + home.stateVersion = version; } diff --git a/modules/home/fcitx.nix b/modules/home/fcitx.nix index 5ab3647..55d6a4e 100644 --- a/modules/home/fcitx.nix +++ b/modules/home/fcitx.nix @@ -1,16 +1,21 @@ # 输入法配置模块 { config, lib, pkgs, ... }: { - i18n.inputMethod = { + i18n.inputMethod = (if lib.versionAtLeast config.home.stateVersion "25.05" then { + enable = true; + type = "fcitx5"; + } else { enabled = "fcitx5"; + }) // { fcitx5 = { addons = with pkgs; [ fcitx5-gtk fcitx5-chinese-addons fcitx5-nord ]; - waylandFrontend = true; # available in home-manager-25.05 - }; + } // (lib.optionalAttrs (lib.versionAtLeast config.home.stateVersion "25.05") { + waylandFrontend = true; + }); }; gtk = { diff --git a/modules/home/vscode/default.nix b/modules/home/vscode/default.nix index 945c70a..d2f590d 100644 --- a/modules/home/vscode/default.nix +++ b/modules/home/vscode/default.nix @@ -1,25 +1,28 @@ -{ config, pkgs, libs, ... }: - +{ config, pkgs, lib, libs, ... }: +let + extensions = with pkgs.vscode-extensions; [ + bierner.markdown-mermaid + esbenp.prettier-vscode + foxundermoon.shell-format + github.copilot + github.copilot-chat + golang.go + jnoortheen.nix-ide + pkief.material-icon-theme + ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + ]; +in { imports = [ ]; programs = { vscode = { enable = true; - profiles.default = { - extensions = with pkgs.vscode-extensions; [ - bierner.markdown-mermaid - esbenp.prettier-vscode - foxundermoon.shell-format - github.copilot - github.copilot-chat - golang.go - jnoortheen.nix-ide - pkief.material-icon-theme - ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - ]; - }; - }; + } // (if lib.versionAtLeast config.home.stateVersion "25.05" then { + profiles.default = { inherit extensions; }; + } else { + inherit extensions; + }); }; xdg.configFile = { diff --git a/modules/nixos/core/nixld.nix b/modules/nixos/core/nixld.nix index f018da4..918fe3f 100644 --- a/modules/nixos/core/nixld.nix +++ b/modules/nixos/core/nixld.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ config, lib, pkgs, ... }: { programs = { # Allow to run prebuild binary app @@ -54,7 +54,6 @@ libclang.lib # Clang编译器库 libdbusmenu # D-Bus菜单库 libdrm # 直接渲染管理器库 - libgbm # Open source 3D graphics library libgcrypt # GNU加密库 libgpg-error # GnuPG错误报告库 libidn # 国际化域名库 @@ -91,35 +90,40 @@ udev # 设备管理器 vulkan-loader # Vulkan图形API加载器 wayland # 显示服务器协议 - xorg.libICE # X11 Inter-Client Exchange库 - xorg.libSM # X11会话管理库 - xorg.libX11 # X11客户端库 - xorg.libXScrnSaver # X11屏幕保护扩展库 - xorg.libXcomposite # X11合成扩展库 - xorg.libXcursor # X11光标管理库 - xorg.libXdamage # X11损坏扩展库 - xorg.libXext # X11通用扩展库 - xorg.libXfixes # X11修复扩展库 - xorg.libXft # X11 FreeType接口库 - xorg.libXi # X11输入扩展库 - xorg.libXinerama # X11多显示器扩展库 - xorg.libXmu # X11杂项实用工具库 - xorg.libXrandr # X11调整大小和旋转扩展库 - xorg.libXrender # X11渲染扩展库 - xorg.libXt # X11工具包内省库 - xorg.libXtst # X11测试扩展库 - xorg.libXxf86vm # X11 XFree86视频模式扩展库 - xorg.libpciaccess # X11 PCI访问库 - xorg.libxcb # X11 C绑定库 - xorg.xcbutil # XCB实用工具库 - xorg.xcbutilimage # XCB图像实用工具库 - xorg.xcbutilkeysyms # XCB键符号实用工具库 - xorg.xcbutilrenderutil # XCB渲染实用工具库 - xorg.xcbutilwm # XCB窗口管理实用工具库 - xorg.xkeyboardconfig # X11键盘配置数据库 + # xorg.libICE # X11 Inter-Client Exchange库 + # xorg.libSM # X11会话管理库 + # xorg.libX11 # X11客户端库 + # xorg.libXScrnSaver # X11屏幕保护扩展库 + # xorg.libXcomposite # X11合成扩展库 + # xorg.libXcursor # X11光标管理库 + # xorg.libXdamage # X11损坏扩展库 + # xorg.libXext # X11通用扩展库 + # xorg.libXfixes # X11修复扩展库 + # xorg.libXft # X11 FreeType接口库 + # xorg.libXi # X11输入扩展库 + # xorg.libXinerama # X11多显示器扩展库 + # xorg.libXmu # X11杂项实用工具库 + # xorg.libXrandr # X11调整大小和旋转扩展库 + # xorg.libXrender # X11渲染扩展库 + # xorg.libXt # X11工具包内省库 + # xorg.libXtst # X11测试扩展库 + # xorg.libXxf86vm # X11 XFree86视频模式扩展库 + # xorg.libpciaccess # X11 PCI访问库 + # xorg.libxcb # X11 C绑定库 + # xorg.xcbutil # XCB实用工具库 + # xorg.xcbutilimage # XCB图像实用工具库 + # xorg.xcbutilkeysyms # XCB键符号实用工具库 + # xorg.xcbutilrenderutil # XCB渲染实用工具库 + # xorg.xcbutilwm # XCB窗口管理实用工具库 + # xorg.xkeyboardconfig # X11键盘配置数据库 xz # LZMA压缩工具 zlib # 通用数据压缩库 - ]; + ] ++ ( + if lib.versionAtLeast config.system.stateVersion "25.05" then + [ pkgs.libgbm ] + else + [ ] + ); }; }; } diff --git a/modules/nixos/fonts/default.nix b/modules/nixos/fonts/default.nix index 52f432c..9220bb7 100644 --- a/modules/nixos/fonts/default.nix +++ b/modules/nixos/fonts/default.nix @@ -29,17 +29,19 @@ source-han-serif # 思源宋体 # wqy_zenhei # 文泉驿正黑 - + ] ++ ( # nerdfonts - nerd-fonts.jetbrains-mono - # (nerdfonts.override { - # fonts = [ - # # "FiraCode" - # "JetBrainsMono" - # # "Iosevka" - # ]; - # }) - - ]; + if lib.versionAtLeast config.system.stateVersion "25.05" then + [ nerd-fonts.jetbrains-mono ] + else [ + (nerdfonts.override { + fonts = [ + # "FiraCode" + "JetBrainsMono" + # "Iosevka" + ]; + }) + ] + ); }; } diff --git a/profiles/apollo/configuration.nix b/profiles/apollo/configuration.nix index f1708df..aee3203 100644 --- a/profiles/apollo/configuration.nix +++ b/profiles/apollo/configuration.nix @@ -1,4 +1,4 @@ -args@{ self, pkgs, home-manager, username, sysversion, ... }: { +args@{ self, pkgs, home-manager, username, version, ... }: { # You can import other NixOS modules here imports = [ ./mount.nix @@ -20,12 +20,11 @@ args@{ self, pkgs, home-manager, username, sysversion, ... }: { # home-manager.useUserPackages = true; home-manager = { extraSpecialArgs = { - inherit (args) self inputs outputs libs sourcepath hostname username useremail sysversion; + inherit (args) self inputs outputs libs sourcepath hostname username useremail version; }; users."${username}" = { ... }: { imports = [ ./hm - "${self}/libs/home-libs.nix" "${self}/home/desktop.nix" "${self}/modules/home/develop.nix" ]; @@ -55,5 +54,5 @@ args@{ self, pkgs, home-manager, username, sysversion, ... }: { users.users."${username}".shell = pkgs.zsh; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = sysversion; + system.stateVersion = version; } diff --git a/profiles/apollo/default.nix b/profiles/apollo/default.nix index cab690b..f324195 100644 --- a/profiles/apollo/default.nix +++ b/profiles/apollo/default.nix @@ -1,11 +1,8 @@ -args@{ libs, inputs, ... }: +args@{ libs, inputs, nixos, ... }: let - # 这里可以选择使用稳定版或不稳定版的nixpkgs - # nixpkgs = inputs.nixpkgs; - nixpkgs = inputs.nixpkgs-unstable; # 如果需要使用unstable版本,取消这行注释并注释上一行 - home-manager = inputs.home-manager-unstable; - sysversion = "25.05"; - sysArgs = args // { inherit home-manager sysversion; }; + # 使用pkgs.unstable中的nixpkgs和home-manager + inherit (nixos.unstable) nixpkgs home-manager version; + sysArgs = args // { inherit home-manager version; }; in # 使用libs.mkNixosSystem创建nixosSystem libs.mkNixosSystem { diff --git a/profiles/gaea/configuration.nix b/profiles/gaea/configuration.nix index 189c0bd..c2f88ff 100644 --- a/profiles/gaea/configuration.nix +++ b/profiles/gaea/configuration.nix @@ -1,4 +1,4 @@ -args@{ self, pkgs, home-manager, username, sysversion, ... }: { +args@{ self, pkgs, home-manager, username, version, ... }: { # You can import other NixOS modules here imports = [ # If you want to use modules your own flake exports (from modules/nixos): @@ -34,7 +34,7 @@ args@{ self, pkgs, home-manager, username, sysversion, ... }: { # home-manager.useUserPackages = true; home-manager = { extraSpecialArgs = { - inherit (args) self inputs outputs libs hostname username useremail sysversion; + inherit (args) self inputs outputs libs sourcepath hostname username useremail version; }; users."${username}" = { ... }: { imports = [ @@ -48,5 +48,5 @@ args@{ self, pkgs, home-manager, username, sysversion, ... }: { ]; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = sysversion; + system.stateVersion = version; } diff --git a/profiles/gaea/default.nix b/profiles/gaea/default.nix index cab690b..f324195 100644 --- a/profiles/gaea/default.nix +++ b/profiles/gaea/default.nix @@ -1,11 +1,8 @@ -args@{ libs, inputs, ... }: +args@{ libs, inputs, nixos, ... }: let - # 这里可以选择使用稳定版或不稳定版的nixpkgs - # nixpkgs = inputs.nixpkgs; - nixpkgs = inputs.nixpkgs-unstable; # 如果需要使用unstable版本,取消这行注释并注释上一行 - home-manager = inputs.home-manager-unstable; - sysversion = "25.05"; - sysArgs = args // { inherit home-manager sysversion; }; + # 使用pkgs.unstable中的nixpkgs和home-manager + inherit (nixos.unstable) nixpkgs home-manager version; + sysArgs = args // { inherit home-manager version; }; in # 使用libs.mkNixosSystem创建nixosSystem libs.mkNixosSystem { diff --git a/profiles/luna/configuration.nix b/profiles/luna/configuration.nix index 3a61835..8653c59 100644 --- a/profiles/luna/configuration.nix +++ b/profiles/luna/configuration.nix @@ -1,4 +1,4 @@ -args@{ self, home-manager, username, sysversion, ... }: { +args@{ self, home-manager, username, version, ... }: { # You can import other NixOS modules here imports = [ @@ -26,7 +26,7 @@ args@{ self, home-manager, username, sysversion, ... }: { # home-manager.useUserPackages = true; home-manager = { extraSpecialArgs = { - inherit (args) self inputs outputs libs hostname username useremail sysversion; + inherit (args) self inputs outputs libs sourcepath hostname username useremail version; }; users."${username}" = { ... }: { imports = [ @@ -38,5 +38,5 @@ args@{ self, home-manager, username, sysversion, ... }: { ]; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = sysversion; + system.stateVersion = version; } diff --git a/profiles/luna/default.nix b/profiles/luna/default.nix index cab690b..f324195 100644 --- a/profiles/luna/default.nix +++ b/profiles/luna/default.nix @@ -1,11 +1,8 @@ -args@{ libs, inputs, ... }: +args@{ libs, inputs, nixos, ... }: let - # 这里可以选择使用稳定版或不稳定版的nixpkgs - # nixpkgs = inputs.nixpkgs; - nixpkgs = inputs.nixpkgs-unstable; # 如果需要使用unstable版本,取消这行注释并注释上一行 - home-manager = inputs.home-manager-unstable; - sysversion = "25.05"; - sysArgs = args // { inherit home-manager sysversion; }; + # 使用pkgs.unstable中的nixpkgs和home-manager + inherit (nixos.unstable) nixpkgs home-manager version; + sysArgs = args // { inherit home-manager version; }; in # 使用libs.mkNixosSystem创建nixosSystem libs.mkNixosSystem {