Files
nixos/hosts/hakase/configuration.nix
T
2025-08-03 11:37:24 -05:00

205 lines
5.2 KiB
Nix

{
pkgs,
myConfig,
inputs,
lib,
specialArgs,
...
}: {
imports = [
inputs.home-manager.nixosModules.home-manager
inputs.chaotic.nixosModules.default
./hardware-configuration.nix
../../modules/default/desktop.nix
../../modules/default/dev.nix
../../modules/default/remote.nix
];
environment.systemPackages = with pkgs; [
pavucontrol
wl-clipboard
wget
];
users = {
defaultUserShell = pkgs.${myConfig.general.Terminal.shell};
users = {
${myConfig.essentials.Username} = {
isNormalUser = true;
extraGroups = ["wheel" "networkmanager" "input" "video"];
initialHashedPassword = "$y$j9T$NHFtSwF4NJtEmgMjy4Xdg.$9WQltjEx3eEfZ7GbpGLW8lBhJtiXPOeIawrxdmx0.vB";
useDefaultShell = true;
packages = [];
};
};
};
home-manager = {
backupFileExtension = "backup";
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = specialArgs;
users.${myConfig.essentials.Username} = import ../../home/hakase.nix;
};
nixpkgs.config.allowUnfree = myConfig.general.allowUnfree;
hardware.logitech.wireless.enable = true;
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
hardware.bluetooth.settings = {
General = {
AutoEnable = true;
Experimental = true;
MultiProfile = "multiple";
FastConnectable = true;
};
};
hardware.graphics = {
enable = true;
enable32Bit = true;
};
i18n.defaultLocale = "en_US.UTF-8";
time.timeZone = "${myConfig.nixos.Timezone}";
boot.loader = {
systemd-boot = lib.mkIf (myConfig.nixos.Boot.mode == "systemd") {
enable = true;
};
grub = lib.mkIf (myConfig.nixos.Boot.mode == "grub") {
efiSupport = true;
enable = true;
device = "nodev";
useOSProber = true;
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot";
};
};
programs.ssh.extraConfig = myConfig.optionals.Ssh.extraConfig;
programs.bash = {
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
programs = {
zsh.enable = true;
fish.enable = true;
};
services = {
# displayManager.sessionPackages = [inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland];
# getty.autologinUser = lib.mkDefault "${myConfig.essentials.Username}";
# greetd = {
# enable = true;
# settings.default_session = {
# user = lib.mkOverride 10 "${myConfig.essentials.Username}";
# command = lib.mkDefault "Hyprland";
# };
# };
seatd.enable = true;
upower.enable = true;
scx.enable = true; # by default uses scx_rustland scheduler
libinput.enable = true;
blueman.enable = true;
printing.enable = true;
openssh.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# lowLatency = {
# enable = true;
# quantum = 64;
# rate = 48000;
# };
};
};
# make pipewire realtime-capable
security.rtkit.enable = true;
nix = {
distributedBuilds = true;
settings = {
builders-use-substitutes = true;
trusted-users = myConfig.optionals.Builds.trustedUsers;
experimental-features = ["nix-command" "flakes"];
};
};
console = {
earlySetup = false;
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
packages = with pkgs; [terminus_font];
useXkbConfig = true;
};
networking = {
# wakeOnLan.enable = true;
# networkd.enable = true;
networkmanager.enable = true;
firewall = {
enable = true;
allowedTCPPorts = [22 80];
allowedUDPPorts = [53];
};
proxy.default = null;
proxy.noProxy = null;
};
systemd.network.enable = true;
boot.loader.timeout = 0;
boot.loader.limine.maxGenerations = 5;
hardware.amdgpu.initrd.enable = true;
boot.kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"udev.log_priority=3"
"rd.systemd.show_status=auto"
"kvm.enable_virt_at_load=0" # for virtualbox
# "amd_pstate=active"
];
boot.kernelPackages = pkgs.linuxPackages_cachyos;
# boot.kernel.sysctl = {
# "kernel.split_lock_mitigate" = 0;
# "kernel.nmi_watchdog" = 0;
# "kernel.sched_bore" = "1";
# };
#
boot.initrd = {
systemd.enable = true;
kernelModules = [];
verbose = false;
};
boot.plymouth.enable = true;
boot.plymouth.theme = "seal";
boot.plymouth.themePackages = with pkgs; [
# By default we would install all themes
(adi1090x-plymouth-themes.override {
selected_themes = ["seal"];
})
];
boot.consoleLogLevel = 0;
systemd.extraConfig = "DefaultTimeoutStopSec=5s";
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
system.stateVersion = "25.05";
}