removed readFile of self which rebuilt every change

This commit is contained in:
Gerg-L 2023-07-03 18:50:21 -04:00
parent 1d2844a34f
commit ca1c54245f
6 changed files with 179 additions and 30 deletions

View file

@ -14,7 +14,7 @@ Section "InputClass"
Option "Tapping" "on" Option "Tapping" "on"
Option "TappingDragLock" "on" Option "TappingDragLock" "on"
Option "DisableWhileTyping" "off" Option "DisableWhileTyping" "off"
Option "Resolution" "3000" Option "Resolution" "3000"
EndSection EndSection
Section "ServerFlags" Section "ServerFlags"
@ -32,6 +32,7 @@ EndSection
Section "Module" Section "Module"
Load "glx" Load "glx"
EndSection EndSection
Section "Monitor" Section "Monitor"
Identifier "Monitor0" Identifier "Monitor0"
VendorName "Monitor Vendor" VendorName "Monitor Vendor"
@ -41,16 +42,16 @@ Section "Monitor"
Option "PreferredMode" "1920x1080_144" Option "PreferredMode" "1920x1080_144"
Option "DPMS" "false" Option "DPMS" "false"
EndSection EndSection
Section "Device"
Section "Device"
Identifier "Card0" Identifier "Card0"
Driver "amdgpu" Driver "amdgpu"
BusID "PCI:15:0:0" BusID "PCI:15:0:0"
EndSection EndSection
Section "Screen" Section "Screen"
Identifier "Screen0" Identifier "Screen0"
Device "Card0" Device "Card0"
Monitor "Monitor0" Monitor "Monitor0"
Option "TearFree" "true" Option "TearFree" "true"
EndSection EndSection

View file

@ -7,7 +7,6 @@ Section "ServerFlags"
Option "BlankTime" "0" Option "BlankTime" "0"
EndSection EndSection
Section "Monitor" Section "Monitor"
Identifier "Monitor" Identifier "Monitor"
Option "DPMS" "false" Option "DPMS" "false"
@ -32,32 +31,32 @@ Section "InputClass"
Option "Resolution" "3000" Option "Resolution" "3000"
EndSection EndSection
Section "ServerLayout" Section "ServerLayout"
Identifier "layout" Identifier "layout"
Screen 0 "nvidia" Screen 0 "nvidia"
Inactive "amdgpu" Inactive "amdgpu"
EndSection EndSection
Section "Device" Section "Device"
Identifier "nvidia" Identifier "nvidia"
Driver "nvidia" Driver "nvidia"
BusID "PCI:1:0:0" BusID "PCI:1:0:0"
EndSection EndSection
Section "Screen" Section "Screen"
Identifier "nvidia" Identifier "nvidia"
Device "nvidia" Device "nvidia"
Option "AllowEmptyInitialConfiguration" Option "AllowEmptyInitialConfiguration"
EndSection EndSection
Section "Device" Section "Device"
Identifier "amdgpu" Identifier "amdgpu"
Driver "amdgpu" Driver "amdgpu"
BusID "PCI:15:0:0" BusID "PCI:15:0:0"
EndSection EndSection
Section "Screen" Section "Screen"
Identifier "amdgpu" Identifier "amdgpu"
Device "amdgpu" Device "amdgpu"
EndSection EndSection

View file

@ -43,8 +43,22 @@ let
###END OF TAKEN PART ###END OF TAKEN PART
in { in {
environment.etc = { environment.etc = {
"Xorg/1_mon".source = pkgs.runCommand "1_mon" {} (xserverbase + "cat '${self}/misc/1-monitor.conf' >> $out"); "Xorg/1_mon.conf".source = pkgs.runCommand "1_mon.conf" {} (
"Xorg/2_mon".source = pkgs.runCommand "2_mon" {} (xserverbase + "cat '${self}/misc/2-monitor.conf' >> $out"); xserverbase
+ ''
cat << EOF >> $out
${builtins.readFile ./1_mon.conf}
EOF
''
);
"Xorg/2_mon.conf".source = pkgs.runCommand "2_mon.conf" {} (
xserverbase
+ ''
cat << EOF >> $out
${builtins.readFile ./2_mon.conf}
EOF
''
);
}; };
####VM SOUND BORKED ####VM SOUND BORKED
services.pipewire.package = pipewire_fix.legacyPackages.${pkgs.system}.pipewire; services.pipewire.package = pipewire_fix.legacyPackages.${pkgs.system}.pipewire;
@ -103,9 +117,9 @@ in {
users.users.gerg.extraGroups = ["kvm" "libvirtd"]; users.users.gerg.extraGroups = ["kvm" "libvirtd"];
services.xserver.displayManager.xserverArgs = lib.mkAfter ["-config /etc/Xorg/current"]; services.xserver.displayManager.xserverArgs = lib.mkAfter ["-config /etc/Xorg/active.conf"];
services.xserver.displayManager.sessionCommands = lib.mkBefore '' services.xserver.displayManager.sessionCommands = lib.mkBefore ''
if ! [ -e "/tmp/ONE_MONITOR" ] ; then if ! [ -e "/etc/Xorg/ONE_MONITOR" ] ; then
xrandr --output DP-0 --auto --mode 3440x1440 --rate 120 --primary --pos 0x0 xrandr --output DP-0 --auto --mode 3440x1440 --rate 120 --primary --pos 0x0
xrandr --output HDMI-A-1-0 --auto --mode 1920x1080 --rate 144 --set TearFree on --pos 3440x360 xrandr --output HDMI-A-1-0 --auto --mode 1920x1080 --rate 144 --set TearFree on --pos 3440x360
xset -dpms xset -dpms
@ -127,8 +141,8 @@ in {
systemctl set-property --runtime -- user.slice AllowedCPUs=8-15,24-31 systemctl set-property --runtime -- user.slice AllowedCPUs=8-15,24-31
systemctl set-property --runtime -- system.slice AllowedCPUs=8-15,24-31 systemctl set-property --runtime -- system.slice AllowedCPUs=8-15,24-31
systemctl set-property --runtime -- init.scope AllowedCPUs=8-15,24-31 systemctl set-property --runtime -- init.scope AllowedCPUs=8-15,24-31
ln -fs /etc/Xorg/1_mon /etc/Xorg/current ln -fs /etc/Xorg/1_mon.conf /etc/Xorg/active.conf
touch /tmp/ONE_MONITOR touch /etc/Xorg/ONE_MONITOR
systemctl start display-manager.service systemctl start display-manager.service
fi fi
if [ "$OPERATION" == "release" ]; then if [ "$OPERATION" == "release" ]; then
@ -139,14 +153,14 @@ in {
${pkgs.libvirt}/bin/virsh nodedev-reattach pci_0000_01_00_0 ${pkgs.libvirt}/bin/virsh nodedev-reattach pci_0000_01_00_0
${pkgs.libvirt}/bin/virsh nodedev-reattach pci_0000_01_00_1 ${pkgs.libvirt}/bin/virsh nodedev-reattach pci_0000_01_00_1
modprobe -a nvidia_uvm nvidia_drm nvidia nvidia_modeset modprobe -a nvidia_uvm nvidia_drm nvidia nvidia_modeset
ln -fs /etc/Xorg/2_mon /etc/Xorg/current ln -fs /etc/Xorg/2_mon.conf /etc/Xorg/active.conf
rm /tmp/ONE_MONITOR rm /etc/Xorg/ONE_MONITOR
systemctl start display-manager.service systemctl start display-manager.service
fi fi
fi fi
''; '';
in [ in [
"L /etc/Xorg/current - - - - /etc/Xorg/2_mon" "L /etc/Xorg/active.conf - - - - /etc/Xorg/2_mon.conf"
"L+ /var/lib/libvirt/hooks/qemu - - - - ${qemuHook}" "L+ /var/lib/libvirt/hooks/qemu - - - - ${qemuHook}"
"L+ /var/lib/libvirt/qemu/Windows.xml - - - - ${self}/misc/Windows.xml" "L+ /var/lib/libvirt/qemu/Windows.xml - - - - ${self}/misc/Windows.xml"
]; ];

145
modules/boot/stage-2-init.sh Executable file
View file

@ -0,0 +1,145 @@
#! @shell@
exec 1<>/dev/null
systemConfig=@systemConfig@
export HOME=/root PATH="@path@"
if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then
# Process the kernel command line.
for o in $(</proc/cmdline); do
case $o in
boot.debugtrace)
# Show each command.
set -x
;;
esac
done
# Print a greeting.
echo
echo -e "\e[1;32m<<< @distroName@ Stage 2 >>>\e[0m"
echo
# Normally, stage 1 mounts the root filesystem read/writable.
# However, in some environments, stage 2 is executed directly, and the
# root is read-only. So make it writable here.
if [ -z "$container" ]; then
mount -n -o remount,rw none /
fi
fi
# Likewise, stage 1 mounts /proc, /dev and /sys, so if we don't have a
# stage 1, we need to do that here.
if [ ! -e /proc/1 ]; then
specialMount() {
local device="$1"
local mountPoint="$2"
local options="$3"
local fsType="$4"
# We must not overwrite this mount because it's bind-mounted
# from stage 1's /run
if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" = true ] && [ "${mountPoint}" = /run ]; then
return
fi
install -m 0755 -d "$mountPoint"
mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
}
source @earlyMountScript@
fi
if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" = true ]; then
echo "booting system configuration ${systemConfig}"
else
echo "booting system configuration $systemConfig" > /dev/kmsg
fi
# Make /nix/store a read-only bind mount to enforce immutability of
# the Nix store. Note that we can't use "chown root:nixbld" here
# because users/groups might not exist yet.
# Silence chown/chmod to fail gracefully on a readonly filesystem
# like squashfs.
chown -f 0:30000 /nix/store
chmod -f 1775 /nix/store
if [ -n "@readOnlyNixStore@" ]; then
if ! [[ "$(findmnt --noheadings --output OPTIONS /nix/store)" =~ ro(,|$) ]]; then
if [ -z "$container" ]; then
mount --bind /nix/store /nix/store
else
mount --rbind /nix/store /nix/store
fi
mount -o remount,ro,bind /nix/store
fi
fi
if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then
# Use /etc/resolv.conf supplied by systemd-nspawn, if applicable.
if [ -n "@useHostResolvConf@" ] && [ -e /etc/resolv.conf ]; then
resolvconf -m 1000 -a host </etc/resolv.conf
fi
# Log the script output to /dev/kmsg or /run/log/stage-2-init.log.
# Only at this point are all the necessary prerequisites ready for these commands.
exec {logOutFd}>&1 {logErrFd}>&2
if test -w /dev/kmsg; then
exec > >(tee -i /proc/self/fd/"$logOutFd" | while read -r line; do
if test -n "$line"; then
echo "<7>stage-2-init: $line" > /dev/kmsg
fi
done) 2>&1
else
mkdir -p /run/log
exec > >(tee -i /run/log/stage-2-init.log) 2>&1
fi
fi
# Required by the activation script
install -m 0755 -d /etc /etc/nixos
install -m 01777 -d /tmp
# Run the script that performs all configuration activation that does
# not have to be done at boot time.
echo "running activation script..."
$systemConfig/activate
# Record the boot configuration.
ln -sfn "$systemConfig" /run/booted-system
# Run any user-specified commands.
@shell@ @postBootCommands@
# Ensure systemd doesn't try to populate /etc, by forcing its first-boot
# heuristic off. It doesn't matter what's in /etc/machine-id for this purpose,
# and systemd will immediately fill in the file when it starts, so just
# creating it is enough. This `: >>` pattern avoids forking and avoids changing
# the mtime if the file already exists.
: >> /etc/machine-id
# No need to restore the stdout/stderr streams we never redirected and
# especially no need to start systemd
if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then
# Reset the logging file descriptors.
exec 1>&$logOutFd 2>&$logErrFd
exec {logOutFd}>&- {logErrFd}>&-
# Start systemd in a clean environment.
echo "starting systemd..."
exec @systemdExecutable@ "$@"
fi

View file

@ -1,4 +1,4 @@
{unstable, ...}: { _: {
lib, lib,
config, config,
pkgs, pkgs,
@ -9,9 +9,7 @@ let
useHostResolvConf = config.networking.resolvconf.enable && config.networking.useHostResolvConf; useHostResolvConf = config.networking.resolvconf.enable && config.networking.useHostResolvConf;
bootStage2 = pkgs.substituteAll { bootStage2 = pkgs.substituteAll {
src = pkgs.runCommand "stage-2-init.sh" {} '' src = ./stage-2-init.sh;
sed '2i exec 1<>/dev/null' ${unstable}/nixos/modules/system/boot/stage-2-init.sh > $out
'';
shellDebug = "${pkgs.bashInteractive}/bin/bash"; shellDebug = "${pkgs.bashInteractive}/bin/bash";
shell = "${pkgs.bash}/bin/bash"; shell = "${pkgs.bash}/bin/bash";
inherit (config.boot) readOnlyNixStore systemdExecutable extraSystemdUnitPaths; inherit (config.boot) readOnlyNixStore systemdExecutable extraSystemdUnitPaths;

View file

@ -146,14 +146,6 @@
time_format = "%I:%M %p"; time_format = "%I:%M %p";
disabled = false; disabled = false;
}; };
# username = {
# format = "[$user]($style)";
# show_always = true;
# };
# hostname = {
# ssh_only = false;
# format = "[$hostname]($style)";
# };
}; };
}; };
}; };