From 3989a16015e40e2b9b49e3d4aeefe4d7b8789d40 Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Mon, 25 Apr 2022 21:54:53 -0400 Subject: [PATCH] start to split nix into modules --- modules/applications/keybase.nix | 6 ++++ modules/gaming/common.nix | 9 +++++ modules/gaming/leagueoflegends.nix | 14 ++++++++ modules/gaming/lutris.nix | 9 +++++ modules/gaming/steam.nix | 10 ++++++ modules/system/doas.nix | 28 +++++++++++++++ modules/system/timezone.nix | 14 ++++++++ nixos/configuration.nix | 56 ++---------------------------- 8 files changed, 93 insertions(+), 53 deletions(-) create mode 100644 modules/applications/keybase.nix create mode 100644 modules/gaming/common.nix create mode 100644 modules/gaming/leagueoflegends.nix create mode 100644 modules/gaming/lutris.nix create mode 100644 modules/gaming/steam.nix create mode 100644 modules/system/doas.nix create mode 100644 modules/system/timezone.nix diff --git a/modules/applications/keybase.nix b/modules/applications/keybase.nix new file mode 100644 index 0000000..ea8fda7 --- /dev/null +++ b/modules/applications/keybase.nix @@ -0,0 +1,6 @@ +{ config, ... }: { + config = { + services.keybase.enable = true; + services.kbfs.enable = true; + }; +} diff --git a/modules/gaming/common.nix b/modules/gaming/common.nix new file mode 100644 index 0000000..e074730 --- /dev/null +++ b/modules/gaming/common.nix @@ -0,0 +1,9 @@ +{ config, ... }: { + + config = { + hardware.opengl = { + enable = true; + driSupport32Bit = true; + }; + }; +} diff --git a/modules/gaming/leagueoflegends.nix b/modules/gaming/leagueoflegends.nix new file mode 100644 index 0000000..84d068f --- /dev/null +++ b/modules/gaming/leagueoflegends.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + imports = [ ./common.nix ./lutris.nix ]; + + config = { + + # League of Legends anti-cheat + boot.kernel.sysctl = { "abi.vsyscall32" = 0; }; + + environment.systemPackages = with pkgs; [ openssl dconf ]; + + }; +} diff --git a/modules/gaming/lutris.nix b/modules/gaming/lutris.nix new file mode 100644 index 0000000..8ecf177 --- /dev/null +++ b/modules/gaming/lutris.nix @@ -0,0 +1,9 @@ +{ config, pkgs, ... }: + +{ + + imports = [ ./common.nix ]; + + config = { environment.systemPackages = with pkgs; [ lutris amdvlk wine ]; }; + +} diff --git a/modules/gaming/steam.nix b/modules/gaming/steam.nix new file mode 100644 index 0000000..38c4bab --- /dev/null +++ b/modules/gaming/steam.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: { + + imports = [ ./common.nix ]; + + config = { + hardware.steam-hardware.enable = true; + environment.systemPackages = with pkgs; [ steam ]; + }; + +} diff --git a/modules/system/doas.nix b/modules/system/doas.nix new file mode 100644 index 0000000..3fdcdef --- /dev/null +++ b/modules/system/doas.nix @@ -0,0 +1,28 @@ +# Replace sudo with doas + +{ config, ... }: { + + config = { + security = { + + # Remove sudo + sudo.enable = false; + + # Add doas + doas = { + enable = true; + + # No password required + wheelNeedsPassword = false; + + # Pass environment variables from user to root + # Also requires removing password here + extraRules = [{ + groups = [ "wheel" ]; + noPass = true; + keepEnv = true; + }]; + }; + }; + }; +} diff --git a/modules/system/timezone.nix b/modules/system/timezone.nix new file mode 100644 index 0000000..7af7da6 --- /dev/null +++ b/modules/system/timezone.nix @@ -0,0 +1,14 @@ +{ config, ... }: + +{ + config = { + + # Service to determine location for time zone + services.geoclue2.enable = true; + location = { provider = "geoclue2"; }; + + # Enable local time based on time zone + services.localtime.enable = true; + + }; +} diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 9f5efc0..06121f8 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -7,6 +7,9 @@ { imports = [ # Include the results of the hardware scan. /etc/nixos/hardware-configuration.nix + ../modules/system/timezone.nix + ../modules/system/doas.nix + ../modules/gaming/steam.nix ]; nixpkgs.config.allowUnfree = true; @@ -19,12 +22,6 @@ # networking.hostName = "nixos"; # Define your hostname. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - # Set your time zone, also used by redshift - services.localtime.enable = true; - services.avahi.enable = true; - services.geoclue2.enable = true; - location = { provider = "geoclue2"; }; - # The global useDHCP flag is deprecated, therefore explicitly set to false here. # Per-interface useDHCP will be mandatory in the future, so this generated config # replicates the default behaviour. @@ -83,8 +80,6 @@ }; - hardware.acpilight.enable = true; - # Required for setting GTK theme (for preferred-color-scheme in browser) services.dbus.packages = with pkgs; [ pkgs.dconf ]; @@ -104,37 +99,6 @@ ]; fonts.fontconfig.defaultFonts.monospace = [ "Victor Mono" ]; - # Gaming - hardware.opengl = { - enable = true; - driSupport32Bit = true; - }; - hardware.steam-hardware.enable = true; - boot.kernel.sysctl = { "abi.vsyscall32" = 0; }; # League of Legends anti-cheat - - # Replace sudo with doas - security = { - - # Remove sudo - sudo.enable = false; - - # Add doas - doas = { - enable = true; - - # No password required - wheelNeedsPassword = false; - - # Pass environment variables from user to root - # Also requires removing password here - extraRules = [{ - groups = [ "wheel" ]; - noPass = true; - keepEnv = true; - }]; - }; - }; - # Define a user account. Don't forget to set a password with ‘passwd’. users.users.noah = { @@ -173,18 +137,8 @@ # Mouse config libratbag # Mouse adjustments piper # Mouse adjustments GUI - - # Gaming - steam - lutris - amdvlk - wine - openssl # Required for League of Legends - dconf ]; - # environment.variables = { NIX_SKIP_KEYBASE_CHECKS = "1"; }; - # Reduce blue light at night services.redshift = { enable = true; @@ -197,10 +151,6 @@ # Detect monitors (brightness) hardware.i2c.enable = true; - # Login to Keybase in the background - services.keybase.enable = true; - services.kbfs.enable = true; - # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true;