{ config, pkgs, inputs, ... }: { imports = [ ]; # Bootloader options boot.initrd.systemd.enable = true; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; # Boot splash instead of log messages boot = { plymouth.enable = true; # Enable "Silent boot" consoleLogLevel = 3; initrd.verbose = false; kernelParams = [ "quiet" "udev.log_level=3" "systemd.show_status=auto" "pcie_aspm=off" ]; loader.timeout = 1; }; # Hardware settings hardware.enableRedistributableFirmware = true; hardware.cpu.intel.updateMicrocode = true; hardware.cpu.amd.updateMicrocode = true; # Enable networking networking.networkmanager.enable = true; networking.hostName = "nix-tv"; # Define your hostname. # Set your time zone. time.timeZone = "Europe/Paris"; # Select internationalisation properties. i18n.defaultLocale = "fr_FR.UTF-8"; i18n.extraLocaleSettings = { LC_ADDRESS = "fr_FR.UTF-8"; LC_IDENTIFICATION = "fr_FR.UTF-8"; LC_MEASUREMENT = "fr_FR.UTF-8"; LC_MONETARY = "fr_FR.UTF-8"; LC_NAME = "fr_FR.UTF-8"; LC_NUMERIC = "fr_FR.UTF-8"; LC_PAPER = "fr_FR.UTF-8"; LC_TELEPHONE = "fr_FR.UTF-8"; LC_TIME = "fr_FR.UTF-8"; }; # Disable the X11 windowing system. services.xserver.enable = false; services.xserver.xkb.layout = "fr"; # Enable the KDE Plasma Desktop Environment. services.displayManager.sddm.enable = true; services.displayManager.sddm.wayland.enable = true; services.desktopManager.plasma6.enable = true; services.displayManager.autoLogin.enable = true; services.displayManager.autoLogin.user = "nix-tv"; # Configure console keymap console.keyMap = "fr"; # Enable CUPS to print documents. services.printing.enable = true; # Enable sound with pipewire. services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.nix-tv = { isNormalUser = true; description = "Nix TV"; extraGroups = [ "networkmanager" "wheel" ]; uid = 1000; initialPassword = "changeMe!"; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINjX8YqPMXpuqIrEClMHD2Ol+gqj3+28rYXGWybVNpim raphael@MacBook-Pro-de-Raphael.local" ]; }; # Login message environment.loginShellInit = '' if [ "$(id -u)" -eq 1000 ]; then if [ -n "$SSH_TTY" ]; then fastfetch echo -e "\n\nWelcome to your Nix TV !\n\n- This system is managed by NixOS\n- All changes are futile\n- Please consider buying support if you can't get your TV running\n- Have a nice day and enjoy !" fi fi ''; # Allow unfree packages nixpkgs.config.allowUnfree = true; environment.systemPackages = with pkgs; [ fastfetch ]; # Install flatpak services.flatpak.enable = true; # Enable the OpenSSH daemon. services.openssh.enable = true; # Open ports in the firewall. networking.firewall.allowedTCPPorts = [ ]; networking.firewall.allowedUDPPorts = [ ]; networking.firewall.enable = true; # Enable auto updates system.autoUpgrade = { enable = true; allowReboot = false; flake = inputs.self.outPath; flags = [ "--print-build-logs" ]; dates = "20:00"; randomizedDelaySec = "45min"; }; nix.gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 7d"; }; # Enable NixOS flakes nix.settings.experimental-features = [ "nix-command" "flakes" ]; # Enable auto nix-store optimization nix.settings.auto-optimise-store = true; system.stateVersion = "25.11"; }