also updated flake and fixed kernel issue also attempted to make calendar tooltip in waybar scrollable but it isnt working yet
213 lines
5.6 KiB
Nix
213 lines
5.6 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.linuxKernel.packages.linux_zen; # 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
|
|
'';
|
|
};
|
|
|
|
services.udev.extraRules = ''
|
|
# disable USB auto suspend for framework keyboard
|
|
ACTION=="bind", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0012", TEST=="power/control", ATTR{power/control}="on"
|
|
# disable USB auto suspend for framework macropad
|
|
ACTION=="bind", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{idProduct}=="0013", TEST=="power/control", ATTR{power/control}="on"
|
|
'';
|
|
|
|
# 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 the Hyprland WM functionality for NixOS (xdg portals etc.)
|
|
programs.hyprland.enable = true;
|
|
|
|
# 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;
|
|
|
|
nix.settings.trusted-users = [
|
|
"root"
|
|
"blue"
|
|
];
|
|
|
|
programs.fish.enable = true;
|
|
users.users.blue = {
|
|
isNormalUser = true;
|
|
description = "Gabriella Bere";
|
|
extraGroups = [
|
|
"networkmanager"
|
|
"wheel"
|
|
"dialout"
|
|
"audio"
|
|
"libvirtd"
|
|
];
|
|
shell = pkgs.fish;
|
|
};
|
|
|
|
# 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";
|
|
}
|