{ config, pkgs, lib, ... }: { imports = [ ./modules/modules.nix ]; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.kernelPackages = pkgs.linuxPackages_latest; services.fwupd.enable = true; nix.settings.experimental-features = [ "nix-command" "flakes" ]; networking.hostName = "nixos"; # Define your hostname. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # Enable networking networking.networkmanager.enable = true; # Set your time zone. time.timeZone = "America/Los_Angeles"; # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; # Enable the X11 windowing system. services.xserver.enable = true; # Enable the GNOME Desktop Environment. services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; # Fix the GNOME Desktop Environment Performance nixpkgs.config.allowAliases = false; nixpkgs.overlays = [ # GNOME 46: triple-buffering-v4-46 (final: prev: { gnome = prev.gnome.overrideScope (gnomeFinal: gnomePrev: { mutter = gnomePrev.mutter.overrideAttrs (old: { src = pkgs.fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "vanvugt"; repo = "mutter"; rev = "triple-buffering-v4-46"; hash = "sha256-C2VfW3ThPEZ37YkX7ejlyumLnWa9oij333d5c4yfZxc="; }; }); }); }) ]; # Configure keymap in X11 services.xserver.xkb = { layout = "us"; variant = ""; }; # Enable CUPS to print documents. services.printing.enable = true; # Enable sound with pipewire. hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; users.users = { free = { isNormalUser = true; description = "free"; extraGroups = [ "networkmanager" "wheel"]; }; }; # Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229 systemd.services."getty@tty1".enable = true; systemd.services."autovt@tty1".enable = true; # Allow Flatpak services.flatpak.enable = true; # Allow unfree packages nixpkgs.config.allowUnfree = true; # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ git wget librewolf fish htop gnomeExtensions.dash-to-dock gnomeExtensions.transparent-top-bar-adjustable-transparency gnomeExtensions.vitals gnomeExtensions.pop-shell gnomeExtensions.just-perfection gnomeExtensions.appindicator gnomeExtensions.date-menu-formatter gnome-tweaks papirus-icon-theme ranger sparrow neofetch gedit openssl pwgen aspell aspellDicts.en lm_sensors hunspell hunspellDicts.en_US gparted pv unzip parted screen zenity libargon2 gnome-terminal dig nextcloud-client ungoogled-chromium tor-browser element-desktop libreoffice-fresh firefox brave ]; services.mullvad-vpn = { enable = true; package = pkgs.mullvad-vpn; }; programs.bash.promptInit = "fish"; programs.fish = { enable = true; promptInit = "neofetch"; }; services.openssh = { enable = true; settings = { PasswordAuthentication = false; KbdInteractiveAuthentication = false; PermitRootLogin = "yes"; }; }; ####### TOR ####### services.tor = { enable = true; client.enable = true; torsocks.enable = true; }; networking.firewall.enable = true; ####### AUTO COLLECT GARABAGE ####### nix.gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 7d"; }; system.stateVersion = "24.05"; }