configuration.nix
{ config, pkgs, lib, ... }:
{
imports = [
./hardware-configuration.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "nixos";
networking.networkmanager.enable = true;
time.timeZone = "Asia/Shanghai";
i18n.defaultLocale = "zh_CN.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "zh_CN.UTF-8";
LC_IDENTIFICATION = "zh_CN.UTF-8";
LC_MEASUREMENT = "zh_CN.UTF-8";
LC_MONETARY = "zh_CN.UTF-8";
LC_NAME = "zh_CN.UTF-8";
LC_NUMERIC = "zh_CN.UTF-8";
LC_PAPER = "zh_CN.UTF-8";
LC_TELEPHONE = "zh_CN.UTF-8";
LC_TIME = "zh_CN.UTF-8";
};
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
services.xserver.xkb = {
layout = "cn";
variant = "";
};
services.printing.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
users.users.demodeom = {
# 设置默认终端为 zsh
shell = "/etc/profiles/per-user/demodeom/bin/zsh";
isNormalUser = true;
description = "demodeom";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
# thunderbird
];
};
programs.firefox.enable = true;
# 允许UnFree软件
nixpkgs.config.allowUnfree = true;
# 系统级别常用的软件
environment.systemPackages = with pkgs; [
vim
wget
pkgs.brave
pkgs.clash-verge-rev
pkgs.virtualbox
git
zsh
];
# 启动 flakes
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# 输入法 Fcitx 5
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-chinese-addons
fcitx5-gtk
];
};
# 修复默认中文字体显示问题
fonts.fontDir.enable = true;
fonts = {
packages = with pkgs; [
fira-code-nerdfont
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-emoji
];
fontconfig = {
antialias = true;
hinting.enable = true;
defaultFonts = {
emoji = [ "Noto Color Emoji" ];
monospace = [ "FiraCode Nerd Font" ];
sansSerif = [ "Noto Sans CJK SC" ];
serif = [ "Noto Serif CJK SC" ];
};
};
};
# 修复安装软件报错 openssl-1.1.1 问题
nixpkgs.config.permittedInsecurePackages = [
"openssl-1.1.1w"
];
# VirtualBox 虚拟机配置
# nixpkgs.config.allowUnfree = true;
virtualisation.virtualbox.host.enable = true;
users.extraGroups.vboxusers.members = [ "demodeom" ];
virtualisation.virtualbox.host.enableExtensionPack = true;
virtualisation.virtualbox.host.enableHardening = false;
virtualisation.virtualbox.guest.enable = true;
virtualisation.virtualbox.guest.draganddrop = true;
system.stateVersion = "24.05";
}
flake.nix
{
description = "A simple NixOS flake";
inputs = {
# NixOS 官方软件源,这里使用 nixos-24.05 分支
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
# home manager 配置
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ nixpkgs, home-manager, ... }:{
# 因此请将下面的 my-nixos 替换成你的主机名称
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# 这里导入之前我们使用的 configuration.nix,这样旧的配置文件仍然能生效
./configuration.nix
# 将 home-manager 配置为 nixos 的一个 module
# 这样在 nixos-rebuild switch 时,home-manager 配置也会被自动部署
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
# 这里的 ryan 也得替换成你的用户名
home-manager.users.demodeom = import ./home.nix;
}
];
};
};
}
home.nix
{ config, pkgs, ... }:
{
home.username = "demodeom";
home.homeDirectory = "/home/demodeom";
dconf.settings = {
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = [
"user-theme@gnome-shell-extensions.gcampax.github.com"
"dash-to-panel@jderose9.github.com"
"kimpanel@kde.org"
"appindicatorsupport@rgcjonas.gmail.com"
];
};
# 启用主题后,系统 UI 显示有问题;暂时未找到原因,先关闭
#"org/gnome/shell/extensions/user-theme" = {
# name = "palenight";
#};
};
# 通过 home.packages 安装一些常用的软件
# 这些软件将仅在当前用户下可用,不会影响系统级别的配置
# 建议将所有 GUI 软件,以及与 OS 关系不大的 CLI 软件,都通过 home.packages 安装
home.packages = with pkgs;[
pkgs.sublime4
pkgs.gnome.gnome-tweaks
pkgs.gnome-extension-manager
pkgs.ocs-url
gnomeExtensions.user-themes
palenight-theme
gnomeExtensions.dash-to-panel
gnomeExtensions.kimpanel
gnomeExtensions.appindicator
pkgs.vscode
#pkgs.typora
pkgs.jetbrains.pycharm-professional
pkgs.motrix
#pkgs.virtualbox
zsh
oh-my-zsh
mpv
ffmpeg_7-full
];
# git 相关配置
programs.git = {
enable = true;
userName = "Demo deom";
userEmail = "demodeom@outlook.com";
};
programs.zsh = {
enable = true;
enableCompletion = true;
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
shellAliases = {
ll = "ls -l";
edit = "sudo -e";
update = "sudo nixos-rebuild switch";
};
history.size = 10000;
history.ignoreAllDups = true;
history.path = "$HOME/.zsh_history";
history.ignorePatterns = ["rm *" "pkill *" "cp *"];
# With Oh-My-Zsh:
oh-my-zsh = {
enable = true;
plugins = ["git"];
theme = "robbyrussell";
};
};
gtk = {
enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
theme = {
name = "palenight";
package = pkgs.palenight-theme;
};
cursorTheme = {
name = "Numix-Cursor";
package = pkgs.numix-cursor-theme;
};
gtk3.extraConfig = {
Settings = ''
gtk-application-prefer-dark-theme=1
'';
};
gtk4.extraConfig = {
Settings = ''
gtk-application-prefer-dark-theme=1
'';
};
};
home.sessionVariables.GTK_THEME = "palenight";
home.stateVersion = "24.05";
programs.home-manager.enable = true;
}