# vim: set ts=2 sw=2 et foldmethod=marker: # 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`). { config, lib, pkgs, vars, ... }: { # nix.settings.experimental-features = ["nix-command" "flakes" ]; fileSystems = lib.mkMerge [ { "/ntfs" = { fsType = "ntfs-3g"; device = "/dev/disk/by-uuid/028A49020517BEA9"; }; "/.btrfsroot" = { options = [ "subvol=/" ]; }; } # Lanzaboote workaround (nix-community/lanzaboote#173) (lib.mkIf config.boot.lanzaboote.enable { "/efi/EFI/Linux" = { device = "/boot/EFI/Linux"; options = [ "bind" ]; }; "/efi/EFI/nixos" = { device = "/boot/EFI/nixos"; options = [ "bind" ]; }; }) (lib.genAttrs [ "/.btrfsroot" "/" "/home" "/nix" ] ( fs: { options = [ "compress=zstd" ]; })) ]; imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ../../system # nixfiles modules ./nvidia-optimus.nix ./supergfxd.nix ]; # specialisation.plasma.configuration = { # system.nixos.tags = [ "Plasma" ]; # nixfiles = { # session = "plasma"; # }; # services.displayManager.sddm.enable = lib.mkForce true; # # services.xserver.displayManager.startx.enable = lib.mkForce false; # }; specialisation.hyprland.configuration = { system.nixos.tags = [ "Hyprland" ]; nixfiles.session = "hyprland"; }; nixfiles.supergfxd.profile = lib.mkDefault "Integrated"; nixfiles = { profile.workstation.enable = true; common.remoteAccess.enable = true; common.bootnext = { enable = true; entries.windows = { name = "Windows Boot Manager"; efiPartUUID = "c8505f55-1f48-47fc-9b3b-3ba16062cafd"; desktopEntry = { name = "Windows"; icon = "microsoft-windows"; }; }; }; hardware.opengl.enable = true; hardware.gps.enable = true; packageSets = { gaming.enable = true; fun.enable = true; }; # session = lib.mkDefault "hyprland"; session = lib.mkDefault "plasma"; programs = { adb.enable = true; unbound.enable = false; greetd = { settings = { autologin = true; autologinUser = "nullbite"; }; }; }; }; networking.hostName = "slab"; boot.initrd.systemd.enable = true; boot.plymouth.enable = true; boot.kernelParams = [ "quiet" ]; # annoying ACPI bug boot.consoleLogLevel = 2; # cryptsetup boot.initrd.luks.devices = { lvmroot = { device="/dev/disk/by-uuid/2872c0f0-e544-45f0-9b6c-ea022af7805a"; allowDiscards = true; fallbackToPassword = lib.mkIf (!config.boot.initrd.systemd.enable) true; preLVM = true; }; }; # bootloader setup boot.loader = { efi = { canTouchEfiVariables = true; efiSysMountPoint = "/efi"; }; # grub = { # enable = true; # efiSupport = true; # device = "nodev"; # }; systemd-boot = { enable = lib.mkForce (!config.boot.lanzaboote.enable); xbootldrMountPoint = "/boot"; netbootxyz.enable = true; memtest86.enable = true; }; }; boot.lanzaboote = { enable = true; pkiBundle = "/etc/secureboot"; settings.reboot-for-bitlocker = true; }; # GPS data from my phone services.gpsd.devices = lib.mkIf config.nixfiles.hardware.gps.enable [ "tcp://pixel.magpie-moth.ts.net:6000" ]; # systemd power/suspend configuration systemd.targets = lib.genAttrs ["suspend" "hybrid-sleep" "suspend-then-hibernate"] (_: { enable = false; unitConfig.DefaultDependencies = "no"; }); # might make hibernate better idk systemd.sleep.extraConfig = '' disk=shutdown ''; services.logind = { lidSwitch = "lock"; suspendKey = "hibernate"; }; services.xserver.videoDrivers = ["amdgpu"]; # {{{ old config # Use the systemd-boot EFI boot loader. # boot.loader.systemd-boot.enable = true; # boot.loader.efi.canTouchEfiVariables = true; # see custom-hardware-configuration.nix # networking.hostName = "nixos"; # Define your hostname. # Pick only one of the below networking options. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. # }}} # Set your time zone. # time.timeZone = vars.mobileTimeZone; services.asusd.enable = true; # {{{ old config # Configure network proxy if necessary # networking.proxy.default = "http://user:password@proxy:port/"; # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; # Select internationalisation properties. # i18n.defaultLocale = "en_US.UTF-8"; # console = { # font = "Lat2-Terminus16"; # keyMap = "us"; # useXkbConfig = true; # use xkb.options in tty. # }; # Enable the X11 windowing system. # services.xserver.enable = true; # services.xserver.displayManager.sddm.enable = true; # services.xserver.desktopManager.plasma5.enable = true; # Enable flatpak # services.flatpak.enable = true; # Configure keymap in X11 # services.xserver.xkb.layout = "us"; # services.xserver.xkb.options = "eurosign:e,caps:escape"; # Enable CUPS to print documents. # services.printing.enable = true; # Enable sound. # sound.enable = true; # hardware.pulseaudio.enable = true; # security.rtkit.enable = true; # services.pipewire = { # enable = true; # alsa.enable = true; # alsa.support32Bit = true; # pulse.enable = true; # jack.enable = true; # }; # Enable touchpad support (enabled default in most desktopManager). # services.xserver.libinput.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. # users.users.alice = { # isNormalUser = true; # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. # packages = with pkgs; [ # firefox # tree # ]; # }; # users.users.nullbite = { # isNormalUser = true; # extraGroups = [ "wheel" ]; # packages = with pkgs; [ # firefox # keychain # ]; # initialPassword = "changeme"; # shell = pkgs.zsh; # }; # shell config # programs.zsh.enable = true; # programs.fzf = { # keybindings = true; # fuzzyCompletion = true; # }; # List packages installed in system profile. To search, run: # $ nix search wget # environment.systemPackages = with pkgs; [ # neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. # wget # curl # git # stow # zsh # ntfs3g # fd # ripgrep # sbctl # comma # ]; # Allow unfree packages # nixpkgs.config.allowUnfree = true; # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; # programs.gnupg.agent = { # enable = true; # enableSSHSupport = true; # }; # List services that you want to enable: # Enable the OpenSSH daemon. # services.openssh.enable = true; # services.openssh = { # enable = true; # openFirewall = true; # settings = { # }; # }; # services.tailscale.enable = true; # }}} # Open ports in the firewall. networking.firewall.allowedTCPPorts = [ 22 ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. # networking.firewall.enable = false; # Copy the NixOS configuration file and link it from the resulting system # (/run/current-system/configuration.nix). This is useful in case you # accidentally delete configuration.nix. # system.copySystemConfiguration = 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.11"; # Did you read the comment? }