mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-03-22 17:39:56 +01:00
feat: nixos - nur - qqmusic/wechat-uos/dingtalk, rollback to i3
This commit is contained in:
18
flake.lock
generated
18
flake.lock
generated
@@ -271,13 +271,29 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1683993879,
|
||||
"narHash": "sha256-Vkh3NwvtjFuDp7TzSYNaqm2bG2Mbu2lvFxjHfdJX10o=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "9c38359908111a7338c585d986d6056618da5745",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"hyprland": "hyprland",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixpkgs-wayland": "nixpkgs-wayland"
|
||||
"nixpkgs-wayland": "nixpkgs-wayland",
|
||||
"nur": "nur"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
|
||||
92
flake.nix
92
flake.nix
@@ -19,11 +19,13 @@
|
||||
extra-substituters = [
|
||||
"https://nix-community.cachix.org"
|
||||
"https://nixpkgs-wayland.cachix.org"
|
||||
"https://xddxdd.cachix.org"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
|
||||
"xddxdd.cachix.org-1:ay1HJyNDYmlSwj5NXQG065C8LfoqqKaTNCyzeixGjf8="
|
||||
];
|
||||
};
|
||||
|
||||
@@ -34,6 +36,11 @@
|
||||
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # 使用 nixos-unstable 分支 for nix flakes
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-22.11"; # unstable branch may be broken sometimes, use stable branch when necessary
|
||||
|
||||
# nix users repository
|
||||
# used to install some packages not in nixpkgs
|
||||
# e.g. wechat-uos/qqmusic/dingtalk
|
||||
nur.url = github:nix-community/NUR;
|
||||
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
# follows 是 inputs 中的继承语法
|
||||
@@ -54,29 +61,50 @@
|
||||
nixpkgs,
|
||||
nixpkgs-stable,
|
||||
home-manager,
|
||||
nur,
|
||||
...
|
||||
}: {
|
||||
# 名为 nixosConfigurations 的 outputs 会在执行 `nixos-rebuild switch --flake .` 时被使用
|
||||
# 默认情况下会使用与主机 hostname 同名的 nixosConfigurations,但是也可以通过 `--flake .#<name>` 来指定
|
||||
nixosConfigurations = {
|
||||
# hostname 为 nixos-test 的主机会使用这个配置
|
||||
# 这里使用了 nixpkgs.lib.nixosSystem 函数来构建配置,后面的 attributes set 是它的参数
|
||||
# 在 nixos 上使用此命令部署配置:`nixos-rebuild switch --flake .#nixos-test`
|
||||
nixos-test = nixpkgs.lib.nixosSystem {
|
||||
msi-rtx4090 = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
|
||||
# modules 中每个参数,都是一个 NixOS Module <https://nixos.org/manual/nixos/stable/index.html#sec-modularity>
|
||||
# NixOS Module 可以是一个 attribute set,也可以是一个返回 attribute set 的函数
|
||||
# 如果是函数,那么它的参数就是当前的 NixOS Module 的参数.
|
||||
# 根据 Nix Wiki 对 NixOS modules 的描述,NixOS modules 函数的参数可以有这四个(详见本仓库中的 modules 文件):
|
||||
#
|
||||
# config: The configuration of the entire system
|
||||
# options: All option declarations refined with all definition and declaration references.
|
||||
# pkgs: The attribute set extracted from the Nix package collection and enhanced with the nixpkgs.config option.
|
||||
# modulesPath: The location of the module directory of NixOS.
|
||||
#
|
||||
# nix flake 的 modules 系统可将配置模块化,提升配置的可维护性
|
||||
# 默认只能传上面这四个参数,如果需要传其他参数,必须使用 specialArgs
|
||||
specialArgs = {
|
||||
inherit nixpkgs-stable;
|
||||
};
|
||||
modules = [
|
||||
./hosts/msi-rtx4090
|
||||
|
||||
# home-manager 作为 nixos 的一个 module
|
||||
# 这样在 nixos-rebuild switch 时,home-manager 也会被自动部署,不需要额外执行 home-manager switch 命令
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
|
||||
# 使用 home-manager.extraSpecialArgs 自定义传递给 ./home 的参数
|
||||
home-manager.extraSpecialArgs = inputs;
|
||||
home-manager.users.ryan = import ./home;
|
||||
}
|
||||
|
||||
({pkgs, config, ... }: {
|
||||
config = {
|
||||
# use it as an overlay
|
||||
nixpkgs.overlays = [
|
||||
inputs.nixpkgs-wayland.overlay
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
# This adds a nur configuration option.
|
||||
# Use `config.nur.repos.<user>.<package-name>` in NixOS Module for packages from the NUR.
|
||||
nur.nixosModules.nur
|
||||
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
nixos-test = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit nixpkgs-stable;
|
||||
};
|
||||
@@ -103,33 +131,13 @@
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
# This adds a nur configuration option.
|
||||
# Use `config.nur.repos.<user>.<package-name>` in NixOS Module for packages from the NUR.
|
||||
nur.nixosModules.nur
|
||||
];
|
||||
};
|
||||
|
||||
msi-rtx4090 = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
|
||||
specialArgs = {
|
||||
inherit nixpkgs-stable;
|
||||
};
|
||||
modules = [
|
||||
./hosts/msi-rtx4090
|
||||
|
||||
# home-manager 作为 nixos 的一个 module
|
||||
# 这样在 nixos-rebuild switch 时,home-manager 也会被自动部署,不需要额外执行 home-manager switch 命令
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
|
||||
# 使用 home-manager.extraSpecialArgs 自定义传递给 ./home 的参数
|
||||
home-manager.extraSpecialArgs = inputs;
|
||||
home-manager.users.ryan = import ./home;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
# 如果你在 x86_64-linux 平台上执行 nix build,那么默认会使用这个配置,或者也能通过 `.#<name>` 参数来指定非 default 的配置
|
||||
# packages.x86_64-linux.default =
|
||||
};
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
{
|
||||
|
||||
imports = [
|
||||
./hyprland
|
||||
# ./hyprland
|
||||
./i3
|
||||
./programs
|
||||
./rofi
|
||||
./shell
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
# hyprland configs, based on https://github.com/notwidow/hyprland
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
# i3 配置,基于 https://github.com/endeavouros-team/endeavouros-i3wm-setup
|
||||
@@ -18,16 +19,34 @@
|
||||
executable = true; # make all scripts executable
|
||||
};
|
||||
|
||||
home.file.".config/fcitx5/profile".source = ./profile;
|
||||
# fcitx5 每次切换输入法,就会修改 ~/.config/fcitx5/profile 文件,导致我用 hm 管理的配置被覆盖
|
||||
# 解决方法是通过如下内置,每次 rebuild 前都先删除下 profile 文件
|
||||
home.activation.removeExistingFcitx5Profile = lib.hm.dag.entryBefore ["checkLinkTargets"] ''
|
||||
rm -f "${config.xdg.configHome}/fcitx5/profile"
|
||||
'';
|
||||
|
||||
# allow fontconfig to discover fonts and configurations installed through home.packages
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
systemd.user.sessionVariables = {
|
||||
"LIBVA_DRIVER_NAME" = "nvidia";
|
||||
"GBM_BACKEND" = "nvidia-drm";
|
||||
"__GLX_VENDOR_LIBRARY_NAME" = "nvidia";
|
||||
|
||||
# copy from https://github.com/nix-community/home-manager/blob/master/modules/i18n/input-method/fcitx5.nix
|
||||
GLFW_IM_MODULE = "fcitx";
|
||||
GTK_IM_MODULE = "fcitx";
|
||||
QT_IM_MODULE = "fcitx";
|
||||
XMODIFIERS = "@im=fcitx";
|
||||
INPUT_METHOD = "fcitx";
|
||||
IMSETTINGS_MODULE = "fcitx";
|
||||
};
|
||||
|
||||
# set cursor size and dpi for 4k monitor
|
||||
xresources.properties = {
|
||||
"Xcursor.size" = 16;
|
||||
"Xft.dpi" = 192;
|
||||
"Xft.dpi" = 150;
|
||||
};
|
||||
|
||||
# 直接以 text 的方式,在 nix 配置文件中硬编码文件内容
|
||||
# home.file.".xxx".text = ''
|
||||
# xxx
|
||||
# '';
|
||||
|
||||
|
||||
}
|
||||
17
home/i3/profile
Normal file
17
home/i3/profile
Normal file
@@ -0,0 +1,17 @@
|
||||
[Groups/0]
|
||||
# Group Name
|
||||
Name=Other
|
||||
# Layout
|
||||
Default Layout=us
|
||||
# Default Input Method
|
||||
DefaultIM=rime
|
||||
|
||||
[Groups/0/Items/0]
|
||||
# Name
|
||||
Name=rime
|
||||
# Layout
|
||||
Layout=
|
||||
|
||||
[GroupOrder]
|
||||
0=Other
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
};
|
||||
in {
|
||||
home.packages = with pkgs-stable; [
|
||||
firefox-wayland
|
||||
# firefox-wayland
|
||||
firefox
|
||||
];
|
||||
|
||||
programs = {
|
||||
@@ -23,26 +24,26 @@
|
||||
# https://github.com/swaywm/sway/issues/7562
|
||||
package = pkgs-stable.google-chrome;
|
||||
|
||||
commandLineArgs = [
|
||||
# make it use GTK_IM_MODULE if it runs with Gtk4, so fcitx5 can work with it.
|
||||
# (only supported by chromium/chrome at this time, not electron)
|
||||
"--gtk-version=4"
|
||||
# make it use text-input-v1, which works for kwin 5.27 and weston
|
||||
# "--enable-wayland-ime"
|
||||
# commandLineArgs = [
|
||||
# # make it use GTK_IM_MODULE if it runs with Gtk4, so fcitx5 can work with it.
|
||||
# # (only supported by chromium/chrome at this time, not electron)
|
||||
# "--gtk-version=4"
|
||||
# # make it use text-input-v1, which works for kwin 5.27 and weston
|
||||
# # "--enable-wayland-ime"
|
||||
|
||||
# enable hardware acceleration - vulkan api
|
||||
# "--enable-features=Vulkan"
|
||||
];
|
||||
# # enable hardware acceleration - vulkan api
|
||||
# # "--enable-features=Vulkan"
|
||||
# ];
|
||||
};
|
||||
|
||||
vscode = {
|
||||
enable = true;
|
||||
# use the stable version
|
||||
package = pkgs-stable.vscode.override {
|
||||
commandLineArgs = [
|
||||
# make it use text-input-v1, which works for kwin 5.27 and weston
|
||||
# "--enable-wayland-ime"
|
||||
];
|
||||
# commandLineArgs = [
|
||||
# # make it use text-input-v1, which works for kwin 5.27 and weston
|
||||
# # "--enable-wayland-ime"
|
||||
# ];
|
||||
};
|
||||
|
||||
# let vscode sync and update its configuration & extensions across devices, using github account.
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{pkgs, ...}: {
|
||||
{pkgs, config, ...}:
|
||||
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# archives
|
||||
zip
|
||||
@@ -88,7 +91,6 @@
|
||||
# instant messaging
|
||||
telegram-desktop
|
||||
discord
|
||||
# qq & wechat are alse in the official nixpkgs
|
||||
qq # https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/networking/instant-messengers/qq
|
||||
|
||||
# music
|
||||
|
||||
@@ -9,8 +9,9 @@
|
||||
[
|
||||
./cifs-mount.nix
|
||||
../../modules/system.nix
|
||||
../../modules/hyprland.nix
|
||||
../../modules/i3.nix
|
||||
../../modules/fcitx5
|
||||
../../modules/nur-packages.nix
|
||||
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
|
||||
13
modules/nur-packages.nix
Normal file
13
modules/nur-packages.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"electron-19.0.7" # required by wechat-uos, and it's already EOL
|
||||
];
|
||||
|
||||
environment.systemPackages = with config.nur.repos.xddxdd; [
|
||||
# packages from nur-xddxdd
|
||||
wechat-uos
|
||||
qqmusic
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user