nix/system/configuration.nix
2024-03-25 13:29:34 +11:00

192 lines
4 KiB
Nix

{
inputs,
outputs,
lib,
config,
pkgs,
nix-rice,
nix-std,
...
}: {
nixpkgs = {
overlays = [
inputs.nur.overlay
outputs.overlays.additions
outputs.overlays.pkg-sets
inputs.nix-rice.overlays.default
outputs.overlays.rice
inputs.helix.overlays.default
inputs.nixd.overlays.default
inputs.nix-ld-rs.overlays.default
];
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
};
};
nix = {
registry = lib.mapAttrs (_: value: {flake = value;}) inputs;
settings = {
trusted-users = ["bolt" "plank"];
experimental-features = "nix-command flakes";
substitute = true;
substituters = [];
trusted-public-keys = [];
};
extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
imports = [];
systemd.services.NetworkManager-wait-online.enable = true; # for some reason nm doesn't enable without this
environment.pathsToLink = ["/share/zsh"];
hardware.enableRedistributableFirmware = true;
hardware.enableAllFirmware = true;
boot.loader.systemd-boot.consoleMode = "max";
boot.loader.timeout = 3;
boot.loader.systemd-boot.enable = true;
boot.tmp.useTmpfs = true;
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = "Australia/Sydney";
# fix windows to use utc instead
time.hardwareClockInLocalTime = false;
# Select internationalisation properties.
i18n.defaultLocale = "en_AU.UTF-8";
i18n.supportedLocales = ["en_AU.UTF-8/UTF-8"];
console = {
font = "Lat2-Terminus16";
useXkbConfig = true; # use xkbOptions in tty.
};
hardware.opengl.enable = true;
hardware.opengl.driSupport32Bit = true;
#input stuff
services.xserver = {
enable = true; # SDDM requires this
xkb.options = "caps:escape";
xkb.layout = "us";
libinput.enable = true;
desktopManager.plasma5 = {
enable = true;
# enableQt5Integration = true; # for plasma6
runUsingSystemd = true;
};
displayManager.sddm = {
wayland.enable = true; # experimental?
enable = true;
};
displayManager.defaultSession = "plasma";
};
services.udisks2.enable = true;
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
konsole
gwenview
];
services.flatpak.enable = true;
security.polkit.enable = true;
xdg.autostart.enable = true;
xdg.portal.enable = true;
services.resolved = {
enable = true;
fallbackDns = ["103.1.206.179" "168.138.8.38" "168.138.12.137"];
dnssec = "false";
};
# Enable sound.
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
qt.enable = true;
qt.platformTheme = "kde";
qt.style = "kvantum";
programs.dconf.enable = true;
services.colord.enable = true;
programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
# services.tailscale.enable = true;
environment.systemPackages = with pkgs; [
man-pages
man-pages-posix
nixd
home-manager
cachix
curl
eza
swaybg
git
starship
cachix
alejandra
libsForQt5.qtstyleplugin-kvantum
];
services.atuin.enable = true;
documentation.dev.enable = true;
documentation.man.enable = true;
documentation.enable = true;
programs.nix-index-database.comma.enable = true;
programs.nix-index.enableZshIntegration = false;
programs.nix-index.enableBashIntegration = false;
services.gvfs.enable = true;
services.mullvad-vpn.enable = true;
programs.nix-ld = {
enable = true;
package = pkgs.nix-ld-rs;
};
# networking.firewall = {
# checkReversePath = "loose";
# };
# give cpuset to user
systemd.services."user@".serviceConfig.Delegate = "memory pids cpu cpuset";
system.stateVersion = "22.11"; # Did you read the comment?
}