{ config, pkgs, inputs, ... }: { imports = [ ./hardware-configuration.nix ]; # Enable automatic system updates system.autoUpgrade = { enable = true; flake = inputs.self.outPath; flags = [ "--update-input" "nixpkgs" "-L" # print build logs ]; dates = "weekly"; randomizedDelaySec = "45min"; }; # Allow non-free software (RMS will be mad at me :<) nixpkgs.config.allowUnfree = true; # Enable nix-command and flakes nix.settings.experimental-features = [ "nix-command" "flakes"]; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; systemd.tpm2.enable = false; networking.hostName = "syntheticnexus"; networking.networkmanager.enable = true; time.timeZone = "America/St_Thomas"; i18n.defaultLocale = "en_US.UTF-8"; services.xserver.xkb = { layout = "us"; variant = ""; }; stylix = { enable = true; image = ./bg.jpg; }; # Using ly as TUI display manager, with minimal Gnome configuration services.displayManager.ly.enable = true; services.desktopManager.gnome.enable = true; services.gnome.core-apps.enable = false; services.gnome.core-developer-tools.enable = false; services.gnome.games.enable = false; environment.gnome.excludePackages = with pkgs; [ gnome-tour gnome-user-docs ]; # using piprewire cuz embrace muh modernity services.pipewire = { enable = true; pulse.enable = true; }; services.libinput.enable = true; # for laptop touchpad # Laptop battery optimizations # NOTE: Comment out if on PC/Not required for your rig /* services.tlp = { enable = true; settings = { CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; CPU_MIN_PERF_ON_AC = 0; CPU_MAX_PERF_ON_AC = 100; CPU_MIN_PERF_ON_BAT = 0; CPU_MAX_PERF_ON_BAT = 20; START_CHARGE_THRESH_BAT0 = 40; # 40 and below it starts to charge STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging }; }; services.auto-cpufreq.enable = true; services.auto-cpufreq.settings = { battery = { governor = "powersave"; turbo = "never"; }; charger = { governor = "performance"; turbo = "auto"; }; }; powerManagement.powertop.enable = true; */ /* # Kanata setup # Mostly copied from https://dev.to/shanu-kumawat/how-to-set-up-kanata-on-nixos-a-step-by-step-guide-1jkc boot.kernelModules = [ "uinput" ]; # Enable uinput kernel module hardware.uinput.enable = true; # Enable uinput # Set up udev rules for uinput services.udev.extraRules = '' KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput" ''; users.groups.uinput = { }; # ensure uinput group exists # Add Kanata service user to necessary groups systemd.services.kanata-internalKeyboard.serviceConfig = { SupplementaryGroups = [ "input" "uinput" ]; }; # Kanata configuration services.kanata = { enable = true; keyboards = { internalKeyboard = { devices = [ "/dev/input/by-path/platform-i8042-serio-0-event-kbd" ]; extraDefCfg = "concurrent-tap-hold yes"; config = builtins.readFile(builtins.fetchurl { url = https://git.luluslly.xyz/lulusilly/dotfiles/raw/branch/master/.config/kanata/conf.kbd; sha256 = ""; }); }; }; }; */ users.users.lunita = { isNormalUser = true; description = "Lunita"; extraGroups = [ "networkmanager" "wheel" ]; packages = with pkgs; []; # shell = pkgs.zsh; }; environment.systemPackages = with pkgs; [ curl wget neovim git gnome-console gnomeExtensions.blur-my-shell gnomeExtensions.just-perfection gnomeExtensions.paperwm nyxt ]; # Zsh programs.zsh.enable = true; # Browser programs.firefox.enable = true; # Tailscale services.tailscale.enable = true; # Syncthing services.syncthing.enable = true; programs.gnupg.agent = { enable = true; enableSSHSupport = true; }; services.openssh.enable = true; system.stateVersion = "25.05"; }