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

@ -27,12 +27,12 @@
outputs = { self, nixpkgs, ... }@inputs: {
nixosModules = {
ezpassthru = import ./modules/ezpassthru.nix;
ezpc = import ./modules/ezpc.nix;
ezvahi = import ./modules/ezvahi.nix;
ezwg = import ./modules/ezwg.nix;
kiosk = import ./modules/kiosk.nix;
fuckingprint = import ./modules/fuckingprint.nix;
workstation = import ./modules/workstation.nix;
ezpw = import ./modules/ezpw.nix;
all = import ./modules/default.nix;
};

View File

@ -17,7 +17,8 @@ let
s' = builtins.match "(..)(..)(..)|(.)(.)(.)" c;
ss = builtins.elemAt s';
o = if ss 0 == null then 3 else 0;
in {
in
{
r = ss (0 + o);
g = ss (1 + o);
b = ss (2 + o);
@ -50,11 +51,13 @@ let
}
);
genTheme = repo: mustache (makeScheme cfg.base16 // {
genTheme = repo: mustache
(makeScheme cfg.base16 // {
scheme-name = cfg.favColors.name;
scheme-slug = "idk";
scheme-author = "nixos";
}) cfg.favColors.name "${repo}/templates/default.mustache";
})
cfg.favColors.name "${repo}/templates/default.mustache";
in
{
options.colors = {

View File

@ -97,7 +97,7 @@ let
'';
ezDrv =
pkgs.runCommand "ez"
pkgs.runCommand "ez-commands"
{ }
(
''
@ -121,17 +121,6 @@ let
)
);
# TODO: why wont this work in an overlay
pnpm2nix =
pkgs.callPackage
(
builtins.fetchGit {
url = "https://github.com/notgne2/pnpm2nix.git";
rev = "d2863404330c6646800a49e73240e29e3265b594";
}
)
{ };
rofiMenu =
if cfg.wayland then
"${rofiBin} -show drun -show-icons -run-command 'swaymsg exec -- {cmd}'"
@ -318,14 +307,10 @@ let
menu = rofiMenu;
bars =
if (cfg.babybar || cfg.wayland != true) then [
{
bars = lib.optional (cfg.babybar || cfg.wayland != true) {
position = "top";
colors = config.colors.i3BarColors;
}
] else
[ ];
};
gaps = {
smartGaps = true;
@ -364,28 +349,6 @@ let
programs.chromium = {
enable = true;
package = pkgs.ungoogled-chromium;
extensions = [
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
{ id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; } # dark reader
{ id = "nngceckbapebfimnlniiiahkandclblb"; } # bitwarden
{
# chromium web store
id = "ocaahdebbfolfmndjeplogmgcagdmblk";
crxPath = builtins.fetchurl {
name = "chromium-web-store.crx";
url = "https://github.com/NeverDecaf/chromium-web-store/releases/download/v1.4.0/Chromium.Web.Store.crx";
sha256 = "1bfzd02a9krkapkbj51kxfp4a1q5x2m2pz5kv98ywfcarbivskgs";
};
version = "1.4.0";
}
{ id = "lanfdkkpgfjfdikkncbnojekcppdebfp"; } # canvas fingerprint defend
{ id = "fhkphphbadjkepgfljndicmgdlndmoke"; } # font fingerprint defend
{ id = "olnbjpaejebpnokblkepbphhembdicik"; } # webgl fingerprint defend
{ id = "pcbjiidheaempljdefbdplebgdgpjcbe"; } # audio fingerprint defend
{ id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; } # tampermonkey
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; } # vimium
{ id = "npeicpdbkakmehahjeeohfdhnlpdklia"; } # webrtc network limiter
];
};
services.lorri.enable = true;
@ -412,33 +375,6 @@ let
Install = { WantedBy = [ "graphical-session.target" ]; };
};
# systemd.user.services.pulseaudio-dlna = {
# Unit = {
# Description =
# "A lightweight streaming server which brings DLNA / UPNP and Chromecast support to PulseAudio and Linux";
# After = [ "network.target" "sound.target" ];
# };
# Service = {
# ExecStart = "${pkgs.pulseaudio-dlna}/bin/pulseaudio-dlna --port 10291";
# Environment =
# let
# toolPaths = makeBinPath [ pkgs.pulseaudio pkgs.dbus ];
# in
# [ "PATH=${toolPaths}" ];
# type = "idle";
# };
# Install = { WantedBy = [ "default.target" ]; };
# };
xdg.configFile."fish/functions/humanize_duration.fish".source =
pkgs.fetchurl {
url =
"https://raw.githubusercontent.com/fishpkg/fish-humanize-duration/master/humanize_duration.fish";
sha256 = "0abjc9dab8sx2lr28dp36vy9c4rd95badiypbkfjyvdxd9nig6zr";
};
home.sessionVariables = { BW_SESSION = cfg.bitwardenSession; };
services.mpd = {
@ -489,10 +425,25 @@ let
fonts.fontconfig.enable = true;
home.packages = with pkgs;
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.wineWowPackages.full;
oldwinetricks = pkgs.winetricks.override { wine = oldwine; };
in
[
xlibs.xf86inputjoystick
oldwine
oldwinetricks
flameshot
# needed for fish done stuff
jq
ezDrv
@ -502,35 +453,47 @@ let
kitty
pavucontrol
mpv
youtube-dl
yt-dlp
xorg.xkill
maim
slop
ark
gwenview
notify-osd
libnotify
ffmpeg
id3v2
imagemagick
gimp
mumble
libreoffice
mpc_cli
nix-index
]
++ (
if cfg.developer then [
] ++ (lib.optionals cfg.developer [
openvpn
gitAndTools.hub
morph
nmap
nixpkgs-fmt
] else
[ ]
);
]) ++ (lib.optionals cfg.gaming [
xlibs.xf86inputjoystick
oldwine
oldwinetricks
]) ++ (lib.optionals (cfg.gaming && !cfg.flatSteam) [
steam
steam-run
(writeScriptBin "steam-run-native" ''
#!${pkgs.stdenv.shell}
${(steam.override { nativeOnly = true; }).run}/bin/steam-run $@
'')
]) ++ (lib.optionals (cfg.gaming && cfg.newWine) [
(
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
''
)
]);
programs.rofi = {
enable = true;
@ -557,7 +520,7 @@ let
({
modules-left = [ "sway/workspaces" "sway/mode" ];
modules-center = [ "clock" "mpd" ];
modules-right = (if cfg.battery then [ "battery" ] else [ ])
modules-right = (lib.optional cfg.battery "battery")
++ [ "pulseaudio" "network" "memory" "cpu" "temperature" "tray" ];
position = "left";
width = 50;
@ -698,10 +661,7 @@ let
pkgs.swayidle
xwayland
rxvt_unicode
dmenu
libappindicator-gtk3
xdg-desktop-portal
xdg-desktop-portal-wlr
];
};
xConfig =
@ -802,15 +762,7 @@ let
vSync = true;
#refreshRate = 144;
blur = true;
package = pkgs.picom.overrideAttrs (
_: {
src = builtins.fetchGit {
url = "https://github.com/ibhagwan/picom";
ref = "next-rebase";
rev = "6d87428f78a46bea295e0a21d23c4b56133aadc3";
};
}
);
package = pkgs.picom;
experimentalBackends = true;
blurExclude = [
"window_type = 'dock'"
@ -851,6 +803,18 @@ in
options.ezpcusr = {
enable = mkEnableOption "Enable simple PC user config";
newWine = mkOption {
type = types.bool;
default = false;
description = "If you want to include wine-staging as new-wine";
};
flatSteam = mkOption {
type = types.bool;
default = false;
description = "If you use the flatpak Steam instead of NixOS";
};
wayland = mkOption {
default = true;
description = "Enable wayland config (disabling this is experimental)";
@ -969,12 +933,6 @@ in
default = false;
description = "If this PC has a battery";
};
tiling = mkOption {
type = types.bool;
default = true;
description = "If you are based and redpilled, and want a tiling WM (deprecated)";
};
};
config = mkIf cfg.enable (

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";
};
}