Files
nix-config/systems/aarch64-linux/macbook-pro-nixos/default.nix
2026-03-26 10:31:37 -05:00

182 lines
4.4 KiB
Nix
Executable File

# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{
lib,
pkgs,
namespace,
...
}:
{
imports = [
./boot.nix
./filesystems.nix
./hardware-configuration.nix
./services.nix
];
nix.settings.extra-platforms = [ "x86_64-linux" ];
boot.binfmt.emulatedSystems = [ "x86_64-linux" ];
hardware.asahi = {
enable = true;
peripheralFirmwareDirectory = ./firmware;
setupAsahiSound = true;
};
${namespace} = {
headless.enable = false;
sops.enable = true;
impermanence = {
enable = true;
# extraDirectories = [
# {
# directory = "/var/cache/ccache";
# user = "nobody";
# group = "nobody";
# mode = "u=rwx,g=rwx,o=rx";
# }
# ];
};
user = {
name = "matt";
hashedPassword = "$y$j9T$EkPXmsmIMFFZ.WRrBYCxS1$P0kwo6e4.WM5DsqUcEqWC3MrZp5KfCjxffraMFZWu06";
extraGroups = [
"scanner"
"lp"
"video"
"i2c"
];
packages = with pkgs; [
firefox
tree
git
box64
prismlauncher
distrobox
];
};
desktop = {
hyprland = {
enable = false;
wallpaperSource = "bing";
};
gnome.enable = true;
};
hardware = {
battery = {
enable = true;
battery = "/sys/class/power_supply/macsmc-battery/charge_control_end_threshold";
};
};
network = {
hostName = "macbook-pro-nixos";
iwd.enable = true;
networkmanager.enable = true;
extraFirewallCommands = ''
iptables -I INPUT -m pkttype --pkt-type multicast -j ACCEPT
iptables -A INPUT -m pkttype --pkt-type multicast -j ACCEPT
iptables -I INPUT -p udp -m udp --match multiport --dports 1990,2021 -j ACCEPT
'';
};
services = {
nebula = {
enable = true;
secretsPrefix = "macbook-pro-nixos/nebula";
secretsFile = lib.snowfall.fs.get-file "secrets/mac-secrets.yaml";
hostSecretName = "macbook-pro-nixos";
};
};
};
specialisation = {
# asahi-fairydust.configuration = import ./specialisations/asahi-fairydust.nix;
"plasma".configuration = {
boot.kernelParams = lib.mkOverride 90 [ ];
${namespace} = {
sops.enable = true;
desktop = {
plasma.enable = lib.mkForce true;
hyprland.enable = lib.mkForce false;
gnome.enable = lib.mkForce false;
};
home.extraOptions = {
${namespace} = {
desktop = {
gnome = lib.mkForce { enable = false; };
plasma = lib.mkForce { enable = true; };
};
programs = {
hyprland = lib.mkForce { enable = false; };
kitty = lib.mkForce { enable = false; };
mako = lib.mkForce { enable = false; };
nwg-dock = lib.mkForce { enable = false; };
nwg-drawer = lib.mkForce { enable = false; };
nwg-panel = lib.mkForce { enable = false; };
waybar = lib.mkForce { enable = false; };
wlogout = lib.mkForce { enable = false; };
wofi = lib.mkForce { enable = false; };
};
};
};
};
};
};
nixpkgs.config.allowUnsupportedSystem = true;
virtualisation = {
libvirtd.enable = true;
# efi = {
# OVMF = (pkgs.OVMF.override {
# secureBoot = true;
# });
# };
waydroid.enable = false;
# - CONFIG_ANDROID_BINDER_IPC is not enabled!
# - CONFIG_ANDROID_BINDERFS is not enabled
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages =
with pkgs;
[
apfs-fuse
apfsprogs
aria2
asahi-bless
asahi-btsync
asahi-nvram
asahi-wifisync
cabextract
erofs-utils
fex
micro
muvm
squashfuse
squashfsTools
unzip
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
virt-manager
wget
(pkgs.OVMF.override {
secureBoot = true;
})
]
++ (with pkgs.${namespace}; [
omnissa
]);
environment.sessionVariables = {
DBX_CONTAINER_MANAGER = "podman";
GSK_RENDERER = "opengl";
};
}