reformat and clean stuff up

This commit is contained in:
notgne2 2021-09-18 21:19:59 -07:00
parent b03b8f6328
commit 2b110a13c0
No known key found for this signature in database
GPG key ID: BB661E172B42A7F8
8 changed files with 363 additions and 504 deletions

View file

@ -4,10 +4,10 @@
imports = [
./ezvahi.nix
./ezwg.nix
./ezpc.nix
./kiosk.nix
./ezpassthru.nix
./fuckingprint.nix
./workstation.nix
./ezpw.nix
];
}

View file

@ -1,208 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.ezpc;
mainConfig = {
services.thermald.enable = true;
environment.etc."chromium/policies/managed/policies.json".text = ''
{
"NewTabPageLocation": "https://wizbos.club/"
}
'';
workstation.enable = true;
workstation.user = cfg.user;
networking.firewall.allowedTCPPorts = [ 22 ];
networking.firewall.allowedUDPPorts = [ 1900 ];
hardware.pulseaudio.enable = lib.mkDefault false;
sound.enable = lib.mkDefault false;
services.pipewire = {
enable = lib.mkDefault true;
jack.enable = lib.mkDefault true;
alsa.enable = lib.mkDefault true;
alsa.support32Bit = lib.mkDefault true;
pulse.enable = lib.mkDefault true;
media-session.config.bluez-monitor = {
properties = {
"bluez5.codecs" = [ "sbc" "aac" "ldac" "aptx" "aptx_hd" ];
"bluez5.mdbc-support" = true;
};
rules = [
{
actions = {
update-props = {
"bluez5.auto-connect" = [ "hfp_hf" "hsp_hs" "a2dp_sink" ];
"bluez5.hw-volume" =
[ "hfp_ag" "hsp_ag" "a2dp_source" "a2dp_sink" ];
};
};
matches = [{ "device.name" = "~bluez_card.*"; }];
}
{
actions = { update-props = { "node.pause-on-idle" = false; }; };
matches = [
{ "node.name" = "~bluez_input.*"; }
{ "node.name" = "~bluez_output.*"; }
];
}
];
};
};
xdg.portal.enable = lib.mkDefault true;
xdg.portal.gtkUsePortal = lib.mkDefault true;
xdg.portal.extraPortals = lib.mkDefault (with pkgs; [ xdg-desktop-portal-wlr xdg-desktop-portal-gtk ]);
# let me use audio and phones
programs.adb.enable = cfg.developer;
# Set some X11 props
services.xserver = {
enable = lib.mkDefault false;
layout = lib.mkDefault "us";
libinput.enable = true;
};
security.pam.services = {
swaylock.text = ''
auth include login
'';
};
};
notBatteryConfig = {
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
};
batteryConfig = {
services.upower = {
enable = true;
percentageLow = 15;
percentageCritical = 10;
percentageAction = 5;
};
services.tlp.enable = true;
services.tlp.extraConfig = ''
TLP_ENABLE=1
CPU_SCALING_GOVERNOR_ON_BAT=powersave
CPU_SCALING_GOVERNOR_ON_AC=ondemand
CPU_BOOST_ON_BAT=0
CPU_BOOST_ON_AC=1
CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT=30
CPU_MIN_PERF_ON_AC=0
CPU_MAX_PERF_ON_AC=100
CPU_ENERGY_PERF_POLICY_ON_BAT=power
CPU_ENERGY_PERF_POLICY_ON_AC=ondemand
'';
};
gamingConfig = {
environment.systemPackages =
let
steam = pkgs.steam.override { withJava = true; };
steam-run = steam.run;
newwine = (pkgs.wineFull.override { wineBuild = "wineWow"; wineRelease = "staging"; });
newwinetricks = pkgs.winetricks.override { wine = newwine; };
oldwine = (pkgs.wineFull.override { wineBuild = "wineWow"; });
oldwinetricks = pkgs.winetricks.override { wine = oldwine; };
in
with pkgs; ([
xlibs.xf86inputjoystick
oldwine
oldwinetricks
] ++ (if !cfg.flatSteam then [
steam
steam-run
(writeScriptBin "steam-run-native" ''
#!${pkgs.stdenv.shell}
${(steam.override { nativeOnly = true; }).run}/bin/steam-run $@
'')
] else [
# steam-run-native
]) ++ (
if cfg.newWine then [
(
pkgs.runCommand "new-wine-stuff"
{ } ''
mkdir -p $out/bin
ln -s ${newwine}/bin/wine $out/bin/new-wine
ln -s ${newwine}/bin/winecfg $out/bin/new-winecfg
ln -s ${newwinetricks}/bin/winetricks $out/bin/new-winetricks
''
)
] else [ ]
));
};
in
{
options.ezpc = {
enable = mkEnableOption "Enable simple PC config";
battery = mkOption {
type = types.bool;
default = false;
description = "If this device has a battery";
};
portals = mkOption {
type = types.bool;
default = false;
description = "use weird new hipster portal shit";
};
user = mkOption {
type = types.str;
description = "The main user of this PC";
};
gaming = mkOption {
type = types.bool;
default = false;
description = "If this PC is used for gaming";
};
flatSteam = mkOption {
type = types.bool;
default = false;
description = "If you use the flatpak Steam instead of NixOS";
};
print = mkOption {
type = types.bool;
default = false;
description = "If this PC should support printing/scanning";
};
developer = mkOption {
type = types.bool;
default = true;
description = "Should enable advanced shit for developers";
};
bluetooth = mkOption {
type = types.bool;
default = false;
description = "If this PC has bluetooth support";
};
newWine = mkOption {
type = types.bool;
default = false;
description = "If you want to include wine-staging as new-wine";
};
};
config = mkIf cfg.enable (
mkMerge [
mainConfig
(mkIf cfg.gaming gamingConfig)
(mkIf cfg.battery batteryConfig)
(mkIf (cfg.battery != true) notBatteryConfig)
]
);
}

54
modules/ezpw.nix Normal file
View file

@ -0,0 +1,54 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.ezpw;
in
{
options.services.ezpw = {
enable =
mkEnableOption
"Enable pipewire";
};
config = mkIf cfg.enable {
hardware.pulseaudio.enable = lib.mkDefault false;
sound.enable = lib.mkDefault false;
services.pipewire = {
enable = lib.mkDefault true;
jack.enable = lib.mkDefault true;
alsa.enable = lib.mkDefault true;
alsa.support32Bit = lib.mkDefault true;
pulse.enable = lib.mkDefault true;
media-session.config.bluez-monitor = {
properties = {
"bluez5.codecs" = [ "sbc" "aac" "ldac" "aptx" "aptx_hd" ];
"bluez5.mdbc-support" = true;
};
rules = [
{
actions = {
update-props = {
"bluez5.auto-connect" = [ "hfp_hf" "hsp_hs" "a2dp_sink" ];
"bluez5.hw-volume" =
[ "hfp_ag" "hsp_ag" "a2dp_source" "a2dp_sink" ];
};
};
matches = [{ "device.name" = "~bluez_card.*"; }];
}
{
actions = { update-props = { "node.pause-on-idle" = false; }; };
matches = [
{ "node.name" = "~bluez_input.*"; }
{ "node.name" = "~bluez_output.*"; }
];
}
];
};
};
xdg.portal.enable = lib.mkDefault true;
xdg.portal.gtkUsePortal = lib.mkDefault true;
xdg.portal.extraPortals = lib.mkDefault (with pkgs; [ xdg-desktop-portal-wlr xdg-desktop-portal-gtk ]);
};
}

View file

@ -11,13 +11,58 @@ in
type = types.str;
description = "The main user of this PC";
};
battery = mkOption {
type = types.bool;
default = false;
description = "If this device has a battery";
};
};
config = mkIf cfg.enable {
# support gay men (and video)
services.ezpw.enable = lib.mkDefault true;
security.pam.services = {
swaylock.text = ''
auth include login
'';
};
services.thermald.enable = lib.mkDefault true;
# Don't kill the battery
services.upower = {
enable = lib.mkDefault cfg.battery;
percentageLow = 15;
percentageCritical = 10;
percentageAction = 5;
criticalPowerAction = "Hibernate";
};
# Make battery usage sane
services.tlp = {
enable = lib.mkDefault cfg.battery;
extraConfig = ''
TLP_ENABLE=1
CPU_SCALING_GOVERNOR_ON_BAT=powersave
CPU_SCALING_GOVERNOR_ON_AC=ondemand
CPU_BOOST_ON_BAT=0
CPU_BOOST_ON_AC=1
CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT=30
CPU_MIN_PERF_ON_AC=0
CPU_MAX_PERF_ON_AC=100
CPU_ENERGY_PERF_POLICY_ON_BAT=power
CPU_ENERGY_PERF_POLICY_ON_AC=ondemand
'';
};
# Video support
hardware.opengl = {
enable = true;
# Fix steam
driSupport32Bit = true;
# Other drivers
extraPackages = with pkgs; [
intel-media-driver
vaapiIntel
@ -25,9 +70,12 @@ in
libvdpau-va-gl
];
};
hardware.steam-hardware.enable = true;
hardware.uinput.enable = true;
fonts.fontconfig.cache32Bit = true;
# Support for steam hardware
hardware.steam-hardware.enable = lib.mkDefault true;
# Needed for lots of controller stuff
hardware.uinput.enable = lib.mkDefault true;
# proton esync
systemd.extraConfig = "DefaultLimitNOFILE=1048576";
@ -58,16 +106,19 @@ in
];
};
# fuck alsa
nixpkgs.config.pulseaudio = true;
# brightness
programs.light.enable = true;
programs.light.enable = lib.mkDefault true;
# make fonts not fucked up
fonts.fontconfig.enable = true;
fonts.enableDefaultFonts = true;
services.xserver.dpi = lib.mkDefault 96;
fonts.fontconfig.enable = lib.mkDefault true;
fonts.enableDefaultFonts = lib.mkDefault true;
# Important for steam
fonts.fontconfig.cache32Bit = lib.mkDefault true;
services.xserver = {
dpi = lib.mkDefault 96;
layout = lib.mkDefault "us";
libinput.enable = lib.mkDefault true;
};
# this helps with some compatibility
hardware.pulseaudio.daemon.config = {
@ -86,8 +137,11 @@ in
}
];
# Used for upnp or something?
networking.firewall.allowedUDPPorts = [ 1900 ];
# Shit breaks without this lol
programs.dconf.enable = true;
programs.dconf.enable = lib.mkDefault true;
# better default swap
boot.kernel.sysctl = { "vm.swappiness" = lib.mkDefault 45; };
@ -98,22 +152,20 @@ in
];
# self explanatory
fuckingprint.enable = true;
fuckingprint.enable = lib.mkDefault true;
# Enable sound.
sound.enable = lib.mkOverride 1100 true;
hardware.pulseaudio.enable = lib.mkOverride 1100 true;
# Pulseaudio is off by defaultm but if you want it, make it work right
hardware.pulseaudio.support32Bit = lib.mkDefault true;
hardware.pulseaudio.zeroconf.discovery.enable = lib.mkDefault true;
hardware.pulseaudio.package = pkgs.pulseaudioFull;
hardware.pulseaudio.extraModules = [ pkgs.pulseaudio-modules-bt ];
hardware.pulseaudio.extraConfig = ''
load-module module-dbus-protocol
'';
# bluetooth
services.blueman.enable = true;
hardware.bluetooth.enable = true;
hardware.pulseaudio.extraModules = [ pkgs.pulseaudio-modules-bt ];
services.blueman.enable = lib.mkDefault true;
hardware.bluetooth.enable = lib.mkDefault true;
hardware.bluetooth.settings.General.Enable = "Source,Sink,Media,Socket";
};
}