First commit
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
moduleName = "nixos-bluetooth";
|
||||
in
|
||||
{
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
services.blueman.enable = true;
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
moduleName = "nixos-services";
|
||||
in
|
||||
{
|
||||
programs.hyprland.enable = true;
|
||||
services.seatd.enable = true;
|
||||
services.keyd.enable = true;
|
||||
systemd.defaultUnit = "graphical.target";
|
||||
services.displayManager.defaultSession = "hyprland";
|
||||
services.dbus.enable = true;
|
||||
programs.dconf.enable = true;
|
||||
security.polkit.enable = true;
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
programs.zsh.enable = true;
|
||||
environment.variables.EDITOR = "nano";
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
moduleName = "nixos-housekeeping";
|
||||
in
|
||||
{
|
||||
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
nix.settings.auto-optimise-store = true;
|
||||
|
||||
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
moduleName = "nixos-locale";
|
||||
in
|
||||
{
|
||||
time.timeZone = "Europe/Amsterdam";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
moduleName = "nixos-networking";
|
||||
in
|
||||
{
|
||||
networking.nftables.enable = true;
|
||||
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
|
||||
# Default: no inbound open ports
|
||||
allowedTCPPorts = [ ];
|
||||
allowedUDPPorts = [ ];
|
||||
|
||||
# Home-only exceptions (nftables syntax)
|
||||
extraInputRules = ''
|
||||
# KDE Connect (TCP/UDP 1714-1764) from home LAN
|
||||
ip saddr 192.168.2.0/24 tcp dport 1714-1764 accept
|
||||
ip saddr 192.168.2.0/24 udp dport 1714-1764 accept
|
||||
|
||||
# mDNS / Avahi for printer discovery (UDP 5353) from home LAN
|
||||
ip saddr 192.168.2.0/24 udp dport 5353 accept
|
||||
'';
|
||||
};
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
services.openssh.enable = true;
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
moduleName = "nixos-printers";
|
||||
in
|
||||
{
|
||||
# ---- Printing (CUPS) ----
|
||||
services.printing = {
|
||||
enable = true;
|
||||
# Good general compatibility. Many modern printers work driverless (IPP Everywhere),
|
||||
# but these help with older models and various formats.
|
||||
drivers = with pkgs; [
|
||||
cups-filters
|
||||
gutenprint
|
||||
];
|
||||
};
|
||||
|
||||
# ---- Network printer discovery (mDNS / DNS-SD) ----
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
# Resolve .local names + discover services on IPv4
|
||||
nssmdns4 = true;
|
||||
# You're controlling firewall rules in firewall.nix
|
||||
openFirewall = false;
|
||||
};
|
||||
|
||||
# ---- Optional GUI tool to add/manage printers ----
|
||||
environment.systemPackages = with pkgs; [
|
||||
system-config-printer
|
||||
];
|
||||
|
||||
# allow admin actions in printer GUI (usually already present on desktop systems)
|
||||
security.polkit.enable = true;
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
moduleName = "nixos-sound";
|
||||
in
|
||||
{
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
};
|
||||
|
||||
security.rtkit.enable = true;
|
||||
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
moduleName = "nixos-usb";
|
||||
in
|
||||
{
|
||||
# Automount USB / removable media integration
|
||||
services.udisks2.enable = true;
|
||||
services.gvfs.enable = true;
|
||||
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
username = "henrov";
|
||||
moduleName = "nixos-users";
|
||||
in
|
||||
{
|
||||
# Optional but common: declare defaults for user shells
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
|
||||
users.users.${username} = {
|
||||
isNormalUser = true;
|
||||
|
||||
# Add your user to groups needed for admin + network + typical desktop input/video access
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
"video"
|
||||
"input"
|
||||
"audio"
|
||||
];
|
||||
|
||||
# If you want zsh explicitly per-user (instead of defaultUserShell):
|
||||
# shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
# If you want a simple "proof this module was applied" marker at the *system* level:
|
||||
# (This creates /etc/nixos-users.loaded)
|
||||
environment.etc."nixos-users.loaded".text = "loaded\n";
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
moduleName = "nixos-xdg";
|
||||
in
|
||||
{
|
||||
# NixOS XDG integration (system-wide)
|
||||
xdg = {
|
||||
menus.enable = true;
|
||||
mime.enable = true;
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
extraPortals = with pkgs; [
|
||||
# xdg-desktop-portal-hyprland
|
||||
xdg-desktop-portal-gtk
|
||||
];
|
||||
};
|
||||
|
||||
environment.etc."xdg/menus/applications.menu".source =
|
||||
"${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu";
|
||||
# NixOS-safe "module executed" marker (creates /etc/nixlog/loaded.nixos-xdg)
|
||||
environment.etc."nixlog/loaded.${moduleName}".text = "loaded\n";
|
||||
}
|
||||
Reference in New Issue
Block a user