mirror of
https://github.com/CHN-beta/nixos.git
synced 2026-01-12 04:39:23 +08:00
暂存
This commit is contained in:
299
flake.nix
299
flake.nix
@@ -96,7 +96,6 @@
|
||||
outputs = inputs:
|
||||
let
|
||||
localLib = import ./local/lib inputs.nixpkgs.lib;
|
||||
localPkgs = import ./local/pkgs;
|
||||
in
|
||||
{
|
||||
nixosConfigurations =
|
||||
@@ -105,187 +104,137 @@
|
||||
{
|
||||
system = "x86_64-linux";
|
||||
specialArgs = { topInputs = inputs; inherit localLib; };
|
||||
modules =
|
||||
modules = localLib.mkModules
|
||||
[
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.touchix.nixosModules.v2ray-forwarder
|
||||
inputs.aagl.nixosModules.default
|
||||
inputs.nix-index-database.nixosModules.nix-index
|
||||
inputs.nur.nixosModules.nur
|
||||
inputs.nur-xddxdd.nixosModules.setupOverlay
|
||||
inputs.impermanence.nixosModules.impermanence
|
||||
(args: {
|
||||
config.nixpkgs =
|
||||
(inputs: { config.nixpkgs.overlays = [(final: prev: { localPackages =
|
||||
(import ./local/pkgs { inherit (inputs) lib; pkgs = final; });})]; })
|
||||
./modules
|
||||
(inputs: { config.nixos =
|
||||
{
|
||||
fileSystems =
|
||||
{
|
||||
overlays =
|
||||
[
|
||||
(
|
||||
final: prev:
|
||||
{
|
||||
touchix = inputs.touchix.packages."${prev.system}";
|
||||
nix-vscode-extensions = inputs.nix-vscode-extensions.extensions."${prev.system}";
|
||||
localPackages = localPkgs { inherit (args) lib; pkgs = final; };
|
||||
}
|
||||
)
|
||||
inputs.qchem.overlays.default
|
||||
(
|
||||
final: prev: { nur-xddxdd =
|
||||
(inputs.nur-xddxdd.overlays.custom args.config.boot.kernelPackages.nvidia_x11) final prev; }
|
||||
)
|
||||
inputs.nixd.overlays.default
|
||||
inputs.nix-alien.overlays.default
|
||||
];
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
})
|
||||
(
|
||||
localLib.mkModules
|
||||
[
|
||||
./modules/fileSystems
|
||||
./modules/kernel
|
||||
./modules/hardware
|
||||
./modules/packages
|
||||
./modules/boot
|
||||
./modules/system
|
||||
./modules/virtualization
|
||||
./modules/services
|
||||
./modules/bugs
|
||||
./modules/users
|
||||
(inputs: { config =
|
||||
mount =
|
||||
{
|
||||
nixos =
|
||||
vfat."/dev/disk/by-uuid/3F57-0EBE" = "/boot/efi";
|
||||
btrfs =
|
||||
{
|
||||
fileSystems =
|
||||
{
|
||||
mount =
|
||||
{
|
||||
vfat."/dev/disk/by-uuid/3F57-0EBE" = "/boot/efi";
|
||||
btrfs =
|
||||
{
|
||||
"/dev/disk/by-uuid/02e426ec-cfa2-4a18-b3a5-57ef04d66614"."/" = "/boot";
|
||||
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
|
||||
};
|
||||
};
|
||||
decrypt.auto =
|
||||
{
|
||||
"/dev/disk/by-uuid/55fdd19f-0f1d-4c37-bd4e-6df44fc31f26" = { mapper = "root"; ssd = true; };
|
||||
"/dev/md/swap" = { mapper = "swap"; ssd = true; before = [ "root" ]; };
|
||||
};
|
||||
mdadm =
|
||||
"ARRAY /dev/md/swap metadata=1.2 name=chn-PC:swap UUID=2b546b8d:e38007c8:02990dd1:df9e23a4";
|
||||
swap = [ "/dev/mapper/swap" ];
|
||||
resume = "/dev/mapper/swap";
|
||||
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
|
||||
};
|
||||
kernel =
|
||||
{
|
||||
patches = [ "cjktty" "preempt" ];
|
||||
modules.modprobeConfig = [ "options iwlmvm power_scheme=1" "options iwlwifi uapsd_disable=1" ];
|
||||
};
|
||||
hardware =
|
||||
{
|
||||
cpus = [ "intel" ];
|
||||
gpus = [ "intel" "nvidia" ];
|
||||
bluetooth.enable = true;
|
||||
joystick.enable = true;
|
||||
printer.enable = true;
|
||||
sound.enable = true;
|
||||
prime =
|
||||
{ enable = true; mode = "offload"; busId = { intel = "PCI:0:2:0"; nvidia = "PCI:1:0:0"; };};
|
||||
};
|
||||
packages =
|
||||
{
|
||||
packageSet = "workstation";
|
||||
extraPackages = [ inputs.pkgs.localPackages.oneapi ];
|
||||
extraPythonPackages = [(pythonPackages:
|
||||
[ inputs.pkgs.localPackages.upho inputs.pkgs.localPackages.spectral ])];
|
||||
};
|
||||
boot.grub =
|
||||
{
|
||||
entries = localLib.stripeTabs
|
||||
''
|
||||
menuentry "Windows" {
|
||||
insmod part_gpt
|
||||
insmod fat
|
||||
insmod search_fs_uuid
|
||||
insmod chain
|
||||
search --fs-uuid --set=root 7317-1DB6
|
||||
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
|
||||
}
|
||||
menuentry "Windows for malware" {
|
||||
insmod part_gpt
|
||||
insmod fat
|
||||
insmod search_fs_uuid
|
||||
insmod chain
|
||||
search --fs-uuid --set=root 7321-FA9C
|
||||
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
|
||||
}
|
||||
'';
|
||||
installDevice = "efi";
|
||||
};
|
||||
system =
|
||||
{
|
||||
hostname = "chn-PC";
|
||||
march = "alderlake";
|
||||
gui.enable = true;
|
||||
};
|
||||
virtualization =
|
||||
{
|
||||
waydroid.enable = true;
|
||||
docker.enable = true;
|
||||
kvmHost = { enable = true; gui = true; autoSuspend = [ "win10" "hardconnect" ]; };
|
||||
# kvmGuest.enable = true;
|
||||
nspawn = [ "arch" "ubuntu-22.04" ];
|
||||
};
|
||||
services =
|
||||
{
|
||||
impermanence.enable = true;
|
||||
snapper = { enable = true; configs.persistent = "/nix/persistent"; };
|
||||
fontconfig.enable = true;
|
||||
u2f.enable = true;
|
||||
sops = { enable = true; keyPathPrefix = "/nix/persistent"; };
|
||||
samba =
|
||||
{
|
||||
enable = true;
|
||||
private = true;
|
||||
hostsAllowed = "192.168. 127.";
|
||||
shares =
|
||||
{
|
||||
media.path = "/run/media/chn";
|
||||
home.path = "/home/chn";
|
||||
mnt.path = "/mnt";
|
||||
share.path = "/home/chn/share";
|
||||
};
|
||||
};
|
||||
sshd.enable = true;
|
||||
xrayClient =
|
||||
{
|
||||
enable = true;
|
||||
dns =
|
||||
{
|
||||
extraInterfaces = [ "docker0" ];
|
||||
hosts =
|
||||
{
|
||||
"mirism.one" = "216.24.188.24";
|
||||
"beta.mirism.one" = "216.24.188.24";
|
||||
"ng01.mirism.one" = "216.24.188.24";
|
||||
"debug.mirism.one" = "127.0.0.1";
|
||||
};
|
||||
};
|
||||
};
|
||||
firewall.trustedInterfaces = [ "docker0" "virbr0" ];
|
||||
};
|
||||
bugs = [ "intel-hdmi" "suspend-hibernate-no-platform" "hibernate-iwlwifi" "suspend-lid-no-wakeup" ];
|
||||
"/dev/disk/by-uuid/02e426ec-cfa2-4a18-b3a5-57ef04d66614"."/" = "/boot";
|
||||
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
|
||||
};
|
||||
}; })
|
||||
]
|
||||
)
|
||||
};
|
||||
decrypt.auto =
|
||||
{
|
||||
"/dev/disk/by-uuid/55fdd19f-0f1d-4c37-bd4e-6df44fc31f26" = { mapper = "root"; ssd = true; };
|
||||
"/dev/md/swap" = { mapper = "swap"; ssd = true; before = [ "root" ]; };
|
||||
};
|
||||
mdadm =
|
||||
"ARRAY /dev/md/swap metadata=1.2 name=chn-PC:swap UUID=2b546b8d:e38007c8:02990dd1:df9e23a4";
|
||||
swap = [ "/dev/mapper/swap" ];
|
||||
resume = "/dev/mapper/swap";
|
||||
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
|
||||
};
|
||||
kernel =
|
||||
{
|
||||
patches = [ "cjktty" "preempt" ];
|
||||
modules.modprobeConfig = [ "options iwlmvm power_scheme=1" "options iwlwifi uapsd_disable=1" ];
|
||||
};
|
||||
hardware =
|
||||
{
|
||||
cpus = [ "intel" ];
|
||||
gpus = [ "intel" "nvidia" ];
|
||||
bluetooth.enable = true;
|
||||
joystick.enable = true;
|
||||
printer.enable = true;
|
||||
sound.enable = true;
|
||||
prime =
|
||||
{ enable = true; mode = "offload"; busId = { intel = "PCI:0:2:0"; nvidia = "PCI:1:0:0"; };};
|
||||
};
|
||||
packages =
|
||||
{
|
||||
packageSet = "workstation";
|
||||
extraPackages = [ inputs.pkgs.localPackages.oneapi ];
|
||||
extraPythonPackages = [(pythonPackages:
|
||||
[ inputs.pkgs.localPackages.upho inputs.pkgs.localPackages.spectral ])];
|
||||
};
|
||||
boot.grub =
|
||||
{
|
||||
entries = localLib.stripeTabs
|
||||
''
|
||||
menuentry "Windows" {
|
||||
insmod part_gpt
|
||||
insmod fat
|
||||
insmod search_fs_uuid
|
||||
insmod chain
|
||||
search --fs-uuid --set=root 7317-1DB6
|
||||
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
|
||||
}
|
||||
menuentry "Windows for malware" {
|
||||
insmod part_gpt
|
||||
insmod fat
|
||||
insmod search_fs_uuid
|
||||
insmod chain
|
||||
search --fs-uuid --set=root 7321-FA9C
|
||||
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
|
||||
}
|
||||
'';
|
||||
installDevice = "efi";
|
||||
};
|
||||
system =
|
||||
{
|
||||
hostname = "chn-PC";
|
||||
march = "alderlake";
|
||||
gui.enable = true;
|
||||
};
|
||||
virtualization =
|
||||
{
|
||||
waydroid.enable = true;
|
||||
docker.enable = true;
|
||||
kvmHost = { enable = true; gui = true; autoSuspend = [ "win10" "hardconnect" ]; };
|
||||
# kvmGuest.enable = true;
|
||||
nspawn = [ "arch" "ubuntu-22.04" ];
|
||||
};
|
||||
services =
|
||||
{
|
||||
impermanence.enable = true;
|
||||
snapper = { enable = true; configs.persistent = "/nix/persistent"; };
|
||||
fontconfig.enable = true;
|
||||
u2f.enable = true;
|
||||
sops = { enable = true; keyPathPrefix = "/nix/persistent"; };
|
||||
samba =
|
||||
{
|
||||
enable = true;
|
||||
private = true;
|
||||
hostsAllowed = "192.168. 127.";
|
||||
shares =
|
||||
{
|
||||
media.path = "/run/media/chn";
|
||||
home.path = "/home/chn";
|
||||
mnt.path = "/mnt";
|
||||
share.path = "/home/chn/share";
|
||||
};
|
||||
};
|
||||
sshd.enable = true;
|
||||
xrayClient =
|
||||
{
|
||||
enable = true;
|
||||
dns =
|
||||
{
|
||||
extraInterfaces = [ "docker0" ];
|
||||
hosts =
|
||||
{
|
||||
"mirism.one" = "216.24.188.24";
|
||||
"beta.mirism.one" = "216.24.188.24";
|
||||
"ng01.mirism.one" = "216.24.188.24";
|
||||
"debug.mirism.one" = "127.0.0.1";
|
||||
};
|
||||
};
|
||||
};
|
||||
firewall.trustedInterfaces = [ "docker0" "virbr0" ];
|
||||
};
|
||||
bugs = [ "intel-hdmi" "suspend-hibernate-no-platform" "hibernate-iwlwifi" "suspend-lid-no-wakeup" ];
|
||||
};})
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,45 +9,17 @@ lib:
|
||||
# inputs: { environment.systemPackages = [ pkgs.hello ]; }
|
||||
# The second one would failed to evaluate because nixpkgs would not pass pkgs to it.
|
||||
# So that we wrote a wrapper to make it always works like the first one.
|
||||
# Input a list of modules, allowed types are:
|
||||
# * attribute set
|
||||
# * file containing attribute set
|
||||
# * file containing lambda, which takes inputs as argument
|
||||
# * lambda, which takes inputs as argument
|
||||
# * list, first member is a lambda,
|
||||
mkModules = moduleList: { pkgs, ... }@inputs:
|
||||
{
|
||||
imports = builtins.map
|
||||
(
|
||||
let
|
||||
handle = { module, customArgs }:
|
||||
if ( builtins.typeOf module ) == "list"
|
||||
then handle { module = builtins.elemAt module 0; customArgs = builtins.elemAt module 1; }
|
||||
else if ( builtins.typeOf module ) == "path"
|
||||
then handle { module = import module; inherit customArgs; }
|
||||
else if ( builtins.typeOf module ) == "lambda" && customArgs != null # deprecated
|
||||
then handle { module = module customArgs; customArgs = null; }
|
||||
else if ( builtins.typeOf module ) == "lambda" then module inputs # deprecated
|
||||
else module;
|
||||
caller = module: handle { inherit module; customArgs = null; };
|
||||
in caller
|
||||
let handle = module:
|
||||
if ( builtins.typeOf module ) == "path" then handle import module
|
||||
else if ( builtins.typeOf module ) == "lambda" then module inputs
|
||||
else module;
|
||||
in handle
|
||||
) moduleList;
|
||||
};
|
||||
# Behaviors of these two NixOS modules would be different:
|
||||
# { pkgs, ... }@inputs: { environment.systemPackages = [ pkgs.hello ]; }
|
||||
# inputs: { environment.systemPackages = [ pkgs.hello ]; }
|
||||
# The second one would failed to evaluate because nixpkgs would not pass pkgs to it.
|
||||
# So that we wrote a wrapper to make it always works like the first one.
|
||||
# moduleList: { pkgs, ... }@inputs:
|
||||
# {
|
||||
# imports = builtins.map
|
||||
# (
|
||||
# handle = module:
|
||||
# if ( builtins.typeOf module ) == "path" then handle import module
|
||||
# else if ( builtins.typeOf module ) == "lambda" then module inputs
|
||||
# else module;
|
||||
# ) moduleList;
|
||||
# }
|
||||
|
||||
# from: https://github.com/NixOS/nix/issues/3759
|
||||
stripeTabs = text:
|
||||
|
||||
31
modules/default.nix
Normal file
31
modules/default.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
inputs:
|
||||
let
|
||||
inherit (inputs) topInputs;
|
||||
inherit (inputs.localLib) mkModules;
|
||||
in
|
||||
{
|
||||
imports = mkModules
|
||||
[
|
||||
topInputs.home-manager.nixosModules.home-manager
|
||||
topInputs.sops-nix.nixosModules.sops
|
||||
topInputs.touchix.nixosModules.v2ray-forwarder
|
||||
topInputs.aagl.nixosModules.default
|
||||
topInputs.nix-index-database.nixosModules.nix-index
|
||||
topInputs.nur.nixosModules.nur
|
||||
topInputs.nur-xddxdd.nixosModules.setupOverlay
|
||||
topInputs.impermanence.nixosModules.impermanence
|
||||
(inputs: { config.nixpkgs.overlays =
|
||||
[
|
||||
topInputs.qchem.overlays.default
|
||||
topInputs.nixd.overlays.default
|
||||
topInputs.nix-alien.overlays.default
|
||||
(final: prev:
|
||||
{
|
||||
touchix = topInputs.touchix.packages."${prev.system}";
|
||||
nix-vscode-extensions = topInputs.nix-vscode-extensions.extensions."${prev.system}";
|
||||
nur-xddxdd = (topInputs.nur-xddxdd.overlays.custom inputs.config.boot.kernelPackages.nvidia_x11) final prev;
|
||||
})
|
||||
];})
|
||||
./fileSystems ./kernel ./hardware ./packages ./boot ./system ./virtualization ./services ./bugs ./users
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user