From 3125f869af93c913b64769f73e8efa58fe17f09f Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:07:06 +0200 Subject: [PATCH 01/13] update kernel --- nixos/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 1053a72..90de2a3 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -97,7 +97,7 @@ in preferStaticEmulators = true; # required to work with podman (apparently) }; - boot.kernelPackages = pkgs.linuxPackages_6_6; + boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernel.sysctl = { "net.ipv4.ip_forward" = 1; From 71e927f4bcc43224d2d1f57fa9d042eda2717f9c Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:43:44 +0200 Subject: [PATCH 02/13] prepare laptop --- flake.nix | 16 ++- nixos/configuration.nix | 122 +----------------- ...nix => desktop-hardware-configuration.nix} | 2 +- nixos/desktop.nix | 102 +++++++++++++++ nixos/laptop.nix | 11 ++ nixos/paperless.nix | 23 ++++ 6 files changed, 154 insertions(+), 122 deletions(-) rename nixos/{hardware-configuration.nix => desktop-hardware-configuration.nix} (97%) create mode 100644 nixos/desktop.nix create mode 100644 nixos/laptop.nix create mode 100644 nixos/paperless.nix diff --git a/flake.nix b/flake.nix index e4a932b..80a62bb 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ - ./nixos/configuration.nix + ./nixos/desktop.nix inputs.minegrub-theme.nixosModules.default home-manager.nixosModules.home-manager { @@ -43,6 +43,20 @@ } ]; }; + scrap = { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = [ + ./nixos/laptop.nix + /*home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.nora = import ./home-manager/desktop.nix; + home-manager.extraSpecialArgs = { inherit inputs; }; + }*/ + ]; + }; }; devShells.${"x86_64-linux"}.c-env = import ./shells/c-env.nix { diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 90de2a3..3faac4c 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -12,17 +12,10 @@ in # inputs.hardware.nixosModules.common-cpu-amd # inputs.hardware.nixosModules.common-ssd - # You can also split up your configuration and import pieces of it here: - # ./users.nix - inputs.niri.nixosModules.niri - - # Import your generated (nixos-generate-config) hardware configuration - ./hardware-configuration.nix ]; nixpkgs = { - # You can add overlays here overlays = [ # If you want to use overlays exported from other flakes: # neovim-nightly-overlay.overlays.default @@ -35,14 +28,9 @@ in # }; # ) ]; - # Configure your nixpkgs instance config = { - # Disable if you don't want unfree packages allowUnfree = true; nvidia.acceptLicense = true; - permittedInsecurePackages = [ - "electron-25.9.0" # Temporary fix until the next obsidian release: https://github.com/NixOS/nixpkgs/issues/273611 - ]; }; }; @@ -63,18 +51,9 @@ in }; }; - networking = { - hostName = "nixos"; - networkmanager.enable = true; - extraHosts = - '' - 192.168.122.44 illumos-vm - ''; - }; + networking.networkmanager.enable = true; time.timeZone = "Europe/Zurich"; - # Windows sets the hardware clock in local time by default. - time.hardwareClockInLocalTime = true; i18n.defaultLocale = "en_US.UTF-8"; @@ -82,15 +61,6 @@ in # boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.efiSysMountPoint = "/boot/efi"; - boot.loader.grub = { - enable = true; - device = "nodev"; - efiSupport = true; - useOSProber = true; - minegrub-theme = { - enable = true; - }; - }; boot.binfmt = { emulatedSystems = [ "wasm32-wasi" "aarch64-linux" ]; @@ -116,13 +86,6 @@ in "kernel.sysrq" = 340; }; - boot.supportedFilesystems = [ "ntfs" ]; - - fileSystems."/mnt/nas" = { - device = "192.168.178.47:/volume1/homes"; - fsType = "nfs"; - }; - # Enable the Wayland windowing system. services.displayManager.gdm.enable = true; services.desktopManager = { @@ -145,11 +108,6 @@ in variant = ""; }; - # ndivia drivers - # long story short night light mode is currently broken with nvidia drivers. LMAO - # - https://forums.developer.nvidia.com/t/screen-freezes-at-random-intervals-with-rtx-4060-max-q-mobile-multiple-driver-versions-tested/295811/6?u=mirao - videoDrivers = [ "nvidia" ]; - # mouse settings # https://unix.stackexchange.com/questions/58900/how-to-scroll-the-screen-using-the-middle-click #libinput.mouse = { @@ -159,12 +117,6 @@ in #}; }; - hardware.nvidia = { - # https://github.com/NixOS/nixpkgs/issues/299944#issuecomment-2027246826 - modesetting.enable = true; - open = true; - }; - hardware.graphics = { enable = true; extraPackages = with pkgs; [ @@ -185,7 +137,6 @@ in programs.waybar.enable = true; programs.coolercontrol.enable = true; - programs.coolercontrol.nvidiaSupport = true; services.flatpak.enable = true; console.keyMap = "sg"; @@ -224,11 +175,6 @@ in services.nixseparatedebuginfod.enable = true; - services.tailscale = { - enable = true; - useRoutingFeatures = "both"; - }; - users = { users = { nora = { @@ -273,29 +219,6 @@ in }; }; - systemd.services.paperless-ngx-backup = { - description = "paperless-ngx data backup to NAS"; - serviceConfig = { - Type = "oneshot"; - User = "nora"; - ExecStart = '' - ${lib.getExe pkgs.rsync} -a -v --delete --exclude=redis /home/nora/.local/share/paperless-ngx/ /mnt/nas/HEY/_Nora/paperless/backup - ''; - }; - }; - systemd.timers.paperless-ngx-backup = { - description = "paperless-ngx data backup to NAS"; - wantedBy = [ "timers.target" ]; - timerConfig = { - Unit = "paperless-ngx-backup.service"; - OnCalendar = "daily UTC"; - RandomizedDelaySec = 1800; - FixedRandomDelay = true; - Persistent = true; # ensure it still runs if the computer was down at the timer of trigger - }; - }; - - xdg.mime.defaultApplications = { "text/html" = "firefox.desktop"; "x-scheme-handler/http" = "firefox.desktop"; @@ -304,28 +227,6 @@ in # This is apparently used by Electron? Maybe not anymore. environment.sessionVariables.DEFAULT_BROWSER = lib.getExe pkgs.firefox; - services.openssh = { - enable = true; - hostKeys = [ - { - path = "/etc/ssh/ssh_host_ed25519_key"; - type = "ed25519"; - } - { - # P256 - path = "/etc/ssh/ssh_host_ecdsa_key"; - type = "ecdsa"; - } - { - bits = 4096; - path = "/etc/ssh/ssh_host_rsa_key"; - type = "rsa"; - } - ]; - settings.PermitRootLogin = "no"; - settings.PasswordAuthentication = false; - }; - environment.enableDebugInfo = true; environment.systemPackages = with pkgs; [ vim @@ -334,10 +235,9 @@ in # for firefox-nightly # inputs.firefox.packages.${pkgs.system}.firefox-nightly-bin firefox - os-prober git (linuxKernel.packagesFor - (linuxKernel.kernels.linux_6_6.override { + (linuxKernel.kernels.linux_latest.override { stdenv = gcc12Stdenv; buildPackages = pkgs.buildPackages // { stdenv = gcc12Stdenv; }; }) @@ -357,7 +257,6 @@ in man-pages man-pages-posix bpftrace - tailscale file comma alacritty @@ -411,24 +310,7 @@ in # Open ports in the firewall. networking.firewall = { enable = true; - trustedInterfaces = [ "tailscale0" ]; - allowedUDPPorts = [ config.services.tailscale.port ]; - allowedTCPPorts = [ /*SSH*/ 22 ]; - - # https://github.com/tailscale/tailscale/issues/4432#issuecomment-1112819111 - checkReversePath = "loose"; }; - networking.interfaces.enp39s0.wakeOnLan.enable = true; - system.nixos.distroName = "πŸ³οΈβ€βš§οΈ"; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. Itβ€˜s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "22.11"; } diff --git a/nixos/hardware-configuration.nix b/nixos/desktop-hardware-configuration.nix similarity index 97% rename from nixos/hardware-configuration.nix rename to nixos/desktop-hardware-configuration.nix index f24461a..06b2a8d 100644 --- a/nixos/hardware-configuration.nix +++ b/nixos/desktop-hardware-configuration.nix @@ -1,7 +1,7 @@ # 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, ... }: +{ config, lib, modulesPath, ... }: { imports = diff --git a/nixos/desktop.nix b/nixos/desktop.nix new file mode 100644 index 0000000..794bc12 --- /dev/null +++ b/nixos/desktop.nix @@ -0,0 +1,102 @@ +{ pkgs, config, ... }: { + imports = [ + ./desktop-hardware-configuration.nix + ./paperless.nix + ./configuration.nix + ]; + + networking = { + hostName = "nixos"; + extraHosts = + '' + 192.168.122.44 illumos-vm + ''; + }; + + # Windows sets the hardware clock in local time by default. + time.hardwareClockInLocalTime = true; + + boot.loader.grub = { + enable = true; + device = "nodev"; + efiSupport = true; + useOSProber = true; + minegrub-theme = { + enable = true; + }; + }; + + boot.supportedFilesystems = [ "ntfs" ]; + + fileSystems."/mnt/nas" = { + device = "192.168.178.47:/volume1/homes"; + fsType = "nfs"; + }; + + services.xserver = { + # ndivia drivers + # long story short night light mode is currently broken with nvidia drivers. LMAO + # - https://forums.developer.nvidia.com/t/screen-freezes-at-random-intervals-with-rtx-4060-max-q-mobile-multiple-driver-versions-tested/295811/6?u=mirao + videoDrivers = [ "nvidia" ]; + }; + + hardware.nvidia = { + # https://github.com/NixOS/nixpkgs/issues/299944#issuecomment-2027246826 + modesetting.enable = true; + open = true; + }; + + programs.coolercontrol.nvidiaSupport = true; + + services.tailscale = { + enable = true; + useRoutingFeatures = "both"; + }; + + services.openssh = { + enable = true; + hostKeys = [ + { + path = "/etc/ssh/ssh_host_ed25519_key"; + type = "ed25519"; + } + { + # P256 + path = "/etc/ssh/ssh_host_ecdsa_key"; + type = "ecdsa"; + } + { + bits = 4096; + path = "/etc/ssh/ssh_host_rsa_key"; + type = "rsa"; + } + ]; + settings.PermitRootLogin = "no"; + settings.PasswordAuthentication = false; + }; + + environment.systemPackages = with pkgs; [ + tailscale + os-prober + ]; + + networking.firewall = { + trustedInterfaces = [ "tailscale0" ]; + allowedUDPPorts = [ config.services.tailscale.port ]; + allowedTCPPorts = [ /*SSH*/ 22 ]; + + # https://github.com/tailscale/tailscale/issues/4432#issuecomment-1112819111 + checkReversePath = "loose"; + }; + + networking.interfaces.enp39s0.wakeOnLan.enable = true; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. Itβ€˜s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + system.stateVersion = "22.11"; +} diff --git a/nixos/laptop.nix b/nixos/laptop.nix new file mode 100644 index 0000000..f91acf6 --- /dev/null +++ b/nixos/laptop.nix @@ -0,0 +1,11 @@ +{ ... }: { + imports = [ + ./configuration.nix + ]; + + networking = { + hostName = "scrap"; + }; + + boot.loader.systemd-boot.enable = true; +} diff --git a/nixos/paperless.nix b/nixos/paperless.nix new file mode 100644 index 0000000..53fc995 --- /dev/null +++ b/nixos/paperless.nix @@ -0,0 +1,23 @@ +{ lib, pkgs, ... }: { + systemd.services.paperless-ngx-backup = { + description = "paperless-ngx data backup to NAS"; + serviceConfig = { + Type = "oneshot"; + User = "nora"; + ExecStart = '' + ${lib.getExe pkgs.rsync} -a -v --delete --exclude=redis /home/nora/.local/share/paperless-ngx/ /mnt/nas/HEY/_Nora/paperless/backup + ''; + }; + }; + systemd.timers.paperless-ngx-backup = { + description = "paperless-ngx data backup to NAS"; + wantedBy = [ "timers.target" ]; + timerConfig = { + Unit = "paperless-ngx-backup.service"; + OnCalendar = "daily UTC"; + RandomizedDelaySec = 1800; + FixedRandomDelay = true; + Persistent = true; # ensure it still runs if the computer was down at the timer of trigger + }; + }; +} From c7b19e0ec5f5c102fe4d8fadd4d3c014e826357d Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:45:29 +0200 Subject: [PATCH 03/13] fix --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 80a62bb..0dd6aae 100644 --- a/flake.nix +++ b/flake.nix @@ -43,7 +43,7 @@ } ]; }; - scrap = { + scrap = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ From 9c7e13408a8eee986085d46a792fbe5696f48d01 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:00:33 +0200 Subject: [PATCH 04/13] prepare laptop --- flake.nix | 4 ++-- home-manager/{desktop.nix => home.nix} | 0 nixos/configuration.nix | 4 ---- nixos/desktop.nix | 4 ++++ 4 files changed, 6 insertions(+), 6 deletions(-) rename home-manager/{desktop.nix => home.nix} (100%) diff --git a/flake.nix b/flake.nix index 0dd6aae..155f275 100644 --- a/flake.nix +++ b/flake.nix @@ -38,7 +38,7 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.nora = import ./home-manager/desktop.nix; + home-manager.users.nora = import ./home-manager/home.nix; home-manager.extraSpecialArgs = { inherit inputs; }; } ]; @@ -52,7 +52,7 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.nora = import ./home-manager/desktop.nix; + home-manager.users.nora = import ./home-manager/home.nix; home-manager.extraSpecialArgs = { inherit inputs; }; }*/ ]; diff --git a/home-manager/desktop.nix b/home-manager/home.nix similarity index 100% rename from home-manager/desktop.nix rename to home-manager/home.nix diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 3faac4c..f4ec6e7 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -136,7 +136,6 @@ in }; programs.waybar.enable = true; - programs.coolercontrol.enable = true; services.flatpak.enable = true; console.keyMap = "sg"; @@ -302,9 +301,6 @@ in }; }; - # TODO: ENABLE NVIDIA DRIVERS WHEN THEY STOP BEING READY - #hardware.nvidia-container-toolkit.enable = true; - hardware.enableAllFirmware = true; # Open ports in the firewall. diff --git a/nixos/desktop.nix b/nixos/desktop.nix index 794bc12..2a6fef2 100644 --- a/nixos/desktop.nix +++ b/nixos/desktop.nix @@ -46,6 +46,7 @@ open = true; }; + programs.coolercontrol.enable = true; programs.coolercontrol.nvidiaSupport = true; services.tailscale = { @@ -89,6 +90,9 @@ checkReversePath = "loose"; }; + # TODO: ENABLE NVIDIA DRIVERS WHEN THEY STOP BEING READY + #hardware.nvidia-container-toolkit.enable = true; + networking.interfaces.enp39s0.wakeOnLan.enable = true; # This value determines the NixOS release from which the default From 274f68126550dccc3e4b862646e255c387b1af5e Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:03:51 +0200 Subject: [PATCH 05/13] kernel magic --- nixos/configuration.nix | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/nixos/configuration.nix b/nixos/configuration.nix index f4ec6e7..62358ac 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -235,12 +235,7 @@ in # inputs.firefox.packages.${pkgs.system}.firefox-nightly-bin firefox git - (linuxKernel.packagesFor - (linuxKernel.kernels.linux_latest.override { - stdenv = gcc12Stdenv; - buildPackages = pkgs.buildPackages // { stdenv = gcc12Stdenv; }; - }) - ).perf + (linuxKernel.packagesFor linuxKernel.kernels.linux_latest).perf fish unzip (steam.override { From 2e49bff29af7c5b2ce53688ed6319afcc5aae310 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:04:43 +0200 Subject: [PATCH 06/13] prepare laptop --- nixos/laptop.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nixos/laptop.nix b/nixos/laptop.nix index f91acf6..aedeb62 100644 --- a/nixos/laptop.nix +++ b/nixos/laptop.nix @@ -8,4 +8,6 @@ }; boot.loader.systemd-boot.enable = true; + + syste.stateVersion = "25.11"; } From 7713b119717ae56703e8ec533d1f73ac12f6e012 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:20:20 +0200 Subject: [PATCH 07/13] move --- nixos/configuration.nix | 2 -- nixos/desktop.nix | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 62358ac..1a497d0 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -59,8 +59,6 @@ in # Bootloader. # boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.efi.efiSysMountPoint = "/boot/efi"; boot.binfmt = { emulatedSystems = [ "wasm32-wasi" "aarch64-linux" ]; diff --git a/nixos/desktop.nix b/nixos/desktop.nix index 2a6fef2..d638775 100644 --- a/nixos/desktop.nix +++ b/nixos/desktop.nix @@ -26,6 +26,9 @@ }; }; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.efi.efiSysMountPoint = "/boot/efi"; + boot.supportedFilesystems = [ "ntfs" ]; fileSystems."/mnt/nas" = { From 04f8f040bdde79af616b558016f3383f435cc5f4 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:26:02 +0200 Subject: [PATCH 08/13] prepare laptop --- flake.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 155f275..2b7f373 100644 --- a/flake.nix +++ b/flake.nix @@ -48,13 +48,13 @@ specialArgs = { inherit inputs; }; modules = [ ./nixos/laptop.nix - /*home-manager.nixosModules.home-manager + home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.nora = import ./home-manager/home.nix; home-manager.extraSpecialArgs = { inherit inputs; }; - }*/ + } ]; }; }; From 09159584f3e28f76bb4561b35ac3021466c7ab87 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:29:38 +0200 Subject: [PATCH 09/13] prepare laptop --- home-manager/waybar.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home-manager/waybar.nix b/home-manager/waybar.nix index 7d2be0d..f496a96 100644 --- a/home-manager/waybar.nix +++ b/home-manager/waybar.nix @@ -23,6 +23,9 @@ "cpu" "memory" "tray" + ] ++ + (if (config.networking.hostName == "scrap") then [ "battery" ] else [ ]) ++ + [ "custom/power" ]; From 5874a94a217ef547b2a559765996d2a14f9f21a7 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:35:15 +0200 Subject: [PATCH 10/13] hm --- flake.nix | 2 +- home-manager/laptop.nix | 7 + home-manager/waybar.nix | 392 ++++++++++++++++++++-------------------- 3 files changed, 207 insertions(+), 194 deletions(-) create mode 100644 home-manager/laptop.nix diff --git a/flake.nix b/flake.nix index 2b7f373..24251bf 100644 --- a/flake.nix +++ b/flake.nix @@ -52,7 +52,7 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.nora = import ./home-manager/home.nix; + home-manager.users.nora = import ./home-manager/laptop.nix; home-manager.extraSpecialArgs = { inherit inputs; }; } ]; diff --git a/home-manager/laptop.nix b/home-manager/laptop.nix new file mode 100644 index 0000000..6f59d51 --- /dev/null +++ b/home-manager/laptop.nix @@ -0,0 +1,7 @@ +{ ... }: { + imports = [ + ./home.nix + ]; + + is-laptop = true; +} diff --git a/home-manager/waybar.nix b/home-manager/waybar.nix index f496a96..97980a6 100644 --- a/home-manager/waybar.nix +++ b/home-manager/waybar.nix @@ -1,214 +1,220 @@ { config, pkgs, lib, ... }: { - home.file."${config.xdg.configHome}/waybar/config.jsonc" = { - text = - builtins.toJSON { - height = 35; - spacing = 4; + options.is-laptop = lib.mkEnableOption "whether the computer is a laptop"; - modules-left = [ - "systemd-failed-units" - "custom/music-back" - "mpris" - "custom/music-next" - ]; - modules-center = [ - "clock" - ]; - modules-right = [ - "bluetooth" - "privacy" - "pulseaudio" - "cpu" - "memory" - "tray" - ] ++ - (if (config.networking.hostName == "scrap") then [ "battery" ] else [ ]) ++ - [ - "custom/power" - ]; + config = { + home.file."${config.xdg.configHome}/waybar/config.jsonc" = { + text = + builtins.toJSON { + height = 35; + spacing = 4; - systemd-failed-units = { - hide-on-ok = true; # Hide if there are zero failed units. - format = "βœ— {nr_failed}"; - format-ok = "βœ“ systemd is ok but waybar is not"; - system = true; # monitor sytem units - user = true; # monitor user units - }; - "custom/music-back" = { - format = "⏴"; - tooltip = true; - tooltip-format = "Play previous song"; - on-click = "${lib.getExe pkgs.playerctl} previous"; - }; - mpris = { - format = "{status_icon} {dynamic}"; - dynamic-order = [ "title" "artist" ]; - status-icons = { - paused = "⏸"; + modules-left = [ + "systemd-failed-units" + "custom/music-back" + "mpris" + "custom/music-next" + ]; + modules-center = [ + "clock" + ]; + modules-right = [ + "bluetooth" + "privacy" + "pulseaudio" + "cpu" + "memory" + "tray" + ] ++ + (if (config.networking.hostName == "scrap") then + [ "network" "power-profiles-daemon" "battery" ] + else [ ]) ++ + [ + "custom/power" + ]; + + systemd-failed-units = { + hide-on-ok = true; # Hide if there are zero failed units. + format = "βœ— {nr_failed}"; + format-ok = "βœ“ systemd is ok but waybar is not"; + system = true; # monitor sytem units + user = true; # monitor user units }; - }; - "custom/music-next" = { - format = "⏡"; - tooltip = true; - tooltip-format = "Play next song"; - on-click = "${lib.getExe pkgs.playerctl} next"; - }; - clock = { - interval = 1; - format = "{:%a %F %H:%M:%S}"; - tooltip-format = "{calendar}"; - calendar = { - mode = "year"; - mode-mon-col = 3; - weeks-pos = "right"; - on-scroll = 1; - format = { - months = "{}"; - days = "{}"; - weeks = "W{}"; - weekdays = "{}"; - today = "{}"; + "custom/music-back" = { + format = "⏴"; + tooltip = true; + tooltip-format = "Play previous song"; + on-click = "${lib.getExe pkgs.playerctl} previous"; + }; + mpris = { + format = "{status_icon} {dynamic}"; + dynamic-order = [ "title" "artist" ]; + status-icons = { + paused = "⏸"; }; }; - actions = { - on-click-right = "mode"; - on-scroll-up = "shift_up"; - on-scroll-down = "shift_down"; + "custom/music-next" = { + format = "⏡"; + tooltip = true; + tooltip-format = "Play next song"; + on-click = "${lib.getExe pkgs.playerctl} next"; }; - }; - - bluetooth = { - format = "οŠ” {status}"; - format-disabled = "οŠ”"; # an empty format will hide the module - format-connected = "οŠ” {num_connections} connected"; - on-click = lib.getExe pkgs.overskride; - }; - pulseaudio = { - # "scroll-step": 1, // %, can be a float - "format" = "{volume}% {icon} {format_source}"; - "format-bluetooth" = "{volume}% {icon}οŠ” {format_source}"; - "format-bluetooth-muted" = " {icon}οŠ” {format_source}"; - "format-muted" = " {format_source}"; - "format-source" = "{volume}% ο„°"; - "format-source-muted" = "ο„±"; - "format-icons" = { - "headphone" = "ο€₯"; - "hands-free" = ""; - "headset" = ""; - "phone" = "ο‚•"; - "portable" = "ο‚•"; - "car" = "ο†Ή"; - "default" = [ "" "ο€§" "" ]; - }; - "on-click" = lib.getExe pkgs.pavucontrol; - }; - cpu = { - format = "{usage}% ο‹›"; - tooltip = false; - }; - memory = { - format = "{}% "; - }; - tray = { - spacing = 10; - }; - "custom/power" = - let - power-menu = pkgs.writeText "power_menu.xml" '' - - - - - - Lock πŸ”’ - - - - - - - - Reboot ♻️ - - - - - Poweroff πŸ’€ - - - - - ''; - in - { - "format" = "⏻"; - "tooltip" = false; - "menu" = "on-click"; - "menu-file" = power-menu; - "menu-actions" = { - "lock" = "${lib.getExe pkgs.swaylock}"; - "reboot" = "reboot"; - "poweroff" = "poweroff"; + clock = { + interval = 1; + format = "{:%a %F %H:%M:%S}"; + tooltip-format = "{calendar}"; + calendar = { + mode = "year"; + mode-mon-col = 3; + weeks-pos = "right"; + on-scroll = 1; + format = { + months = "{}"; + days = "{}"; + weeks = "W{}"; + weekdays = "{}"; + today = "{}"; + }; + }; + actions = { + on-click-right = "mode"; + on-scroll-up = "shift_up"; + on-scroll-down = "shift_down"; }; }; - }; - }; - home.file."${config.xdg.configHome}/waybar/style.css" = { - text = '' - ${builtins.readFile ./default-waybar-style.css} - window#waybar { - background: linear-gradient( - to right, - rgb(131, 80, 117) 15%, - rgb(158, 103, 143) 30%, - rgb(131, 80, 117) 45%, - #db88c5 - ); - color: black; - } + bluetooth = { + format = "οŠ” {status}"; + format-disabled = "οŠ”"; # an empty format will hide the module + format-connected = "οŠ” {num_connections} connected"; + on-click = lib.getExe pkgs.overskride; + }; + pulseaudio = { + # "scroll-step": 1, // %, can be a float + "format" = "{volume}% {icon} {format_source}"; + "format-bluetooth" = "{volume}% {icon}οŠ” {format_source}"; + "format-bluetooth-muted" = " {icon}οŠ” {format_source}"; + "format-muted" = " {format_source}"; + "format-source" = "{volume}% ο„°"; + "format-source-muted" = "ο„±"; + "format-icons" = { + "headphone" = "ο€₯"; + "hands-free" = ""; + "headset" = ""; + "phone" = "ο‚•"; + "portable" = "ο‚•"; + "car" = "ο†Ή"; + "default" = [ "" "ο€§" "" ]; + }; + "on-click" = lib.getExe pkgs.pavucontrol; + }; + cpu = { + format = "{usage}% ο‹›"; + tooltip = false; + }; + memory = { + format = "{}% "; + }; + tray = { + spacing = 10; + }; + "custom/power" = + let + power-menu = pkgs.writeText "power_menu.xml" '' + + + + + + Lock πŸ”’ + + + + + + + + Reboot ♻️ + + + + + Poweroff πŸ’€ + + + + + ''; + in + { + "format" = "⏻"; + "tooltip" = false; + "menu" = "on-click"; + "menu-file" = power-menu; + "menu-actions" = { + "lock" = "${lib.getExe pkgs.swaylock}"; + "reboot" = "reboot"; + "poweroff" = "poweroff"; + }; + }; + }; + }; + home.file."${config.xdg.configHome}/waybar/style.css" = { + text = '' + ${builtins.readFile ./default-waybar-style.css} - #systemd-failed-units { - padding-left: 30px; - padding-right: 30px; - background-color: red; - } + window#waybar { + background: linear-gradient( + to right, + rgb(131, 80, 117) 15%, + rgb(158, 103, 143) 30%, + rgb(131, 80, 117) 45%, + #db88c5 + ); + color: black; + } - #mpris { - color: white; - } + #systemd-failed-units { + padding-left: 30px; + padding-right: 30px; + background-color: red; + } - #custom-music-back, #custom-music-next { - font-size: 20px; - color: white; - } + #mpris { + color: white; + } - #custom-music-back { - padding: 0 10px 0 15px; - } - #custom-music-next { - padding: 0 10px; - } + #custom-music-back, #custom-music-next { + font-size: 20px; + color: white; + } - #clock { - background: unset; - color: white; - } + #custom-music-back { + padding: 0 10px 0 15px; + } + #custom-music-next { + padding: 0 10px; + } - #privacy *, #pulseaudio, #cpu, #memory, #tray { - background-color: unset; - color: black; - } + #clock { + background: unset; + color: white; + } - #custom-power { - padding-left: 15px; - padding-right: 15px; - font-size: 30px; - background-color: rebeccapurple; - color: white; - } - ''; + #privacy *, #pulseaudio, #cpu, #memory, #tray { + background-color: unset; + color: black; + } + + #custom-power { + padding-left: 15px; + padding-right: 15px; + font-size: 30px; + background-color: rebeccapurple; + color: white; + } + ''; + }; }; } From d1ebe08b26de4e7cf345c6a3cdfeaf977b33a96b Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:35:43 +0200 Subject: [PATCH 11/13] hm --- home-manager/waybar.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-manager/waybar.nix b/home-manager/waybar.nix index 97980a6..3e936b7 100644 --- a/home-manager/waybar.nix +++ b/home-manager/waybar.nix @@ -27,7 +27,7 @@ "memory" "tray" ] ++ - (if (config.networking.hostName == "scrap") then + (if (config.is-laptop) then [ "network" "power-profiles-daemon" "battery" ] else [ ]) ++ [ From e59d3746c8e3f453b3f326788266ab5fc798179e Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:52:01 +0200 Subject: [PATCH 12/13] hello from the laptop --- nixos/laptop-hardware-configuration.nix | 40 +++++++++++++++++++++++++ nixos/laptop.nix | 4 ++- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 nixos/laptop-hardware-configuration.nix diff --git a/nixos/laptop-hardware-configuration.nix b/nixos/laptop-hardware-configuration.nix new file mode 100644 index 0000000..1e5aca7 --- /dev/null +++ b/nixos/laptop-hardware-configuration.nix @@ -0,0 +1,40 @@ +# 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/646dc4c1-53aa-4fce-9328-f7c42a5b5ea8"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-c16da30d-5953-4ce9-995a-f4acd77dcaf7".device = "/dev/disk/by-uuid/c16da30d-5953-4ce9-995a-f4acd77dcaf7"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/E494-B917"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/laptop.nix b/nixos/laptop.nix index aedeb62..39681b6 100644 --- a/nixos/laptop.nix +++ b/nixos/laptop.nix @@ -1,5 +1,6 @@ { ... }: { imports = [ + ./laptop-hardware-configuration.nix ./configuration.nix ]; @@ -8,6 +9,7 @@ }; boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; - syste.stateVersion = "25.11"; + system.stateVersion = "25.11"; } From a629e9f28c6030e9d01e0c9d4b4096d8c77cd1ea Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Fri, 1 Aug 2025 21:36:11 +0200 Subject: [PATCH 13/13] configure waybar better --- home-manager/waybar.nix | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/home-manager/waybar.nix b/home-manager/waybar.nix index 3e936b7..64ac3da 100644 --- a/home-manager/waybar.nix +++ b/home-manager/waybar.nix @@ -119,6 +119,41 @@ tray = { spacing = 10; }; + "network" = { + # "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi" = " ({signalStrength}%)"; + "format-ethernet" = "{ipaddr}/{cidr} οž–"; + "tooltip-format" = "{ifname} via {gwaddr} οž– ({ipaddr}/{cidr})"; + "format-linked" = "{ifname} (No IP) οž–"; + "format-disconnected" = "Disconnected ⚠"; + "format-alt" = "{ifname}: {ipaddr}/{cidr}"; + }; + "power-profiles-daemon" = { + "format" = "{icon}"; + "tooltip-format" = "Power profile: {profile}\nDriver: {driver}"; + "tooltip" = true; + "format-icons" = { + "default" = ""; + "performance" = ""; + "balanced" = "ο‰Ž"; + "power-saver" = ""; + }; + }; + "battery" = { + "states" = { + # "good": 95, + "warning" = 30; + "critical" = 5; + }; + "format" = "{capacity}% {icon}"; + "format-full" = "{capacity}% {icon}"; + "format-charging" = "{capacity}% ο—§"; + "format-plugged" = "{capacity}% "; + "format-alt" = "{time} {icon}"; + # "format-good": "", // An empty format will hide the module + # "format-full": "", + "format-icons" = [ "" "" "" "" "" ]; + }; "custom/power" = let power-menu = pkgs.writeText "power_menu.xml" '' @@ -202,7 +237,7 @@ color: white; } - #privacy *, #pulseaudio, #cpu, #memory, #tray { + #privacy *, #pulseaudio, #cpu, #memory, #tray, #network, #power-profiles-daemon, #battery { background-color: unset; color: black; }