my-scripts/installers/nixos/configuration.nix

205 lines
4.9 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
#./gaming-configuration.nix
./sway-configuration.nix
];
# 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. Its perfectly fine and recommended to leave
# 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?
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
system.copySystemConfiguration = true;
#enable automatic updates
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = false;
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
#networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
services.connman.enable = true;
networking.wireless.iwd.enable = true;
services.connman.wifi.backend = "iwd";
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 67 68 53 ];
networking.firewall.allowedTCPPortRanges = [
{ from = 56881; to = 56889; }
{ from = 27036; to = 27037; }
];
# networking.firewall.allowedUDPPorts = [ ... ];
networking.firewall.allowedUDPPortRanges = [
{ from = 27000; to = 27036; }
];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Set your time zone.
time.timeZone = "America/Chicago";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
#keyMap = "us";
useXkbConfig = true; # use xkbOptions in tty.
};
#Define a user account. Don't forget to set a password with passwd.
users.users.alex = {
isNormalUser = true;
shell = pkgs.zsh;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
packages = with pkgs; [
librewolf
yt-dlp
zathura
sfeed
chromium
brave
keepassxc
monero-cli
cura
];
};
security.sudo.extraRules = [{
runAs = "root";
groups = [ "wheel" ];
commands = [{
command = "/run/current-system/sw/bin/poweroff";
options = [ "NOPASSWD" ];
} {
command = "/run/current-system/sw/bin/reboot";
options = [ "NOPASSWD" ];
}];
}];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
programs.mtr.enable = true;
services.pcscd.enable = true;
programs.gnupg.agent = {
enable = true;
pinentryFlavor = "curses";
enableSSHSupport = true;
};
environment.systemPackages = with pkgs; [
glib # gsettings
dracula-theme # gtk theme
gnome3.adwaita-icon-theme # default gnome cursors
zsh
noto-fonts
noto-fonts-extra
noto-fonts-emoji
noto-fonts-cjk-sans
nerdfonts
zip
unzip
p7zip
pavucontrol
pamixer
pulsemixer
imagemagick
ffmpegthumbnailer
file
viu
bat
pavucontrol
neovim
pfetch
htop-vim
lf
mpv
mpd
ncmpcpp
libnotify
lynx
mutt-wizard
pass
neomutt
notmuch
isync
pinentry-curses
pinentry-bemenu
connman-gtk
openssl
git
shellcheck
jq
bc
gnome.zenity
udisks2
udiskie
python3
python3.pkgs.pip
chafa
wget
];
fonts.fonts = with pkgs; [
noto-fonts
noto-fonts-extra
noto-fonts-emoji
noto-fonts-cjk-sans
(nerdfonts.override { fonts = [ "Mononoki" ]; })
];
#enable flatpak
services.flatpak.enable = true;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
services.pipewire.wireplumber.enable = true;
# xdg-desktop-portal works by exposing a series of D-Bus interfaces
# known as portals under a well-known name
# (org.freedesktop.portal.Desktop) and object path
# (/org/freedesktop/portal/desktop).
# The portal interfaces include APIs for file access, opening URIs,
# printing and others.
services.dbus.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
# gtk portal needed to make gtk apps happy
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
#gtkUsePortal = true;
};
}