Compare commits

...

5 Commits

Author SHA1 Message Date
5911da7f99 various fixes 2026-01-28 10:05:29 +00:00
d1949310c5 change(server): traefik rules 2026-01-28 10:05:29 +00:00
f83a201895 qol(laptop): huge battery optimisations 2026-01-28 00:12:26 +00:00
4ce282f378 add(nixvim): added svelte lsp 2026-01-27 19:23:35 +00:00
d2a8db4d57 rpi5 2026-01-26 12:10:24 +00:00
10 changed files with 125 additions and 175 deletions

View File

@@ -98,30 +98,30 @@
};
});
})
(
final: prev:
let
system = prev.stdenv.hostPlatform.system;
pkgs_gamescope = import inputs.nixpkgs-gamescope {
inherit system;
config = {
allow_unfree = true;
};
};
packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix";
in
{
gamescope = pkgs_gamescope.callPackage packageNix { };
}
)
(self: super: {
intel-npu-driver = super.intel-npu-driver.overrideAttrs (oldAttrs: rec {
installPhase = ''
mkdir -p $out/lib/firmware
${oldAttrs.installPhase}
'';
});
})
# (
# final: prev:
# let
# system = prev.stdenv.hostPlatform.system;
# pkgs_gamescope = import inputs.nixpkgs-gamescope {
# inherit system;
# config = {
# allow_unfree = true;
# };
# };
# packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix";
# in
# {
# gamescope = pkgs_gamescope.callPackage packageNix { };
# }
# )
# (self: super: {
# intel-npu-driver = super.intel-npu-driver.overrideAttrs (oldAttrs: rec {
# installPhase = ''
# mkdir -p $out/lib/firmware
# ${oldAttrs.installPhase}
# '';
# });
# })
(final: prev: {
vesktop = prev.vesktop.overrideAttrs (old: {
preBuild = ''

View File

@@ -1,143 +1,12 @@
{ pkgs, lib, ... }:
let
battery-limit-script = ''
start_batt() {
echo 80 > /sys/class/power_supply/BAT0/charge_control_end_threshold
}
stop_batt() {
echo "meow"
}
batt-gpu = pkgs.writeShellScript "batt-igpu" ''
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e
echo "800" > /sys/class/drm/card1/gt_boost_freq_mhz
'';
gpu-limit-frequency = ''
start_gpu() {
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e
}
stop_gpu() {
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d
}
'';
cpu-power-efficency = ''
start_cpu_effic() {
n=$(nproc)
i=0
while [ "$i" -lt $n ]; do
echo 178 | tee /sys/devices/system/cpu/cpu$i/cpufreq/energy_performance_preference
echo 8 | tee /sys/devices/system/cpu/cpu$i/power/energy_perf_bias
i=$(( i + 1 ))
done
return 0
}
stop_cpu_effic() {
n=$(nproc)
i=0
while [ "$i" -lt $n ]; do
echo "balance_performance" | tee /sys/devices/system/cpu/cpu$i/cpufreq/energy_performance_preference
echo 6 | tee /sys/devices/system/cpu/cpu$i/power/energy_perf_bias
i=$(( i + 1 ))
done
return 0
}
'';
one-with-all = ''
#!/bin/sh
${battery-limit-script}
${gpu-limit-frequency}
${cpu-power-efficency}
start() {
echo "meow"
echo "mreoww" > /home/doloro/meow.txt
start_gpu
start_batt
start_cpu_effic
}
stop() {
stop_gpu
stop_batt
stop_cpu_effic
}
if [ "$1" == "start" ]; then
start
fi
if [ "$1" == "stop" ]; then
stop
fi
'';
tuned-auto-profile-config = ''
# TuneD rules for recommend_profile.
#
# Syntax:
# [PROFILE1]
# KEYWORD11=RE11
# KEYWORD21=RE12
#
# [PROFILE2]
# KEYWORD21=RE21
# KEYWORD22=RE22
# KEYWORD can be:
# virt - for RE to match output of virt-what
# system - for RE to match content of /etc/system-release-cpe
# process - for RE to match running processes. It can have arbitrary
# suffix, all process* lines have to match for the PROFILE
# to match (i.e. the AND operator)
# /FILE - for RE to match content of the FILE, e.g.:
# '/etc/passwd=.+'. If file doesn't exist, its RE will not
# match.
# chassis_type - for RE to match the chassis type as reported by dmidecode
# syspurpose_role - for RE to match the system role as reported by syspurpose
# All REs for all KEYWORDs have to match for PROFILE to match (i.e. the AND operator).
# If 'virt' or 'system' is not specified, it matches for every string.
# If 'virt' or 'system' is empty, i.e. 'virt=', it matches only empty string (alias for '^$').
# If several profiles matched, the first match is taken.
#
# Limitation:
# Each profile can be specified only once, because there cannot be
# multiple sections in the configuration file with the same name
# (ConfigParser limitation).
# If there is a need to specify the profile multiple times, unique
# suffix like ',ANYSTRING' can be used. Everything after the last ','
# is stripped by the parser, e.g.:
#
# [balanced,1]
# /FILE1=RE1
#
# [balanced,2]
# /FILE2=RE2
#
# This will set 'balanced' profile in case there is FILE1 matching RE1 or
# FILE2 matching RE2 or both.
# Profile for devices on battery
[doloro-power-saver]
virt=
system=
/sys/class/power_supply/BAT0/status=Discharging
# Profile for devices on AC power
[doloro-balanced]
virt=
system=
/sys/class/power_supply/BAT0/status=Charging
[atomic-host]
virt=
system=.*atomic.*
[atomic-guest]
virt=.+
system=.*atomic.*
[throughput-performance]
virt=
system=.*(computenode|server).*
[virtual-guest]
virt=.+
[balanced]
ac-gpu = pkgs.writeShellScript "ac-igpu" ''
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d
echo "2350" > /sys/class/drm/card1/gt_boost_freq_mhz
'';
in
{
@@ -156,7 +25,7 @@ in
# PCI Express Active-State Power Management (ASPM)
PCIE_ASPM_ON_BAT = "powersupersave";
# Runtime Power Management for PCI(e) buses/devices
RUNTIME_PM_ON_AC = "on";
RUNTIME_PM_ON_BAT = "auto";
# Disable Bluetooth on battery
@@ -165,9 +34,13 @@ in
# Restore brightness on battery
RESTORE_BRIGHTNESS_ON_BAT = "1";
PCIE_ASPM_ON_AC = "balanced";
DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE = "bluetooth wifi wwan";
DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE = "bluetooth";
INTEL_GPU_MAX_FREQ_ON_AC = 0;
INTEL_GPU_MAX_FREQ_ON_BAT = 800;
INTEL_GPU_BOOST_FREQ_ON_AC = 0;
INTEL_GPU_BOOST_FREQ_ON_BAT = 800;
CPU_MAX_PERF_ON_BAT = 50;
PLATFORM_PROFILE_ON_AC = "balanced";
PLATFORM_PROFILE_ON_BAT = "quiet";
@@ -213,7 +86,7 @@ in
};
boot.kernelParams = [
# "mem_sleep_default=deep"
"i915.fastboot=1"
# "i915.fastboot=1"
"pcie_aspm=force"
"ahci.mobile_lpm_policy=1"
];
@@ -234,7 +107,7 @@ in
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e";
ExecStart = "${batt-gpu}";
RemainAfterExit = true;
};
wantedBy = [ "battery.target" ];
@@ -247,7 +120,7 @@ in
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d";
ExecStart = "${ac-gpu}";
RemainAfterExit = true;
};
wantedBy = [ "ac.target" ];

View File

@@ -61,6 +61,9 @@ in
"doloro"
];
};
services.gnome.gnome-keyring.enable = true;
hardware = {
firmware = [ pkgs.intel-npu-driver ];
cpu.intel = {
@@ -149,6 +152,7 @@ in
# tlp-pd
brightnessctl
nvtopPackages.intel
seahorse
];
# Some programs need SUID wrappers, can be configured further or are

View File

@@ -31,6 +31,8 @@ in
services.resolved.enable = true;
services.gnome.gnome-keyring.enable = true;
# Use the systemd-boot EFI boot loader.
boot.loader.grub.enable = true;
boot.loader.grub.device = "nodev";
@@ -234,7 +236,7 @@ in
programs = {
ssh = {
# enable = true;
startAgent = true;
# startAgent = true;
};
fish.enable = true;
@@ -272,6 +274,7 @@ in
wget
killall
sops
seahorse
];
# Some programs need SUID wrappers, can be configured further or are

View File

@@ -0,0 +1,7 @@
{ ... }:
let
in
{
}

View File

@@ -16,12 +16,48 @@ in
imports = [
rpi-pi.nixosModules.raspberry-pi
rpi-pi.nixosModules.sd-image
./containers.nix
];
nix.settings = {
substituters = [ "https://nix-community.cachix.org" ];
trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ];
};
services.traefik = {
enable = true;
staticConfigOptions = {
entryPoints = {
web = {
address = ":80";
http.redirections.entrypoint = {
to = "websecure";
scheme = "https";
};
asDefault = true;
};
websecure = {
address = ":443";
asDefault = true;
http.tls.certResolver = "letsencrypt";
};
traefik = {
address = ":8081";
};
};
certificatesResolvers.letsencrypt.acme = {
email = "doloroo@proton.me";
storage = "${config.services.traefik.dataDir}/acme.json";
httpChallenge.entryPoint = "web";
};
api.dashboard = true;
api.insecure = true;
};
};
# TEMP
networking.firewall.enable = false;
users = {
mutableUsers = false;
users.doloro = {
@@ -33,8 +69,14 @@ in
];
initialPassword = "meowmeowmeow";
};
users.root = {
initialPassword = "rootmeow";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ" # laptop pub key
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc pub key
];
};
};
users.users.root.initialPassword = "root";
networking.hostName = "nixos-001-rp5";

View File

@@ -37,8 +37,8 @@ in
package = pkgs-unstable.mesa;
# if you also want 32-bit support (e.g for Steam)
enable32Bit = true;
package32 = pkgs-unstable.pkgsi686Linux.mesa;
# enable32Bit = true;
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
};
};
}

View File

@@ -1,11 +1,31 @@
{ inputs, pkgs, ... }:
let
config = pkgs.writeTextFile {
name = "config";
text = ''
width = 100%
height = 100%
border-width = 0
outline-width = 0
padding-left = 35%
padding-top = 35%
result-spacing = 25
num-results = 5
font = monospace
background-color = #000A
'';
};
script = pkgs.writeShellScript "mreow" ''
exec $(tofi-drun -c ${config})
'';
in
{
home.packages = [
pkgs.kickoff
pkgs.tofi
];
wayland.windowManager.hyprland.settings = {
bind = [
"$mainMod, R, exec, kickoff"
"$mainMod, R, exec, ${script}"
];
};
# systemd.user.services.hyprlauncher-deamon = {

View File

@@ -143,9 +143,9 @@ in
];
windowrule = [
"match:class .*, suppress_event maximize"
"match:class ^(gamescope)$, workspace 5"
"match:class ^(gamescope)$, fullscreen true"
"match:class ^(gamescope)$, immediate true"
"match:class gamescope, workspace 5"
"match:class gamescope, fullscreen true"
"match:class gamescope, immediate true"
"match:class ^(steam)$, workspace 6 silent"
"match:class ^(vesktop)$, workspace 8 silent"
"match:class ^(org.telegram.desktop)$, workspace 8 silent"

View File

@@ -63,6 +63,7 @@ in
ts_ls = {
enable = true;
};
svelte.enable = true;
};
};
lsp-format = {