nixconf/hosts/gabbielaptop/configuration.nix
Gabriella Bere 68c99f77d2 added udev setup for grapehenOS install
note: do not use the front ports on the fw16 for firmware flashing, they
do not work for some godforsaken reason, even though all ports are
supposed to support usb3.2 over USB-C

removed the hyprland portals and such from configuration.nix, moved udev
rules to a separate module in /modules/

added teams-for-linux because i was able to use it from a shell in a
pinch and it worked flawlessly (once i got into the meeting, because it
wasnt able to open the link by default since it was installed from a
shell, hopefully a proper install comes with xdg default app rules but
if not i can always add them)
2025-11-27 18:29:02 +00:00

212 lines
5.3 KiB
Nix

{
lib,
pkgs,
config,
...
}:
{
imports = [
./hardware-configuration.nix
];
boot = {
initrd.systemd.enable = true;
loader.systemd-boot.enable = lib.mkForce false; # Required for lanzaboote to function, which enables secure boot
lanzaboote = {
enable = true;
pkiBundle = "/var/lib/sbctl";
};
};
nix = {
settings.experimental-features = [
"nix-command"
"flakes"
];
};
boot.initrd.kernelModules = [ "amdgpu" ];
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
boot.kernelModules = [ "v4l2loopback" ];
boot.kernelPackages = pkgs.linuxPackages_cachyos; # remember to set this to the kernel package SET, not the kernel package itself
networking.hostName = "gabbielaptop"; # Define your hostname.
programs.dconf.enable = true; # required for some apps that are just github code i compile myself instead of using a package
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = [ pkgs.stable.rocmPackages.clr.icd ]; # Needed for davinci-resolve to utilize the gpu, otherwise it refuses to launch
};
# Enable networking
networking.networkmanager.enable = true;
services.tailscale.enable = true;
# Set your time zone.
time.timeZone = "Europe/London";
# Select internationalisation properties.
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
# Enable PPD to improve battery life maybe
services.power-profiles-daemon.enable = true;
powerManagement.powertop = {
enable = true;
postStart =
''
# Retrigger keyboard udev rules
${lib.getExe' config.systemd.package "udevadm"} trigger -c bind -s usb -a idVendor=32ac -a idProduct=0012
# Retrigger macropad udev rules
${lib.getExe' config.systemd.package "udevadm"} trigger -c bind -s usb -a idVendor=32ac -a idProduct=0013
'';
};
# Enable greetd with ReGreet
services.greetd = {
enable = true;
# settings.default_session = {
# command = "${pkgs.greetd.regreet}/bin/regreet";
# };
};
programs.regreet = {
enable = true;
cageArgs = [
"-m"
"last"
];
};
# Enable plasma 6
services.desktopManager.plasma6.enable = true;
# Enable niri
programs.niri.enable = true;
# Enable fwupd for BIOS updates
services.fwupd.enable = true;
# Enable nix-ld for dynamically linked executeables
programs.nix-ld.enable = true;
# Configure keymap in X11
services.xserver.xkb.layout = "gb";
# Configure console keymap
console.keyMap = "uk";
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
security.rtkit.enable = true;
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
wireplumber = {
enable = true;
extraConfig.enableMIDI = {
"wireplumber.settings" = {
node.features.audio.control-port = true; # This is needed for ardour to recognise my USB MIDI keyboard
};
}; # This is JSON
};
};
services.gnome.gnome-keyring.enable = true;
# Used to install grapheneOS
programs.adb.enable = true;
nix.settings.trusted-users = [
"root"
"blue"
];
programs.fish.enable = true;
users = {
users.blue = {
isNormalUser = true;
description = "Gabriella Bere";
extraGroups = [
"networkmanager"
"wheel"
"dialout"
"audio"
"libvirtd"
"adbusers"
"kvm"
];
shell = pkgs.fish;
};
groups.adbusers.name = "adbusers";
};
# Enable fingerprint daemon
services.fprintd.enable = true;
# Enable bluetooth and blueman
hardware.bluetooth = {
enable = true;
settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
};
services.blueman.enable = true;
# Enable flatpak for nix-flatpak used in home-manager
services.flatpak.enable = true;
# Required for QEMU
systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ];
# Enable qmk for managing framework laptop keyboards
hardware.keyboard.qmk.enable = true;
# Enable steam and enable steam remoteplay
programs.steam.enable = true;
programs.steam.remotePlay.openFirewall = true;
programs.gamemode.enable = true;
# Enable musnix for realtime audio and other such useful things
musnix.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [
43391 # used to forward minecraft traffic to minecraft.gabbie.blue:33991
4455 # used for OBS websocket
7777 # used for Satisfactory Server
];
networking.firewall.allowedUDPPorts = [
7777 # # used for Satisfactory Server
43391 # used to forward simple voice chat traffic to minecraft.gabbie.blue:33991
];
networking.firewall.allowedUDPPortRanges = [
{
from = 45000;
to = 60000;
}
];
system.stateVersion = "24.05";
}