migrate most of the nixos system
This commit is contained in:
parent
c06032eb48
commit
e7f0cdb4a2
8 changed files with 426 additions and 1 deletions
17
README.md
17
README.md
|
|
@ -1,3 +1,18 @@
|
|||
# nix-flake
|
||||
|
||||
rewrite of my nixos flake with hopefully better structuring and modularity
|
||||
|
||||
# todo
|
||||
- (progress) migrate files to this repository in the modules folder
|
||||
- split the files into little chunks for 1 specific purposes per file
|
||||
|
||||
# todo: migrate files below
|
||||
[X] flake stuff (flake.nix & flake.lock)
|
||||
|
||||
[X] hardware configs (hardware/scans)
|
||||
[X] nixos system
|
||||
[X] base nix configs
|
||||
[X] apps list
|
||||
[ ] user config (not hm)
|
||||
|
||||
[ ] home manager config
|
||||
[ ] rice config (everything in /rice)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
../../modules/hardware/thinkpad.nix
|
||||
../../modules/scans/thinkpad.nix
|
||||
|
||||
];
|
||||
}
|
||||
0
host/thinkpad/home.nix
Normal file
0
host/thinkpad/home.nix
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
{ pkgs, lib, resume-dev, ... }: {
|
||||
time.timeZone = lib.mkForce null;
|
||||
powerManagement = {
|
||||
enable = true;
|
||||
powertop.enable = true;
|
||||
};
|
||||
security = {
|
||||
protectKernelImage = false; # https://discourse.nixos.org/t/hibernate-doesnt-work-anymore/24673/7
|
||||
tpm2 = {
|
||||
enable = true;
|
||||
pkcs11.enable = true;
|
||||
tctiEnvironment.enable = true;
|
||||
};
|
||||
};
|
||||
hardware = {
|
||||
enableRedistributableFirmware = true; # T480 WiFi firmware fix
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver
|
||||
intel-compute-runtime
|
||||
libva-vdpau-driver
|
||||
libvdpau-va-gl
|
||||
];
|
||||
};
|
||||
};
|
||||
boot = {
|
||||
kernelParams = if resume-dev == "" then [] else ["resume=${resume-dev}"];
|
||||
resumeDevice = "${resume-dev}";
|
||||
|
||||
kernelPackages = pkgs.linuxPackages;
|
||||
kernel.sysctl."vm.laptop_mode" = 5;
|
||||
initrd.availableKernelModules = [ "thinkpad_acpi" ];
|
||||
};
|
||||
services = {
|
||||
logind.settings.Login = {
|
||||
HandleLidSwitch = "suspend";
|
||||
HandlePowerKey = "ignore";
|
||||
};
|
||||
fstrim.enable = true;
|
||||
thermald.enable = true;
|
||||
throttled.enable = true;
|
||||
fwupd.enable = true;
|
||||
udev.extraRules = ''
|
||||
#ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto"
|
||||
ACTION=="add", SUBSYSTEM=="pci", TEST=="power/control", ATTR{power/control}="auto"
|
||||
SUBSYSTEM=="power_supply", ACTION=="change", RUN+="${pkgs.writeShellScript "battery-thresholds" ''
|
||||
echo 80 > /sys/class/power_supply/BAT1/charge_control_start_threshold || true
|
||||
echo 85 > /sys/class/power_supply/BAT1/charge_control_end_threshold || true
|
||||
''}"
|
||||
'';
|
||||
tzupdate = {
|
||||
enable = true;
|
||||
timer.enable = true;
|
||||
};
|
||||
upower = {
|
||||
enable = true;
|
||||
percentageCritical = 15;
|
||||
percentageAction = 10;
|
||||
usePercentageForPolicy = true;
|
||||
allowRiskyCriticalPowerAction = true;
|
||||
criticalPowerAction = "HybridSleep";
|
||||
};
|
||||
auto-cpufreq = {
|
||||
enable = true;
|
||||
settings = {
|
||||
charger = {
|
||||
governor = "performance";
|
||||
energy_performance_preference = "balance_performance";
|
||||
turbo = "auto";
|
||||
};
|
||||
battery = {
|
||||
governor = "powersave";
|
||||
energy_performance_preference = "balance_power";
|
||||
turbo = "never";
|
||||
enable_thresholds = "true";
|
||||
start_threshold = "80";
|
||||
stop_threshold = "85";
|
||||
};
|
||||
};
|
||||
};
|
||||
thinkfan = {
|
||||
enable = true;
|
||||
levels = [
|
||||
[ "level auto" 0 55 ]
|
||||
[ 3 55 65 ]
|
||||
[ 7 65 75 ]
|
||||
[ "level full-speed" 75 100 ]
|
||||
];
|
||||
# sensors = [
|
||||
# { type = "hwmon"; query = "/sys/devices/platform/coretemp.0/hwmon"; }
|
||||
# ];
|
||||
};
|
||||
};
|
||||
}
|
||||
45
modules/scans/thinkpad.nix
Normal file
45
modules/scans/thinkpad.nix
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/756146e4-1b32-4f58-a3a3-6506f34bb89c";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/A05E-E94D";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/1721721a-bb5a-4166-a077-9500d30be2ac"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.docker0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.tailscale0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.virbr0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
64
modules/system/apps.nix
Normal file
64
modules/system/apps.nix
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
{ pkgs, ... }: {
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"ventoy-qt5-1.1.10"
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
baobab
|
||||
file-roller
|
||||
gnome-network-displays
|
||||
gnome-disk-utility
|
||||
|
||||
smartmontools
|
||||
lm_sensors
|
||||
ntfs3g
|
||||
virt-viewer
|
||||
dconf2nix
|
||||
pciutils
|
||||
gparted
|
||||
exfatprogs
|
||||
pavucontrol
|
||||
jq
|
||||
powertop
|
||||
smartmontools
|
||||
fastfetch
|
||||
ethtool
|
||||
dig
|
||||
dnslookup
|
||||
lsof
|
||||
gucharmap
|
||||
ncdu
|
||||
zip
|
||||
blueman
|
||||
shared-mime-info
|
||||
usbutils
|
||||
|
||||
android-tools
|
||||
scrcpy
|
||||
distrobox
|
||||
|
||||
ventoy-full-qt
|
||||
home-manager
|
||||
vim
|
||||
wget
|
||||
curl
|
||||
openssl_3
|
||||
htop
|
||||
nmap
|
||||
sysstat
|
||||
netcat
|
||||
p7zip
|
||||
stress
|
||||
wakeonlan
|
||||
coreutils-full
|
||||
traceroute
|
||||
lxappearance
|
||||
freerdp
|
||||
|
||||
nix-index
|
||||
nixd
|
||||
nil
|
||||
nh
|
||||
git
|
||||
];
|
||||
}
|
||||
25
modules/system/base.nix
Normal file
25
modules/system/base.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ hostname, timezone, ... }: {
|
||||
system.stateVersion = "24.11";
|
||||
imports = [ ./apps.nix ];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nix = {
|
||||
settings = {
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 7d -d";
|
||||
};
|
||||
optimise.automatic = true;
|
||||
};
|
||||
|
||||
networking.hostName = "${hostname}";
|
||||
time.timeZone = timezone;
|
||||
services = {
|
||||
openssh.enable = true;
|
||||
tailscale.enable = true;
|
||||
};
|
||||
}
|
||||
169
modules/system/default.nix
Normal file
169
modules/system/default.nix
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
{ pkgs, config, swapfile, locale, legacy-boot, wol, enable-dm, zerotier, ... }: {
|
||||
imports = [
|
||||
../hardware/scan.nix
|
||||
../rice/system.nix
|
||||
./base.nix
|
||||
];
|
||||
|
||||
boot = {
|
||||
kernelModules = [ "rndis_host" "cdc_ether" ];
|
||||
supportedFilesystems = [ "ext4" "btrfs" "vfat" "ntfs" "exfat" ];
|
||||
plymouth.enable = true;
|
||||
kernel.sysctl = {
|
||||
"net.ipv4.ip_forward" = 1;
|
||||
"net.ipv6.conf.all.forwarding" = 1;
|
||||
};
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
systemd-boot = {
|
||||
enable = !legacy-boot;
|
||||
configurationLimit = 3;
|
||||
sortKey = "z-nixos";
|
||||
editor = false;
|
||||
};
|
||||
grub = {
|
||||
enable = legacy-boot; #true;
|
||||
device = "/dev/sda";
|
||||
useOSProber = true;
|
||||
default = "saved";
|
||||
theme = "${pkgs.libsForQt5.breeze-grub}/grub/themes/breeze";
|
||||
};
|
||||
};
|
||||
kernelParams = [
|
||||
#"quiet"
|
||||
"boot.shell_on_fail"
|
||||
"loglevel=3"
|
||||
"rd.systemd.show_status=true"
|
||||
#"rd.udev.log_level=3"
|
||||
"udev.log_priority=3"
|
||||
];
|
||||
};
|
||||
swapDevices = if swapfile == 0 then [] else [
|
||||
{
|
||||
device = "/swapfile";
|
||||
size = swapfile;
|
||||
}
|
||||
];
|
||||
|
||||
virtualisation = {
|
||||
# waydroid.enable = true;
|
||||
docker.enable = true;
|
||||
# libvirtd = {
|
||||
# enable = true;
|
||||
# qemu = {
|
||||
# package = pkgs.qemu_kvm;
|
||||
# swtpm.enable = true;
|
||||
# runAsRoot = false;
|
||||
# ovmf = {
|
||||
# enable = false;
|
||||
# packages = [(pkgs.OVMF.override {
|
||||
# secureBoot = true;
|
||||
# tpmSupport = true;
|
||||
# }).fd];
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
};
|
||||
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = false;
|
||||
nameservers = ["1.1.1.1" "1.0.0.1"];
|
||||
};
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = [ pkgs.libva-vdpau-driver ];
|
||||
};
|
||||
i18n.defaultLocale = locale;
|
||||
environment.localBinInPath = true;
|
||||
|
||||
systemd.services."wol" = {
|
||||
enable = wol != "";
|
||||
description = "Wake-on-LAN for ${wol}";
|
||||
requires = [ "network.target" ];
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.ethtool}/bin/ethtool -s ${wol} wol g";
|
||||
Type = "oneshot";
|
||||
};
|
||||
wantedBy = [ # just in case
|
||||
"multi-user.target"
|
||||
"sleep.target"
|
||||
"suspend.target"
|
||||
"hibernate.target"
|
||||
"hybrid-sleep.target"
|
||||
"shutdown.target"
|
||||
"reboot.target"
|
||||
"halt.target"
|
||||
];
|
||||
};
|
||||
|
||||
services = {
|
||||
displayManager.gdm.enable = enable-dm;
|
||||
xserver = {
|
||||
enable = true;
|
||||
xkb = {
|
||||
layout = "us";
|
||||
variant = "";
|
||||
};
|
||||
};
|
||||
pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
};
|
||||
sunshine = {
|
||||
enable = true;
|
||||
autoStart = true;
|
||||
capSysAdmin = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
};
|
||||
printing = {
|
||||
enable = true;
|
||||
drivers = with pkgs; [ hplip ];
|
||||
};
|
||||
zerotierone = {
|
||||
enable = true;
|
||||
joinNetworks = zerotier.networks;
|
||||
};
|
||||
cloudflare-warp.enable = true;
|
||||
gnome.gnome-keyring.enable = true;
|
||||
gvfs.enable = true;
|
||||
blueman.enable = true;
|
||||
pulseaudio.enable = false;
|
||||
resolved.enable = true;
|
||||
};
|
||||
|
||||
security = {
|
||||
rtkit.enable = true;
|
||||
sudo.configFile = ''
|
||||
Defaults insults
|
||||
Defaults passwd_tries = 5
|
||||
'';
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
corefonts
|
||||
];
|
||||
|
||||
programs = {
|
||||
gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||
zsh.enable = true;
|
||||
nix-ld.enable = true;
|
||||
steam.enable = true;
|
||||
appimage = {
|
||||
enable = true;
|
||||
binfmt = true;
|
||||
};
|
||||
kdeconnect = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue