reformat and clean stuff up
This commit is contained in:
parent
b03b8f6328
commit
2b110a13c0
8 changed files with 363 additions and 504 deletions
|
@ -4,10 +4,10 @@
|
|||
imports = [
|
||||
./ezvahi.nix
|
||||
./ezwg.nix
|
||||
./ezpc.nix
|
||||
./kiosk.nix
|
||||
./ezpassthru.nix
|
||||
./fuckingprint.nix
|
||||
./workstation.nix
|
||||
./ezpw.nix
|
||||
];
|
||||
}
|
||||
|
|
208
modules/ezpc.nix
208
modules/ezpc.nix
|
@ -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
54
modules/ezpw.nix
Normal 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 ]);
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue