#
# Main system configuration. More information available in configuration.nix(5) man page.
#
# flake.nix
# ├─ ./hosts
# │ └─ configuration.nix *
# └─ ./modules
# ├─ ./editors
# │ └─ default.nix
# └─ ./shell
# └─ default.nix
#
{ config, lib, pkgs, inputs, user, ... }:
{
imports = # Home Manager Modules
[(import ../modules/desktop)] ++
(import ../modules/services);
hardware.pulseaudio.enable = false;
users.users.${user} = { # System User
isNormalUser = true;
extraGroups = [ "wheel" "video" "audio" "camera" "networkmanager" "lp" "scanner" "kvm" "libvirtd" "plex" ];
shell = pkgs.zsh; # Default shell
};
programs.zsh.enable = true; # has to be here to set shell to zsh
# zsh is configured at home-manager level afterwards
security.sudo.wheelNeedsPassword = true;
programs.dconf.enable = true;
time.timeZone = "Europe/Prague"; # Time zone and internationalisation
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = { # Extra locale settings that need to be overwritten
LC_TIME = "cs_CZ.UTF-8";
LC_MONETARY = "cs_CZ.UTF-8";
};
};
console = {
font = "Lat2-Terminus16";
keyMap = "us"; # or us/azerty/etc
};
security.rtkit.enable = true;
security.polkit.enable = true;
fonts.fonts = with pkgs; [ # Fonts
ubuntu_font_family
fira-code
carlito # NixOS
vegur # NixOS
source-code-pro
jetbrains-mono
font-awesome # Icons
corefonts # MS
vistafonts
(nerdfonts.override { # Nerdfont Icons override
fonts = [
"FiraCode"
];
})
];
fonts.fontconfig = {
defaultFonts = {
serif = [ "Ubuntu" ];
sansSerif = [ "Ubuntu" ];
monospace = [ "FiraCode" ];
};
};
environment = {
variables = {
TERMINAL = "alacritty";
EDITOR = "nvim";
VISUAL = "nvim";
};
pathsToLink = [ "/share/zsh" ];
systemPackages = with pkgs; [ # Default packages installed system-wide
alsa-utils
jq
killall
nano
pciutils
pulseaudio
ripgrep
socat
usbutils
wget
];
};
services = {
tumbler.enable = true;
pipewire = { # Sound
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
jack.enable = true;
};
};
environment.etc = {
"wireplumber/bluetooth.lua.d/51-bluez-config.lua".text = ''
bluez_monitor.properties = {
["bluez5.msbc-support"] = true;
["bluez5.sbc-xq-support"] = true;
["bluez5.enable-faststream"] = true;
["bluez5.headset-roles"] = "[ hsp_hs hsp_ag ]";
["bluez5.hfphsp-backend"] = "hsphfpd";
}
'';
};
nix = { # Nix Package Manager settings
settings ={
auto-optimise-store = true; # Optimise syslinks
substituters = [
"https://cache.nixos.org"
"https://rutherther.cachix.org"
];
trusted-public-keys = [
"rutherther.cachix.org-1:O9st5Dq/VHb0T8+vwZ0aP4sjzzCn7Ry60wSyXaRW7j8="
];
};
gc = { # Automatic garbage collection
automatic = true;
dates = "weekly";
options = "--delete-older-than 2d";
};
package = pkgs.nixVersions.unstable; # Enable nixFlakes on system
registry.nixpkgs.flake = inputs.nixpkgs;
extraOptions = ''
experimental-features = nix-command flakes
keep-outputs = true
keep-derivations = true
'';
};
nixpkgs.config.allowUnfree = true; # Allow proprietary software.
system = { # NixOS settings
stateVersion = "23.05";
};
}