framework-2024-05-25-15-41-10

This commit is contained in:
Alexander Szczepanski
2024-05-25 15:41:10 +02:00
parent 56e67bd5fd
commit 5aa1fedfaf
15 changed files with 538 additions and 145 deletions

View File

@ -9,7 +9,6 @@ in
imports =
[
/etc/nixos/hardware-configuration.nix
../configs/gui.nix
../configs/docker.nix
../configs/libvirt.nix
../configs/common.nix

View File

@ -15,7 +15,6 @@ in
[
<nixos-hardware/lenovo/thinkpad/x1-extreme>
/etc/nixos/hardware-configuration.nix
../configs/gui.nix
../configs/docker.nix
../configs/libvirt.nix
../configs/common.nix

207
config.json Executable file
View File

@ -0,0 +1,207 @@
{
"defaultStrategy": "agile",
"strategyOnDischarging": "",
"batteryChargingStatusPath": "",
"strategies": {
"sleep": {
"fanSpeedUpdateFrequency": 5,
"movingAverageInterval": 40,
"speedCurve": [
{
"temp": 0,
"speed": 0
}
]
},
"lazyest": {
"fanSpeedUpdateFrequency": 5,
"movingAverageInterval": 40,
"speedCurve": [
{
"temp": 0,
"speed": 0
},
{
"temp": 45,
"speed": 0
},
{
"temp": 65,
"speed": 25
},
{
"temp": 70,
"speed": 35
},
{
"temp": 75,
"speed": 50
},
{
"temp": 85,
"speed": 100
}
]
},
"lazy": {
"fanSpeedUpdateFrequency": 5,
"movingAverageInterval": 30,
"speedCurve": [
{
"temp": 0,
"speed": 15
},
{
"temp": 50,
"speed": 15
},
{
"temp": 65,
"speed": 25
},
{
"temp": 70,
"speed": 35
},
{
"temp": 75,
"speed": 50
},
{
"temp": 85,
"speed": 100
}
]
},
"medium": {
"fanSpeedUpdateFrequency": 5,
"movingAverageInterval": 30,
"speedCurve": [
{
"temp": 0,
"speed": 15
},
{
"temp": 40,
"speed": 15
},
{
"temp": 60,
"speed": 30
},
{
"temp": 70,
"speed": 40
},
{
"temp": 75,
"speed": 80
},
{
"temp": 85,
"speed": 100
}
]
},
"agile": {
"fanSpeedUpdateFrequency": 3,
"movingAverageInterval": 15,
"speedCurve": [
{
"temp": 0,
"speed": 15
},
{
"temp": 40,
"speed": 15
},
{
"temp": 60,
"speed": 30
},
{
"temp": 70,
"speed": 40
},
{
"temp": 75,
"speed": 80
},
{
"temp": 85,
"speed": 100
}
]
},
"very-agile": {
"fanSpeedUpdateFrequency": 2,
"movingAverageInterval": 5,
"speedCurve": [
{
"temp": 0,
"speed": 15
},
{
"temp": 40,
"speed": 15
},
{
"temp": 60,
"speed": 30
},
{
"temp": 70,
"speed": 40
},
{
"temp": 75,
"speed": 80
},
{
"temp": 85,
"speed": 100
}
]
},
"deaf": {
"fanSpeedUpdateFrequency": 2,
"movingAverageInterval": 5,
"speedCurve": [
{
"temp": 0,
"speed": 20
},
{
"temp": 40,
"speed": 30
},
{
"temp": 50,
"speed": 50
},
{
"temp": 60,
"speed": 100
}
]
},
"aeolus": {
"fanSpeedUpdateFrequency": 2,
"movingAverageInterval": 5,
"speedCurve": [
{
"temp": 0,
"speed": 20
},
{
"temp": 40,
"speed": 50
},
{
"temp": 65,
"speed": 100
}
]
}
}
}

View File

@ -1,6 +1,6 @@
{ config, pkgs, lib, ... }:
let
unstable = import <nixos-unstable> {
unstable = import <nixos-unstable> {
config.allowUnfree = true;
config.packageOverrides = pkgs: {
steam = pkgs.steam.override {
@ -16,9 +16,8 @@ let
mangohud
];
};
};
};
};
in
{
programs.steam = {

View File

@ -29,8 +29,12 @@
gnomeExtensions.blur-my-shell
gnomeExtensions.vitals
gnomeExtensions.dash-to-dock
gnomeExtensions.syncthing-indicator
# gnomeExtensions.syncthing-indicator
pantheon.elementary-icon-theme
flat-remix-icon-theme
flat-remix-gtk
flat-remix-gnome
];
environment.gnome.excludePackages = (with pkgs; [ gnome-tour ])

View File

@ -1,84 +0,0 @@
{ config, pkgs, ... }:
let
unstable = import <nixos-unstable> {
config = {
allowUnfree = true;
};
};
in
{
nixpkgs.config.allowUnfree = true;
networking = {
firewall.enable = false;
networkmanager = {
enable = true;
};
};
environment.systemPackages = with unstable.pkgs; [
glxinfo
gparted
libsecret
gnome.simple-scan
];
programs = {
dconf.enable = true;
adb.enable = true;
ssh = {
startAgent = true;
};
# gnupg.agent = {
# enable = true;
# pinentryFlavor = "curses";
# # enableSSHSupport = true;
# };
};
fonts = {
enableDefaultPackages = true;
fontDir.enable = true;
packages = with pkgs; [
# (nerdfonts.override { fonts = [ "Liberation" ]; })
nerdfonts
corefonts
google-fonts
liberation_ttf
libertinus
gyre-fonts
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
noto-fonts-extra
open-sans
stix-two
twemoji-color-font
];
# fontconfig = {
# enable = true;
# antialias = true;
# defaultFonts = {
# # monospace = [ "Fira Mono" ];
# serif = [ "Linux Libertine" ];
# sansSerif = [ "Open Sans" ];
# emoji = [ "Twitter Color Emoji" ];
# };
# };
};
hardware.bluetooth.enable = true;
hardware.sane.enable = true;
services = {
# mullvad-vpn.enable = true;
gvfs.enable = true;
# etesync-dav = {
# enable = true;
# apiUrl = "https://etesync.szczepan.ski/";
# };
};
}

View File

@ -1,5 +1,4 @@
{ config, pkgs, lib, ... }:
{
virtualisation = {
libvirtd = {
@ -10,7 +9,7 @@
ovmf = {
enable = true;
packages = [
(pkgs.unstable.OVMF.override {
(pkgs.OVMF.override {
secureBoot = true;
tpmSupport = true;
}).fd

View File

@ -32,14 +32,14 @@
};
systemd.user.services = {
monitor = {
description = "indicator-monitor";
wantedBy = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
serviceConfig = {
ExecStart = "${pkgs.monitor}/bin/com.github.stsdc.monitor";
};
};
# monitor = {
# description = "indicator-monitor";
# wantedBy = [ "graphical-session.target" ];
# partOf = [ "graphical-session.target" ];
# serviceConfig = {
# ExecStart = "${pkgs.monitor}/bin/com.github.stsdc.monitor";
# };
# };
indicatorapp = {
description = "indicator-application-gtk3";

View File

@ -6,6 +6,19 @@
kdeconnect.enable = true;
};
environment.systemPackages = with pkgs; [
libsForQt5.kalk
libsForQt5.plasma-browser-integration
];
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
# plasma-browser-integration
konsole
oxygen
];
environment.etc."chromium/native-messaging-hosts/org.kde.plasma.browser_integration.json".source = "${pkgs.plasma-browser-integration}/etc/chromium/native-messaging-hosts/org.kde.plasma.browser_integration.json";
services = {
xserver = {
enable = true;

View File

@ -1,11 +1,77 @@
{ config, pkgs, lib, ... }:
with builtins;
let
unstable = import <nixos-unstable> { config.allowUnfree = true; };
in
{
imports = [ <home-manager/nixos> ];
networking = {
firewall.enable = false;
networkmanager = {
enable = true;
};
};
fonts = {
enableDefaultPackages = true;
fontDir.enable = true;
packages = with pkgs; [
# (nerdfonts.override { fonts = [ "Liberation" ]; })
nerdfonts
corefonts
google-fonts
liberation_ttf
libertinus
gyre-fonts
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
noto-fonts-extra
open-sans
stix-two
twemoji-color-font
];
# fontconfig = {
# enable = true;
# antialias = true;
# defaultFonts = {
# # monospace = [ "Fira Mono" ];
# serif = [ "Linux Libertine" ];
# sansSerif = [ "Open Sans" ];
# emoji = [ "Twitter Color Emoji" ];
# };
# };
};
hardware = {
bluetooth.enable = true;
sane.enable = true;
};
services = {
gvfs.enable = true;
# mullvad-vpn.enable = true;
# etesync-dav = {
# enable = true;
# apiUrl = "https://etesync.szczepan.ski/";
# };
};
programs = {
adb.enable = true;
ssh = {
startAgent = true;
};
# dconf.enable = true;
# gnupg.agent = {
# enable = true;
# pinentryFlavor = "curses";
# # enableSSHSupport = true;
# };
};
environment.systemPackages = with unstable.pkgs; [
xfce.catfish
@ -14,7 +80,6 @@ in
espeak-ng
handbrake
insomnia
libreoffice
meld
nextcloud-client
pinta
@ -27,11 +92,13 @@ in
grsync
virt-manager
rustdesk
glxinfo
gparted
gnome.simple-scan
];
home-manager.users.alex = { pkgs, ... }: {
# services = { syncthing = { enable = true; }; };
programs = {
vscode = {
enable = true;
@ -47,14 +114,6 @@ in
};
};
git = {
extraConfig = {
credential.helper = "${
pkgs.git.override { withLibsecret = true; }
}/bin/git-credential-libsecret";
};
};
kitty = {
enable = true;
extraConfig = ''

182
home/bin/trim-check Executable file
View File

@ -0,0 +1,182 @@
#!/usr/bin/env bash
#
# This script is provided "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
#
# License GPL2
#
# by desgua 2014/04/29
function CLEAN {
cd "$pasta"
[ -f test-trim-by-desgua ] && rm test-trim-by-desgua && echo "Temp file removed"
echo "Goodbye"
exit 0
}
trap 'echo ; echo "Aborted." ; CLEAN; echo ; exit 0' INT HUP
if [[ "$(echo $USER)" != "root" ]]; then
read -n 1 -p 'Become root? [Y/n]' a
if [[ $a == "Y" || $a == "y" || $a == "" ]]; then
sudo $0 $1
exit 0
else
echo "
This script needs root privilege.
"
exit 1
fi
fi
name=$(echo $0 | sed 's/.*\///')
if [ $# -ne 1 ]; then
echo "
Usage: $name /folder/to/test/
"
exit 1
fi
pasta=$1
read -n 1 -p 'Use fstrim? [y/N]' a
if [[ $a == "Y" || $a == "y" ]]; then
fs=1
fi
method=
while [[ "$method" != "1" && "$method" != "2" ]]; do
read -n 1 -s -p 'Choose a method:
[1] hdparm (will fail in LUKS on LVM)
[2] filefrag (warning: you may have to force quit - close the terminal - in some cases of success trim if you see an output that never ends)
' method
done
function SDATEST {
disk=$(fdisk -l | grep /dev/nvme0n1)
if [ "$disk" == "" ]; then
echo "
fdisk did not found /dev/nvme0n1
"
exit 1
fi
}
function TEST {
echo "Entrying /" ; echo
cd $pasta
echo "Creating the file test-trim-by-desgua at $pasta" ; echo
dd if=/dev/urandom of=test-trim-by-desgua count=10 bs=512k
echo "Syncing and sleeping 2 seconds." ; echo
sync
sleep 2
hdparm --fibmap test-trim-by-desgua
lbab=$(hdparm --fibmap test-trim-by-desgua | tail -n1 | awk '{ print $2 }')
echo "As you can see, the file was created and its LBA begins at $lbab" ; echo
echo "Syncing and sleeping 2 seconds." ; echo
sync
sleep 2
echo "Removing file test-trim-by-desgua" ; echo
rm test-trim-by-desgua
trap 'echo ; echo ; echo "Aborted." ; echo ; exit 0' INT
echo "Syncing and sleeping 2 seconds." ; echo
sync
sleep 2
if [[ "$fs" == "1" ]]; then
echo "fstrim $pasta && sleep 2" ; echo
fstrim $pasta
sleep 2
fi
echo "This is readed from sector $lbab: "
hdparm --read-sector $lbab /dev/nvme0n1
pass=$(hdparm --read-sector $lbab /dev/nvme0n1 | grep "0000 0000 0000 0000")
if [[ $pass == "" ]]; then
echo "
Trim failed...
You should see only 0000 0000 0000 0000 ...
"
else
echo "Success!!!"
fi
exit 0
}
function LUKSTEST {
# Reference: https://unix.stackexchange.com/questions/85865/trim-with-lvm-and-dm-crypt#
echo 1 > /proc/sys/vm/drop_caches
cd $pasta
echo "Creating a \"yes\" file."
yes | dd iflag=fullblock bs=1M count=1 of=test-trim-by-desgua
#position=`filefrag -s -v test-trim-by-desgua | grep "eof" | awk '{ print $3 }'`
position=`filefrag -s -v test-trim-by-desgua | grep "eof" | sed 's| ||g ; s|.*255:|| ; s|\.\..*||'`
[[ "$position" == "" ]] && echo "Could not find the position of the file. Are you on a LUKS on LVM?" && CLEAN;
device=`df test-trim-by-desgua | grep "dev/" | awk '{ print $1 }'`
yes=`dd bs=4096 skip=$position count=256 if=$device | hexdump -C`
echo "In the next line you should see a pattern like:
00000000 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a |y.y.y.y.y.y.y.y.|
$yes
"
if [[ "`echo "$yes" | grep "y.y.y"`" == "" ]]; then
echo "The pattern could not be checked. Something went wrong. Exiting."
CLEAN;
else
echo "Pattern confirmed."
fi
echo "Removing the temp file."
rm test-trim-by-desgua
echo "Syncing."
sync
sleep 1
if [[ "$fs" == "1" ]]; then
echo "fstrim -v $pasta && sleep 2" ; echo
fstrim -v $pasta
sleep 2
fi
# Drop cache
echo 1 > /proc/sys/vm/drop_caches
echo "In the next line you should **NOT** see a yes pattern like:
00000000 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a |y.y.y.y.y.y.y.y.|
If you see, then trim is not working:
`dd bs=4096 skip=$position count=256 if=$device | hexdump -C`"
yes=`dd bs=4096 skip=$position count=256 if=$device | hexdump -C`
if [[ "`echo "$yes" | grep "y.y.y"`" != "" ]]; then
echo "TRIM not working."
else
echo "TRIM is working!"
fi
CLEAN;
}
if [[ "$method" == "1" ]]; then
SDATEST;
TEST;
elif [[ "$method" == "2" ]]; then
LUKSTEST;
fi
exit 0

View File

@ -11,7 +11,6 @@ in
../configs/common.nix
../configs/docker.nix
../configs/games.nix
../configs/gui.nix
../configs/libvirt.nix
../configs/pantheon.nix
../configs/user-gui.nix

View File

@ -4,7 +4,8 @@ let
be = import ../configs/borg-exclude.nix;
secrets = import ../configs/secrets.nix;
wireguard = import ../configs/wireguard.nix;
in {
in
{
imports = [
<nixos-hardware/framework/13-inch/12th-gen-intel>
<home-manager/nixos>
@ -13,7 +14,6 @@ in {
../configs/common.nix
../configs/docker.nix
../configs/games.nix
../configs/gui.nix
../configs/libvirt.nix
../configs/plasma.nix
../configs/user-gui.nix
@ -24,20 +24,22 @@ in {
boot = {
initrd.systemd.enable = true;
loader = {
# systemd-boot.enable = true;
grub = {
enable = true;
device = "nodev";
useOSProber = true;
efiSupport = true;
};
# grub = {
# enable = true;
# device = "nodev";
# useOSProber = true;
# efiSupport = true;
# };
systemd-boot.enable = true;
efi = { canTouchEfiVariables = true; };
};
plymouth.enable = true;
};
nixpkgs.config.allowUnfree = true;
nixpkgs.config.packageOverrides = pkgs: {
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
intel-vaapi-driver =
pkgs.intel-vaapi-driver.override { enableHybridCodec = true; };
};
# nixpkgs.localSystem = {
@ -46,6 +48,8 @@ in {
# system = "x86_64-linux";
# };
# nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
nix.settings.system-features =
[ "nixos-test" "benchmark" "big-parallel" "kvm" "gccarch-alderlake" ];
@ -77,7 +81,7 @@ in {
opengl = {
enable = true;
driSupport32Bit = true;
extraPackages = with pkgs; [ intel-media-driver ];
extraPackages = with pkgs; [ intel-media-driver intel-vaapi-driver ];
};
pulseaudio.enable = false;
};
@ -87,7 +91,18 @@ in {
# rtkit is optional but recommended
services = {
power-profiles-daemon.enable = true;
fw-fanctrl.enable = true;
colord.enable = true;
fw-fanctrl = {
enable = true;
configJsonPath = "/home/alex/nixos-config/config.json";
};
xserver.displayManager.autoLogin = {
enable = true;
user = "alex";
};
pipewire = {
enable = true;
alsa.enable = true;
@ -115,6 +130,8 @@ in {
extraPruneArgs = "--save-space --list --stats";
exclude = map (x: "/home/alex/" + x) be.borg-exclude;
};
tailscale.enable = true;
};
powerManagement = {
@ -126,6 +143,8 @@ in {
DefaultTimeoutStopSec=10s
'';
# systemd.services.nix-daemon.serviceConfig.LimitNOFILE = 40960;
environment.systemPackages = with unstable.pkgs; [
rustdesk
cinnamon.warpinator
@ -149,11 +168,11 @@ in {
}];
# Partition swapfile is on (after LUKS decryption)
boot.resumeDevice = "/dev/disk/by-uuid/e5472308-de8b-4e60-91f4-4e7f194dad76";
boot.resumeDevice = "/dev/disk/by-uuid/5549d49d-165e-4a45-973e-6a32a63e31be";
# Resume Offset is offset of swapfile
# https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file
boot.kernelParams = [ "mem_sleep_default=deep" "resume_offset=40241152" ];
boot.kernelParams = [ "mem_sleep_default=deep" "resume_offset=190937088" ];
# Suspend-then-hibernate everywhere
services.logind = {
@ -164,7 +183,7 @@ in {
IdleActionSec=2m
'';
};
systemd.sleep.extraConfig = "HibernateDelaySec=60m";
systemd.sleep.extraConfig = "HibernateDelaySec=20m";
home-manager.users.alex.services.barrier.client = {
enable = true;

View File

@ -8,7 +8,6 @@ in {
../configs/user.nix
../configs/docker.nix
../configs/pantheon.nix
../configs/gui.nix
../configs/user-gui.nix
];

View File

@ -10,7 +10,6 @@ in
/etc/nixos/hardware-configuration.nix
../configs/common.nix
../configs/docker.nix
../configs/gui.nix
../configs/libvirt.nix
../configs/plasma.nix
../configs/user-gui.nix