简化stable/unstable切换的方式;增加兼容性代码,根据版本引用

This commit is contained in:
2025-05-05 18:59:34 +08:00
parent e6891f9f8e
commit c133e5637f
12 changed files with 113 additions and 93 deletions

View File

@@ -7,6 +7,19 @@
useremail = "reizero@live.com"; useremail = "reizero@live.com";
sourcepath = "/home/${username}/.nix"; sourcepath = "/home/${username}/.nix";
libs = import ./libs; 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 in
rec { rec {
# Your custom packages and modifications, exported as overlays # Your custom packages and modifications, exported as overlays
@@ -20,7 +33,7 @@
(profile: { (profile: {
name = profile; name = profile;
value = import ./profiles/${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)) (attrNames (readDir ./profiles))

View File

@@ -1,7 +1,10 @@
# This is your home-manager configuration file # This is your home-manager configuration file
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) # 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 = { home = {
inherit username; inherit username;
@@ -108,5 +111,5 @@
systemd.user.startServices = "sd-switch"; systemd.user.startServices = "sd-switch";
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
home.stateVersion = sysversion; home.stateVersion = version;
} }

View File

@@ -1,16 +1,21 @@
# 输入法配置模块 # 输入法配置模块
{ config, lib, pkgs, ... }: { { config, lib, pkgs, ... }: {
i18n.inputMethod = { i18n.inputMethod = (if lib.versionAtLeast config.home.stateVersion "25.05" then {
enable = true;
type = "fcitx5";
} else {
enabled = "fcitx5"; enabled = "fcitx5";
}) // {
fcitx5 = { fcitx5 = {
addons = with pkgs; [ addons = with pkgs; [
fcitx5-gtk fcitx5-gtk
fcitx5-chinese-addons fcitx5-chinese-addons
fcitx5-nord fcitx5-nord
]; ];
waylandFrontend = true; # available in home-manager-25.05 } // (lib.optionalAttrs (lib.versionAtLeast config.home.stateVersion "25.05") {
}; waylandFrontend = true;
});
}; };
gtk = { gtk = {

View File

@@ -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 = [ imports = [
]; ];
programs = { programs = {
vscode = { vscode = {
enable = true; enable = true;
profiles.default = { } // (if lib.versionAtLeast config.home.stateVersion "25.05" then {
extensions = with pkgs.vscode-extensions; [ profiles.default = { inherit extensions; };
bierner.markdown-mermaid } else {
esbenp.prettier-vscode inherit extensions;
foxundermoon.shell-format });
github.copilot
github.copilot-chat
golang.go
jnoortheen.nix-ide
pkief.material-icon-theme
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
];
};
};
}; };
xdg.configFile = { xdg.configFile = {

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { config, lib, pkgs, ... }:
{ {
programs = { programs = {
# Allow to run prebuild binary app # Allow to run prebuild binary app
@@ -54,7 +54,6 @@
libclang.lib # Clang编译器库 libclang.lib # Clang编译器库
libdbusmenu # D-Bus菜单库 libdbusmenu # D-Bus菜单库
libdrm # 直接渲染管理器库 libdrm # 直接渲染管理器库
libgbm # Open source 3D graphics library
libgcrypt # GNU加密库 libgcrypt # GNU加密库
libgpg-error # GnuPG错误报告库 libgpg-error # GnuPG错误报告库
libidn # 国际化域名库 libidn # 国际化域名库
@@ -91,35 +90,40 @@
udev # 设备管理器 udev # 设备管理器
vulkan-loader # Vulkan图形API加载器 vulkan-loader # Vulkan图形API加载器
wayland # 显示服务器协议 wayland # 显示服务器协议
xorg.libICE # X11 Inter-Client Exchange库 # xorg.libICE # X11 Inter-Client Exchange库
xorg.libSM # X11会话管理库 # xorg.libSM # X11会话管理库
xorg.libX11 # X11客户端库 # xorg.libX11 # X11客户端库
xorg.libXScrnSaver # X11屏幕保护扩展库 # xorg.libXScrnSaver # X11屏幕保护扩展库
xorg.libXcomposite # X11合成扩展库 # xorg.libXcomposite # X11合成扩展库
xorg.libXcursor # X11光标管理库 # xorg.libXcursor # X11光标管理库
xorg.libXdamage # X11损坏扩展库 # xorg.libXdamage # X11损坏扩展库
xorg.libXext # X11通用扩展库 # xorg.libXext # X11通用扩展库
xorg.libXfixes # X11修复扩展库 # xorg.libXfixes # X11修复扩展库
xorg.libXft # X11 FreeType接口库 # xorg.libXft # X11 FreeType接口库
xorg.libXi # X11输入扩展库 # xorg.libXi # X11输入扩展库
xorg.libXinerama # X11多显示器扩展库 # xorg.libXinerama # X11多显示器扩展库
xorg.libXmu # X11杂项实用工具库 # xorg.libXmu # X11杂项实用工具库
xorg.libXrandr # X11调整大小和旋转扩展库 # xorg.libXrandr # X11调整大小和旋转扩展库
xorg.libXrender # X11渲染扩展库 # xorg.libXrender # X11渲染扩展库
xorg.libXt # X11工具包内省库 # xorg.libXt # X11工具包内省库
xorg.libXtst # X11测试扩展库 # xorg.libXtst # X11测试扩展库
xorg.libXxf86vm # X11 XFree86视频模式扩展库 # xorg.libXxf86vm # X11 XFree86视频模式扩展库
xorg.libpciaccess # X11 PCI访问库 # xorg.libpciaccess # X11 PCI访问库
xorg.libxcb # X11 C绑定库 # xorg.libxcb # X11 C绑定库
xorg.xcbutil # XCB实用工具库 # xorg.xcbutil # XCB实用工具库
xorg.xcbutilimage # XCB图像实用工具库 # xorg.xcbutilimage # XCB图像实用工具库
xorg.xcbutilkeysyms # XCB键符号实用工具库 # xorg.xcbutilkeysyms # XCB键符号实用工具库
xorg.xcbutilrenderutil # XCB渲染实用工具库 # xorg.xcbutilrenderutil # XCB渲染实用工具库
xorg.xcbutilwm # XCB窗口管理实用工具库 # xorg.xcbutilwm # XCB窗口管理实用工具库
xorg.xkeyboardconfig # X11键盘配置数据库 # xorg.xkeyboardconfig # X11键盘配置数据库
xz # LZMA压缩工具 xz # LZMA压缩工具
zlib # 通用数据压缩库 zlib # 通用数据压缩库
]; ] ++ (
if lib.versionAtLeast config.system.stateVersion "25.05" then
[ pkgs.libgbm ]
else
[ ]
);
}; };
}; };
} }

View File

@@ -29,17 +29,19 @@
source-han-serif # 思源宋体 source-han-serif # 思源宋体
# wqy_zenhei # 文泉驿正黑 # wqy_zenhei # 文泉驿正黑
] ++ (
# nerdfonts # nerdfonts
nerd-fonts.jetbrains-mono if lib.versionAtLeast config.system.stateVersion "25.05" then
# (nerdfonts.override { [ nerd-fonts.jetbrains-mono ]
# fonts = [ else [
# # "FiraCode" (nerdfonts.override {
# "JetBrainsMono" fonts = [
# # "Iosevka" # "FiraCode"
# ]; "JetBrainsMono"
# }) # "Iosevka"
];
]; })
]
);
}; };
} }

View File

@@ -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 # You can import other NixOS modules here
imports = [ imports = [
./mount.nix ./mount.nix
@@ -20,12 +20,11 @@ args@{ self, pkgs, home-manager, username, sysversion, ... }: {
# home-manager.useUserPackages = true; # home-manager.useUserPackages = true;
home-manager = { home-manager = {
extraSpecialArgs = { 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}" = { ... }: { users."${username}" = { ... }: {
imports = [ imports = [
./hm ./hm
"${self}/libs/home-libs.nix"
"${self}/home/desktop.nix" "${self}/home/desktop.nix"
"${self}/modules/home/develop.nix" "${self}/modules/home/develop.nix"
]; ];
@@ -55,5 +54,5 @@ args@{ self, pkgs, home-manager, username, sysversion, ... }: {
users.users."${username}".shell = pkgs.zsh; users.users."${username}".shell = pkgs.zsh;
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
system.stateVersion = sysversion; system.stateVersion = version;
} }

View File

@@ -1,11 +1,8 @@
args@{ libs, inputs, ... }: args@{ libs, inputs, nixos, ... }:
let let
# 这里可以选择使用稳定版或不稳定版的nixpkgs # 使用pkgs.unstable中的nixpkgs和home-manager
# nixpkgs = inputs.nixpkgs; inherit (nixos.unstable) nixpkgs home-manager version;
nixpkgs = inputs.nixpkgs-unstable; # 如果需要使用unstable版本取消这行注释并注释上一行 sysArgs = args // { inherit home-manager version; };
home-manager = inputs.home-manager-unstable;
sysversion = "25.05";
sysArgs = args // { inherit home-manager sysversion; };
in in
# 使用libs.mkNixosSystem创建nixosSystem # 使用libs.mkNixosSystem创建nixosSystem
libs.mkNixosSystem { libs.mkNixosSystem {

View File

@@ -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 # You can import other NixOS modules here
imports = [ imports = [
# If you want to use modules your own flake exports (from modules/nixos): # 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.useUserPackages = true;
home-manager = { home-manager = {
extraSpecialArgs = { extraSpecialArgs = {
inherit (args) self inputs outputs libs hostname username useremail sysversion; inherit (args) self inputs outputs libs sourcepath hostname username useremail version;
}; };
users."${username}" = { ... }: { users."${username}" = { ... }: {
imports = [ imports = [
@@ -48,5 +48,5 @@ args@{ self, pkgs, home-manager, username, sysversion, ... }: {
]; ];
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
system.stateVersion = sysversion; system.stateVersion = version;
} }

View File

@@ -1,11 +1,8 @@
args@{ libs, inputs, ... }: args@{ libs, inputs, nixos, ... }:
let let
# 这里可以选择使用稳定版或不稳定版的nixpkgs # 使用pkgs.unstable中的nixpkgs和home-manager
# nixpkgs = inputs.nixpkgs; inherit (nixos.unstable) nixpkgs home-manager version;
nixpkgs = inputs.nixpkgs-unstable; # 如果需要使用unstable版本取消这行注释并注释上一行 sysArgs = args // { inherit home-manager version; };
home-manager = inputs.home-manager-unstable;
sysversion = "25.05";
sysArgs = args // { inherit home-manager sysversion; };
in in
# 使用libs.mkNixosSystem创建nixosSystem # 使用libs.mkNixosSystem创建nixosSystem
libs.mkNixosSystem { libs.mkNixosSystem {

View File

@@ -1,4 +1,4 @@
args@{ self, home-manager, username, sysversion, ... }: { args@{ self, home-manager, username, version, ... }: {
# You can import other NixOS modules here # You can import other NixOS modules here
imports = [ imports = [
@@ -26,7 +26,7 @@ args@{ self, home-manager, username, sysversion, ... }: {
# home-manager.useUserPackages = true; # home-manager.useUserPackages = true;
home-manager = { home-manager = {
extraSpecialArgs = { extraSpecialArgs = {
inherit (args) self inputs outputs libs hostname username useremail sysversion; inherit (args) self inputs outputs libs sourcepath hostname username useremail version;
}; };
users."${username}" = { ... }: { users."${username}" = { ... }: {
imports = [ imports = [
@@ -38,5 +38,5 @@ args@{ self, home-manager, username, sysversion, ... }: {
]; ];
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
system.stateVersion = sysversion; system.stateVersion = version;
} }

View File

@@ -1,11 +1,8 @@
args@{ libs, inputs, ... }: args@{ libs, inputs, nixos, ... }:
let let
# 这里可以选择使用稳定版或不稳定版的nixpkgs # 使用pkgs.unstable中的nixpkgs和home-manager
# nixpkgs = inputs.nixpkgs; inherit (nixos.unstable) nixpkgs home-manager version;
nixpkgs = inputs.nixpkgs-unstable; # 如果需要使用unstable版本取消这行注释并注释上一行 sysArgs = args // { inherit home-manager version; };
home-manager = inputs.home-manager-unstable;
sysversion = "25.05";
sysArgs = args // { inherit home-manager sysversion; };
in in
# 使用libs.mkNixosSystem创建nixosSystem # 使用libs.mkNixosSystem创建nixosSystem
libs.mkNixosSystem { libs.mkNixosSystem {