My current NixOS Module Setup
/etc/nixos/configuration.nix
{ config, pkgs, ... }: {
imports =
[
./hardware-configuration.nix
./modules/default.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
networking = {
hostName = "Arugala";
networkmanager.enable = true;
useDHCP = false;
};
time.timeZone = "America/Chicago";
system.stateVersion = "21.05"; # Don't Change
}
/etc/nixos/modules/default.nix
{ lib, ... }: {
imports =
[
./packages.nix
./virtualisation.nix
./firewall.nix
./libinput.nix
./xfcei3.nix
./hardware.nix
./services.nix
./users.nix
];
}
/etc/nixos/modules/firewall.nix
{ pkgs, lib, ... }: {
# Open ports in the firewall.
networking.firewall = {
#allowedTCPPorts = [ ];
#allowedUDPPorts = [ ];
#enable = false;
};
services.opensnitch = {
enable = true;
rules = {
systemd-timesyncd = {
name = "systemd-timesyncd";
enabled = true;
action = "allow";
duration = "always";
operator = {
type ="simple";
sensitive = false;
operand = "process.path";
data = "${lib.getBin pkgs.systemd}/lib/systemd/systemd-timesyncd";
};
};
systemd-resolved = {
name = "systemd-resolved";
enabled = true;
action = "allow";
duration = "always";
operator = {
type ="simple";
sensitive = false;
operand = "process.path";
data = "${lib.getBin pkgs.systemd}/lib/systemd/systemd-resolved";
};
};
};
};
}
/etc/nixos/modules/hardware.nix
{ pkgs, config, ... }:
{
hardware = {
pulseaudio.enable = true;
graphics = {
#driSupport32Bit = true;
extraPackages32 = with pkgs.pkgsi686Linux; [ libva ];
extraPackages = with pkgs; [
rocmPackages.clr.icd
];
};
};
#sound.enable = true;
services.pipewire.enable = false;
powerManagement = {
enable = true;
cpuFreqGovernor = "powersave";
};
}
/etc/nixos/modules/libinput.nix
{ ... }: {
services.libinput.enable = true;
services.xserver.config = ''
Section "InputClass"
Identifier "mouse accel"
Driver "libinput"
MatchIsPointer "on"
Option "AccelProfile" "flat"
Option "AccelSpeed" "0"
EndSection
'';
services.libinput.mouse.middleEmulation = false;
}
/etc/nixos/modules/packages.nix
{ pkgs, ... }: {
nixpkgs.config = {
allowUnfree = true;
};
environment.systemPackages = with pkgs; [
#ESSENTIAL PACKAGES
wget git curl python3 flatpak
neovim unzip zip tmux lm_sensors pfetch baobab gnome-disk-utility xclip picom openvpn gcc
i3-gaps dmenu alacritty nitrogen rofi redshift
seahorse
#NON ESSENTIAL PACKAGES
gucharmap
otpclient
gimp krita
shotwell
flameshot
gnome-calculator
gnome-system-monitor
fastfetch
#XFCE PACKAGES
xfce.ristretto xfce.xfce4-whiskermenu-plugin
# Normal apps
wireshark dig yt-dlp
virt-manager spice-gtk
mpd ncmpcpp
libreoffice
obs-studio
lxappearance
stellarium
libratbag piper
mumble
#Containerization
docker-compose
#Networking
gnome.networkmanager-openvpn
tcpdump
nmap
syncthing
traceroute
openvpn
opensnitch-ui
#File Stuff
tldr
ngrep
font-awesome
docker-compose
distrobox
nodejs
fzf
file-roller nemo
lua-language-server
#i3 Stuff
i3blocks
#Fonts
caladea
carlito
#Web Dev
hugo
# Themes
arc-theme
# Fonts
powerline-fonts
];
programs.wireshark.enable = true;
}
/etc/nixos/modules/virtualisation.nix
{ ... }:
{
virtualisation = {
libvirtd.enable = true;
docker.enable = true;
podman = {
enable = true;
defaultNetwork.settings.dns_enabled = true;
};
};
}
/etc/nixos/modules/services.nix
{ pkgs, ... }: {
# Configure keymap in X11
services.xserver.xkb.layout = "us";
# services.xserver.xkbOptions = "eurosign:e";
# services.monero.enable = true;
services.flatpak.enable = true;
services.gnome.gnome-keyring.enable = true;
services.ratbagd.enable = true;
xdg.portal = {
enable = true;
#gtkUsePortal = true;
#extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
programs.dconf.enable = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
services.xserver.wacom.enable = true;
}
/etc/nixos/modules/xfcei3.nix
{ ... }: {
# Lightdm Configuartion
services.xserver.displayManager.lightdm = {
#background = /root/wallpaper/storm.jpg;
#greeters.gtk.theme.name = "Arc-Dark";
#greeters.gtk.iconTheme.name = "Sardi-Mono-Colora";
enable = true;
};
# Xfce + i3-gaps.
services.xserver = {
enable = true;
desktopManager.xfce.enable = true;
#displayManager.startx.enable = true;
#windowManager.dwm.enable = true;
};
}
/etc/nixos/modules/users.nix
{ pkgs, config, ... }:
{
users.users.alex = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "libvirtd" "ratbagd" "wireshark" "disk" "docker" ];
shell = pkgs.zsh;
};
programs.zsh = {
enable = true;
syntaxHighlighting.enable = true;
enableBashCompletion = true;
};
}