flock/suites/default.nix
2025-08-05 22:08:14 +08:00

144 lines
3 KiB
Nix

{
config,
inputs,
pkgs,
hostname,
...
}: {
# NixOS version.
system.stateVersion = "25.05";
# Enable flakes.
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Set $NIX_PATH.
nix.nixPath = ["nixpkgs=${inputs.nixpkgs}"];
# Enable redistributable firmware.
hardware.enableRedistributableFirmware = true;
# Enable firmware updates.
services.fwupd.enable = true;
# Set time zone.
time.timeZone = "Australia/Perth";
# Select internationalisation properties.
i18n.defaultLocale = "en_AU.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_AU.UTF-8";
LC_IDENTIFICATION = "en_AU.UTF-8";
LC_MEASUREMENT = "en_AU.UTF-8";
LC_MONETARY = "en_AU.UTF-8";
LC_NAME = "en_AU.UTF-8";
LC_NUMERIC = "en_AU.UTF-8";
LC_PAPER = "en_AU.UTF-8";
LC_TELEPHONE = "en_AU.UTF-8";
LC_TIME = "en_AU.UTF-8";
};
# Configure keymap in X11.
services.xserver.xkb = {
layout = "us";
variant = "";
};
# Enable networking.
networking.networkmanager.enable = true;
users.groups.networkmanager.members = ["fern"];
# Set hostname
networking.hostName = hostname;
# Define a user account.
users.users.fern = {
isNormalUser = true;
uid = 1000;
description = "Fern Garden";
extraGroups = ["wheel"];
};
# Use fish shell
programs.fish.enable = true;
# https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell
programs.bash = {
interactiveShellInit = ''
if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec fish $LOGIN_OPTION
fi
'';
};
# Enable nh.
programs.nh = {
enable = true;
clean = {
enable = true;
extraArgs = "--keep-since 3d";
};
};
# https://discourse.nixos.org/t/slow-build-at-building-man-cache/52365/2
documentation.man.generateCaches = false;
# Enable all terminfo.
environment.enableAllTerminfo = true;
# Enable avahi hostname resolution.
services.avahi = {
enable = true;
nssmdns4 = true;
publish = {
enable = true;
addresses = true;
domain = true;
userServices = true;
};
};
# Universal styling.
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/everforest-dark-hard.yaml";
polarity = "dark";
cursor = {
name = "everforest-cursors";
package = pkgs.phinger-cursors-everforest;
size = 32;
};
fonts = {
sizes = {
applications = 11;
desktop = config.stylix.fonts.sizes.applications;
popups = config.stylix.fonts.sizes.applications;
terminal = 12;
};
sansSerif = {
package = pkgs.adwaita-fonts;
name = "Adwaita Sans";
};
serif = config.stylix.fonts.sansSerif;
monospace = {
package = pkgs.iosevka;
name = "IosevkaCustom";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
}