{ config, pkgs, ... }: { imports = [ ./hardware-configuration.nix ]; # Bootloader # boot.loader.grub.enable = true; # boot.loader.grub.device = "/dev/sda"; # boot.loader.grub.useOSProber = true; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; # Enable flakes and nix-command nix.settings.experimental-features = [ "nix-command" "flakes" ]; networking.hostName = "nixos"; networking.networkmanager.enable = true; time.timeZone = "Asia/Ho_Chi_Minh"; i18n.defaultLocale = "en_US.UTF-8"; i18n.inputMethod = { enable = true; type = "fcitx5"; fcitx5.addons = with pkgs; [ qt6Packages.fcitx5-unikey fcitx5-gtk ]; }; i18n.extraLocaleSettings = { LC_ADDRESS = "en_US.UTF-8"; LC_IDENTIFICATION = "en_US.UTF-8"; LC_MEASUREMENT = "en_US.UTF-8"; LC_MONETARY = "en_US.UTF-8"; LC_NAME = "en_US.UTF-8"; LC_NUMERIC = "en_US.UTF-8"; LC_PAPER = "en_US.UTF-8"; LC_TELEPHONE = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8"; }; services.xserver.enable = true; services.displayManager.sddm.enable = true; services.desktopManager.plasma6.enable = true; services.xserver.xkb = { layout = "us"; variant = ""; }; services.printing.enable = true; services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; users.users.duynguyen = { isNormalUser = true; description = "duynguyen"; shell = pkgs.zsh; extraGroups = [ "networkmanager" "wheel" ]; packages = with pkgs; [ kdePackages.kate ]; }; programs.firefox.enable = true; programs.niri.enable = true; programs.zsh.enable = true; programs.fish.enable = true; # Power management (TLP conflicts with power-profiles-daemon which Plasma enables # by default, so explicitly disable it) services.power-profiles-daemon.enable = false; services.tlp.enable = true; services.upower.enable = true; # ddcutil: control external monitor brightness/contrast over DDC/CI boot.kernelModules = [ "i2c-dev" ]; hardware.i2c.enable = true; security.polkit.enable = true; fonts.packages = with pkgs; [ freefont_ttf noto-fonts-color-emoji font-awesome nerd-fonts.jetbrains-mono ]; hardware.bluetooth.enable = true; services.blueman.enable = true; xdg.portal = { enable = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; }; nixpkgs.config.allowUnfree = true; # Run prebuilt/foreign dynamically-linked Linux binaries (e.g. games) # that expect a standard FHS-style dynamic linker. programs.nix-ld.enable = true; programs.nix-ld.libraries = with pkgs; [ stdenv.cc.cc.lib zlib openssl curl libGL libglvnd glib fontconfig freetype alsa-lib # SDL2 windowing backends (Wayland + XWayland fallback) — needed for # prebuilt games (e.g. Ren'Py) to open a window at all. wayland libxkbcommon libdecor xorg.libX11 xorg.libXext xorg.libXcursor xorg.libXi xorg.libXfixes xorg.libXrandr xorg.libXScrnSaver ]; environment.systemPackages = with pkgs; [ claude-code git chromium ]; services.openssh = { enable = true; settings.PasswordAuthentication = true; }; system.stateVersion = "26.05"; }