1 封装nix-fhs使用nix-ld

2 修改生成hylrland配置文件的方式
3 启用flatpak
This commit is contained in:
2025-05-19 10:20:28 +08:00
parent 05c8ab6c82
commit 91b8e65a79
11 changed files with 265 additions and 145 deletions

View File

@@ -1,6 +1,5 @@
{ config, libs, pkgs, ... }:
let
conf = [ "hypr" "waybar" "rofi" "kitty" "mako" "wlogout" ];
confPath = "modules/home/hyprland/conf";
in
{
@@ -47,7 +46,7 @@ in
source = config.home-libs.mkOutOfStoreSymlink "${confPath}/${name}";
};
})
conf
(builtins.attrNames (builtins.readDir ./conf))
);
}

View File

@@ -3,7 +3,8 @@
imports = [
./boot.nix
./system.nix
./nixld.nix
./nixfhs.nix
../user.nix
];
environment = {
@@ -15,7 +16,6 @@
programs = {
git.enable = true;
dconf.enable = true;
};
# Configure firewall

View File

@@ -0,0 +1,142 @@
{ config, lib, pkgs, ... }:
let
conf = config.services.nix-fhs;
inherit (lib) mkOption mkEnableOption types;
in
{
options.services.nix-fhs = with lib; {
enable = mkEnableOption "nix-fhs module";
gui.enable = mkEnableOption "/GUI//";
# 在这里定义其他选项
extraPackages = mkOption {
type = types.listOf types.package;
default = [ ];
example = [ pkgs.gcc pkgs.gdb ];
description = "nix-ld";
};
};
config = lib.mkIf conf.enable {
# NixOS 系统级配置
programs.nix-ld = {
enable = true;
# 这里可以添加其他nix-ld相关的配置
libraries = with pkgs;[
bzip2 # 高质量的数据压缩库
cups # 通用Unix打印系统提供打印功能
curlWithGnuTls # 使用GnuTLS的URL传输库用于网络请求
dbus # 进程间通信系统,用于应用程序之间的通信
dbus-glib # D-Bus的GLib绑定
e2fsprogs # ext2/3/4文件系统工具
expat # XML解析库
fontconfig # 字体配置和自定义库
freetype # 字体渲染引擎
fribidi # Unicode双向文本算法实现
fuse # 用户空间文件系统接口
fuse3 # FUSE的第3版用户空间文件系统接口
gmp # GNU多精度算术库
icu # 国际化组件提供Unicode和全球化支持
keyutils.lib # Linux密钥管理工具库
libcap # POSIX能力库
libgcrypt # GNU加密库
libgpg-error # GnuPG错误报告库
libidn # 国际化域名库
libpng12 # PNG图像编解码库1.2版本
libsamplerate # 音频采样率转换库
libuuid # UUID生成和解析库
libxcrypt-legacy # 旧版密码哈希库
libxml2 # XML解析和生成库
nspr # Netscape可移植运行时
nss # 网络安全服务
openssl # 安全套接字层库
p11-kit # PKCS#11模块加载库
pixman # 像素操作库
python3 # Python编程语言解释器
stdenv.cc.cc # 标准C编译器
tbb # 英特尔线程构建块库
udev # 设备管理器
] ++
(lib.optionals conf.gui.enable [
atk # 辅助技术工具包,提供辅助功能支持
cairo # 2D图形渲染库支持多种输出设备
desktop-file-utils # 用于处理桌面条目文件的工具
gdk-pixbuf # 图像加载库GNOME的一部分
glib # 通用工具库,提供数据结构处理、移植等功能
gtk2 # 图形用户界面工具包第2版
gtk3 # 图形用户界面工具包第3版
harfbuzz # 文本整形引擎
pango # 文本布局和渲染库
alsa-lib # 高级Linux声音架构库提供音频功能
flac # 无损音频编解码器
libcanberra # 声音主题规范的实现
libjack2 # JACK音频连接套件第2版
libmikmod # 模块音乐库
libogg # Ogg多媒体容器格式库
libvorbis # Vorbis音频编解码库
speex # 语音压缩格式
freeglut # OpenGL实用工具包用于创建OpenGL上下文
glew110 # OpenGL扩展加载库1.10版本
gst_all_1.gst-plugins-base # GStreamer基础插件集
gst_all_1.gst-plugins-ugly # GStreamer非自由插件集
gst_all_1.gstreamer # 多媒体框架
libGL # OpenGL库
libGLU # OpenGL实用工具库
librsvg # SVG渲染库
libtheora # Theora视频编解码库
libtiff # TIFF图像编解码库
libvdpau # 视频解码和呈现API
libvpx # VP8/VP9视频编解码库
mesa # 开源OpenGL实现
vulkan-loader # Vulkan图形API加载器
wayland # 显示服务器协议
at-spi2-atk # 辅助技术服务提供者接口连接ATK和AT-SPI
at-spi2-core # 辅助技术服务提供者接口核心组件
libappindicator-gtk2 # 应用程序指示器库,用于系统托盘图标
libcaca # 彩色ASCII艺术库
libclang.lib # Clang编译器库
libdbusmenu # D-Bus菜单库
libjpeg # JPEG图像编解码库
libudev0-shim # 旧版udev库兼容层
libusb1 # USB设备访问库
mesa # 开源OpenGL实现
]) ++
(lib.optionals (lib.versionAtLeast config.system.stateVersion "25.05") [
pkgs.libgbm # 通用缓冲区管理库25.05之前包含在mesa中
]) ++ (
if config.services.xserver.enable then
[
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键盘配置数据库
]
else
[ ]
) ++ conf.extraPackages;
};
};
}

View File

@@ -1,129 +0,0 @@
{ config, lib, pkgs, ... }:
{
programs = {
# Allow to run prebuild binary app
nix-ld = {
enable = true;
libraries = with pkgs; [
SDL # 简单直接媒体层,用于图形、音频、输入等的跨平台库
SDL2 # SDL的第二个主要版本提供更多功能
SDL2_image # SDL2的图像加载库支持多种图像格式
SDL2_mixer # SDL2的音频混合库用于播放多种音频格式
SDL2_ttf # SDL2的TrueType字体渲染库
SDL_image # SDL1的图像加载库
SDL_mixer # SDL1的音频混合库
SDL_ttf # SDL1的TrueType字体渲染库
alsa-lib # 高级Linux声音架构库提供音频功能
at-spi2-atk # 辅助技术服务提供者接口连接ATK和AT-SPI
at-spi2-core # 辅助技术服务提供者接口核心组件
atk # 辅助技术工具包,提供辅助功能支持
bzip2 # 高质量的数据压缩库
cairo # 2D图形渲染库支持多种输出设备
cups # 通用Unix打印系统提供打印功能
curlWithGnuTls # 使用GnuTLS的URL传输库用于网络请求
dbus # 进程间通信系统,用于应用程序之间的通信
dbus-glib # D-Bus的GLib绑定
desktop-file-utils # 用于处理桌面条目文件的工具
e2fsprogs # ext2/3/4文件系统工具
expat # XML解析库
flac # 无损音频编解码器
fontconfig # 字体配置和自定义库
freeglut # OpenGL实用工具包用于创建OpenGL上下文
freetype # 字体渲染引擎
fribidi # Unicode双向文本算法实现
fuse # 用户空间文件系统接口
fuse3 # FUSE的第3版用户空间文件系统接口
gdk-pixbuf # 图像加载库GNOME的一部分
glew110 # OpenGL扩展加载库1.10版本
glib # 通用工具库,提供数据结构处理、移植等功能
gmp # GNU多精度算术库
gst_all_1.gst-plugins-base # GStreamer基础插件集
gst_all_1.gst-plugins-ugly # GStreamer非自由插件集
gst_all_1.gstreamer # 多媒体框架
gtk2 # 图形用户界面工具包第2版
gtk3 # 图形用户界面工具包第2版
harfbuzz # 文本整形引擎
icu # 国际化组件提供Unicode和全球化支持
keyutils.lib # Linux密钥管理工具库
libGL # OpenGL库
libGLU # OpenGL实用工具库
libappindicator-gtk2 # 应用程序指示器库,用于系统托盘图标
libcaca # 彩色ASCII艺术库
libcanberra # 声音主题规范的实现
libcap # POSIX能力库
libclang.lib # Clang编译器库
libdbusmenu # D-Bus菜单库
libdrm # 直接渲染管理器库
libgcrypt # GNU加密库
libgpg-error # GnuPG错误报告库
libidn # 国际化域名库
libjack2 # JACK音频连接套件第2版
libjpeg # JPEG图像编解码库
libmikmod # 模块音乐库
libogg # Ogg多媒体容器格式库
libpng12 # PNG图像编解码库1.2版本
librsvg # SVG渲染库
libsamplerate # 音频采样率转换库
libthai # 泰语支持库
libtheora # Theora视频编解码库
libtiff # TIFF图像编解码库
libudev0-shim # 旧版udev库兼容层
libusb1 # USB设备访问库
libuuid # UUID生成和解析库
libvdpau # 视频解码和呈现API
libvorbis # Vorbis音频编解码库
libvpx # VP8/VP9视频编解码库
libxcrypt-legacy # 旧版密码哈希库
libxkbcommon # 键盘处理库
libxml2 # XML解析和生成库
mesa # 开源OpenGL实现
nspr # Netscape可移植运行时
nss # 网络安全服务
openssl # 安全套接字层库
p11-kit # PKCS#11模块加载库
pango # 文本布局和渲染库
pixman # 像素操作库
python3 # Python编程语言解释器
speex # 语音压缩格式
stdenv.cc.cc # 标准C编译器
tbb # 英特尔线程构建块库
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键盘配置数据库
xz # LZMA压缩工具
zlib # 通用数据压缩库
] ++ (
if lib.versionAtLeast config.system.stateVersion "25.05" then
[ pkgs.libgbm ]
else
[ ]
);
};
};
}

View File

@@ -10,6 +10,7 @@
printing.enable = true;
acpid.enable = true;
upower.enable = true;
nix-fhs.enable = true;
openssh = {
enable = true;

View File

@@ -1,5 +1,4 @@
{ config, pkgs, ... }:
{
{ config, pkgs, lib, username, ... }: {
services.xserver = {
enable = true;
displayManager.gdm.enable = true;
@@ -47,8 +46,117 @@
"GLFW_IM_MODULE" = "ibus";
};
};
programs = {
dconf = {
enable = true;
profiles = {
# TODO: Investigate customizing gdm greeter.
user.databases = [{
settings = with lib.gvariant; {
"org/gnome/desktop/interface" = {
clock-show-weekday = true;
cursor-size = mkUint32 16;
cursor-theme = "capitaine-cursors";
enable-hot-corners = false;
icon-theme = "Papirus-Dark";
locate-pointer = false;
monospace-font-name = "JetBrainsMono Nerd Font Mono 10";
overlay-scrolling = true;
};
"org/gnome/mutter" = {
edge-tiling = true;
attach-modal-dialogs = true;
experimental-features = [ "scale-monitor-framebuffer" ];
};
"org/gnome/shell" = {
last-selected-power-profile = "power-saver";
};
"org/gnome/desktop/session" = {
idle-delay = mkUint32 900;
};
"org/gnome/settings-daemon/plugins/power" = {
power-button-action = "interactive";
sleep-inactive-ac-timeout = mkUint32 7200;
sleep-inactive-ac-type = "nothing";
};
"org/gtk/gtk4/settings/file-chooser" = {
sort-directories-first = true;
# show-hidden = true;
view-type = "list";
};
"org/gnome/desktop/wm/keybindings" = {
minimize = mkEmptyArray type.string;
move-to-workspace-1 = [ "<Shift><Super>1" ];
move-to-workspace-2 = [ "<Shift><Super>2" ];
move-to-workspace-3 = [ "<Shift><Super>3" ];
move-to-workspace-4 = [ "<Shift><Super>4" ];
switch-to-workspace-1 = [ "<Super>1" ];
switch-to-workspace-2 = [ "<Super>2" ];
switch-to-workspace-3 = [ "<Super>3" ];
switch-to-workspace-4 = [ "<Super>4" ];
switch-to-workspace-left = [ "<Control><Super>h" ];
switch-to-workspace-right = [ "<Control><Super>l" ];
switch-windows = [ "<Alt>Tab" ];
switch-windows-backward = [ "<Shift><Alt>Tab" ];
switch-applications = [ "<Super>Tab" ];
switch-applications-backward = [ "<Shift><Super>Tab" ];
};
"org/gnome/shell/keybindings" = {
# Following binds are replaced by the ones above.
switch-to-application-1 = mkEmptyArray type.string;
switch-to-application-2 = mkEmptyArray type.string;
switch-to-application-3 = mkEmptyArray type.string;
switch-to-application-4 = mkEmptyArray type.string;
};
"org/gnome/shell" = {
enabled-extensions = [
"appindicatorsupport@rgcjonas.gmail.com"
"dash-to-dock@micxgx.gmail.com"
"status-icons@gnome-shell-extensions.gcampax.github.com"
"system-monitor@gnome-shell-extensions.gcampax.github.com"
];
};
"org/gnome/shell/extensions/dash-to-panel" = {
apply-custom-theme = false;
background-opacity = 0.8;
click-action = "previews";
custom-background-color = false;
custom-theme-shrink = true;
dash-max-icon-size = mkUint32 40;
dock-position = "BOTTOM";
extend-height = false;
height-fraction = 0.9;
hot-keys = false;
icon-size-fixed = true;
isolate-monitors = true;
max-alpha = 0.8;
multi-monitor = true;
preview-size-scale = 0.0;
running-indicator-style = "DOTS";
scroll-action = "cycle-windows";
show-mounts = false;
show-mounts-only-mounted = true;
transparency-mode = "DYNAMIC";
};
"org/gnome/shell/extensions/system-monitor" = {
show-download = true;
show-swap = false;
show-upload = false;
};
};
}];
};
};
};
}