18 Commits

Author SHA1 Message Date
0fccd2d54b feature(packages): add system packages module 2025-12-28 19:28:28 +01:00
3a95182d3a feature(settings): add settings module 2025-12-28 19:28:10 +01:00
c125409336 refactor(home): move home settings to user namespace 2025-12-28 19:27:47 +01:00
f3678a13c5 feature(services): add services to module files 2025-12-28 19:27:14 +01:00
520eadd6fb feature(compositor): add a module for the wayland compositor 2025-12-28 19:26:44 +01:00
01f6137eed refactor(noctalia): move noctalia configs to modules 2025-12-28 19:26:13 +01:00
edd73ddf53 refactor(configuration): remove everything unnecessary from configuration.nix 2025-12-28 19:25:37 +01:00
31c4834a2d feature(niri): add module for niri wayland compositor 2025-12-28 19:21:16 +01:00
6d437c290f feature(locales): add keymap and console font to locales module 2025-12-28 18:53:31 +01:00
2cdd02b024 feature(users): add module that handles users and their shell 2025-12-28 18:49:10 +01:00
7f57f89a77 feature(steam): add steam module for all things around steam on wayland 2025-12-28 18:48:43 +01:00
9cde74486a feature(serivces): add services module that handles various enabled services 2025-12-28 18:48:11 +01:00
a045ca7d94 feature(sddm): add sddm module for theming and session management 2025-12-28 18:47:40 +01:00
3c18029b95 feature(openssh): add modules for openssh and openpgp 2025-12-28 18:47:12 +01:00
d06ab6d54b feature(networking): add networking module for firewall and network settings 2025-12-28 18:46:27 +01:00
6a9ba7082b feature(localization): add locales module that handles timezone and locale settings 2025-12-28 18:45:54 +01:00
64dee7a59f feature(audio): add audio module that handles pipewire 2025-12-28 18:44:56 +01:00
b4c3ddd300 feature(bootloader): add bootloader module with systemd-boot and plymouth 2025-12-28 18:44:21 +01:00
16 changed files with 271 additions and 196 deletions

View File

@@ -1,200 +1,23 @@
{ pkgs, lib, inputs, ... }:
{ config, pkgs, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
];
# use flakes
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# configure bootloader
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# plymouth boot eye candy
boot.initrd.systemd.enable = true;
boot.kernelParams = [ "quiet" "loglevel=2" ];
boot.plymouth.enable = true;
boot.plymouth.theme = "spinner";
# use latest kernel
boot.kernelPackages = pkgs.linuxPackages_latest;
# networking
networking.hostName = "neon";
networking.networkmanager.enable = true;
# bluetooth
hardware.bluetooth.enable = true;
# time zone.
time.timeZone = "Europe/Amsterdam";
# select internationalisation properties
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
console = {
font = "Lat2-Terminus16";
keyMap = "de_CH-latin1";
};
# set up niri as window manager
programs.niri.enable = true;
# set up sddm ad display manager
services.displayManager.sddm = {
enable = true;
wayland = {
enable = true;
};
autoNumlock = true;
enableHidpi = true;
theme = "sddm-astronaut-theme";
settings = {
Theme = {
Current = "sddm-astronaut-theme";
};
};
extraPackages = with pkgs; [
sddm-astronaut
];
};
services.tuned.enable = true;
services.upower.enable = true;
environment.pathsToLink = [ "/libexec" ];
environment.variables.EDITOR = "vim";
# enable sound
services.pipewire = {
enable = true;
pulse.enable = true;
};
# define a user account
users.users.aaron = {
isNormalUser = true;
group = "users";
extraGroups = [ "wheel" ];
shell = pkgs.zsh;
};
# browser
programs.firefox.enable = true;
# zsh config
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestions.enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "sudo" ];
theme = "gentoo";
};
};
# system packages
environment.systemPackages = with pkgs; [
alacritty
btop
cowsay
dnsutils
efibootmgr
ethtool
file
ghostty
git
gnupg
iftop
imagemagick
imv
iotop
iperf3
jq
kdePackages.qtmultimedia
kitty
ldns
lm_sensors
lsof
ltrace
mtr
neovim
nh
nix-output-monitor
nmap
nvd
p7zip
pciutils
sddm-astronaut
socat
strace
sysstat
tree
unzip
usbutils
vim
wget
which
xwayland-satellite
xz
zip
zstd
imports = [
../../modules/nixos/bootloader.nix
../../modules/nixos/audio.nix
../../modules/nixos/compositor.nix
../../modules/nixos/gnupg.nix
../../modules/nixos/locales.nix
../../modules/nixos/networking.nix
../../modules/nixos/noctalia.nix
../../modules/nixos/openssh.nix
../../modules/nixos/packages.nix
../../modules/nixos/sddm.nix
../../modules/nixos/services.nix
../../modules/nixos/settings.nix
../../modules/nixos/steam.nix
../../modules/nixos/users.nix
];
# Some programs need SUID wrappers
programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# enable steam on this machine
nixpkgs.config.allowUnfree = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
# fix black screen in steam on xwayland-satellite
programs.steam.package = pkgs.steam.override {
extraArgs = "-system-composer";
};
# enable the OpenSSH daemon
services.openssh = {
enable = true;
openFirewall = true;
};
# firewall configs
networking.firewall.allowedTCPPorts = [ ];
networking.firewall.allowedUDPPorts = [ ];
# enable home-manager globally
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
# add flake env variable for nh
environment.sessionVariables = {
NH_FLAKE = "/home/aaron/git/nixconfig";
};
# install state version
system.stateVersion = "25.11"; # Don't change
}

9
modules/nixos/audio.nix Normal file
View File

@@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
# enable sound through pipewire
services.pipewire = {
enable = true;
pulse.enable = true;
};
}

View File

@@ -0,0 +1,27 @@
{ config, lib, pkgs, ... }:
{
# set bootloader to systemd
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
# enable systemd initrd
boot.initrd.systemd.enable = true;
# plymouth
boot.plymouth = {
enable = true;
theme = "spinner";
};
# kernel options
boot.kernelParams = [ "quiet" "loglevel=2" ];
boot.kernelPackages = pkgs.linuxPackages_latest;
# Add boot-related packages
environment.systemPackages = with pkgs; [
efibootmgr
];
}

View File

@@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
# just enable and install niri
programs.niri.enable = true;
# Add compositor-related packages
environment.systemPackages = with pkgs; [
xwayland-satellite
];
}

9
modules/nixos/gnupg.nix Normal file
View File

@@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
# enable gnupg agent
services.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
}

26
modules/nixos/locales.nix Normal file
View File

@@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
{
# set the time zone
time.timeZone = "Europe/Zurich";
# set internationalisation properties
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
# set console font and keymap
console = {
font = "Lat2-Terminus16";
keyMap = "de_CH-latin1";
};
}

View File

@@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
{
# set hostnname
networking.hostName = "neon";
# user networkmanager
networking.networkmanager.enable = true;
# firewall default configs
networking.firewall.allowedTCPPorts = [ ];
networking.firewall.allowedUDPPorts = [ ];
# enable bluetooth
hardware.bluetooth.enable = true;
# Add network-related packages
environment.systemPackages = with pkgs; [
wireguard-tools
];
}

View File

@@ -1,10 +1,8 @@
{ pkgs, inputs, ... }:
{ config, lib, pkgs, inputs, ... }:
{
# install noctalia and helper packages
environment.systemPackages = with pkgs; [
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
#kdePackages.qt6ct
#nwg-look
adw-gtk3
adwaita-qt
adwaita-qt6

View File

@@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
# enable the openssh daemon
services.openssh = {
enable = true;
openFirewall = true;
};
}

View File

@@ -0,0 +1,50 @@
{ config, lib, pkgs, ... }:
{
# system packges
environment.systemPackages = with pkgs; [
alacritty
btop
cowsay
dnsutils
ethtool
file
ghostty
git
gnupg
imagemagick
imv
iperf3
jq
kdePackages.qtmultimedia
kitty
ldns
lm_sensors
lsof
ltrace
mtr
neovim
nh
nix-output-monitor
nmap
nvd
p7zip
pciutils
sddm-astronaut
socat
strace
sysstat
tree
unzip
usbutils
vim
wget
which
xz
zip
zstd
];
# browser
programs.firefox.enable = true;
}

20
modules/nixos/sddm.nix Normal file
View File

@@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
{
# enable sddm and use astronaut theme
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
autoNumlock = true;
enableHidpi = true;
theme = "sddm-astronaut-theme";
settings = {
Theme = {
Current = "sddm-astronaut-theme";
};
};
extraPackages = with pkgs; [
sddm-astronaut
];
};
}

View File

@@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
# list of enabled services on the system
services = {
tuned.enable = true;
upower.enable = true;
};
}

View File

@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
{
# use flakes and nix command
nix.settings.experimental-feature = [ "nix-command" "flakes" ];
# links /libexec from derivations to /run/current-system/sw
environment.pathsToLink = [ "/libexec" ];
# set the default editor to vim
environment.variables.EDITOR = "vim";
# enable home-manager globally
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
}

19
modules/nixos/steam.nix Normal file
View File

@@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
{
# allow unfree to install steam
nixpkgs.config.allowUnfree = true;
# enable steam and open firewall
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
# fix black screen in steam when using xwayland-satellite
programs.steam.package = pkgs.steam.override {
extraArgs = "-system-composer";
};
}

23
modules/nixos/users.nix Normal file
View File

@@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
# create users
users.users.aaron = {
isNormalUser = true;
group = "users";
extraGroups = [ "wheel" "networkmanager" ];
shell = pkgs.zsh;
};
# add default zsh config
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestions.enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "sudo" ];
theme = "gentoo";
};
};
}

View File

@@ -142,6 +142,11 @@
EDITOR = "vim";
};
# add flake env variable for nh
environment.sessionVariables = {
NH_FLAKE = "/home/aaron/git/nixconfig";
};
# enable syncthing for user
services.syncthing.enable = true;
# enable home manager