Compare commits
25 Commits
4440228098
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
5911da7f99
|
|||
|
d1949310c5
|
|||
|
f83a201895
|
|||
|
4ce282f378
|
|||
|
d2a8db4d57
|
|||
|
a4282dd9aa
|
|||
|
9e4fc8ee21
|
|||
|
a31ac455cb
|
|||
|
e5230def14
|
|||
|
c08192ac34
|
|||
|
05de5f2063
|
|||
|
9ad81bb8e4
|
|||
|
88995ff8f5
|
|||
|
d492955c8e
|
|||
|
540a0e32e4
|
|||
|
dfbc1ea5a2
|
|||
|
d294038801
|
|||
|
f5bc2ef54f
|
|||
|
a7c6dc133e
|
|||
|
a0ba7ce382
|
|||
|
a0d8a1b0e3
|
|||
|
92010eedb7
|
|||
|
e35ad8eece
|
|||
|
2c39488719
|
|||
|
cf706f5d3b
|
681
flake.lock
generated
681
flake.lock
generated
File diff suppressed because it is too large
Load Diff
73
flake.nix
73
flake.nix
@@ -3,13 +3,14 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# Specify the source of Home Manager and Nixpkgs.
|
# Specify the source of Home Manager and Nixpkgs.
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||||
|
rpi-nixpkgs.url = "github:nvmd/nixpkgs/modules-with-keys-25.11";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||||
nix-meow.url = "git+https://git.scug.io/nikkuss/nix-meow.git"; # config manager, meow'd
|
nix-meow.url = "git+https://git.scug.io/nikkuss/nix-meow.git?ref=paws"; # config manager, meow'd
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
rsRPC.url = "github:Doloro1978/rsRPC";
|
rsRPC.url = "github:Doloro1978/rsRPC";
|
||||||
protonhax.url = "github:linusfri/protonhax-nix";
|
protonhax.url = "github:linusfri/protonhax-nix";
|
||||||
@@ -63,6 +64,9 @@
|
|||||||
url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d";
|
url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d";
|
||||||
};
|
};
|
||||||
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
|
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
|
||||||
|
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/develop";
|
||||||
|
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
|
||||||
|
niri-flake.url = "github:sodiboo/niri-flake";
|
||||||
};
|
};
|
||||||
outputs =
|
outputs =
|
||||||
inputs@{
|
inputs@{
|
||||||
@@ -94,30 +98,30 @@
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
(
|
# (
|
||||||
final: prev:
|
# final: prev:
|
||||||
let
|
# let
|
||||||
system = prev.stdenv.hostPlatform.system;
|
# system = prev.stdenv.hostPlatform.system;
|
||||||
pkgs_gamescope = import inputs.nixpkgs-gamescope {
|
# pkgs_gamescope = import inputs.nixpkgs-gamescope {
|
||||||
inherit system;
|
# inherit system;
|
||||||
config = {
|
# config = {
|
||||||
allow_unfree = true;
|
# allow_unfree = true;
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix";
|
# packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix";
|
||||||
in
|
# in
|
||||||
{
|
# {
|
||||||
gamescope = pkgs_gamescope.callPackage packageNix { };
|
# gamescope = pkgs_gamescope.callPackage packageNix { };
|
||||||
}
|
# }
|
||||||
)
|
# )
|
||||||
(self: super: {
|
# (self: super: {
|
||||||
intel-npu-driver = super.intel-npu-driver.overrideAttrs (oldAttrs: rec {
|
# intel-npu-driver = super.intel-npu-driver.overrideAttrs (oldAttrs: rec {
|
||||||
installPhase = ''
|
# installPhase = ''
|
||||||
mkdir -p $out/lib/firmware
|
# mkdir -p $out/lib/firmware
|
||||||
${oldAttrs.installPhase}
|
# ${oldAttrs.installPhase}
|
||||||
'';
|
# '';
|
||||||
});
|
# });
|
||||||
})
|
# })
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
vesktop = prev.vesktop.overrideAttrs (old: {
|
vesktop = prev.vesktop.overrideAttrs (old: {
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
@@ -154,6 +158,7 @@
|
|||||||
};
|
};
|
||||||
inherit (utils) mkHost;
|
inherit (utils) mkHost;
|
||||||
configurations = [
|
configurations = [
|
||||||
|
# Desktops
|
||||||
(mkHost {
|
(mkHost {
|
||||||
hardware = "doloro";
|
hardware = "doloro";
|
||||||
host = "doloro";
|
host = "doloro";
|
||||||
@@ -165,18 +170,20 @@
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
(mkHost {
|
(mkHost {
|
||||||
hardware = "doloro-wsl";
|
hardware = "doloro-laptop";
|
||||||
host = "doloro-wsl";
|
host = "doloro-laptop";
|
||||||
system = "aarch64-linux";
|
system = "x86_64-linux";
|
||||||
stateVersion = "25.05";
|
stateVersion = "25.11";
|
||||||
nixpkgsConfig = {
|
nixpkgsConfig = {
|
||||||
rocmSupport = false;
|
rocmSupport = false;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
# Servers
|
||||||
(mkHost {
|
(mkHost {
|
||||||
hardware = "doloro-laptop";
|
hardware = "rpi-5";
|
||||||
host = "doloro-laptop";
|
host = "rpi-5";
|
||||||
system = "x86_64-linux";
|
system = "aarch64-linux";
|
||||||
|
# nixpkgs = inputs.rpi-nixpkgs;
|
||||||
stateVersion = "25.11";
|
stateVersion = "25.11";
|
||||||
nixpkgsConfig = {
|
nixpkgsConfig = {
|
||||||
rocmSupport = false;
|
rocmSupport = false;
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
}
|
|
||||||
49
hardwares/rpi-5/disks.nix
Normal file
49
hardwares/rpi-5/disks.nix
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
{ inputs, lib, ... }:
|
||||||
|
{
|
||||||
|
imports = [ inputs.disko.nixosModules.disko ];
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
device = "/dev/disk/by-label/NIXOS_SD";
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
name = "boot";
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02";
|
||||||
|
};
|
||||||
|
ESP = {
|
||||||
|
name = "ESP";
|
||||||
|
priority = 1;
|
||||||
|
size = "4G";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [ "umask=0077" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
plainSwap = {
|
||||||
|
size = "8G";
|
||||||
|
content = {
|
||||||
|
type = "swap";
|
||||||
|
discardPolicy = "both"; # Both "once" and page discard policies
|
||||||
|
};
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
1
hardwares/rpi-5/home.nix
Normal file
1
hardwares/rpi-5/home.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{...}: {}
|
||||||
35
hardwares/rpi-5/nixos.nix
Normal file
35
hardwares/rpi-5/nixos.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./disks.nix
|
||||||
|
# (modulesPath + "/installer/sd-card/sd-image-aarch64.nix")
|
||||||
|
];
|
||||||
|
# fileSystems = {
|
||||||
|
# "/" = {
|
||||||
|
# device = "/dev/disk/by-label/NIXOS_SD";
|
||||||
|
# fsType = "ext4";
|
||||||
|
# options = [ "noatime" ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
boot.supportedFilesystems = lib.mkForce [
|
||||||
|
"btrfs"
|
||||||
|
"reiserfs"
|
||||||
|
"vfat"
|
||||||
|
"ext4"
|
||||||
|
"f2fs"
|
||||||
|
"xfs"
|
||||||
|
"ntfs"
|
||||||
|
"cifs"
|
||||||
|
];
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
# https://github.com/NixOS/nixpkgs/issues/126755#issuecomment-869149243
|
||||||
|
(final: super: {
|
||||||
|
makeModulesClosure = x: super.makeModulesClosure (x // { allowMissing = true; });
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,207 +1,92 @@
|
|||||||
{ pkgs, lib, ... }:
|
{ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
battery-limit-script = ''
|
batt-gpu = pkgs.writeShellScript "batt-igpu" ''
|
||||||
start_batt() {
|
|
||||||
echo 80 > /sys/class/power_supply/BAT0/charge_control_end_threshold
|
|
||||||
}
|
|
||||||
stop_batt() {
|
|
||||||
echo "meow"
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
gpu-limit-frequency = ''
|
|
||||||
start_gpu() {
|
|
||||||
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e
|
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e
|
||||||
}
|
echo "800" > /sys/class/drm/card1/gt_boost_freq_mhz
|
||||||
|
'';
|
||||||
stop_gpu() {
|
ac-gpu = pkgs.writeShellScript "ac-igpu" ''
|
||||||
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d
|
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d
|
||||||
}
|
echo "2350" > /sys/class/drm/card1/gt_boost_freq_mhz
|
||||||
'';
|
|
||||||
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]
|
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
services.tuned = {
|
services.tlp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles = {
|
settings = {
|
||||||
doloro-power-saver = {
|
# Wireless power saving
|
||||||
main = {
|
WIFI_PWR_ON_BAT = "1";
|
||||||
include = "powersave, intel-best_power_efficiency_mode";
|
|
||||||
};
|
|
||||||
script = {
|
|
||||||
script = "\${i:PROFILE_DIR}/script.sh";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
doloro-balanced = {
|
|
||||||
main = {
|
|
||||||
include = "balanced";
|
|
||||||
};
|
|
||||||
script = {
|
|
||||||
script = "${battery-limit-script}/bin/set-battery-limit";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.etc = {
|
|
||||||
"tuned/recommend.conf" = {
|
|
||||||
text = tuned-auto-profile-config;
|
|
||||||
};
|
|
||||||
"tuned/profiles/doloro-power-saver/script.sh" = {
|
|
||||||
text = "${one-with-all}";
|
|
||||||
mode = "0777";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.services = {
|
|
||||||
# Tells tuned "hey, re-eval system state and change profiles accordingly"
|
|
||||||
send-sighup-to-tuned = {
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${pkgs.killall}/bin/killall -1 .tuned-wrapped";
|
|
||||||
Restart = "always";
|
|
||||||
RestartSec = "30s";
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
};
|
|
||||||
tuned-auto-profile = {
|
|
||||||
description = "Enable Auto Profile in TuneD";
|
|
||||||
after = [ "network.target" ]; # Ensure network is up (if needed for TuneD)
|
|
||||||
wantedBy = [ "multi-user.target" ]; # Start in the default target mode
|
|
||||||
|
|
||||||
# Command to run
|
# USB autosuspend
|
||||||
serviceConfig = {
|
USB_AUTOSUSPEND = "1";
|
||||||
ExecStart = "${pkgs.tuned}/bin/tuned-adm auto_profile";
|
|
||||||
Restart = "on-failure";
|
# SATA drive power management
|
||||||
RestartSec = 5; # Wait 5 seconds before retrying if it fails
|
SATA_LINKPWR_ON_BAT = "min_power";
|
||||||
Environment = "PATH=/sbin:/bin:/usr/sbin:/usr/bin"; # Ensure PATH is correct
|
|
||||||
};
|
# PCI Express Active-State Power Management (ASPM)
|
||||||
|
PCIE_ASPM_ON_BAT = "powersupersave";
|
||||||
|
|
||||||
|
RUNTIME_PM_ON_AC = "on";
|
||||||
|
RUNTIME_PM_ON_BAT = "auto";
|
||||||
|
|
||||||
|
# Disable Bluetooth on battery
|
||||||
|
# DEVICES_TO_DISABLE_ON_BAT = "bluetooth";
|
||||||
|
|
||||||
|
# Restore brightness on battery
|
||||||
|
RESTORE_BRIGHTNESS_ON_BAT = "1";
|
||||||
|
PCIE_ASPM_ON_AC = "balanced";
|
||||||
|
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";
|
||||||
|
START_CHARGE_THRESH_BAT0 = 40; # 40 and below it starts to charge
|
||||||
|
STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.thermald.enable = true;
|
services.thermald.enable = true;
|
||||||
services.upower = {
|
services.upower = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
services.auto-cpufreq.enable = true;
|
||||||
|
|
||||||
|
systemd.targets = {
|
||||||
|
"ac" = {
|
||||||
|
description = "On AC power";
|
||||||
|
unitConfig = {
|
||||||
|
StopWhenUnneeded = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"battery" = {
|
||||||
|
description = "On battery power";
|
||||||
|
unitConfig = {
|
||||||
|
StopWhenUnneeded = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
SUBSYSTEM=="power_supply",ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/run/current-system/systemd/bin/systemctl start battery.target"
|
||||||
|
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/run/current-system/systemd/bin/systemctl start ac.target"
|
||||||
|
'';
|
||||||
|
|
||||||
|
services.auto-cpufreq.settings = {
|
||||||
|
battery = {
|
||||||
|
governor = "powersave";
|
||||||
|
turbo = "never";
|
||||||
|
};
|
||||||
|
charger = {
|
||||||
|
governor = "performance";
|
||||||
|
turbo = "auto";
|
||||||
|
};
|
||||||
|
};
|
||||||
boot.kernelParams = [
|
boot.kernelParams = [
|
||||||
# "mem_sleep_default=deep"
|
# "mem_sleep_default=deep"
|
||||||
"i915.fastboot=1"
|
# "i915.fastboot=1"
|
||||||
"pcie_aspm=force"
|
"pcie_aspm=force"
|
||||||
"ahci.mobile_lpm_policy=1"
|
"ahci.mobile_lpm_policy=1"
|
||||||
];
|
];
|
||||||
@@ -215,6 +100,32 @@ in
|
|||||||
SuspendEstimationSec=120
|
SuspendEstimationSec=120
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
systemd.services.gpu-limit-on-batt = {
|
||||||
|
enable = true;
|
||||||
|
description = "Using rfkill; disable all rf devices before sleeping.";
|
||||||
|
before = [ "battery.target" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${batt-gpu}";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
wantedBy = [ "battery.target" ];
|
||||||
|
partOf = [ "battery.target" ];
|
||||||
|
};
|
||||||
|
systemd.services.gpu-limit-on-ac = {
|
||||||
|
enable = true;
|
||||||
|
description = "Using rfkill; disable all rf devices before sleeping.";
|
||||||
|
before = [ "ac.target" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${ac-gpu}";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
wantedBy = [ "ac.target" ];
|
||||||
|
partOf = [ "ac.target" ];
|
||||||
|
};
|
||||||
systemd.services.rfkill-sleep-wake = {
|
systemd.services.rfkill-sleep-wake = {
|
||||||
enable = true;
|
enable = true;
|
||||||
description = "Using rfkill; disable all rf devices before sleeping.";
|
description = "Using rfkill; disable all rf devices before sleeping.";
|
||||||
@@ -222,8 +133,8 @@ in
|
|||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStop = ''${pkgs.utillinux}/bin/rfkill unblock all'';
|
ExecStop = "${pkgs.utillinux}/bin/rfkill unblock all";
|
||||||
ExecStart = ''${pkgs.utillinux}/bin/rfkill block all'';
|
ExecStart = "${pkgs.utillinux}/bin/rfkill block all";
|
||||||
RemainAfterExit = true;
|
RemainAfterExit = true;
|
||||||
};
|
};
|
||||||
wantedBy = [ "sleep.target" ];
|
wantedBy = [ "sleep.target" ];
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ in
|
|||||||
# Use the systemd-boot EFI boot loader.
|
# Use the systemd-boot EFI boot loader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
boot.kernelPackages = pkgs.linuxPackages_6_12; # Hibernate works on 6.12 but not on latest
|
# boot.kernelPackages = pkgs.linuxPackages_6_12; # Hibernate works on 6.12 but not on latest
|
||||||
# boot.kernelPackages = pkgs.linuxPackages_zen; # Hibernate works on 6.12 but not on latest
|
boot.kernelPackages = pkgs.linuxPackages_latest; # Unpinned the linux version for now.. as i am not using hibernate that often
|
||||||
networking.hostName = "doloro-nixos-laptop"; # Define your hostname.
|
networking.hostName = "doloro-nixos-laptop"; # Define your hostname.
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
@@ -61,6 +61,9 @@ in
|
|||||||
"doloro"
|
"doloro"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
firmware = [ pkgs.intel-npu-driver ];
|
firmware = [ pkgs.intel-npu-driver ];
|
||||||
cpu.intel = {
|
cpu.intel = {
|
||||||
@@ -120,6 +123,7 @@ in
|
|||||||
|
|
||||||
services.libinput.enable = true;
|
services.libinput.enable = true;
|
||||||
|
|
||||||
|
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
users.users.doloro = {
|
users.users.doloro = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
@@ -135,6 +139,7 @@ in
|
|||||||
# initialPassword = "sex";
|
# initialPassword = "sex";
|
||||||
};
|
};
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
|
services.system76-scheduler.enable = true;
|
||||||
|
|
||||||
# programs.firefox.enable = true;
|
# programs.firefox.enable = true;
|
||||||
|
|
||||||
@@ -147,6 +152,7 @@ in
|
|||||||
# tlp-pd
|
# tlp-pd
|
||||||
brightnessctl
|
brightnessctl
|
||||||
nvtopPackages.intel
|
nvtopPackages.intel
|
||||||
|
seahorse
|
||||||
];
|
];
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
|||||||
@@ -1,123 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
fetchFromGitHub,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# ./modules/hyprland/home.nix
|
|
||||||
# ./modules/quickshell/home.nix
|
|
||||||
# ./modules/chromium/home.nix
|
|
||||||
#./modules/neovim/home.nix
|
|
||||||
# ./modules/stylix/home.nix
|
|
||||||
#../../modules/nixvim/home.nix
|
|
||||||
#../../modules/tmux/home.nix
|
|
||||||
#../../modules/theme/home.nix
|
|
||||||
# ./modules/spicetify/home.nix
|
|
||||||
# ./modules/obs/home.nix
|
|
||||||
# ./modules/blender/home.nix
|
|
||||||
#../../modules/fish/home.nix
|
|
||||||
# ./modules/ytm/home.nix
|
|
||||||
#../../overlays.nix
|
|
||||||
];
|
|
||||||
modules = {
|
|
||||||
nixvim.enable = true;
|
|
||||||
tmux.enable = true;
|
|
||||||
fish.enable = true;
|
|
||||||
stylix.enable = true;
|
|
||||||
direnv.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
};
|
|
||||||
# Home Manager needs a bit of information about you and the paths it should
|
|
||||||
# manage.
|
|
||||||
home.username = "doloro";
|
|
||||||
home.homeDirectory = "/home/doloro";
|
|
||||||
|
|
||||||
# This value determines the Home Manager release that your configuration is
|
|
||||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
|
||||||
# introduces backwards incompatible changes.
|
|
||||||
#
|
|
||||||
# You should not change this value, even if you update Home Manager. If you do
|
|
||||||
# want to update the value, then make sure to first check the Home Manager
|
|
||||||
# release notes.
|
|
||||||
home.stateVersion = "25.05"; # Please read the comment before changing.
|
|
||||||
|
|
||||||
services.gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
pinentry = {
|
|
||||||
package = pkgs.pinentry-qt;
|
|
||||||
program = "pinentry-qt";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# The home.packages option allows you to install Nix packages into your
|
|
||||||
# environment.
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
hello
|
|
||||||
# vim
|
|
||||||
# telegram-desktop
|
|
||||||
# vesktop
|
|
||||||
# spotify
|
|
||||||
# pavucontrol
|
|
||||||
lazygit
|
|
||||||
sops
|
|
||||||
];
|
|
||||||
# sops.age.keyFile = "/home/doloro/.config/sops/age/key.txt";
|
|
||||||
|
|
||||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
|
||||||
# plain files is through 'home.file'.
|
|
||||||
home.file = {
|
|
||||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
|
||||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
|
||||||
# # symlink to the Nix store copy.
|
|
||||||
# ".screenrc".source = dotfiles/screenrc;
|
|
||||||
|
|
||||||
# # You can also set the file content immediately.
|
|
||||||
# ".gradle/gradle.properties".text = ''
|
|
||||||
# org.gradle.console=verbose
|
|
||||||
# org.gradle.daemon.idletimeout=3600000
|
|
||||||
# '';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Home Manager can also manage your environment variables through
|
|
||||||
# 'home.sessionVariables'. These will be explicitly sourced when using a
|
|
||||||
# shell provided by Home Manager. If you don't want to manage your shell
|
|
||||||
# through Home Manager then you have to manually source 'hm-session-vars.sh'
|
|
||||||
# located at either
|
|
||||||
#
|
|
||||||
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
# or
|
|
||||||
#
|
|
||||||
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
# or
|
|
||||||
#
|
|
||||||
# /etc/profiles/per-user/doloro/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
};
|
|
||||||
# {{{{{ TODO Put in different file
|
|
||||||
# }}}}}
|
|
||||||
# Let Home Manager install and manage itself.
|
|
||||||
programs = {
|
|
||||||
home-manager.enable = true;
|
|
||||||
ssh = {
|
|
||||||
enable = true;
|
|
||||||
enableDefaultConfig = false;
|
|
||||||
matchBlocks = {
|
|
||||||
"*" = {
|
|
||||||
addKeysToAgent = "yes";
|
|
||||||
identityFile = [
|
|
||||||
"~/.ssh/id_github"
|
|
||||||
"~/.ssh/id_gitea_scug_io"
|
|
||||||
"~/.ssh/id_ed25519"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
user,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
modules = {
|
|
||||||
fish.enable = true;
|
|
||||||
stylix.enable = true;
|
|
||||||
};
|
|
||||||
imports = [
|
|
||||||
inputs.nixos-wsl.nixosModules.default
|
|
||||||
];
|
|
||||||
# rocmSupport = false;
|
|
||||||
programs = {
|
|
||||||
dconf.enable = true;
|
|
||||||
ssh = {
|
|
||||||
startAgent = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
fonts = {
|
|
||||||
enableDefaultPackages = true;
|
|
||||||
packages = with pkgs; [
|
|
||||||
nerd-fonts.jetbrains-mono
|
|
||||||
material-design-icons
|
|
||||||
material-symbols
|
|
||||||
googlesans-code
|
|
||||||
# (inputs.font-patcher.lib.patchFont {
|
|
||||||
# font = pkgs.googlesans-code;
|
|
||||||
# name = "Google Sans Code Nerd Font";
|
|
||||||
# })
|
|
||||||
nerd-fonts.caskaydia-cove
|
|
||||||
nerd-fonts.noto
|
|
||||||
noto-fonts-cjk-sans
|
|
||||||
noto-fonts-cjk-serif
|
|
||||||
];
|
|
||||||
fontDir.enable = true;
|
|
||||||
};
|
|
||||||
networking.dhcpcd.enable = lib.mkOverride 0 false;
|
|
||||||
boot.loader.grub.enable = lib.mkOverride 0 false;
|
|
||||||
wsl = {
|
|
||||||
enable = true;
|
|
||||||
defaultUser = user;
|
|
||||||
docker-desktop.enable = false;
|
|
||||||
useWindowsDriver = true;
|
|
||||||
startMenuLaunchers = true;
|
|
||||||
usbip.enable = true;
|
|
||||||
};
|
|
||||||
nix.settings = {
|
|
||||||
experimental-features = "nix-command flakes";
|
|
||||||
};
|
|
||||||
nixpkgs.config.allowUnsupportedSystem = true;
|
|
||||||
systemd.services."user-runtime-dir@" = {
|
|
||||||
overrideStrategy = "asDropin";
|
|
||||||
unitConfig.ConditionPathExists = "!/run/user/%i";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
suspend-on-hibernate = true;
|
suspend-on-hibernate = true;
|
||||||
};
|
};
|
||||||
|
niri.enable = false;
|
||||||
quickshell.enable = true;
|
quickshell.enable = true;
|
||||||
# chromium.enable = true;
|
# chromium.enable = true;
|
||||||
wivrn.enable = true;
|
wivrn.enable = true;
|
||||||
|
|||||||
@@ -23,11 +23,16 @@ in
|
|||||||
stylix.enable = true;
|
stylix.enable = true;
|
||||||
steam.enable = true;
|
steam.enable = true;
|
||||||
Hyprland.enable = true;
|
Hyprland.enable = true;
|
||||||
|
niri.enable = false;
|
||||||
wivrn.enable = true;
|
wivrn.enable = true;
|
||||||
remoteBuild.become-remote-builder = true;
|
remoteBuild.become-remote-builder = true;
|
||||||
fonts.enable = true;
|
fonts.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.resolved.enable = true;
|
||||||
|
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
# Use the systemd-boot EFI boot loader.
|
||||||
boot.loader.grub.enable = true;
|
boot.loader.grub.enable = true;
|
||||||
boot.loader.grub.device = "nodev";
|
boot.loader.grub.device = "nodev";
|
||||||
@@ -45,11 +50,13 @@ in
|
|||||||
"https://cache.nixos.org/"
|
"https://cache.nixos.org/"
|
||||||
"https://attic.scug.io/pkgs"
|
"https://attic.scug.io/pkgs"
|
||||||
"https://cache.nixos-cuda.org"
|
"https://cache.nixos-cuda.org"
|
||||||
|
"https://niri.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
|
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
|
||||||
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
|
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
|
||||||
|
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
||||||
];
|
];
|
||||||
experimental-features = [
|
experimental-features = [
|
||||||
"flakes"
|
"flakes"
|
||||||
@@ -229,7 +236,7 @@ in
|
|||||||
programs = {
|
programs = {
|
||||||
ssh = {
|
ssh = {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
startAgent = true;
|
# startAgent = true;
|
||||||
|
|
||||||
};
|
};
|
||||||
fish.enable = true;
|
fish.enable = true;
|
||||||
@@ -248,6 +255,7 @@ in
|
|||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel"
|
"wheel"
|
||||||
"dialout"
|
"dialout"
|
||||||
|
"networkmanager"
|
||||||
]; # Enable ‘sudo’ for the user.
|
]; # Enable ‘sudo’ for the user.
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
tree
|
tree
|
||||||
@@ -266,6 +274,7 @@ in
|
|||||||
wget
|
wget
|
||||||
killall
|
killall
|
||||||
sops
|
sops
|
||||||
|
seahorse
|
||||||
];
|
];
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
{ ... }:
|
{ ... }:
|
||||||
|
let
|
||||||
|
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
54
hosts/rpi-5/home.nix
Normal file
54
hosts/rpi-5/home.nix
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
fetchFromGitHub,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
modules = {
|
||||||
|
hyfetch.enable = true;
|
||||||
|
sops.enable = true;
|
||||||
|
nixvim.enable = true;
|
||||||
|
tmux.enable = true;
|
||||||
|
# theme.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
};
|
||||||
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
|
# manage.
|
||||||
|
home.username = "doloro";
|
||||||
|
home.homeDirectory = "/home/doloro";
|
||||||
|
|
||||||
|
# services = {
|
||||||
|
# };
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your configuration is
|
||||||
|
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||||
|
# introduces backwards incompatible changes.
|
||||||
|
#
|
||||||
|
# You should not change this value, even if you update Home Manager. If you do
|
||||||
|
# want to update the value, then make sure to first check the Home Manager
|
||||||
|
# release notes.
|
||||||
|
home.stateVersion = "25.11"; # Please read the comment before changing.
|
||||||
|
|
||||||
|
# The home.packages option allows you to install Nix packages into your
|
||||||
|
# environment.
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hello
|
||||||
|
vim
|
||||||
|
lazygit
|
||||||
|
btop
|
||||||
|
sops
|
||||||
|
];
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."mimeapps.list".force = true;
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
home-manager.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
99
hosts/rpi-5/nixos.nix
Normal file
99
hosts/rpi-5/nixos.nix
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
rpi-pi = inputs.raspberry-pi-nix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# To build an sd-card image
|
||||||
|
# $ nix build .#nixosConfigurations.rpi-5-rpi-5-aarch64-linux.config.system.build.sdImage --json &| nom
|
||||||
|
# $ sudo dd if=./result/sd-image/nixos-sd-image-26.05.20260120.80e4adb-aarch64-linux.img of=/dev/sdc conv=fsync status=progress
|
||||||
|
|
||||||
|
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 = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ" # laptop pub key
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc pub key
|
||||||
|
];
|
||||||
|
initialPassword = "meowmeowmeow";
|
||||||
|
};
|
||||||
|
users.root = {
|
||||||
|
initialPassword = "rootmeow";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ" # laptop pub key
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc pub key
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "nixos-001-rp5";
|
||||||
|
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
libraspberrypi
|
||||||
|
];
|
||||||
|
|
||||||
|
sdImage.compressImage = false;
|
||||||
|
|
||||||
|
raspberry-pi-nix.board = "bcm2712"; # Rpi 5 - 64bit
|
||||||
|
# We need to rebuild kernel for 6.12
|
||||||
|
# raspberry-pi-nix.kernel-version = "v6_12_17";
|
||||||
|
raspberry-pi-nix.uboot.enable = false;
|
||||||
|
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
system.stateVersion = "25.11";
|
||||||
|
nixpkgs.hostPlatform = "aarch64-linux";
|
||||||
|
}
|
||||||
@@ -62,7 +62,7 @@ in
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
"label" = "logout";
|
"label" = "logout";
|
||||||
"action" = "loginctl terminate-user $USER";
|
"action" = "uwsm stop";
|
||||||
"text" = "Logout";
|
"text" = "Logout";
|
||||||
"keybind" = "e";
|
"keybind" = "e";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.modules.Hyprland;
|
cfg = config.modules.Hyprland;
|
||||||
|
pkgs-unstable = inputs.hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.modules.Hyprland = {
|
options.modules.Hyprland = {
|
||||||
@@ -16,6 +17,7 @@ in
|
|||||||
programs.xwayland.enable = true;
|
programs.xwayland.enable = true;
|
||||||
programs.hyprland = {
|
programs.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
withUWSM = true;
|
||||||
# set the flake package
|
# set the flake package
|
||||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
# make sure to also set the portal package, so that they are in sync
|
# make sure to also set the portal package, so that they are in sync
|
||||||
@@ -31,5 +33,12 @@ in
|
|||||||
substituters = [ "https://hyprland.cachix.org" ];
|
substituters = [ "https://hyprland.cachix.org" ];
|
||||||
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
|
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
|
||||||
};
|
};
|
||||||
|
hardware.graphics = {
|
||||||
|
package = pkgs-unstable.mesa;
|
||||||
|
|
||||||
|
# if you also want 32-bit support (e.g for Steam)
|
||||||
|
# enable32Bit = true;
|
||||||
|
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,41 @@
|
|||||||
{ inputs, pkgs, ... }:
|
{ 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 = [
|
home.packages = [
|
||||||
pkgs.hyprlauncher
|
pkgs.tofi
|
||||||
];
|
];
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
bind = [
|
bind = [
|
||||||
"$mainMod, R, exec, hyprlauncher"
|
"$mainMod, R, exec, ${script}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
systemd.user.services.hyprlauncher-deamon = {
|
# systemd.user.services.hyprlauncher-deamon = {
|
||||||
Install = {
|
# Install = {
|
||||||
WantedBy = [ "hyprland-session.target" ];
|
# WantedBy = [ "hyprland-session.target" ];
|
||||||
};
|
# };
|
||||||
Service = {
|
# Service = {
|
||||||
ExecStart = "${pkgs.writeShellScript "watch-store" ''
|
# ExecStart = "${pkgs.writeShellScript "watch-store" ''
|
||||||
hyprlauncher -d
|
# hyprlauncher -d
|
||||||
''}";
|
# ''}";
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ in
|
|||||||
"$mainMod" = "SUPER";
|
"$mainMod" = "SUPER";
|
||||||
bind = [
|
bind = [
|
||||||
"$mainMod, C, killactive"
|
"$mainMod, C, killactive"
|
||||||
"$mainMod, M, exit"
|
"$mainMod, M, exec, uwsm stop"
|
||||||
"$mainMod, E, exec, $fileManager"
|
"$mainMod, E, exec, $fileManager"
|
||||||
"$mainMod, V, togglefloating,"
|
"$mainMod, V, togglefloating,"
|
||||||
"$mainMod, P, pseudo, # dwindle"
|
"$mainMod, P, pseudo, # dwindle"
|
||||||
@@ -143,9 +143,9 @@ in
|
|||||||
];
|
];
|
||||||
windowrule = [
|
windowrule = [
|
||||||
"match:class .*, suppress_event maximize"
|
"match:class .*, suppress_event maximize"
|
||||||
"match:class ^(gamescope)$, workspace 5"
|
"match:class gamescope, workspace 5"
|
||||||
"match:class ^(gamescope)$, fullscreen true"
|
"match:class gamescope, fullscreen true"
|
||||||
"match:class ^(gamescope)$, immediate true"
|
"match:class gamescope, immediate true"
|
||||||
"match:class ^(steam)$, workspace 6 silent"
|
"match:class ^(steam)$, workspace 6 silent"
|
||||||
"match:class ^(vesktop)$, workspace 8 silent"
|
"match:class ^(vesktop)$, workspace 8 silent"
|
||||||
"match:class ^(org.telegram.desktop)$, workspace 8 silent"
|
"match:class ^(org.telegram.desktop)$, workspace 8 silent"
|
||||||
|
|||||||
4
modules/niri/default.nix
Normal file
4
modules/niri/default.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
_: {
|
||||||
|
nixos = ./nixos.nix;
|
||||||
|
home = ./home.nix;
|
||||||
|
}
|
||||||
158
modules/niri/home.nix
Normal file
158
modules/niri/home.nix
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
home,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.modules.niri;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ inputs.niri-flake.homeModules.niri ];
|
||||||
|
options.modules.niri = {
|
||||||
|
enable = lib.mkEnableOption "niri configuration module";
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# nixpkgs.overlays = [ inputs.niri-flake.overlays.niri ];
|
||||||
|
gtk.enable = lib.mkForce false;
|
||||||
|
home.packages = with pkgs; [ kickoff ];
|
||||||
|
programs = {
|
||||||
|
niri = {
|
||||||
|
enable = true;
|
||||||
|
# package = pkgs.niri-unstable;
|
||||||
|
settings = {
|
||||||
|
input = {
|
||||||
|
keyboard = {
|
||||||
|
xkb = {
|
||||||
|
layout = "gb";
|
||||||
|
};
|
||||||
|
numlock = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
outputs = {
|
||||||
|
DP-3 = {
|
||||||
|
# Philips Consumer Electronics Company PHL 272E1GZ UK02101011104
|
||||||
|
mode = {
|
||||||
|
width = 1920;
|
||||||
|
height = 1080;
|
||||||
|
refresh = 165.0;
|
||||||
|
};
|
||||||
|
focus-at-startup = true;
|
||||||
|
variable-refresh-rate = true;
|
||||||
|
};
|
||||||
|
HDMI-A-1 = {
|
||||||
|
position = {
|
||||||
|
x = -1920;
|
||||||
|
y = 0;
|
||||||
|
};
|
||||||
|
scale = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
binds = {
|
||||||
|
# Navigation
|
||||||
|
"Mod+Shift+WheelScrollDown" = {
|
||||||
|
hotkey-overlay.title = "Workspace Down";
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action.focus-workspace-down = [ ];
|
||||||
|
};
|
||||||
|
"Mod+Shift+WheelScrollUp" = {
|
||||||
|
hotkey-overlay.title = "Workspace Up";
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action.focus-workspace-up = [ ];
|
||||||
|
};
|
||||||
|
"Mod+WheelScrollUp" = {
|
||||||
|
hotkey-overlay.title = "Workspace Left";
|
||||||
|
action.focus-column-right = [ ];
|
||||||
|
};
|
||||||
|
"Mod+WheelScrollDown" = {
|
||||||
|
hotkey-overlay.title = "Workspace Right";
|
||||||
|
action.focus-column-left = [ ];
|
||||||
|
};
|
||||||
|
"Super+Tab" = {
|
||||||
|
hotkey-overlay.title = "Overview";
|
||||||
|
action.toggle-overview = [ ];
|
||||||
|
};
|
||||||
|
# --
|
||||||
|
# Utility
|
||||||
|
"Super+S" = {
|
||||||
|
action.screenshot = [ ];
|
||||||
|
};
|
||||||
|
"Super+C" = {
|
||||||
|
action.close-window = [ ];
|
||||||
|
};
|
||||||
|
"Super+L" = {
|
||||||
|
action.spawn = "wlogout";
|
||||||
|
};
|
||||||
|
# Program Spawning
|
||||||
|
"Mod+T".action.spawn = "helium";
|
||||||
|
"Mod+R".action.spawn = "kickoff";
|
||||||
|
"Mod+Q".action.spawn = "kitty";
|
||||||
|
# --
|
||||||
|
};
|
||||||
|
window-rules = [
|
||||||
|
{
|
||||||
|
matches = [ ];
|
||||||
|
geometry-corner-radius = {
|
||||||
|
bottom-left = 3.0;
|
||||||
|
bottom-right = 3.0;
|
||||||
|
top-left = 3.0;
|
||||||
|
top-right = 3.0;
|
||||||
|
};
|
||||||
|
clip-to-geometry = true;
|
||||||
|
draw-border-with-background = false;
|
||||||
|
focus-ring.width = 2;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
xwayland-satellite = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
wlogout = {
|
||||||
|
enable = true;
|
||||||
|
layout = [
|
||||||
|
{
|
||||||
|
"label" = "lock";
|
||||||
|
"action" = "hyprlock";
|
||||||
|
"text" = "Lock";
|
||||||
|
"keybind" = "l";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" = "hibernate";
|
||||||
|
"action" = "systemctl hibernate";
|
||||||
|
"text" = "Hibernate";
|
||||||
|
"keybind" = "h";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" = "logout";
|
||||||
|
"action" = "loginctl terminate-user $USER";
|
||||||
|
"text" = "Logout";
|
||||||
|
"keybind" = "e";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# TODO add hypr shutdown
|
||||||
|
"label" = "shutdown";
|
||||||
|
"action" = "systemctl poweroff";
|
||||||
|
"text" = "Shutdown";
|
||||||
|
"keybind" = "s";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" = "suspend";
|
||||||
|
"action" = "systemctl suspend";
|
||||||
|
"text" = "Suspend";
|
||||||
|
"keybind" = "u";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" = "reboot";
|
||||||
|
"action" = "systemctl reboot";
|
||||||
|
"text" = "Reboot";
|
||||||
|
"keybind" = "r";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
20
modules/niri/nixos.nix
Normal file
20
modules/niri/nixos.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
home,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.modules.niri;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ inputs.niri-flake.nixosModules.niri ];
|
||||||
|
options.modules.niri = {
|
||||||
|
enable = lib.mkEnableOption "niri configuration module";
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -63,6 +63,7 @@ in
|
|||||||
ts_ls = {
|
ts_ls = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
svelte.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
lsp-format = {
|
lsp-format = {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ in
|
|||||||
WantedBy = [ "default.target" ];
|
WantedBy = [ "default.target" ];
|
||||||
};
|
};
|
||||||
Service = {
|
Service = {
|
||||||
ExecStart = "${pkg}/bin/quickshell";
|
ExecStart = "${pkgs.quickshell}/bin/quickshell";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = "5s";
|
RestartSec = "5s";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
/run/user/1000/quickshell/vfs/cd26284dcbf5c20ad2cc36cbb6547fb4/.qmlls.ini
|
/run/user/1000/quickshell/vfs/f9af1311120af20dfed5f1bc1698a66a/.qmlls.ini
|
||||||
@@ -17,7 +17,7 @@ in
|
|||||||
# whole blender config including addons is too fat to include here
|
# whole blender config including addons is too fat to include here
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
wlx-overlay-s
|
wayvr
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
# nix'ing a blender config is most likely not possible
|
# nix'ing a blender config is most likely not possible
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ in
|
|||||||
publish.userServices = true;
|
publish.userServices = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
programs.adb.enable = true;
|
environment.systemPackages = [ pkgs.android-tools ];
|
||||||
|
# programs.adb.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
nixos.qcow2
BIN
nixos.qcow2
Binary file not shown.
Reference in New Issue
Block a user