{ pkgs, lib, username, ... }: { # ============================= User related ============================= # Define a user account. Don't forget to set a password with ‘passwd’. users.users.${username} = { isNormalUser = true; description = username; extraGroups = ["networkmanager" "wheel"]; }; # given the users in this list the right to specify additional substituters via: # 1. `nixConfig.substituers` in `flake.nix` # 2. command line args `--options substituers http://xxx` nix.settings.trusted-users = [username]; # customise /etc/nix/nix.conf declaratively via `nix.settings` nix.settings = { # enable flakes globally experimental-features = ["nix-command" "flakes"]; substituters = [ # cache mirror located in China # status: https://mirror.sjtu.edu.cn/ "https://mirror.sjtu.edu.cn/nix-channels/store" # status: https://mirrors.ustc.edu.cn/status/ # "https://mirrors.ustc.edu.cn/nix-channels/store" "https://cache.nixos.org" ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ]; builders-use-substitutes = true; }; # do garbage collection weekly to keep disk usage low nix.gc = { automatic = lib.mkDefault true; dates = lib.mkDefault "weekly"; options = lib.mkDefault "--delete-older-than 7d"; }; # Allow unfree packages nixpkgs.config.allowUnfree = true; # Set your time zone. time.timeZone = "Asia/Shanghai"; # Select internationalisation properties. i18n.defaultLocale = "en_US.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"; }; # Enable CUPS to print documents. services.printing.enable = true; fonts = { packages = with pkgs; [ # icon fonts material-design-icons # normal fonts noto-fonts noto-fonts-cjk-sans noto-fonts-emoji # nerdfonts # https://github.com/NixOS/nixpkgs/blob/nixos-unstable-small/pkgs/data/fonts/nerd-fonts/manifests/fonts.json nerd-fonts.symbols-only # symbols icon only nerd-fonts.fira-code nerd-fonts.jetbrains-mono nerd-fonts.iosevka ]; # use fonts specified by user rather than default ones enableDefaultPackages = false; # user defined fonts # the reason there's Noto Color Emoji everywhere is to override DejaVu's # B&W emojis that would sometimes show instead of some Color emojis fontconfig.defaultFonts = { serif = ["Noto Serif" "Noto Color Emoji"]; sansSerif = ["Noto Sans" "Noto Color Emoji"]; monospace = ["JetBrainsMono Nerd Font" "Noto Color Emoji"]; emoji = ["Noto Color Emoji"]; }; }; programs.dconf.enable = true; # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. networking.firewall.enable = false; # Enable the OpenSSH daemon. services.openssh = { enable = true; settings = { X11Forwarding = true; PermitRootLogin = "no"; # disable root login PasswordAuthentication = false; # disable password login }; openFirewall = true; }; # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. wget curl git sysstat lm_sensors # for `sensors` command # minimal screen capture tool, used by i3 blur lock to take a screenshot # print screen key is also bound to this tool in i3 config scrot neofetch xfce.thunar # xfce4's file manager nnn # terminal file manager ]; # Enable sound with pipewire. services.pulseaudio.enable = false; services.power-profiles-daemon = { enable = true; }; security.polkit.enable = true; services = { dbus.packages = [pkgs.gcr]; geoclue2.enable = true; pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; # If you want to use JACK applications, uncomment this jack.enable = true; # use the example session manager (no others are packaged yet so this is enabled by default, # no need to redefine it in your config for now) #media-session.enable = true; }; udev.packages = with pkgs; [gnome-settings-daemon]; }; }