diff --git a/flake.nix b/flake.nix index df3b55a..a757692 100644 --- a/flake.nix +++ b/flake.nix @@ -35,6 +35,11 @@ modules = [ ./system/ooksx1/ooksx1.nix ]; specialArgs = { inherit inputs outputs; }; }; + # T480s + ookst480s = lib.nixosSystem { + modules = [ ./system/ookst480s/ookst480s.nix ]; + specialArgs = { inherit inputs outputs; }; + }; }; homeConfigurations = { # X1 Carbon @@ -43,6 +48,11 @@ pkgs = pkgsFor.x86_64-linux; extraSpecialArgs = { inherit inputs outputs; }; }; + # X1 Carbon + "ooks@ookst480s" = lib.homeManagerConfiguration { + modules = [ ./home/ooks/ookst480s.nix ]; + pkgs = pkgsFor.x86_64-linux; + extraSpecialArgs = { inherit inputs outputs; }; }; }; } diff --git a/home/ooks/ookst480s.nix b/home/ooks/ookst480s.nix new file mode 100644 index 0000000..18aa6de --- /dev/null +++ b/home/ooks/ookst480s.nix @@ -0,0 +1,17 @@ +{ inputs, outputs, ... }: + +{ + imports = [ + ./opt/nvim + ./opt/shell + ./opt/desktop/hyprland + ./standard + ]; + + colorscheme = inputs.nix-colors.colorSchemes.everforest; + + home.username = "ooks"; + home.homeDirectory = "/home/ooks"; + + programs.home-manager.enable = true; +} diff --git a/system/ookst480s/hardware-configuration.nix b/system/ookst480s/hardware-configuration.nix new file mode 100644 index 0000000..c852b24 --- /dev/null +++ b/system/ookst480s/hardware-configuration.nix @@ -0,0 +1,62 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/db84a41f-6094-46b1-b98a-26e03afc18e1"; + fsType = "btrfs"; + options = [ "subvol=root" ]; + }; + + boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/3ea21f10-f705-457c-8366-a8268f658ba6"; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/db84a41f-6094-46b1-b98a-26e03afc18e1"; + fsType = "btrfs"; + options = [ "subvol=nix" ]; + }; + + fileSystems."/persist" = + { device = "/dev/disk/by-uuid/db84a41f-6094-46b1-b98a-26e03afc18e1"; + fsType = "btrfs"; + options = [ "subvol=persist" ]; + }; + + fileSystems."/swap" = + { device = "/dev/disk/by-uuid/db84a41f-6094-46b1-b98a-26e03afc18e1"; + fsType = "btrfs"; + options = [ "subvol=swap" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/45D8-8DC3"; + fsType = "vfat"; + }; + + swapDevices = [{ + device = "/swap/swapfile"; + size = 8196; + }]; + + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wwp0s20f0u2c2.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/system/ookst480s/ookst480s.nix b/system/ookst480s/ookst480s.nix new file mode 100644 index 0000000..1999bf4 --- /dev/null +++ b/system/ookst480s/ookst480s.nix @@ -0,0 +1,137 @@ + + + + +{ config, inputs, pkgs, ... }: + +# Imports +# ------------------------------------------------------------------------------------------------- + +{ + imports = [ + inputs.hardware.nixosModules.lenovo-thinkpad-t480s + + ./hardware-configuration.nix + + ../common/user/ooks + ../common/global + ../common/opt/bluetooth.nix + + ]; + +# Hostname and networking +# ------------------------------------------------------------------------------------------------- + + networking = { + hostName = "ookst480s"; + networkmanager.enable = true; + }; + + +# Printing +# ------------------------------------------------------------------------------------------------- + + services.printing.enable = true; + +# Kernel +# ------------------------------------------------------------------------------------------------ + + boot = { + kernelPackages = pkgs.linuxKernel.packages.linux_zen; + }; + + +# Laptop Programs +# ------------------------------------------------------------------------------------------------- + + powerManagement.powertop.enable = true; + programs = { + light.enable = true; + dconf.enable = true; + kdeconnect.enable = true; + }; + +# XDG Portal +# ------------------------------------------------------------------------------------------------ + + xdg.portal = { + enable = true; + wlr.enable = true; + }; + + hardware = { + opengl = { + enable = true; + }; + }; + +# gnupg +# ------------------------------------------------------------------------------------------------- + + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + +# Services +# ------------------------------------------------------------------------------------------------- + + services = { + logind = { + lidSwitch = "suspend"; + }; + dbus = { + enable = true; + packages = [ pkgs.gcr ]; + }; + auto-cpufreq = { + enable = true; + settings = { + battery = { + governor = "powersave"; + turbo = "never"; + }; + charger = { + governor = "performance"; + turbo = "auto"; + }; + }; + }; + }; + + systemd = { + user.services.polkit-gnome-authentication-agent-1 = { + description = "polkit-gnome-authentication-agent-1"; + wantedBy = [ "graphical-session.target" ]; + wants = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; + }; + +# Firewall +# ------------------------------------------------------------------------------------------------- + + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + +# System Version +# ------------------------------------------------------------------------------------------------- + + system = { + autoUpgrade = { + enable = false; + channel = "https://nixos.org/channels/nix-unstable"; + }; + stateVersion = "22.05"; + copySystemConfiguration = false; + }; +}