168 lines
4.2 KiB
Nix
168 lines
4.2 KiB
Nix
|
|
{ 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";
|
||
|
|
}
|