dotfiles/hosts/nixpad/configuration.nix

157 lines
3.4 KiB
Nix

# This is your system's configuration file.
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
{
inputs,
lib,
config,
pkgs,
...
}: {
# You can import other NixOS modules here
imports = [
./hardware-configuration.nix
];
services.xserver = {
enable = true;
displayManager.sddm.enable = true;
desktopManager.plasma5.enable = true;
xkb.layout = "us";
libinput.enable = true;
};
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
nixpkgs = {
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
};
};
nix = {
# This will add each flake input as a registry
# To make nix3 commands consistent with your flake
registry = lib.mapAttrs (_: value: {flake = value;}) inputs;
# This will additionally add your inputs to the system's legacy channels
# Making legacy nix commands consistent as well, awesome!
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
settings = {
# Enable flakes and new 'nix' command
experimental-features = "nix-command flakes";
# Deduplicate and optimize nix store
auto-optimise-store = true;
};
};
# the configuration (pain)
programs = {
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
hyprland = {
enable = true;
xwayland.enable = true;
};
zsh.enable = true;
};
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
environment.systemPackages = with pkgs; [
gcc
git
grim
lxqt.lxqt-policykit
pavucontrol
pciutils
pulseaudio
screen
slurp
usbutils
wget
wl-clipboard
xdg-utils
swaynotificationcenter
swayidle
wofi
swaylock
];
services.printing.enable = true;
fonts.packages = with pkgs; [
font-awesome
nerdfonts
jetbrains-mono
winePackages.fonts
];
networking.hostName = "nixpad";
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.systemd.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
# Set a time zone, idiot
time.timeZone = "Europe/London";
# Fun internationalisation stuffs (AAAAAAAA)
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
# define user acc
users.users.floppydisk = {
isNormalUser = true;
description = "Frankie B.";
extraGroups = ["networkmanager" "wheel"];
openssh.authorizedKeys.keys = [
# TODO: Add your SSH public key(s) here, if you plan on using SSH to connect
];
shell = pkgs.zsh;
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
# This setups a SSH server. Very important if you're setting up a headless system.
# Feel free to remove if you don't need it.
services.openssh.enable = true;
networking.firewall.enable = false;
system.stateVersion = "24.05";
}