{ config, lib, pkgs, apple-silicon, asahi-firmware, ... }: { imports = [ ./hardware-configuration.nix apple-silicon.nixosModules.apple-silicon-support ]; nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = false; # Specify path to peripheral firmware files. # This lets the flake stay pure. hardware.asahi.peripheralFirmwareDirectory = asahi-firmware; # Or completely disable extraction and managemement of them completely: # hardware.asahi.extractPeripheralFirmware = false; # Enable GPU acceleration # TODO: Fix scaling issue # hardware.asahi.useExperimentalGPUDriver = true; # hardware.asahi.experimentalGPUInstallMode = "overlay"; hardware.opengl.enable = true; boot.kernelParams = [ "console=tty1" ]; boot.supportedFilesystems = [ "zfs" ]; networking.hostName = "kompakt"; networking.hostId = "9c8c0140"; boot.initrd.postDeviceCommands = lib.mkAfter '' zfs rollback -r rpool/local/root@blank ''; networking.wireless.iwd.enable = true; hardware.bluetooth.enable = true; time.timeZone = "Asia/Seoul"; i18n.defaultLocale = "en_US.UTF-8"; console = { font = "ter-v32n"; packages = with pkgs; [ terminus_font ]; }; services.printing.enable = true; sound.enable = false; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; # Backlight control programs.light.enable = true; services.actkbd = { enable = true; bindings = [ { keys = [ 224 ]; events = [ "key" ]; command = "/run/current-system/sw/bin/light -U 10"; } { keys = [ 225 ]; events = [ "key" ]; command = "/run/current-system/sw/bin/light -A 10"; } ]; }; fonts = { fontDir.enable = true; fonts = with pkgs; [ dina-font jetbrains-mono sarasa-gothic siji emacs-all-the-icons-fonts twemoji-color-font (nerdfonts.override { fonts = [ "Iosevka" "JetBrainsMono" ]; }) ]; fontconfig = { enable = true; defaultFonts = { serif = [ "Sarasa Gothic C" "Sarasa Gothic J" "Sarasa Gothic K" ]; sansSerif = [ "Sarasa Gothic C" "Sarasa Gothic J" "Sarasa Gothic K" ]; monospace = [ "Dina" "Iosevka Nerd Font" "JetBrainsMono Nerd Font" ]; emoji = [ "Siji" "Twitter Color Emoji" ]; }; }; }; services.greetd = { enable = true; vt = 2; settings.default_session.command = "${pkgs.greetd.tuigreet}/bin/tuigreet -t -c sway"; }; programs = { sway.enable = true; sway.extraPackages = lib.mkForce [ ]; zsh.enable = true; zsh.enableCompletion = false; }; xdg.portal = { enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-wlr ]; }; sops.defaultSopsFile = ./secrets/secrets.yaml; sops.secrets.root-password.neededForUsers = true; sops.secrets.sefidel-password.neededForUsers = true; users.mutableUsers = false; users.users = { root.passwordFile = config.sops.secrets.root-password.path; sefidel = { isNormalUser = true; shell = pkgs.zsh; passwordFile = config.sops.secrets.sefidel-password.path; extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. }; }; services.openssh.enable = true; services.openssh.hostKeys = [ { path = "/persist/ssh/ssh_host_ed25519_key"; type = "ed25519"; } { path = "/persist/ssh/ssh_host_rsa_key"; type = "rsa"; bits = 4096; } ]; environment.systemPackages = with pkgs; [ git ]; environment.persistence."/persist".directories = [ "/var/lib/iwd" "/etc/nixos" ]; fileSystems."/persist".neededForBoot = true; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave # this value at the release version of the first install of this system. # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "23.05"; # Did you read the comment? }