nixos-config/hosts/katana.nix

157 lines
3.9 KiB
Nix

{ config, pkgs, lib, self,inputs, ... }:
{
system.stateVersion = "23.05";
# Hardware
hardware = {
enableRedistributableFirmware = lib.mkDefault true;
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
bluetooth = {
enable = true; # enables support for Bluetooth
powerOnBoot = true; # powers up the default Bluetooth controller on boot
settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
};
};
# Boot
boot = {
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
initrd = {
availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ];
kernelModules = [ ];
};
kernelModules = [ "kvm-intel" ];
extraModulePackages = [ ];
# Prevent tampering of the pkgstore
readOnlyNixStore = true;
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/7a97edd8-c5a9-4354-a461-24c0f311e61b";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-uuid/F0BD-FE72";
fsType = "vfat";
};
};
swapDevices = [
{
device = "/dev/disk/by-uuid/e107d78d-d934-4939-889d-1860410321d5";
}
];
# Networking
networking = {
hostName = "katana"; # Define your hostname.
networkmanager.enable = true; #Enable Network Manager
firewall = {
checkReversePath = "loose";
allowedTCPPorts = [ ];
allowedUDPPorts = [ ];
};
};
# Localization
time.timeZone = "America/Detroit";
i18n = {
defaultLocale = "en_US.UTF-8";
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";
};
};
programs.steam.enable = true;
# Services
services = {
pcscd.enable = true;
blueman.enable = false;
pulseaudio.enable = false;
printing.enable = true;
xserver = {
xkb = {
layout = "us";
variant = "";
};
};
};
# Package Manager
nixpkgs = {
config = {
allowUnfree = true;
};
hostPlatform = lib.mkDefault "x86_64-linux";
};
nix = {
# Enable flakes and nix-command
extraOptions = ''experimental-features = nix-command flakes'';
# Auto maintainence
settings.auto-optimise-store = lib.mkDefault true;
# Garbage collection
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
environment.systemPackages = with pkgs; [
gparted # Drive Partition Manger
bluez # Bluetooth Stack
# blueman # Bluetooth Management
home-manager # Dotfiles Management
pkg-config # Determine lib locations for linking during compliation
ripgrep # regex parser written in rust
openssl # SSL TLS Protocol
tree # Filetree to stdout
eza # LS rewritten in rust
zsh # Prefered Shell
dig #dns lookup
rage #file encryption
age-plugin-yubikey #plugin for rage to manage yubi-2fa
sops #file based secrets operations
direnv #used for development environments
gcc # Gnu C Compiler
bottom # Top rewritten in rust
felix-fm # File browser tui written in rust
discord # Discord for comms with friends
neovim # Modal Text Editor
brave # Web Browser
libation # Backup audible libraries
libreoffice-qt6 # Microsoft office but OSS
spotify # Spotify offical client
p7zip # posix complient 7zip
yubioath-flutter # Yubico Authenticator Client
lazygit # Git tui written in rust
glow # Markdown renderer for terminal
inputs.sk-extract.packages.${system}.default
inputs.yunodo.packages.${system}.default
signal-desktop
];
# Fonts
fonts.packages = [
pkgs.nerd-fonts.droid-sans-mono
];
}