简化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";
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))

View File

@@ -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;
}

View File

@@ -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 = {

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 = [
];
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 = {

View File

@@ -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
[ ]
);
};
};
}

View File

@@ -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"
];
})
]
);
};
}

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
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;
}

View File

@@ -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 {

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
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;
}

View File

@@ -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 {

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
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;
}

View File

@@ -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 {