Initial commit
This commit is contained in:
41
hosts/phoenix/chromium.nix
Normal file
41
hosts/phoenix/chromium.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{ pkgs, ... }: {
|
||||
hm = {
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
package = pkgs.ungoogled-chromium;
|
||||
commandLineArgs = [
|
||||
"--enable-features=WebUIDarkMode,OzonePlatform,EncryptedClientHello,TouchpadOverscrollHistoryNavigation,VaapiVideoDecoder,WebAssembly"
|
||||
"--disable-features=UserAgentClientHint"
|
||||
"--force-webrtc-ip-handling-policy=default_public_interface_only"
|
||||
"--force-dark-mode"
|
||||
"--disable-beforeunload"
|
||||
"--disable-search-engine-collection"
|
||||
"--extension-mime-request-handling=download-as-regular-file"
|
||||
"--disable-top-sites"
|
||||
"--disable-file-system"
|
||||
"--disable-default-apps"
|
||||
"--disable-grease-tls"
|
||||
"--ozone-platform=wayland"
|
||||
# ''--js-flags="--jitless"''
|
||||
''
|
||||
--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"''
|
||||
''
|
||||
--http-accept-header="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"''
|
||||
"--fingerprinting-canvas-image-data-noise"
|
||||
"--fingerprinting-canvas-measuretext-noise"
|
||||
"--fingerprinting-client-rects-noise"
|
||||
"--enable-quic"
|
||||
"--gtk-version=4"
|
||||
];
|
||||
# extensions = [
|
||||
#
|
||||
# ];
|
||||
};
|
||||
};
|
||||
imp.home.dirs = [ ".config/chromium" ];
|
||||
|
||||
nodes.phoenix.hardware.graphics.extraPackages = with pkgs; [
|
||||
nvidia-vaapi-driver
|
||||
libvdpau-va-gl
|
||||
];
|
||||
}
|
35
hosts/phoenix/default.nix
Normal file
35
hosts/phoenix/default.nix
Normal file
@@ -0,0 +1,35 @@
|
||||
{ lib, config, ... }: {
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" ];
|
||||
|
||||
age.secrets.phoenix_user_password = {
|
||||
rekeyFile = ./secrets/password.age;
|
||||
owner = "user";
|
||||
group = "users";
|
||||
mode = "0400";
|
||||
};
|
||||
|
||||
n.host = {
|
||||
hardware.cpu = "amd";
|
||||
bootloader = "lanzaboote";
|
||||
|
||||
hostId = "053c9578";
|
||||
users."user" = lib.mkUser config.age.secrets.phoenix_user_password.path true;
|
||||
defaultUser = "user";
|
||||
types = [ "desktop" ];
|
||||
};
|
||||
|
||||
imports = [
|
||||
(lib.fs.zfs "/nix" "rpool/nix" null)
|
||||
(lib.fs.luks "crypted"
|
||||
"/dev/disk/by-partuuid/0f262ab8-0aad-5f42-8ee5-493f68465aff"
|
||||
{ header = "/dev/disk/by-partuuid/11ca2df8-17c3-47a2-8ba0-49976273008f";
|
||||
allowDiscards = true; # Used if primary device is a SSD
|
||||
preLVM = true; })
|
||||
|
||||
(lib.fs.tmpfs "/" "none" [ "mode=755" "size=40%" ])
|
||||
(lib.fs.vfat "/boot" "/dev/disk/by-uuid/6D12-D841" null)
|
||||
(lib.fs.swap "/dev/disk/by-uuid/391c74f2-8703-4d17-af3b-1f8087f8ad0a")
|
||||
];
|
||||
}
|
100
hosts/phoenix/games.nix
Normal file
100
hosts/phoenix/games.nix
Normal file
@@ -0,0 +1,100 @@
|
||||
{ pkgs, lib, inputs, username, ... }: {
|
||||
hm.home.packages = (with pkgs; [
|
||||
# steam-tui
|
||||
steamcmd
|
||||
steam-run
|
||||
xwayland-satellite
|
||||
# wineWow64Packages.waylandFull
|
||||
bottles
|
||||
|
||||
glfw3-minecraft
|
||||
prismlauncher
|
||||
|
||||
openspades
|
||||
# zeroad
|
||||
superTuxKart
|
||||
wine64Packages.waylandFull
|
||||
(pkgs.writeShellScriptBin "rungame"
|
||||
''export __NV_PRIME_RENDER_OFFLOAD=1
|
||||
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
|
||||
export __GLX_VENDOR_LIBRARY_NAME=nvidia
|
||||
export __VK_LAYER_NV_optimus=NVIDIA_only
|
||||
exec "${pkgs.gamemode}/bin/gamemoderun" "$@"''
|
||||
)
|
||||
]) ++ (
|
||||
let
|
||||
mkNixPak = inputs.nixpak.lib.nixpak { inherit pkgs; inherit lib; };
|
||||
mkGameRunner' = name: rw': exe: network: mkNixPak {
|
||||
config = { sloth, ... }:
|
||||
let runfile = pkgs.writeScriptBin name ''
|
||||
${exe}
|
||||
'';
|
||||
in {
|
||||
dbus.enable = false;
|
||||
gpu.enable = true;
|
||||
gpu.provider = "nixos";
|
||||
bubblewrap = {
|
||||
inherit network;
|
||||
sockets.pulse = true;
|
||||
sockets.wayland = true;
|
||||
bind.rw = rw';
|
||||
bind.ro = [ "/etc" "/sys" "/lib64" "${runfile}" "/bin" ];
|
||||
tmpfs = [ "/tmp" ];
|
||||
bind.dev = [ "/dev/nvidia0" "/dev/nvidiactl" "/dev/nvidia-modeset" ];
|
||||
};
|
||||
app.package = runfile;
|
||||
};
|
||||
};
|
||||
|
||||
mkWineGameRunner' = name: workdir: exe: network: (mkGameRunner' name [workdir]
|
||||
''WINEPREFIX="${workdir}/wineprefix" ${lib.getExe pkgs.wine64Packages.waylandFull} ${workdir}/${exe}'' network);
|
||||
mkSteamrunGameRunner' = name: workdir: exe: network: (mkGameRunner' name [workdir]
|
||||
''DISPLAY=:0 ${lib.getExe pkgs.steam-run} ${workdir}/${exe}'' network);
|
||||
mkWineGameRunner = name: workdir: exe: [
|
||||
((mkWineGameRunner' "${name}-run" workdir exe false).config.script)
|
||||
((mkWineGameRunner' "${name}-run-inet" workdir exe true).config.script)
|
||||
];
|
||||
mkSteamrunGameRunner = name: workdir: exe: [
|
||||
(mkSteamrunGameRunner' "${name}-run" workdir exe false).config.script
|
||||
(mkSteamrunGameRunner' "${name}-run-inet" workdir exe true).config.script
|
||||
];
|
||||
|
||||
dirs = ["/home/${username}/Games" "/mnt/gd" "/home/${username}/.wine"];
|
||||
in
|
||||
(mkWineGameRunner "littlenighmares" "/home/${username}/Games/LittleNightmares/1" "game_info/data/Atlas/Binaries/Win64/LittleNightmares.exe")
|
||||
|
||||
# (mkGameRunner' "wine-basic-run" dirs "${lib.getExe pkgs.wine64Packages.waylandFull} $@" false ).config.script
|
||||
# (mkGameRunner' "wine-basic-run-inet" dirs "${lib.getExe pkgs.wine64Packages.waylandFull} $@" true ).config.script
|
||||
);
|
||||
|
||||
programs = {
|
||||
steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = false; # Open ports in the firewall for Steam Remote Play
|
||||
# extest.enable = true;
|
||||
};
|
||||
|
||||
gamemode = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
boot.kernel.sysctl."kernel.unprivileged_userns_clone" = true;
|
||||
|
||||
imp.home.dirs = [
|
||||
".local/share/Steam" ".steam"
|
||||
".local/share/bottles"
|
||||
".local/share/PrismLauncher"
|
||||
".local/share/Paradox Interactive"
|
||||
".local/share/openspades"
|
||||
];
|
||||
|
||||
n.misc.unfreePackages = [
|
||||
"steam"
|
||||
"steam-unwrapped"
|
||||
"steamcmd"
|
||||
"steam-run"
|
||||
];
|
||||
}
|
139
hosts/phoenix/gnome.nix
Normal file
139
hosts/phoenix/gnome.nix
Normal file
@@ -0,0 +1,139 @@
|
||||
{ pkgs, lib, ... }: {
|
||||
services.xserver.desktopManager.gnome.enable = true;
|
||||
environment.gnome.excludePackages = (with pkgs; [
|
||||
gnome-tour
|
||||
yelp # Help view
|
||||
# ]) ++ (with pkgs.gnome; [
|
||||
tali # poker game
|
||||
iagno # go game
|
||||
hitori # sudoku game
|
||||
atomix # puzzle game
|
||||
]);
|
||||
programs.dconf.enable = true;
|
||||
|
||||
imp.home.dirs = [ ".local/share/keyrings" ];
|
||||
|
||||
hm = let
|
||||
extensions = with pkgs.gnomeExtensions; [
|
||||
# gnomeExtensions.user-themes
|
||||
blur-my-shell
|
||||
pop-shell
|
||||
vitals
|
||||
];
|
||||
# inherit (lib.hm.gvariant) mkTuple;
|
||||
in {
|
||||
dconf.settings = {
|
||||
"org/gnome/desktop/input-sources" = {
|
||||
# sources = [ (mkTuple [ "xkb" "us" ]) (mkTuple [ "xkb" "by+ru" ]) ];
|
||||
xkb-options = [ "grp:caps_toggle" "compose:rctrl" ];
|
||||
};
|
||||
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
enable-hot-corners = false;
|
||||
# gtk-theme = "adw-gtk3-dark";
|
||||
show-battery-percentage = true;
|
||||
toolkit-accessibility = false;
|
||||
};
|
||||
|
||||
"org/gnome/desktop/peripherals/touchpad" = {
|
||||
tap-to-click = true;
|
||||
two-finger-scrolling-enabled = true;
|
||||
};
|
||||
|
||||
"org/gnome/desktop/wm/keybindings" = let
|
||||
binds = map (x: { "switch-to-workspace-${toString x}" = [ "<Super>${toString x}" ];
|
||||
"move-to-workspace-${toString x}" = [ "<Shift><Super>${toString x}" ]; }) [1 2 3 4 5 6 7 8 9];
|
||||
in lib.mkMerge (binds ++ [{
|
||||
close = [ "<Shift><Super>q" ];
|
||||
minimize = [ "<Super>minus" ];
|
||||
switch-input-source = [];
|
||||
switch-input-source-backward = [];
|
||||
toggle-fullscreen = [ "<Super>F11" ];
|
||||
}]);
|
||||
|
||||
"org/gnome/mutter" = {
|
||||
dynamic-workspaces = false;
|
||||
};
|
||||
|
||||
"org/gnome/settings-daemon/plugins/color" = {
|
||||
night-light-enabled = true;
|
||||
night-light-schedule-automatic = true;
|
||||
night-light-schedule-from = 20.0;
|
||||
night-light-schedule-to = 9.0;
|
||||
night-light-temperature = 3469;
|
||||
};
|
||||
|
||||
"org/gnome/settings-daemon/plugins/media-keys" = {
|
||||
calculator = [ "Calculator" ];
|
||||
custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" ];
|
||||
mic-mute = [ "AudioMicMute" ];
|
||||
screensaver = [ "ScreenSaver" ];
|
||||
volume-down = [ "AudioLowerVolume" ];
|
||||
volume-mute = [ "AudioMute" ];
|
||||
volume-up = [ "AudioRaiseVolume" ];
|
||||
www = [ "<Super>b" ];
|
||||
};
|
||||
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
|
||||
binding = "<Super>Return";
|
||||
command = lib.getExe pkgs.gnome-terminal;
|
||||
name = "GNOME Terminal";
|
||||
};
|
||||
|
||||
"org/gnome/shell/extensions/pop-shell" = {
|
||||
active-hint = false;
|
||||
fullscreen-launcher = false;
|
||||
mouse-cursor-follows-active-window = true;
|
||||
show-skip-taskbar = true;
|
||||
show-title = true;
|
||||
smart-gaps = true;
|
||||
snap-to-grid = true;
|
||||
stacking-with-mouse = true;
|
||||
tile-by-default = true;
|
||||
tile-enter = [ "<Super>r" ];
|
||||
};
|
||||
|
||||
"org/gnome/shell/extensions/vitals" = {
|
||||
alphabetize = false;
|
||||
fixed-widths = true;
|
||||
hide-icons = false;
|
||||
hide-zeros = true;
|
||||
hot-sensors = [ "_memory_usage_" "_processor_usage_" "_storage_free_" ];
|
||||
memory-measurement = 1;
|
||||
menu-centered = false;
|
||||
position-in-panel = 2;
|
||||
};
|
||||
|
||||
"org/gnome/shell/keybindings" = {
|
||||
toggle-application-view = [ "<Super>d" ];
|
||||
toggle-quick-settings = [ "<Shift><Super>d" ];
|
||||
};
|
||||
|
||||
# "org/gnome/shell.favorite-apps" = [
|
||||
# # "chromium.desktop"
|
||||
# "org.gnome.terminal.desktop"
|
||||
# "org.gnome.nautilus.desktop"
|
||||
# ];
|
||||
|
||||
"org/gnome/shell" = {
|
||||
disable-user-extensions = false;
|
||||
enabled-extensions = map (x: x.extensionUuid) extensions;
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
packages = (with pkgs; [
|
||||
# pinentry-gnome # maybe I'll delete it
|
||||
# cava
|
||||
adw-gtk3
|
||||
dconf
|
||||
gnome-tweaks
|
||||
]) ++ extensions;
|
||||
|
||||
sessionVariables.GTK_THEME = "adw-gtk3-dark";
|
||||
};
|
||||
};
|
||||
|
||||
environment.etc."lemurs/wayland/gnome".source = pkgs.writeShellScript "gnome.sh" "${pkgs.gnome-shell}/bin/niri";
|
||||
}
|
41
hosts/phoenix/gpu.nix
Normal file
41
hosts/phoenix/gpu.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{ lib, config, ... }: {
|
||||
boot.initrd.kernelModules = [ "nvidia" ];
|
||||
boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
|
||||
services.xserver.videoDrivers = [ "nvidia" "modesetting" ];
|
||||
|
||||
hardware = {
|
||||
nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = false;
|
||||
powerManagement.finegrained = false;
|
||||
open = false; # Use open kernel module, not nouveau
|
||||
nvidiaSettings = true;
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
# package = config.boot.kernelPackages.nvidiaPackages.stable.override {
|
||||
# disable32Bit = true;
|
||||
# };
|
||||
|
||||
|
||||
prime = {
|
||||
amdgpuBusId = "PCI:5:0:0";
|
||||
nvidiaBusId = "PCI:1:0:0";
|
||||
|
||||
offload = {
|
||||
enable = true;
|
||||
enableOffloadCmd = true;
|
||||
};
|
||||
reverseSync.enable = lib.mkForce false;
|
||||
sync.enable = lib.mkForce false;
|
||||
};
|
||||
};
|
||||
|
||||
graphics.enable = true; # OpenGL
|
||||
};
|
||||
|
||||
nixpkgs.config.nvidia.acceptLicense = true;
|
||||
n.misc.unfreePackages = [
|
||||
"nvidia-x11"
|
||||
"nvidia-settings"
|
||||
"nvidia-persistenced"
|
||||
];
|
||||
}
|
12
hosts/phoenix/obsidian.nix
Normal file
12
hosts/phoenix/obsidian.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ pkgs, ... }: {
|
||||
# nixpkgs.overlays = [
|
||||
# (final: prev: {
|
||||
# electron = final.electron_33-bin;
|
||||
# electron_34 = final.electron_33-bin;
|
||||
# })
|
||||
# ];
|
||||
|
||||
n.misc.unfreePackages = [ "obsidian" ];
|
||||
hm.home.packages = [ pkgs.obsidian ];
|
||||
imp.home.dirs = [ ".config/obsidian" "Knowledge" ];
|
||||
}
|
4
hosts/phoenix/postgres.nix
Normal file
4
hosts/phoenix/postgres.nix
Normal file
@@ -0,0 +1,4 @@
|
||||
{ ... }: {
|
||||
services.postgresql.enable = true;
|
||||
imp.dirs = [ "/var/lib/postgresql" ];
|
||||
}
|
9
hosts/phoenix/secrets/password.age
Normal file
9
hosts/phoenix/secrets/password.age
Normal file
@@ -0,0 +1,9 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 8IT6eg zOyK3R9L2wLc3j24BeClZfV0qreGhCUEAKe5I/ek/RQ
|
||||
p8Cs+J6Wr2gqbuxk9pBHzswsVu3hFBsi69fkxvGxNIE
|
||||
-> zh:p3}L;-grease 0r+81 g
|
||||
Fd+eCNxUNT6oCVS+ljiPObC9d0oIZQSwkXIhIaEyugAdMBRIfvniO9nkHiHn
|
||||
--- TsFWr7WQ1ublsHFf0In5XgH+THVqE9w7B3AWv4WthTo
|
||||
+,
|
||||
|
||||
ձ<EFBFBD>7<EFBFBD><EFBFBD><EFBFBD><EFBFBD>>f<<3C><><EFBFBD>5<EFBFBD>^<5E>Y<EFBFBD><59>w<EFBFBD>Ȁ<EFBFBD>9m|\͉?<3F><>\<1A>kaVk<56>W<>ܒo<DC92><6F>S*<2A>q.<2E><>]`<60>[6<>5,Mϟ<4D><CF9F>ZƊB<><42><EFBFBD>di4<69><34>җ<EFBFBD><D297>N<EFBFBD><4E>d<EFBFBD>
|
Reference in New Issue
Block a user