# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, ... }:
{
imports =
[
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# Try to pass through Wii remotes
# services.udev.packages = [ pkgs.dolphinEmu ];
virtualisation.docker.enable = true;
# Should avoid tmpfs running out of space, thanks to: https://discourse.nixos.org/t/run-usr-id-is-too-small/4842
services.logind.extraConfig = "RuntimeDirectorySize=4G";
# Setup binary caching
nix.settings = {
# add binary caches
substituters = [
"https://cosmic.cachix.org"
"https://cache.nixos.org"
"https://nixpkgs-wayland.cachix.org"
"https://cache.lix.systems"
];
trusted-public-keys = [
"cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
];
extra-substituters = [
# Nix community's cache server
"https://nix-community.cachix.org"
];
extra-trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
# Automatically hard-link where appropriate
nix.optimise.automatic = true;
# Laptop-specific config
powerManagement.enable = true;
services.thermald.enable = true;
services.auto-cpufreq = {
enable = true;
settings = {
battery = {
governor = "powersave";
turbo = "never";
};
charger = {
governor = "performance";
turbo = "auto";
};
};
};
# Disable wifi powersaving mode
networking.networkmanager.wifi.powersave = false;
# Use the zen kernel
boot.kernelPackages = pkgs.linuxPackages_zen;
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
networking.hostName = "nixos"; # Define your hostname.
# Enable networking
networking.networkmanager.enable = true;
# Don't wait for connection to boot
systemd.services.NetworkManager-wait-online.enable = false;
# Mount with `noatime` option
fileSystems."/".options = [ "noatime" ];
# Select internationalisation properties.
i18n.defaultLocale = "en_AU.utf8";
# Enable the COSMIC Desktop Environment.
services.displayManager.cosmic-greeter.enable = true;
services.desktopManager.cosmic.enable = true;
# Enable System76 scheduler
services.system76-scheduler.enable = true;
# FUCK YOU GPG
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = pkgs.pinentry-gnome3;
};
# Fix fonts
fonts = {
enableDefaultPackages = true;
fontDir.enable = true;
packages = with pkgs; [
intel-one-mono
];
fontconfig = {
enable = true;
defaultFonts = {
monospace = [ "Intel One Mono" ];
sansSerif = [ "Intel One Mono" ];
};
};
};
# Configure keymap in X11
services.xserver.xkb = {
layout = "au";
variant = "";
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable pulseaudio
hardware.pulseaudio.enable = false;
# rtkit is optional but recommended
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.finchie = {
isNormalUser = true;
description = "Finchie";
shell = pkgs.nushell;
extraGroups = [ "networkmanager" "wheel" "docker" ];
};
# Allow unfree packages
nixpkgs.config = {
allowUnfree = true;
nvidia.acceptLicense = true;
};
# Steam configuration
nixpkgs.config.packageOverrides = pkgs: {
steam = pkgs.steam.override {
extraPkgs = pkgs: with pkgs; [
libgdiplus
];
};
};
programs.steam.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leavecatenate(variables, "bootdev", bootdev)
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "22.05"; # Did you read the comment?
nix = {
package = pkgs.nixVersions.latest;
extraOptions = ''
experimental-features = nix-command flakes auto-allocate-uids
'';
};
}