129 lines
3.4 KiB
Nix
129 lines
3.4 KiB
Nix
{ config, lib, inputs, pkgs, timeZone, ... }:
|
|
let
|
|
deskCfg = config.deskCfg;
|
|
in
|
|
{
|
|
imports = [
|
|
inputs.nixos-hardware.nixosModules.framework-12-13th-gen-intel
|
|
./nixos/hardware-configuration.nix
|
|
../../shared/modules/desktop/base.nix
|
|
../../shared/modules/desktop/stylix.nix
|
|
../../shared/modules/desktop/silent-boot.nix
|
|
../../shared/modules/desktop/greetd.nix
|
|
../../shared/modules/wm/niri.nix
|
|
../../shared/modules/services/syncthing.nix
|
|
../../shared/modules/services/kdeconnect.nix
|
|
../../shared/modules/services/docker.nix
|
|
../../shared/modules/services/colemak-ec.nix
|
|
../../shared/modules/services/hyprvoice.nix
|
|
];
|
|
|
|
deskCfg = {
|
|
userName = "nate";
|
|
hostName = "frame12";
|
|
fullName = "Nate Anderson";
|
|
de = "niri";
|
|
};
|
|
|
|
# Limit the number of generations to keep
|
|
boot.loader.systemd-boot.configurationLimit = 5;
|
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
|
|
# Systemd initrd for Plymouth and faster boot
|
|
boot.initrd.systemd.enable = true;
|
|
|
|
# Silent boot
|
|
silentBoot.enable = true;
|
|
|
|
# Plymouth — custom Framework theme
|
|
boot.plymouth = {
|
|
enable = true;
|
|
theme = "framework";
|
|
themePackages = [
|
|
(pkgs.runCommand "plymouth-framework-theme" { } ''
|
|
mkdir -p $out/share/plymouth/themes/framework
|
|
cp -r ${./framework-plymouth-theme/framework}/* $out/share/plymouth/themes/framework/
|
|
substituteInPlace $out/share/plymouth/themes/framework/framework.plymouth \
|
|
--replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/framework"
|
|
'')
|
|
];
|
|
};
|
|
|
|
# Perform garbage collection weekly to maintain low disk usage
|
|
nix.gc = {
|
|
automatic = true;
|
|
dates = "weekly";
|
|
options = "--delete-older-than 14d";
|
|
};
|
|
nix.settings.auto-optimise-store = true;
|
|
|
|
# IWD wireless backend
|
|
networking.wireless.iwd.enable = true;
|
|
|
|
# Extra groups
|
|
main_user.extraGroups = [ "corectrl" "dialout" "docker" ];
|
|
|
|
# Stylix overrides — kimber dark theme, terminal font size 16
|
|
stylix = {
|
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/kimber.yaml";
|
|
fonts.sizes.terminal = 16;
|
|
};
|
|
|
|
# Intel graphics acceleration (Framework 12)
|
|
hardware.graphics.enable = true;
|
|
hardware.enableRedistributableFirmware = true;
|
|
|
|
# Intel iHD GPU
|
|
environment.sessionVariables.LIBVA_DRIVER_NAME = "iHD";
|
|
|
|
# Niri WM config
|
|
niriwm = {
|
|
enable = true;
|
|
useNonFree = true;
|
|
user = deskCfg.userName;
|
|
systemPackages = with pkgs; [
|
|
libreoffice
|
|
rpi-imager
|
|
];
|
|
};
|
|
|
|
# Frame12-specific packages
|
|
environment.systemPackages = with pkgs; [
|
|
cryptsetup
|
|
cage
|
|
kanshi
|
|
man-pages
|
|
man-pages-posix
|
|
pavucontrol
|
|
swayosd
|
|
wdisplays
|
|
];
|
|
|
|
# Colemak-DH EC remap
|
|
colemakEc.enable = true;
|
|
|
|
# Docker — rootless
|
|
dockerConfig.rootless = true;
|
|
|
|
# Hyprvoice dictation
|
|
services.hyprvoice = {
|
|
enable = true;
|
|
user = deskCfg.userName;
|
|
};
|
|
|
|
# Bluetooth name
|
|
hardware.bluetooth.settings.General.Name = "Nate-Frame";
|
|
|
|
# udev rules — betaflight configurator + i2c for ddcutil
|
|
services.udev.extraRules = ''
|
|
# For betaflight configurator
|
|
# DFU (Internal bootloader for STM32 and AT32 MCUs)
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout"
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout"
|
|
# For ddcutil monitor controls
|
|
KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660"
|
|
'';
|
|
|
|
system.stateVersion = "25.05";
|
|
}
|