# 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=/" ]; }; } (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 = { sessions.hyprland.enable = false; sessions.plasma.enable = true; }; services.displayManager.sddm.enable = lib.mkForce true; services.xserver.displayManager.startx.enable = lib.mkForce false; }; nixfiles.supergfxd.profile = lib.mkDefault "Integrated"; # who needs a display manager? services.displayManager.sddm.enable = false; nixfiles = { profile.workstation.enable = true; common.remoteAccess.enable = true; hardware.opengl.enable = true; packageSets = { gaming.enable = true; fun.enable = true; }; sessions.hyprland.enable = lib.mkDefault true; sessions.plasma.enable = lib.mkDefault false; programs = { adb.enable = true; unbound.enable = false; greetd = { preset = "tuigreet"; 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 = true; xbootldrMountPoint = "/boot"; netbootxyz.enable = true; memtest86.enable = true; }; }; # 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? }