···11-# Edit this configuration file to define what should be installed on
22-# your system. Help is available in the configuration.nix(5) man page
33-# and in the NixOS manual (accessible by running ‘nixos-help’).
44-55-{ pkgs, ... }:
66-77-{
88- imports = [
99- # Include the results of the hardware scan.
1010- ./hardware-configuration.nix
1111- ../common/common.nix
1212- ];
1313-1414- boot.initrd.luks.devices."luks-ee306bda-c450-4a56-b4fe-537899e38e0d" = {
1515- device = "/dev/disk/by-uuid/ee306bda-c450-4a56-b4fe-537899e38e0d";
1616- bypassWorkqueues = true;
1717- };
1818- networking.hostName = "framework16"; # Define your hostname.
1919-2020- # Reduce swap pressure to avoid thrashing through dm-crypt
2121- boot.kernel.sysctl."vm.swappiness" = 10;
2222-2323- # Framework 16 specific configuration
2424- # Disable ABM (Active Backlight Management) to maintain color accuracy
2525- boot.kernelParams = [ "amdgpu.abmlevel=0" ];
2626-2727- # Enable QEMU emulation for aarch64 (for building Pi images)
2828- boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
2929-3030- # nixos-raspberrypi binary cache (pre-built Pi 5 kernel, kodi, etc.)
3131- nix.settings.extra-substituters = [ "https://nixos-raspberrypi.cachix.org" ];
3232- nix.settings.extra-trusted-public-keys = [ "nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI=" ];
3333- nix.settings.trusted-users = [ "root" "sean" ];
3434-3535- # Use power-profiles-daemon instead of TLP (recommended for AMD Framework)
3636- services.power-profiles-daemon.enable = true;
3737-3838- # Disable keyboard/touchpad wake from suspend (prevents wake in bags)
3939- services.udev.extraRules = ''
4040- # Framework Laptop 16 - Disable wakeup for internal keyboard to prevent wake in bags
4141- ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="32ac", ATTR{power/wakeup}="disabled"
4242- '';
4343- # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
4444-4545- # Configure network proxy if necessary
4646- # networking.proxy.default = "http://user:password@proxy:port/";
4747- # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
4848-4949- # Enable touchpad support (enabled default in most desktopManager).
5050- # services.xserver.libinput.enable = true;
5151-5252- # List packages installed in system profile. To search, run:
5353- # $ nix search wget
5454- environment.systemPackages = with pkgs; [
5555- brightnessctl
5656- gdm
5757- ];
5858-5959- # Some programs need SUID wrappers, can be configured further or are
6060- # started in user sessions.
6161- # programs.mtr.enable = true;
6262- # programs.gnupg.agent = {
6363- # enable = true;
6464- # enableSSHSupport = true;
6565- # };
6666-6767- # List services that you want to enable:
6868-6969- services.openssh = {
7070- enable = true;
7171- settings = {
7272- PasswordAuthentication = false;
7373- KbdInteractiveAuthentication = false;
7474- PermitRootLogin = "no";
7575- AllowUsers = [ "sean" ];
7676- };
7777- };
7878-7979- users.users.sean.openssh.authorizedKeys.keys = [
8080- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCIqgZ7kedxo+mOW7YG73Vp3zel3h180y3GKvHtRsXfGlpIIvRDy7pgCBQ4AGXYD4y78URQmFohYSAPqCPOPaWcU2un3XG9KvCzEsHmsbskPonitUmCiKvrKkb6oW4jCBtd7AEtBn+AiajAQFtPZ7NN2Df3AmTypvR6Irg7R+nxnfc9NTIHmGvxSDyWcbb4pguL20sctUSqGL6xGh8q/bqhdOThSimM+z9bEUNxK/5rPhwkNniMrp4pJcUrUiAh5/4DiRFG6KT+oeg+/myoz/Z1sPvAs7u/8JDQI4RshRD8Hu0oTkRBN6Hxj478q2SXbeBUZlD6IdjP3RhGpmSecoDdtWqKbpuV3eVRtQtba3KL86GBeV/bugaOdJ1Aud+1SOFJreAAuvxzMMKT+cdQZk6oOPP148DA/No+mDm/2S43lcdCXh79wA6YRAmKQ8jmZxTCtPutrvuZK1rguvvUlEoG/vhdNHh7eDa4Td07V6bjCRPUl8qk/e4M0E3pwsTlZc="
8181- "no-touch-required sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAILdilHXHdAP/V8Zq28EzHKtLAMMaFPu4+1det2N50QfhAAAABHNzaDo= sean@framework16"
8282- ];
8383-8484- # Open ports in the firewall.
8585- # networking.firewall.allowedTCPPorts = [
8686- # 3000
8787- # ];
8888- networking.firewall.allowedUDPPorts = [
8989- ];
9090- # Or disable the firewall altogether.
9191- networking.firewall.enable = false;
9292-9393- # This value determines the NixOS release from which the default
9494- # settings for stateful data, like file locations and database versions
9595- # on your system were taken. It‘s perfectly fine and recommended to leave
9696- # this value at the release version of the first install of this system.
9797- # Before changing this value read the documentation for this option
9898- # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
9999- system.stateVersion = "25.05"; # Did you read the comment?
100100-101101-}