diff --git a/flake.lock b/flake.lock index 40c3bb1..ef21bd8 100644 --- a/flake.lock +++ b/flake.lock @@ -287,7 +287,7 @@ "nixpkgs-pr280779": { "flake": false, "locked": { - "narHash": "sha256-eP6JaUafbs7ulve2jOsidJKM28bKzcLgoQ4WKXN1k4I=", + "narHash": "sha256-MnUPeXecesXaBF4x9/+LCiANjzX9KVtl0JalyWAucYk=", "type": "file", "url": "https://github.com/NixOS/nixpkgs/pull/280779.patch" }, diff --git a/flake.nix b/flake.nix index a7cdc98..31a166b 100755 --- a/flake.nix +++ b/flake.nix @@ -158,7 +158,25 @@ ./machines/SteamDeck ]; }; - + + WinMax2 = nixpkgs-unstable.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { systemPkgs = inputs.nixpkgs-unstable-raw; flakeSelf = self; }; + modules = [ + agenix.nixosModules.default + jovian.nixosModules.default + home-manager-unstable.nixosModule + nix-index-db-unstable.nixosModules.nix-index + nixos-hardware.nixosModules.gpd-win-max-2-2023 + ./roles/common + ./roles/desktop + ./roles/kde + ./roles/gaming + ./roles/school + ./machines/WinMax2 + ]; + }; + Everest = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs; flakeSelf = self; }; diff --git a/machines/WinMax2/configuration.nix b/machines/WinMax2/configuration.nix new file mode 100755 index 0000000..fc39a34 --- /dev/null +++ b/machines/WinMax2/configuration.nix @@ -0,0 +1,112 @@ + # Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running `nixos-help`). + +{ config, pkgs, lib, ... }: + +{ + # Use grub boot loader + boot.loader = { + systemd-boot.enable = false; + grub = { + enable = true; + device = "nodev"; + efiSupport = true; + # No other OS on here :P + useOSProber = false; + }; + efi.efiSysMountPoint = config.fileSystems."efi_boot_partition".mountPoint; + }; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "WinMax2"; # Define your hostname. + networking.networkmanager.enable = true; # Enable networking + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + nix.settings.auto-optimise-store = true; + + services.xserver.layout = lib.mkForce "us"; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + jovian = { + # Steam Deck UI settings + steam = { + enable = true; + autoStart = false; + user = "toast"; + desktopSession = "plasmawayland"; + }; + decky-loader = { + enable = true; + }; + }; + + # Enable bluetooth + hardware.bluetooth = { + enable = true; + }; + + # Configure keymap in X11 + # services.xserver.layout = "us"; + # services.xserver.xkbOptions = "eurosign:e,caps:escape"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + # sound.enable = true; + # hardware.pulseaudio.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.toast = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + }; + + # Large builds (the linux kernel) fail to build because /tmp is too small when using tmpfs + boot.tmp.useTmpfs = false; + + # List packages installed in system profile. To search, run: + # $ nix search wget + # environment.systemPackages = with pkgs; [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + # ]; + + # 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; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # 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; + +} + diff --git a/machines/WinMax2/default.nix b/machines/WinMax2/default.nix new file mode 100755 index 0000000..5bf2485 --- /dev/null +++ b/machines/WinMax2/default.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; +} diff --git a/machines/WinMax2/hardware-configuration.nix b/machines/WinMax2/hardware-configuration.nix new file mode 100755 index 0000000..43949ee --- /dev/null +++ b/machines/WinMax2/hardware-configuration.nix @@ -0,0 +1,70 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +let + # \x20 is the escape code for a space + ssdLabel = ''Win\\x20Max\\x202\\x20SSD''; +in + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + boot.initrd.luks.devices."SSD".device = "/dev/disk/by-label/wm2-enc"; + + fileSystems = { + "efi_boot_partition" = { + mountPoint = "/boot/efi"; + label = "winmax2boot"; + fsType = "vfat"; + }; + /* + Mount the root subvolume of the SSD + This is helpful for getting things from + my old Arch install, as well as for running btdu + */ + "btrfs_root_subvolume" = { + mountPoint = "/mnt/ssd"; + label = ssdLabel; + fsType = "btrfs"; + options = [ "subvolid=5" "ro" ]; + }; + "btrfs_root" = { + mountPoint = "/"; + label = ssdLabel; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + "btrfs_boot" = { + mountPoint = "/boot"; + label = ssdLabel; + fsType = "btrfs"; + options = [ "subvol=@boot" ]; + }; + "btrfs_home" = { + mountPoint = "/home"; + label = ssdLabel; + fsType = "btrfs"; + options = [ "subvol=@home" ]; + }; + "btrfs_nix" = { + mountPoint = "/nix"; + label = ssdLabel; + fsType = "btrfs"; + options = [ "subvol=@nix" ]; + }; + }; + + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/roles/common/configuration.nix b/roles/common/configuration.nix index 29bf21d..8871d76 100755 --- a/roles/common/configuration.nix +++ b/roles/common/configuration.nix @@ -36,7 +36,8 @@ console = { packages = [ pkgs.terminus_font ]; earlySetup = true; - font = lib.mkDefault "ter-i16n"; + # mkDefault has 1000 priority, so that way I don't conflict with nixos-hardware + font = lib.mkOverride 999 "ter-i16n"; # Make the console use X's keyboard configuration useXkbConfig = true; }; diff --git a/roles/school/programs/default.nix b/roles/school/programs/default.nix index f1fad93..24dba3a 100644 --- a/roles/school/programs/default.nix +++ b/roles/school/programs/default.nix @@ -4,7 +4,6 @@ imports = [ ./virtualbox.nix ./idea.nix - ./webstorm.nix ./vscode.nix ]; diff --git a/roles/school/programs/webstorm.nix b/roles/school/programs/webstorm.nix deleted file mode 100644 index 66a2265..0000000 --- a/roles/school/programs/webstorm.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ pkgs, ... }: - -with pkgs; -{ - - home-manager.users.toast = { - home = { - packages = [ jetbrains.webstorm ]; - # Install plugins - file = { - ".local/share/JetBrains/WebStorm2023.2/catppuccin.jar".source = fetchurl { - url = "https://github.com/catppuccin/jetbrains/releases/download/v3.2.1/Catppuccin.Theme-3.2.1.jar"; - hash = "sha256-vE3Tv/dNfWyRuBJXLDPmtY1GnLShqM+dJR5rltXYdOY="; - }; - ".local/share/JetBrains/WebStorm2023.2/rainbow-brackets".source = fetchzip { - url = "https://github.com/izhangzhihao/intellij-rainbow-brackets/releases/download/2023.3.7/intellij-rainbow-brackets-2023.3.7.zip"; - hash = "sha256-szgyQs3iCge9rI274PA29i+tprPE11xpyJqiccedp6A="; - }; - }; - }; - }; -}