From 73dd477f9e6ee3131c34fa9d28c9307a5656a586 Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 00:03:47 +0200 Subject: [PATCH 01/10] BROKEN: Expanding desktop option --- home/programs/firefox.nix | 3 +- home/programs/mpv.nix | 2 +- home/programs/nixcord.nix | 3 +- home/programs/other.nix | 2 +- home/services/udiskie.nix | 3 +- home/shell/other.nix | 8 +- home/shell/repl/lib.nix | 4 +- home/style/default.nix | 2 +- home/wayland/default.nix | 6 +- home/wayland/fuzzel.nix | 2 +- home/wayland/hyprland/binds.nix | 17 ++-- home/wayland/hyprland/default.nix | 2 +- home/wayland/hyprland/settings.nix | 6 +- home/wayland/hyprlock.nix | 4 +- home/wayland/mako.nix | 4 +- hosts/default.nix | 5 +- hosts/lapserv/default.nix | 2 +- hosts/lapserv/hardware-configuration.nix | 42 ++++---- hosts/laptop/default.nix | 12 ++- hosts/minimal/default.nix | 24 ++++- system/core/defaultPackages.nix | 2 + system/default.nix | 1 + system/desktop/default.nix | 18 ++++ system/{services => desktop}/greetd.nix | 6 +- system/desktop/hyprland.nix | 16 +++ system/{services => desktop}/pipewire.nix | 6 +- system/desktop/plasma6.nix | 33 +++++++ system/desktop/polkit.nix | 22 +++++ system/{programs => desktop}/xdg.nix | 6 +- system/hardware/fingerprint.nix | 7 +- system/hardware/graphics.nix | 3 +- system/network/default.nix | 2 +- system/network/wireguard.nix | 72 -------------- system/nix/default.nix | 4 +- system/nix/nix-index.nix | 7 -- system/programs/default.nix | 4 - system/programs/games.nix | 113 +++++++++++----------- system/programs/home-manager.nix | 14 +-- system/programs/hyprland.nix | 19 ---- system/programs/neovim.nix | 1 + system/programs/plasma6.nix | 33 ------- system/programs/polkit.nix | 22 ----- system/server/bot.nix | 2 +- system/services/default.nix | 2 - 44 files changed, 272 insertions(+), 296 deletions(-) create mode 100644 system/desktop/default.nix rename system/{services => desktop}/greetd.nix (78%) create mode 100644 system/desktop/hyprland.nix rename system/{services => desktop}/pipewire.nix (94%) create mode 100644 system/desktop/plasma6.nix create mode 100644 system/desktop/polkit.nix rename system/{programs => desktop}/xdg.nix (67%) delete mode 100644 system/network/wireguard.nix delete mode 100644 system/nix/nix-index.nix delete mode 100644 system/programs/hyprland.nix delete mode 100644 system/programs/plasma6.nix delete mode 100644 system/programs/polkit.nix diff --git a/home/programs/firefox.nix b/home/programs/firefox.nix index e1378f2..02fbd88 100644 --- a/home/programs/firefox.nix +++ b/home/programs/firefox.nix @@ -1,5 +1,4 @@ { - osConfig, pkgs, lib, ... @@ -7,7 +6,7 @@ profileName = "jsw.nixos-default"; in { programs.firefox = { - enable = osConfig.niksos.desktop; + enable = true; package = pkgs.wrapFirefox pkgs.firefox-unwrapped { extraPolicies = { DisableFirefoxStudies = true; diff --git a/home/programs/mpv.nix b/home/programs/mpv.nix index f59a5d5..c9bc832 100644 --- a/home/programs/mpv.nix +++ b/home/programs/mpv.nix @@ -4,7 +4,7 @@ ... }: { programs.mpv = { - enable = osConfig.niksos.desktop; + enable = true; config = { vo = "gpu"; profile = "gpu-hq"; diff --git a/home/programs/nixcord.nix b/home/programs/nixcord.nix index 01883e1..b64db78 100644 --- a/home/programs/nixcord.nix +++ b/home/programs/nixcord.nix @@ -1,7 +1,6 @@ {osConfig, ...}: { programs.nixcord = { - enable = osConfig.niksos.neovim; - + enable = true; discord.enable = false; vesktop.enable = true; vesktopConfig = { diff --git a/home/programs/other.nix b/home/programs/other.nix index 8213aec..fd53b51 100644 --- a/home/programs/other.nix +++ b/home/programs/other.nix @@ -4,7 +4,7 @@ osConfig, ... }: { - home.packages = lib.mkIf osConfig.niksos.desktop [ + home.packages = [ pkgs.spotify pkgs.signal-desktop ]; diff --git a/home/services/udiskie.nix b/home/services/udiskie.nix index 4d2526b..7f39023 100644 --- a/home/services/udiskie.nix +++ b/home/services/udiskie.nix @@ -1,6 +1,5 @@ -{osConfig, ...}: { +{ services.udiskie = { - enable = osConfig.niksos.desktop; tray = "never"; #NOTE: Don't have a bar (yet?) }; } diff --git a/home/shell/other.nix b/home/shell/other.nix index 97bf8c0..d3c260c 100644 --- a/home/shell/other.nix +++ b/home/shell/other.nix @@ -10,21 +10,21 @@ pkgs.gh pkgs.ripgrep pkgs.p7zip - pkgs.rsync pkgs.usbutils pkgs.pciutils pkgs.inetutils pkgs.aria2 pkgs.dua pkgs.file - ] - ++ lib.optionals osConfig.niksos.desktop [ - inputs.somcli.defaultPackage.${pkgs.system} pkgs.ffmpeg pkgs.gurk-rs pkgs.playerctl ] ++ lib.optionals osConfig.niksos.bluetooth [ pkgs.ear2ctl + ] + ++ lib.optionals osConfig.niksos.portable [ + inputs.somcli.defaultPackage.${pkgs.system} ]; + ; } diff --git a/home/shell/repl/lib.nix b/home/shell/repl/lib.nix index 7a2f2b3..e90348a 100644 --- a/home/shell/repl/lib.nix +++ b/home/shell/repl/lib.nix @@ -32,7 +32,9 @@ nixpkgsFromInputsPath = flake.inputs.nixpkgs.outPath or ""; nixpkgs = - flake.pkgs.${currentSystem}.nixpkgs + flake.pkgs.${ + currentSystem + }.nixpkgs or ( if nixpkgsFromInputsPath != "" then import nixpkgsFromInputsPath {} diff --git a/home/style/default.nix b/home/style/default.nix index 6a7d5ce..ea66857 100644 --- a/home/style/default.nix +++ b/home/style/default.nix @@ -5,7 +5,7 @@ ... }: { stylix = { - enable = osConfig.niksos.desktop; + enable = true; autoEnable = lib.mkDefault true; image = ./background.png; diff --git a/home/wayland/default.nix b/home/wayland/default.nix index b1171b6..fc64e5b 100644 --- a/home/wayland/default.nix +++ b/home/wayland/default.nix @@ -5,7 +5,7 @@ ... }: let inherit (lib) mkIf; - inherit (osConfig.niksos) desktop; + cfg = osConfig.niksos.desktop.hyprland; in { imports = [ ./fuzzel.nix @@ -14,11 +14,11 @@ in { ./mako.nix ]; - home.packages = mkIf desktop [ + home.packages = mkIf cfg [ pkgs.wl-clipboard ]; - home.sessionVariables = mkIf desktop { + home.sessionVariables = mkIf cfg { #FIXME: migrate to hyprconf QT_QPA_PLATFORM = "wayland"; SDL_VIDEODRIVER = "wayland"; XDG_SESSION_TYPE = "wayland"; diff --git a/home/wayland/fuzzel.nix b/home/wayland/fuzzel.nix index 57894ef..0b8649c 100644 --- a/home/wayland/fuzzel.nix +++ b/home/wayland/fuzzel.nix @@ -5,7 +5,7 @@ ... }: { programs.fuzzel = { - enable = osConfig.niksos.desktop; + enable = osConfig.niksos.desktop.hyprland; settings.main = { launch-prefix = "${lib.getExe pkgs.uwsm} app --"; }; diff --git a/home/wayland/hyprland/binds.nix b/home/wayland/hyprland/binds.nix index 6328310..cec1a52 100644 --- a/home/wayland/hyprland/binds.nix +++ b/home/wayland/hyprland/binds.nix @@ -8,6 +8,7 @@ }: let inherit (lib) getExe; inherit (config.lib.stylix.colors) base0D; + inherit (osConfig.niksos) desktop games portable fingerprint; runOnce = program: "pgrep ${program} || uwsm app -- ${program}"; uwsm = getExe pkgs.uwsm; @@ -35,11 +36,11 @@ nmtui = termapp "${pkgs.networkmanager}/bin/nmtui"; somcli = let - interactiveSom = pkgs.writeShellScriptBin "somcli" '' + somSleep = pkgs.writeShellScriptBin "somsleep" '' ${getExe inputs.somcli.defaultPackage.${pkgs.system}} && sleep 5 ''; termSom = pkgs.writeShellScriptBin "somfoot" '' - ${foot} -a "foot-somcli" ${getExe interactiveSom} + ${foot} -a "foot-somcli" ${getExe somSleep} ''; in appE termSom; @@ -61,7 +62,7 @@ ) 10); in { - config = lib.mkIf osConfig.niksos.desktop { + config = lib.mkIf desktop { home.file.".XCompose".text = '' : "¯\\_(ツ)_/¯" # Shrug. ''; @@ -88,7 +89,6 @@ in { "$mod, Return, exec, ${foot}" "$mod Shift, Return, exec, ${firefox}" "$mod, Escape, exec, ${hyprlock}" - "$mod Shift, S, exec, ${somcli}" "$mod, A, exec, ${pulsemixer}" "$mod, B, exec, ${bluetui}" @@ -111,13 +111,18 @@ in { "$mod SHIFT, j, movewindow, d" ] ++ workspaces - ++ lib.optionals osConfig.niksos.games (let + ++ lib.optionals games (let suyu = "${appE pkgs.suyu} -ql"; dolphin = appE pkgs.dolphin-emu; in [ "Super, s, exec, ${suyu}" "Super, d, exec, ${dolphin}" - ]); + ]) + ++ lib.optionals portable [ + "$mod Shift, S, exec, ${somcli}" + ] ++ lib.optionals fingerprint [ + ", XF86PowerOff, exec, ${uwsm} app -- pgrep fprintd-verify && exit 0 || ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'" #NOTE: Also check home/wayland/hyprland/settings + system/hardware/fingerprint + ]; bindl = [ # media controls diff --git a/home/wayland/hyprland/default.nix b/home/wayland/hyprland/default.nix index 59852c2..6baaa62 100644 --- a/home/wayland/hyprland/default.nix +++ b/home/wayland/hyprland/default.nix @@ -15,7 +15,7 @@ in { ]; wayland.windowManager.hyprland = { - enable = osConfig.niksos.desktop; + enable = osConfig.niksos.desktop.hyprland; settings = { env = [ "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" diff --git a/home/wayland/hyprland/settings.nix b/home/wayland/hyprland/settings.nix index 40bf90b..225ede9 100644 --- a/home/wayland/hyprland/settings.nix +++ b/home/wayland/hyprland/settings.nix @@ -1,4 +1,4 @@ -{ +{lib, osConfig, ...}: { wayland.windowManager.hyprland.settings = { xwayland = { force_zero_scaling = true; @@ -93,6 +93,10 @@ "float, class:com.github.phase1geo.annotator" "float, class:foot-somcli" "size >30% >30%, class:foot-somcli" + ] ++ lib.optionals osConfig.niksos.fingerprint [ + "float, class:foot-fprintd" ]; + #NOTE: Also check home/wayland/hyprland/binds + system/hardware/fingerprint + }; } diff --git a/home/wayland/hyprlock.nix b/home/wayland/hyprlock.nix index 3ed7b91..cfdc5e8 100644 --- a/home/wayland/hyprlock.nix +++ b/home/wayland/hyprlock.nix @@ -1,12 +1,12 @@ { - config, osConfig, + config, ... }: let inherit (config.lib.stylix.colors) base05; in { programs.hyprlock = { - enable = osConfig.niksos.desktop; + enable = osConfig.niksos.desktop.hyprland; settings = { general = { diff --git a/home/wayland/mako.nix b/home/wayland/mako.nix index cb26363..a528178 100644 --- a/home/wayland/mako.nix +++ b/home/wayland/mako.nix @@ -1,6 +1,6 @@ -{osConfig, ...}: { +{osConfig, ...}:{ services.mako = { - enable = osConfig.niksos.desktop; + enable = osConfig.niksos.desktop.hyprland; settings.defaultTimeout = 5000; }; } diff --git a/hosts/default.nix b/hosts/default.nix index a472c62..7ffc0a6 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -54,7 +54,10 @@ in { networking.hostName = "vm"; niksos = { - desktop = true; + desktop = { + enable = true; + hyprland = true; + }; neovim = true; }; diff --git a/hosts/lapserv/default.nix b/hosts/lapserv/default.nix index 69b99ee..5490548 100644 --- a/hosts/lapserv/default.nix +++ b/hosts/lapserv/default.nix @@ -13,7 +13,7 @@ # settings.ffmepg.accel = "nvenc"; settings.ffmpeg.preferredHwDevice = "/dev/dri/renderD128"; accelerationDevices = [ - "/dev/dri/renderD128" + "/dev/dri/renderD128" ]; }; diff --git a/hosts/lapserv/hardware-configuration.nix b/hosts/lapserv/hardware-configuration.nix index 07af40e..f5ae11a 100644 --- a/hosts/lapserv/hardware-configuration.nix +++ b/hosts/lapserv/hardware-configuration.nix @@ -1,30 +1,34 @@ # 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") - ]; + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-intel"]; + boot.extraModulePackages = []; - fileSystems."/" = - { device = "/dev/disk/by-uuid/33b7e681-d92a-40db-a172-b797591a1e2e"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/33b7e681-d92a-40db-a172-b797591a1e2e"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/0BEA-7525"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/0BEA-7525"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; - swapDevices = [ ]; + 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 diff --git a/hosts/laptop/default.nix b/hosts/laptop/default.nix index fc74b03..9028eee 100644 --- a/hosts/laptop/default.nix +++ b/hosts/laptop/default.nix @@ -13,13 +13,17 @@ in { ]; niksos = { - bluetooth = true; fingerprint = true; - games = true; - desktop = true; + bluetooth = true; portable = true; + neovim = true; - kde = true; + games = true; + desktop = { + enable = true; + hyprland = true; + kde = false; + }; }; home-manager.users.jsw.wayland.windowManager.hyprland.settings.monitor = ["eDP-1,2880x1920@120,0x0,1.5,vrr,1"]; diff --git a/hosts/minimal/default.nix b/hosts/minimal/default.nix index d26559f..69cc980 100644 --- a/hosts/minimal/default.nix +++ b/hosts/minimal/default.nix @@ -1,4 +1,6 @@ { + #NOTE: This config serves as a list of all of the available options + imports = [ ./hardware-configuration.nix ]; @@ -6,9 +8,21 @@ boot.plymouth.enable = false; services.fwupd.enable = false; - # Other stuff that's enabled by default because i'll use it but it's still bloat is (note that this list shares a lot of resources): - # - graphics drivers (~1.8gb) - # - networkmanager (~1.25gb) - # - polkit (~1.25gb) - # - other stuff.. total: 4.68gb + niksos = { + bluetooth = false; + desktop = { enable = false; hyprland = false; kde = false; }; + fingerprint = false; + games = false; + graphics = { enable = false; intel = false; nvidia = false; }; + neovim = false; + portable = false; + server = false; + }; + + #NOTE: Old info + ## Other stuff that's enabled by default because i'll use it but it's still bloat is (note that this list shares a lot of resources): + ## - graphics drivers (~1.8gb) + ## - networkmanager (~1.25gb) + ## - polkit (~1.25gb) + ## - other stuff.. total: 4.68gb } diff --git a/system/core/defaultPackages.nix b/system/core/defaultPackages.nix index b6e9f36..b62d80c 100644 --- a/system/core/defaultPackages.nix +++ b/system/core/defaultPackages.nix @@ -4,8 +4,10 @@ ... }: { environment.defaultPackages = [ + pkgs.git # We need git for flakes pkgs.neovim inputs.agenix.packages.${pkgs.system}.default + pkgs.rsync ]; # Still have to be able to edit configs. environment.sessionVariables = {EDITOR = "nvim";}; } diff --git a/system/default.nix b/system/default.nix index b82f665..c57b7cf 100644 --- a/system/default.nix +++ b/system/default.nix @@ -7,5 +7,6 @@ ./programs ./server ./services + ./desktop ]; } diff --git a/system/desktop/default.nix b/system/desktop/default.nix new file mode 100644 index 0000000..3ff2506 --- /dev/null +++ b/system/desktop/default.nix @@ -0,0 +1,18 @@ +{lib, ...}: let + mkEO = lib.mkEnableOption; +in { + imports = [ + ./greetd.nix + ./hyprland.nix + ./pipewire.nix + ./plasma6.nix + ./polkit.nix + ./xdg.nix + ]; + + options.niksos.desktop = { + enable = mkEO "enable desktop related programs."; + hyprland = mkEO "enable hyprland related programs."; + kde = mkEO "enable kde specialisation."; + }; +} diff --git a/system/services/greetd.nix b/system/desktop/greetd.nix similarity index 78% rename from system/services/greetd.nix rename to system/desktop/greetd.nix index 2558b1f..ea8c60d 100644 --- a/system/services/greetd.nix +++ b/system/desktop/greetd.nix @@ -2,8 +2,10 @@ config, lib, ... -}: { - config = lib.mkIf config.niksos.desktop { +}: let + cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable; +in { + config = lib.mkIf cfg { # greetd display manager services.greetd = let session = { diff --git a/system/desktop/hyprland.nix b/system/desktop/hyprland.nix new file mode 100644 index 0000000..f281e5a --- /dev/null +++ b/system/desktop/hyprland.nix @@ -0,0 +1,16 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable; +in { + config = lib.mkIf cfg { + programs.hyprland = { + enable = true; + withUWSM = true; + }; + environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Makes electron apps use wayland. + }; +} diff --git a/system/services/pipewire.nix b/system/desktop/pipewire.nix similarity index 94% rename from system/services/pipewire.nix rename to system/desktop/pipewire.nix index 4d4f59d..e6ccf2e 100644 --- a/system/services/pipewire.nix +++ b/system/desktop/pipewire.nix @@ -3,8 +3,10 @@ lib, pkgs, ... -}: { - config = lib.mkIf config.niksos.desktop { +}: let + cfg = config.niksos.desktop.enable; +in { + config = lib.mkIf cfg { security.rtkit.enable = true; services.pipewire = { diff --git a/system/desktop/plasma6.nix b/system/desktop/plasma6.nix new file mode 100644 index 0000000..9a033d0 --- /dev/null +++ b/system/desktop/plasma6.nix @@ -0,0 +1,33 @@ +{ + lib, + pkgs, + config, + ... +}: let + cfg = config.niksos.desktop.enable && config.niksos.desktop.kde.enable; +in { + config = lib.mkIf cfg { + niksos.desktop.hyprland = lib.mkForce false; + specialisation.de.configuration = { + services = { + greetd = let + session = { + command = "${pkgs.kdePackages.plasma-workspace}/bin/startplasma-wayland"; + user = "jsw"; + }; + in { + enable = true; + settings = { + terminal.vt = 1; + default_session = session; + initial_session = session; + }; + }; + + desktopManager.plasma6.enable = true; + }; + + home-manager.users.jsw.stylix.autoEnable = false; + }; + }; +} diff --git a/system/desktop/polkit.nix b/system/desktop/polkit.nix new file mode 100644 index 0000000..2b90acd --- /dev/null +++ b/system/desktop/polkit.nix @@ -0,0 +1,22 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable; +in { + systemd.user.services.polkit-gnome-authentication-agent-1 = lib.mkIf cfg { + description = "polkit-gnome-authentication-agent-1"; + wantedBy = ["graphical-session.target"]; + wants = ["graphical-session.target"]; + after = ["graphical-session.target"]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; +} diff --git a/system/programs/xdg.nix b/system/desktop/xdg.nix similarity index 67% rename from system/programs/xdg.nix rename to system/desktop/xdg.nix index 18c971f..a4562df 100644 --- a/system/programs/xdg.nix +++ b/system/desktop/xdg.nix @@ -3,8 +3,10 @@ config, lib, ... -}: { - xdg.portal = lib.mkIf config.niksos.desktop { +}: let + cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable; +in { + xdg.portal = lib.mkIf cfg { enable = true; xdgOpenUsePortal = true; config = { diff --git a/system/hardware/fingerprint.nix b/system/hardware/fingerprint.nix index 1212b33..d683549 100644 --- a/system/hardware/fingerprint.nix +++ b/system/hardware/fingerprint.nix @@ -9,13 +9,14 @@ uwsm = lib.getExe pkgs.uwsm; foot = lib.getExe pkgs.foot; in { - options.niksos.fingerprint = mkEnableOption "fingerprint support."; + #NOTE: Also check home/wayland/hyprland/settings + home/wayland/hyprland/binds + options.niksos.fingerprint = mkEnableOption "fingerprint support."; config = mkIf fingerprint { services.fprintd.enable = true; - home-manager.users.jsw.wayland.windowManager.hyprland.settings = mkIf desktop { - bind = [ + home-manager.users.jsw.wayland.windowManager.hyprland.settings = mkIf desktop.hyprland { + bind = mkIf fingerprint [ ", XF86PowerOff, exec, ${uwsm} app -- pgrep fprintd-verify && exit 0 || ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'" ]; windowrule = [ diff --git a/system/hardware/graphics.nix b/system/hardware/graphics.nix index 7683306..c9b79fe 100644 --- a/system/hardware/graphics.nix +++ b/system/hardware/graphics.nix @@ -3,14 +3,13 @@ pkgs, lib, ... -}: let +}: let inherit (lib) optionals mkEnableOption mkDefault; graphics = config.niksos.graphics; enable = graphics.enable; nvidia = graphics.enable && graphics.nvidia; intel = graphics.enable && graphics.intel; - in { options.niksos.graphics = { enable = mkEnableOption "core graphics"; diff --git a/system/network/default.nix b/system/network/default.nix index 073f9ef..8c9c424 100644 --- a/system/network/default.nix +++ b/system/network/default.nix @@ -3,9 +3,9 @@ imports = [ ./avahi.nix ./tailscale.nix - ./wireguard.nix ]; + #FIXME: networking = { # use quad9 with DNS over TLS nameservers = ["9.9.9.9#dns.quad9.net"]; diff --git a/system/network/wireguard.nix b/system/network/wireguard.nix deleted file mode 100644 index 7dcaa49..0000000 --- a/system/network/wireguard.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - inherit (lib) mkIf optionals; - inherit (config.networking) hostName; - iptables = lib.getExe' pkgs.iptables "iptables"; - - port = 53; - server = "lapserv"; - - serverCfg = { - externalInterface = "eth0"; - privateKeyFile = config.age.secrets.wg-lapserv-private.path; - publicKey = "aM+OrvByr63RxKsU9hu0A1lKJr8fPHifHDhBekkHR0c="; - publicIp = "80.242.224.170"; - ip = "10.100.0.1"; - }; - deviceConfig = { - laptop = { - publicKey = config.age.secrets.wg-laptop-private.path; - privateKeyFile = "1su1FfHuEYIvJLaZPwpN86kmH19d/NH/zuh9DjIOyQI="; - ip = "10.100.0.2"; - }; - }; - - isServer = server == config.networking.hostName; - currentConfig = - if isServer - then serverCfg - else deviceConfig.${hostName}; -in { - networking.nat = mkIf isServer { - enable = true; - inherit (serverCfg) externalInterface; - internalInterfaces = ["wg0"]; - }; - networking.firewall.allowedUDPPorts = [port]; - - networking.wireguard.interfaces.wg0 = { - inherit (currentConfig) privateKeyFile; - - listenPort = port; - ips = ["${currentConfig.ip}/24"]; - - peers = - [] - ++ (optionals isServer (builtins.concatMap (x: { - inherit (x) publicKey; - allowedIPs = ["${x.ip}/32"]; - }) - (builtins.attrValues - deviceConfig))) - ++ (optionals (!isServer) [ - { - inherit (serverCfg) publicKey; - allowedIPs = ["0.0.0.0/0"]; - endpoint = "${serverCfg.publicIp}:${builtins.toString port}"; - persistentKeepalive = 25; - } - ]); - - postSetup = mkIf isServer '' - ${iptables} -t nat -A POSTROUTING -s 10.100.0.0/24 -o ${serverCfg.externalInterface} -j MASQUERADE - ''; - postShutdown = mkIf isServer '' - ${iptables} -t nat -D POSTROUTING -s 10.100.0.0/24 -o ${serverCfg.externalInterface} -j MASQUERADE - ''; - }; -} diff --git a/system/nix/default.nix b/system/nix/default.nix index 0cb22f4..3bdf577 100644 --- a/system/nix/default.nix +++ b/system/nix/default.nix @@ -9,9 +9,11 @@ ./nh.nix ./nixpkgs.nix ./substituters.nix - ./nix-index.nix ]; + # Really annoying message when command not found + programs.command-not-found.enable = false; + # we need git for flakes environment.systemPackages = [pkgs.git]; diff --git a/system/nix/nix-index.nix b/system/nix/nix-index.nix deleted file mode 100644 index 7cb8b17..0000000 --- a/system/nix/nix-index.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - programs.command-not-found.enable = false; - programs.nix-index = { - enable = true; - enableFishIntegration = true; - }; -} diff --git a/system/programs/default.nix b/system/programs/default.nix index 55efbe8..45d9867 100644 --- a/system/programs/default.nix +++ b/system/programs/default.nix @@ -3,10 +3,6 @@ ./fish.nix ./games.nix ./home-manager.nix - ./hyprland.nix ./neovim.nix - ./plasma6.nix - ./polkit.nix - ./xdg.nix ]; } diff --git a/system/programs/games.nix b/system/programs/games.nix index e06e2f1..a65faf3 100644 --- a/system/programs/games.nix +++ b/system/programs/games.nix @@ -3,65 +3,66 @@ pkgs, lib, ... -}: { +}: let + cfg = config.niksos.games && config.niksos.desktop.enable; +in { options.niksos.games = lib.mkEnableOption "gaming related stuff."; - config = lib.mkIf config.niksos.games { - # nixpkgs.overlays = [ - # (final: prev: let - # version = "1.4.2"; - # hash = "sha256-xe0qlbtt06CUK8bXyaGDtCcHOXpSnkbuvcxaDJjeS/c="; - # npmHash = "sha256-/+NhlQydGS6+2jEjpbwycwKplVo/++wcdPiBNY3R3FI="; - # cargoHash = "sha256-VwzGbm34t7mg9ndmTkht6Ho32NQ+6uxuPTKi3+VrhYo="; - # in { - # gale = prev.gale.overrideAttrs (new: old: { - # src = prev.fetchFromGitHub { - # inherit version hash; - # owner = "Kesomannen"; - # repo = "gale"; - # rev = "1.4.2"; - # }; - # npmDeps = prev.fetchNpmDeps { - # hash = npmHash; - # name = "${new.pname}-${new.version}-npm-deps"; - # inherit (new) src; - # }; - # cargoDeps = prev.rustPlatform.fetchCargoVendor { - # inherit - # (new) - # pname - # version - # src - # cargoRoot - # ; - # hash = cargoHash; - # }; - # }); - # }) - # ]; - users.users.jsw.packages = [pkgs.gale]; + config = lib.mkIf cfg { + # nixpkgs.overlays = [ + # (final: prev: let + # version = "1.4.2"; + # hash = "sha256-xe0qlbtt06CUK8bXyaGDtCcHOXpSnkbuvcxaDJjeS/c="; + # npmHash = "sha256-/+NhlQydGS6+2jEjpbwycwKplVo/++wcdPiBNY3R3FI="; + # cargoHash = "sha256-VwzGbm34t7mg9ndmTkht6Ho32NQ+6uxuPTKi3+VrhYo="; + # in { + # gale = prev.gale.overrideAttrs (new: old: { + # src = prev.fetchFromGitHub { + # inherit version hash; + # owner = "Kesomannen"; + # repo = "gale"; + # rev = "1.4.2"; + # }; + # npmDeps = prev.fetchNpmDeps { + # hash = npmHash; + # name = "${new.pname}-${new.version}-npm-deps"; + # inherit (new) src; + # }; + # cargoDeps = prev.rustPlatform.fetchCargoVendor { + # inherit + # (new) + # pname + # version + # src + # cargoRoot + # ; + # hash = cargoHash; + # }; + # }); + # }) + # ]; - programs = { - gamescope = { - enable = true; - capSysNice = true; - args = [ - "--rt" - "--expose-wayland" - ]; + programs = { + gamescope = { + enable = true; + capSysNice = true; + args = [ + "--rt" + "--expose-wayland" + ]; + }; + + steam = { + enable = true; + + extraCompatPackages = [ + pkgs.proton-ge-bin + ]; + + gamescopeSession.enable = true; + }; }; - - steam = { - enable = true; - - extraCompatPackages = [ - pkgs.proton-ge-bin - ]; - - gamescopeSession.enable = true; + environment.variables = { + "STEAM_FORCE_DESKTOP_UI_SCALING" = "1.5"; #FIXME:. }; }; - environment.variables = { - "STEAM_FORCE_DESKTOP_UI_SCALING" = "1.5"; #FIXME:. - }; - }; } diff --git a/system/programs/home-manager.nix b/system/programs/home-manager.nix index 45bef32..6be68d4 100644 --- a/system/programs/home-manager.nix +++ b/system/programs/home-manager.nix @@ -1,13 +1,13 @@ { inputs, specialArgs, + lib, + config, ... -}: { - imports = [ - inputs.hm.nixosModules.default - ]; - - home-manager = { +}: let + cfg = config.niksos.desktop.enable; +in { + home-manager = lib.mkIf cfg { useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = specialArgs; @@ -16,5 +16,5 @@ users.jsw = import ../../home; }; - programs.dconf.enable = true; # else gtk-managed stuff won't work + programs.dconf.enable = cfg; # else gtk-managed stuff won't work } diff --git a/system/programs/hyprland.nix b/system/programs/hyprland.nix deleted file mode 100644 index 3202614..0000000 --- a/system/programs/hyprland.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: { - options.niksos.desktop = lib.mkEnableOption "desktop related stuff."; - config = lib.mkIf config.niksos.desktop { - programs.hyprland = { - enable = true; - withUWSM = true; - }; - environment.systemPackages = [ - #FIXME: migrated to home-manager - pkgs.kitty # This is the default config's terminal and also my main one. - ]; - environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Makes electron apps use wayland. - }; -} diff --git a/system/programs/neovim.nix b/system/programs/neovim.nix index 0608a57..a82ff7b 100644 --- a/system/programs/neovim.nix +++ b/system/programs/neovim.nix @@ -1,4 +1,5 @@ {lib, ...}: { options.niksos.neovim = lib.mkEnableOption "the neovim editor"; # The actual config resides in NixOS/home/programs/neovim. + # NOTE: This is for the customisation of the neovim editor, which uses a lot of disk space. Barebones version will be installed anyhow. } diff --git a/system/programs/plasma6.nix b/system/programs/plasma6.nix deleted file mode 100644 index 3af89c9..0000000 --- a/system/programs/plasma6.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - lib, - pkgs, - config, - ... -}: { - options.niksos.kde = lib.mkEnableOption "a kde specialisation. Will enable desktop settings."; - - config.specialisation.de.configuration = lib.mkIf config.niksos.kde { - niksos.desktop = lib.mkForce true; - - services = { - greetd = let - session = { - command = "${pkgs.kdePackages.plasma-workspace}/bin/startplasma-wayland"; - user = "jsw"; - }; - in { - settings = lib.mkForce { - terminal.vt = 1; - default_session = session; - initial_session = session; - }; - }; - - desktopManager.plasma6.enable = true; - }; - - home-manager.users.jsw = { - stylix.autoEnable = false; - }; - }; -} diff --git a/system/programs/polkit.nix b/system/programs/polkit.nix deleted file mode 100644 index 2b3f5a4..0000000 --- a/system/programs/polkit.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: { - systemd = { - user.services.polkit-gnome-authentication-agent-1 = lib.mkIf config.niksos.desktop { - description = "polkit-gnome-authentication-agent-1"; - wantedBy = ["graphical-session.target"]; - wants = ["graphical-session.target"]; - after = ["graphical-session.target"]; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; - Restart = "on-failure"; - RestartSec = 1; - TimeoutStopSec = 10; - }; - }; - }; -} diff --git a/system/server/bot.nix b/system/server/bot.nix index 04da767..78bcec2 100644 --- a/system/server/bot.nix +++ b/system/server/bot.nix @@ -49,7 +49,7 @@ in { ExecStart = "${bash} -c 'cd ${dataDir} && deno run -A ${programDir}/src/main.ts'"; User = "dcbot"; Group = "dcbot"; - Restart = "always"; + Restart = "always"; }; }; diff --git a/system/services/default.nix b/system/services/default.nix index c4d122c..8157213 100644 --- a/system/services/default.nix +++ b/system/services/default.nix @@ -1,8 +1,6 @@ { imports = [ - ./greetd.nix ./kanata.nix - ./pipewire.nix ./power.nix ./ssh.nix ]; From 84663b7c203b54014d4777271240a19263bcc425 Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 00:20:29 +0200 Subject: [PATCH 02/10] Completed migration --- home/shell/other.nix | 1 - home/wayland/hyprland/binds.nix | 149 +++++++++++++++----------------- system/desktop/greetd.nix | 2 +- system/desktop/hyprland.nix | 2 +- system/desktop/plasma6.nix | 4 +- system/desktop/polkit.nix | 2 +- system/desktop/xdg.nix | 2 +- 7 files changed, 78 insertions(+), 84 deletions(-) diff --git a/home/shell/other.nix b/home/shell/other.nix index d3c260c..029dc2b 100644 --- a/home/shell/other.nix +++ b/home/shell/other.nix @@ -26,5 +26,4 @@ ++ lib.optionals osConfig.niksos.portable [ inputs.somcli.defaultPackage.${pkgs.system} ]; - ; } diff --git a/home/wayland/hyprland/binds.nix b/home/wayland/hyprland/binds.nix index cec1a52..1b2ef8d 100644 --- a/home/wayland/hyprland/binds.nix +++ b/home/wayland/hyprland/binds.nix @@ -56,92 +56,87 @@ in builtins.toString (x + 1 - (c * 10)); in [ - "$mod, ${ws}, workspace, ${toString (x + 1)}" - "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + "$m, ${ws}, workspace, ${toString (x + 1)}" + "$m SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" ] ) 10); in { - config = lib.mkIf desktop { - home.file.".XCompose".text = '' - : "¯\\_(ツ)_/¯" # Shrug. - ''; + wayland.windowManager.hyprland.settings = { + "$m" = "ALT"; - wayland.windowManager.hyprland.settings = { - "$mod" = "ALT"; + bindm = [ + "$m, mouse:272, movewindow" + "$m, mouse:273, resizewindow" + "$m ALT, mouse:272, resizewindow" + ]; - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - "$mod ALT, mouse:272, resizewindow" + bind = + [ + "$m SHIFT, E, exec, uwsm stop" + "$m, Q, killactive," + "$m, F, fullscreen," + "$m, SPACE, togglefloating," + "$m, O, pseudo," + "$m ALT, ,resizeactive," + + "$m, D, exec, ${fuzzel}" + "$m, Return, exec, ${foot}" + "$m Shift, Return, exec, ${firefox}" + "$m, Escape, exec, ${hyprlock}" + + "$m, A, exec, ${pulsemixer}" + "$m, B, exec, ${bluetui}" + "$m, N, exec, ${nmtui}" + '' + $m, S, exec, bash -c 'hyprctl notify -1 5000 "rgb(${base0D})" "$(${getExe (import ./scripts.nix {inherit pkgs;}).statusnotify})"' + '' + + "$m, Print, exec, ${grimblast} copy area" + ", Print, exec, ${grimblast} save area - | ${swappy} -f -" + + "$m, h, movefocus, l" + "$m, l, movefocus, r" + "$m, k, movefocus, u" + "$m, j, movefocus, d" + + "$m SHIFT, h, movewindow, l" + "$m SHIFT, l, movewindow, r" + "$m SHIFT, k, movewindow, u" + "$m SHIFT, j, movewindow, d" + ] + ++ workspaces + ++ lib.optionals games (let + suyu = "${appE pkgs.suyu} -ql"; + dolphin = appE pkgs.dolphin-emu; + in [ + "Super, s, exec, ${suyu}" + "Super, d, exec, ${dolphin}" + ]) + ++ lib.optionals portable [ + "$m Shift, S, exec, ${somcli}" + ] + ++ lib.optionals fingerprint [ + ", XF86PowerOff, exec, pgrep fprintd-verify || ${uwsm} app -- ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'" #NOTE: Also check home/wayland/hyprland/settings + system/hardware/fingerprint ]; - bind = - [ - "$mod SHIFT, E, exec, uwsm stop" - "$mod, Q, killactive," - "$mod, F, fullscreen," - "$mod, SPACE, togglefloating," - "$mod, O, pseudo," - "$mod ALT, ,resizeactive," + bindl = [ + # media controls + ", XF86AudioPlay, exec, ${playerctl} play-pause" + ", XF86AudioPrev, exec, ${playerctl} previous" + ", XF86AudioNext, exec, ${playerctl} next" - "$mod, D, exec, ${fuzzel}" - "$mod, Return, exec, ${foot}" - "$mod Shift, Return, exec, ${firefox}" - "$mod, Escape, exec, ${hyprlock}" + # volume + ", XF86AudioMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioMicMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ]; - "$mod, A, exec, ${pulsemixer}" - "$mod, B, exec, ${bluetui}" - "$mod, N, exec, ${nmtui}" - '' - $mod, S, exec, bash -c 'hyprctl notify -1 5000 "rgb(${base0D})" "$(${getExe (import ./scripts.nix {inherit pkgs;}).statusnotify})"' - '' - - "$mod, Print, exec, ${grimblast} copy area" - ", Print, exec, ${grimblast} save area - | ${swappy} -f -" - - "$mod, h, movefocus, l" - "$mod, l, movefocus, r" - "$mod, k, movefocus, u" - "$mod, j, movefocus, d" - - "$mod SHIFT, h, movewindow, l" - "$mod SHIFT, l, movewindow, r" - "$mod SHIFT, k, movewindow, u" - "$mod SHIFT, j, movewindow, d" - ] - ++ workspaces - ++ lib.optionals games (let - suyu = "${appE pkgs.suyu} -ql"; - dolphin = appE pkgs.dolphin-emu; - in [ - "Super, s, exec, ${suyu}" - "Super, d, exec, ${dolphin}" - ]) - ++ lib.optionals portable [ - "$mod Shift, S, exec, ${somcli}" - ] ++ lib.optionals fingerprint [ - ", XF86PowerOff, exec, ${uwsm} app -- pgrep fprintd-verify && exit 0 || ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'" #NOTE: Also check home/wayland/hyprland/settings + system/hardware/fingerprint - ]; - - bindl = [ - # media controls - ", XF86AudioPlay, exec, ${playerctl} play-pause" - ", XF86AudioPrev, exec, ${playerctl} previous" - ", XF86AudioNext, exec, ${playerctl} next" - - # volume - ", XF86AudioMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioMicMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle" - ]; - - bindle = [ - # volume - ", XF86AudioRaiseVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%+" - ", XF86AudioLowerVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%-" - ",XF86MonBrightnessUp, exec, ${brightnessctl} s 10%+" - ",XF86MonBrightnessDown, exec, ${brightnessctl} s 10%-" - ]; - }; + bindle = [ + # volume + ", XF86AudioRaiseVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%+" + ", XF86AudioLowerVolume, exec, ${wpctl} set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%-" + ",XF86MonBrightnessUp, exec, ${brightnessctl} s 10%+" + ",XF86MonBrightnessDown, exec, ${brightnessctl} s 10%-" + ]; }; } diff --git a/system/desktop/greetd.nix b/system/desktop/greetd.nix index ea8c60d..1350659 100644 --- a/system/desktop/greetd.nix +++ b/system/desktop/greetd.nix @@ -3,7 +3,7 @@ lib, ... }: let - cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable; + cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland; in { config = lib.mkIf cfg { # greetd display manager diff --git a/system/desktop/hyprland.nix b/system/desktop/hyprland.nix index f281e5a..4ea2a18 100644 --- a/system/desktop/hyprland.nix +++ b/system/desktop/hyprland.nix @@ -4,7 +4,7 @@ lib, ... }: let - cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable; + cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland; in { config = lib.mkIf cfg { programs.hyprland = { diff --git a/system/desktop/plasma6.nix b/system/desktop/plasma6.nix index 9a033d0..8f36529 100644 --- a/system/desktop/plasma6.nix +++ b/system/desktop/plasma6.nix @@ -4,7 +4,7 @@ config, ... }: let - cfg = config.niksos.desktop.enable && config.niksos.desktop.kde.enable; + cfg = config.niksos.desktop.enable && config.niksos.desktop.kde; in { config = lib.mkIf cfg { niksos.desktop.hyprland = lib.mkForce false; @@ -16,7 +16,7 @@ in { user = "jsw"; }; in { - enable = true; + enable = true; settings = { terminal.vt = 1; default_session = session; diff --git a/system/desktop/polkit.nix b/system/desktop/polkit.nix index 2b90acd..eedb594 100644 --- a/system/desktop/polkit.nix +++ b/system/desktop/polkit.nix @@ -4,7 +4,7 @@ pkgs, ... }: let - cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable; + cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland; in { systemd.user.services.polkit-gnome-authentication-agent-1 = lib.mkIf cfg { description = "polkit-gnome-authentication-agent-1"; diff --git a/system/desktop/xdg.nix b/system/desktop/xdg.nix index a4562df..75f243e 100644 --- a/system/desktop/xdg.nix +++ b/system/desktop/xdg.nix @@ -4,7 +4,7 @@ lib, ... }: let - cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable; + cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland; in { xdg.portal = lib.mkIf cfg { enable = true; From 0fb8d131bf3f152148467633a727ff950803f4ed Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 00:22:30 +0200 Subject: [PATCH 03/10] Formatting --- home/wayland/default.nix | 3 +- home/wayland/hyprland/settings.nix | 25 ++++--- home/wayland/mako.nix | 2 +- hosts/default.nix | 6 +- hosts/minimal/default.nix | 12 +++- system/programs/games.nix | 106 ++++++++++++++--------------- 6 files changed, 84 insertions(+), 70 deletions(-) diff --git a/home/wayland/default.nix b/home/wayland/default.nix index fc64e5b..f6d8900 100644 --- a/home/wayland/default.nix +++ b/home/wayland/default.nix @@ -18,7 +18,8 @@ in { pkgs.wl-clipboard ]; - home.sessionVariables = mkIf cfg { #FIXME: migrate to hyprconf + home.sessionVariables = mkIf cfg { + #FIXME: migrate to hyprconf QT_QPA_PLATFORM = "wayland"; SDL_VIDEODRIVER = "wayland"; XDG_SESSION_TYPE = "wayland"; diff --git a/home/wayland/hyprland/settings.nix b/home/wayland/hyprland/settings.nix index 225ede9..4b97d18 100644 --- a/home/wayland/hyprland/settings.nix +++ b/home/wayland/hyprland/settings.nix @@ -1,4 +1,8 @@ -{lib, osConfig, ...}: { +{ + lib, + osConfig, + ... +}: { wayland.windowManager.hyprland.settings = { xwayland = { force_zero_scaling = true; @@ -89,14 +93,15 @@ vrr = 1; }; - windowrule = [ - "float, class:com.github.phase1geo.annotator" - "float, class:foot-somcli" - "size >30% >30%, class:foot-somcli" - ] ++ lib.optionals osConfig.niksos.fingerprint [ - "float, class:foot-fprintd" - ]; - #NOTE: Also check home/wayland/hyprland/binds + system/hardware/fingerprint - + windowrule = + [ + "float, class:com.github.phase1geo.annotator" + "float, class:foot-somcli" + "size >30% >30%, class:foot-somcli" + ] + ++ lib.optionals osConfig.niksos.fingerprint [ + "float, class:foot-fprintd" + ]; + #NOTE: Also check home/wayland/hyprland/binds + system/hardware/fingerprint }; } diff --git a/home/wayland/mako.nix b/home/wayland/mako.nix index a528178..57343b9 100644 --- a/home/wayland/mako.nix +++ b/home/wayland/mako.nix @@ -1,4 +1,4 @@ -{osConfig, ...}:{ +{osConfig, ...}: { services.mako = { enable = osConfig.niksos.desktop.hyprland; settings.defaultTimeout = 5000; diff --git a/hosts/default.nix b/hosts/default.nix index 7ffc0a6..79d99d1 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -55,9 +55,9 @@ in { niksos = { desktop = { - enable = true; - hyprland = true; - }; + enable = true; + hyprland = true; + }; neovim = true; }; diff --git a/hosts/minimal/default.nix b/hosts/minimal/default.nix index 69cc980..408b1d2 100644 --- a/hosts/minimal/default.nix +++ b/hosts/minimal/default.nix @@ -10,10 +10,18 @@ niksos = { bluetooth = false; - desktop = { enable = false; hyprland = false; kde = false; }; + desktop = { + enable = false; + hyprland = false; + kde = false; + }; fingerprint = false; games = false; - graphics = { enable = false; intel = false; nvidia = false; }; + graphics = { + enable = false; + intel = false; + nvidia = false; + }; neovim = false; portable = false; server = false; diff --git a/system/programs/games.nix b/system/programs/games.nix index a65faf3..8268512 100644 --- a/system/programs/games.nix +++ b/system/programs/games.nix @@ -8,61 +8,61 @@ in { options.niksos.games = lib.mkEnableOption "gaming related stuff."; config = lib.mkIf cfg { - # nixpkgs.overlays = [ - # (final: prev: let - # version = "1.4.2"; - # hash = "sha256-xe0qlbtt06CUK8bXyaGDtCcHOXpSnkbuvcxaDJjeS/c="; - # npmHash = "sha256-/+NhlQydGS6+2jEjpbwycwKplVo/++wcdPiBNY3R3FI="; - # cargoHash = "sha256-VwzGbm34t7mg9ndmTkht6Ho32NQ+6uxuPTKi3+VrhYo="; - # in { - # gale = prev.gale.overrideAttrs (new: old: { - # src = prev.fetchFromGitHub { - # inherit version hash; - # owner = "Kesomannen"; - # repo = "gale"; - # rev = "1.4.2"; - # }; - # npmDeps = prev.fetchNpmDeps { - # hash = npmHash; - # name = "${new.pname}-${new.version}-npm-deps"; - # inherit (new) src; - # }; - # cargoDeps = prev.rustPlatform.fetchCargoVendor { - # inherit - # (new) - # pname - # version - # src - # cargoRoot - # ; - # hash = cargoHash; - # }; - # }); - # }) - # ]; + # nixpkgs.overlays = [ + # (final: prev: let + # version = "1.4.2"; + # hash = "sha256-xe0qlbtt06CUK8bXyaGDtCcHOXpSnkbuvcxaDJjeS/c="; + # npmHash = "sha256-/+NhlQydGS6+2jEjpbwycwKplVo/++wcdPiBNY3R3FI="; + # cargoHash = "sha256-VwzGbm34t7mg9ndmTkht6Ho32NQ+6uxuPTKi3+VrhYo="; + # in { + # gale = prev.gale.overrideAttrs (new: old: { + # src = prev.fetchFromGitHub { + # inherit version hash; + # owner = "Kesomannen"; + # repo = "gale"; + # rev = "1.4.2"; + # }; + # npmDeps = prev.fetchNpmDeps { + # hash = npmHash; + # name = "${new.pname}-${new.version}-npm-deps"; + # inherit (new) src; + # }; + # cargoDeps = prev.rustPlatform.fetchCargoVendor { + # inherit + # (new) + # pname + # version + # src + # cargoRoot + # ; + # hash = cargoHash; + # }; + # }); + # }) + # ]; - programs = { - gamescope = { - enable = true; - capSysNice = true; - args = [ - "--rt" - "--expose-wayland" - ]; - }; - - steam = { - enable = true; - - extraCompatPackages = [ - pkgs.proton-ge-bin - ]; - - gamescopeSession.enable = true; - }; + programs = { + gamescope = { + enable = true; + capSysNice = true; + args = [ + "--rt" + "--expose-wayland" + ]; }; - environment.variables = { - "STEAM_FORCE_DESKTOP_UI_SCALING" = "1.5"; #FIXME:. + + steam = { + enable = true; + + extraCompatPackages = [ + pkgs.proton-ge-bin + ]; + + gamescopeSession.enable = true; }; }; + environment.variables = { + "STEAM_FORCE_DESKTOP_UI_SCALING" = "1.5"; #FIXME:. + }; + }; } From b44a1adc0f0233d5d501daf06f0d0c8953a9f550 Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 00:24:05 +0200 Subject: [PATCH 04/10] Removed dead code for fingerprint popup --- home/wayland/hyprland/binds.nix | 5 +---- home/wayland/hyprland/settings.nix | 18 +++++------------- system/hardware/fingerprint.nix | 2 -- 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/home/wayland/hyprland/binds.nix b/home/wayland/hyprland/binds.nix index 1b2ef8d..9154f2f 100644 --- a/home/wayland/hyprland/binds.nix +++ b/home/wayland/hyprland/binds.nix @@ -8,7 +8,7 @@ }: let inherit (lib) getExe; inherit (config.lib.stylix.colors) base0D; - inherit (osConfig.niksos) desktop games portable fingerprint; + inherit (osConfig.niksos) games portable; runOnce = program: "pgrep ${program} || uwsm app -- ${program}"; uwsm = getExe pkgs.uwsm; @@ -115,9 +115,6 @@ in { ]) ++ lib.optionals portable [ "$m Shift, S, exec, ${somcli}" - ] - ++ lib.optionals fingerprint [ - ", XF86PowerOff, exec, pgrep fprintd-verify || ${uwsm} app -- ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'" #NOTE: Also check home/wayland/hyprland/settings + system/hardware/fingerprint ]; bindl = [ diff --git a/home/wayland/hyprland/settings.nix b/home/wayland/hyprland/settings.nix index 4b97d18..fc688eb 100644 --- a/home/wayland/hyprland/settings.nix +++ b/home/wayland/hyprland/settings.nix @@ -1,8 +1,4 @@ { - lib, - osConfig, - ... -}: { wayland.windowManager.hyprland.settings = { xwayland = { force_zero_scaling = true; @@ -93,15 +89,11 @@ vrr = 1; }; - windowrule = - [ - "float, class:com.github.phase1geo.annotator" - "float, class:foot-somcli" - "size >30% >30%, class:foot-somcli" - ] - ++ lib.optionals osConfig.niksos.fingerprint [ - "float, class:foot-fprintd" - ]; + windowrule = [ + "float, class:com.github.phase1geo.annotator" + "float, class:foot-somcli" + "size >30% >30%, class:foot-somcli" + ]; #NOTE: Also check home/wayland/hyprland/binds + system/hardware/fingerprint }; } diff --git a/system/hardware/fingerprint.nix b/system/hardware/fingerprint.nix index d683549..69b18ed 100644 --- a/system/hardware/fingerprint.nix +++ b/system/hardware/fingerprint.nix @@ -9,8 +9,6 @@ uwsm = lib.getExe pkgs.uwsm; foot = lib.getExe pkgs.foot; in { - #NOTE: Also check home/wayland/hyprland/settings + home/wayland/hyprland/binds - options.niksos.fingerprint = mkEnableOption "fingerprint support."; config = mkIf fingerprint { services.fprintd.enable = true; From 9ee249d1f2256ef9c6c7f5145e832093202e08c4 Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 00:38:43 +0200 Subject: [PATCH 05/10] Reenabled udiskie service --- home/services/udiskie.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/services/udiskie.nix b/home/services/udiskie.nix index 7f39023..04c0522 100644 --- a/home/services/udiskie.nix +++ b/home/services/udiskie.nix @@ -1,5 +1,6 @@ { services.udiskie = { + enable = true; tray = "never"; #NOTE: Don't have a bar (yet?) }; } From 467f9a0b3e834d11f2a0444488564f1e8033c72a Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 14:13:58 +0200 Subject: [PATCH 06/10] Merged networking folder into core and services --- system/core/default.nix | 1 + system/{network/default.nix => core/networking.nix} | 5 ----- system/default.nix | 1 - system/{network => services}/avahi.nix | 0 system/services/default.nix | 2 ++ system/{network => services}/tailscale.nix | 0 6 files changed, 3 insertions(+), 6 deletions(-) rename system/{network/default.nix => core/networking.nix} (89%) rename system/{network => services}/avahi.nix (100%) rename system/{network => services}/tailscale.nix (100%) diff --git a/system/core/default.nix b/system/core/default.nix index 7d17299..9c380a6 100644 --- a/system/core/default.nix +++ b/system/core/default.nix @@ -3,5 +3,6 @@ ./boot.nix ./users.nix ./defaultPackages.nix + ./networking.nix ]; } diff --git a/system/network/default.nix b/system/core/networking.nix similarity index 89% rename from system/network/default.nix rename to system/core/networking.nix index 8c9c424..1e2eb93 100644 --- a/system/network/default.nix +++ b/system/core/networking.nix @@ -1,10 +1,5 @@ # networking configuration {pkgs, ...}: { - imports = [ - ./avahi.nix - ./tailscale.nix - ]; - #FIXME: networking = { # use quad9 with DNS over TLS diff --git a/system/default.nix b/system/default.nix index c57b7cf..f25fab6 100644 --- a/system/default.nix +++ b/system/default.nix @@ -2,7 +2,6 @@ imports = [ ./core ./hardware - ./network ./nix ./programs ./server diff --git a/system/network/avahi.nix b/system/services/avahi.nix similarity index 100% rename from system/network/avahi.nix rename to system/services/avahi.nix diff --git a/system/services/default.nix b/system/services/default.nix index 8157213..faf6a2f 100644 --- a/system/services/default.nix +++ b/system/services/default.nix @@ -1,5 +1,7 @@ { imports = [ + ./tailscale.nix + ./avahi.nix ./kanata.nix ./power.nix ./ssh.nix diff --git a/system/network/tailscale.nix b/system/services/tailscale.nix similarity index 100% rename from system/network/tailscale.nix rename to system/services/tailscale.nix From 3a2af5fb697cdff717a92217aad99252ce6acef1 Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 14:34:52 +0200 Subject: [PATCH 07/10] Added git hooks --- .gitignore | 2 ++ flake.lock | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++---- flake.nix | 18 +++++++++++++-- 3 files changed, 82 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 92b2793..7cc31c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ .direnv +.pre-commit-config.yaml + diff --git a/flake.lock b/flake.lock index 1a2ff62..f1b8f0f 100644 --- a/flake.lock +++ b/flake.lock @@ -145,6 +145,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -158,7 +174,7 @@ "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" } }, - "flake-compat_2": { + "flake-compat_3": { "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -328,7 +344,7 @@ "stylix", "flake-compat" ], - "gitignore": "gitignore", + "gitignore": "gitignore_2", "nixpkgs": [ "stylix", "nixpkgs" @@ -348,7 +364,50 @@ "type": "github" } }, + "git-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "gitignore": { + "inputs": { + "nixpkgs": [ + "git-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { "inputs": { "nixpkgs": [ "stylix", @@ -549,7 +608,7 @@ }, "nixcord": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "nixpkgs": "nixpkgs_3", "systems": "systems_3", "treefmt-nix": "treefmt-nix" @@ -776,6 +835,7 @@ "agenix": "agenix", "dcbot": "dcbot", "flake-parts": "flake-parts", + "git-hooks-nix": "git-hooks-nix", "guiders": "guiders", "hm": "hm", "nixcord": "nixcord", @@ -835,7 +895,7 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "flake-utils": "flake-utils_4", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", diff --git a/flake.nix b/flake.nix index 3a42442..6b3243b 100644 --- a/flake.nix +++ b/flake.nix @@ -5,6 +5,7 @@ inputs.flake-parts.lib.mkFlake {inherit inputs;} { systems = ["x86_64-linux"]; imports = [ + inputs.git-hooks-nix.flakeModule ./hosts ]; @@ -13,6 +14,13 @@ pkgs, ... }: { + pre-commit.settings.hooks = { + alejandra.enable = true; + flake-checker.enable = true; + nil.enable = true; + }; + + formatter = pkgs.alejandra; devShells.default = pkgs.mkShell { packages = [ pkgs.alejandra @@ -20,9 +28,11 @@ ]; name = "dots"; DIRENV_LOG_FORMAT = ""; - }; - formatter = pkgs.alejandra; + shellHook = '' + ${config.pre-commit.installationScript} + ''; + }; }; }; @@ -31,6 +41,10 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # build error unrelated to config. nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11-small"; # build error unrelated to config. flake-parts.url = "github:hercules-ci/flake-parts"; + git-hooks-nix = { + url = "github:cachix/git-hooks.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; hm = { url = "github:nix-community/home-manager/master"; From 48c218c2f7c1b6712e4b6a52865234de5f906f42 Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 14:35:21 +0200 Subject: [PATCH 08/10] Test --- home/programs/firefox.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/programs/firefox.nix b/home/programs/firefox.nix index 02fbd88..60b9190 100644 --- a/home/programs/firefox.nix +++ b/home/programs/firefox.nix @@ -5,7 +5,7 @@ }: let profileName = "jsw.nixos-default"; in { - programs.firefox = { + programs.irefox = { enable = true; package = pkgs.wrapFirefox pkgs.firefox-unwrapped { extraPolicies = { From 33f9df0b2eeab035725c796666892236d2b6237c Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 14:42:31 +0200 Subject: [PATCH 09/10] Formatting and code cleanup --- flake.nix | 3 +- home/programs/firefox.nix | 2 +- home/shell/yazi.nix | 2 +- hosts/lapserv/hardware-configuration.nix | 37 ++++++++++-------------- hosts/laptop/hardware-configuration.nix | 29 ++++++++++--------- hosts/laptop/virt.nix | 8 +++-- hosts/minimal/hardware-configuration.nix | 31 ++++++++++---------- system/hardware/graphics.nix | 4 +-- 8 files changed, 59 insertions(+), 57 deletions(-) diff --git a/flake.nix b/flake.nix index 6b3243b..338cd99 100644 --- a/flake.nix +++ b/flake.nix @@ -17,7 +17,7 @@ pre-commit.settings.hooks = { alejandra.enable = true; flake-checker.enable = true; - nil.enable = true; + statix.enable = true; }; formatter = pkgs.alejandra; @@ -25,6 +25,7 @@ packages = [ pkgs.alejandra pkgs.git + pkgs.statix ]; name = "dots"; DIRENV_LOG_FORMAT = ""; diff --git a/home/programs/firefox.nix b/home/programs/firefox.nix index 60b9190..02fbd88 100644 --- a/home/programs/firefox.nix +++ b/home/programs/firefox.nix @@ -5,7 +5,7 @@ }: let profileName = "jsw.nixos-default"; in { - programs.irefox = { + programs.firefox = { enable = true; package = pkgs.wrapFirefox pkgs.firefox-unwrapped { extraPolicies = { diff --git a/home/shell/yazi.nix b/home/shell/yazi.nix index cba4c92..ccf07d8 100644 --- a/home/shell/yazi.nix +++ b/home/shell/yazi.nix @@ -11,7 +11,7 @@ in { programs.yazi = { enable = true; plugins = { - full-border = yPlugins.full-border; + inherit (yPlugins) full-border; mount = mkIf udisks2 yPlugins.mount; }; keymap.manager.prepend_keymap = diff --git a/hosts/lapserv/hardware-configuration.nix b/hosts/lapserv/hardware-configuration.nix index f5ae11a..5d3b114 100644 --- a/hosts/lapserv/hardware-configuration.nix +++ b/hosts/lapserv/hardware-configuration.nix @@ -12,33 +12,28 @@ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "sd_mod"]; - boot.initrd.kernelModules = []; - boot.kernelModules = ["kvm-intel"]; - boot.extraModulePackages = []; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/33b7e681-d92a-40db-a172-b797591a1e2e"; - fsType = "ext4"; + boot = { + initrd.availableKernelModules = ["xhci_pci" "ahci" "sd_mod"]; + initrd.kernelModules = []; + kernelModules = ["kvm-intel"]; + extraModulePackages = []; }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/0BEA-7525"; - fsType = "vfat"; - options = ["fmask=0022" "dmask=0022"]; - }; + fileSystems = { + "/" = { + device = "/dev/disk/by-uuid/33b7e681-d92a-40db-a172-b797591a1e2e"; + fsType = "ext4"; + }; + "/boot" = { + device = "/dev/disk/by-uuid/0BEA-7525"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; + }; 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.enp2s0.useDHCP = lib.mkDefault true; - # networking.interfaces.tailscale0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/hosts/laptop/hardware-configuration.nix b/hosts/laptop/hardware-configuration.nix index e7192b8..90ce2ea 100644 --- a/hosts/laptop/hardware-configuration.nix +++ b/hosts/laptop/hardware-configuration.nix @@ -12,22 +12,25 @@ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod"]; - boot.initrd.kernelModules = []; - boot.kernelModules = ["kvm-amd"]; - boot.extraModulePackages = []; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/59540469-ecb9-4a68-829b-4cd3ad6e95c3"; - fsType = "ext4"; + boot = { + initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod"]; + initrd.kernelModules = []; + kernelModules = ["kvm-amd"]; + extraModulePackages = []; }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/83C9-84B1"; - fsType = "vfat"; - options = ["fmask=0077" "dmask=0077"]; - }; + fileSystems = { + "/" = { + device = "/dev/disk/by-uuid/59540469-ecb9-4a68-829b-4cd3ad6e95c3"; + fsType = "ext4"; + }; + "/boot" = { + device = "/dev/disk/by-uuid/83C9-84B1"; + fsType = "vfat"; + options = ["fmask=0077" "dmask=0077"]; + }; + }; swapDevices = [ {device = "/dev/disk/by-uuid/65190d84-4e34-4905-a317-d750591933e2";} ]; diff --git a/hosts/laptop/virt.nix b/hosts/laptop/virt.nix index cc9eaf0..6865159 100644 --- a/hosts/laptop/virt.nix +++ b/hosts/laptop/virt.nix @@ -1,8 +1,10 @@ { programs.virt-manager.enable = true; users.groups.libvirtd.members = ["jsw"]; - virtualisation.libvirtd.enable = true; - virtualisation.spiceUSBRedirection.enable = true; - virtualisation.podman.enable = true; + virtualisation = { + libvirtd.enable = true; + spiceUSBRedirection.enable = true; + podman.enable = true; + }; } diff --git a/hosts/minimal/hardware-configuration.nix b/hosts/minimal/hardware-configuration.nix index 9860c2d..fe5ee73 100644 --- a/hosts/minimal/hardware-configuration.nix +++ b/hosts/minimal/hardware-configuration.nix @@ -7,26 +7,27 @@ }: { imports = [(modulesPath + "/profiles/qemu-guest.nix")]; - boot.initrd.availableKernelModules = ["xhci_pci" "virtio_pci" "virtio_scsi" "usbhid"]; - - boot.initrd.kernelModules = []; - boot.kernelModules = []; - boot.extraModulePackages = []; - - fileSystems."/" = { - device = "/dev/disk/by-label/NIXROOT"; - fsType = "btrfs"; - options = ["noatime" "discard" "compress=zstd"]; + boot = { + initrd.availableKernelModules = ["xhci_pci" "virtio_pci" "virtio_scsi" "usbhid"]; + initrd.kernelModules = []; + kernelModules = []; + extraModulePackages = []; }; - fileSystems."/boot" = { - device = "/dev/disk/by-label/NIXBOOT"; - fsType = "vfat"; - }; + fileSystems = { + "/" = { + device = "/dev/disk/by-label/NIXROOT"; + fsType = "btrfs"; + options = ["noatime" "discard" "compress=zstd"]; + }; + "/boot" = { + device = "/dev/disk/by-label/NIXBOOT"; + fsType = "vfat"; + }; + }; swapDevices = []; networking.useDHCP = lib.mkDefault true; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; } diff --git a/system/hardware/graphics.nix b/system/hardware/graphics.nix index c9b79fe..ee1c34e 100644 --- a/system/hardware/graphics.nix +++ b/system/hardware/graphics.nix @@ -5,9 +5,9 @@ ... }: let inherit (lib) optionals mkEnableOption mkDefault; + inherit (config.niksos) graphics; + inherit (graphics) enable; - graphics = config.niksos.graphics; - enable = graphics.enable; nvidia = graphics.enable && graphics.nvidia; intel = graphics.enable && graphics.intel; in { From baaa3237a2ebf4d0db8aaab120d5c4f6fcdcaaf0 Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 May 2025 15:08:55 +0200 Subject: [PATCH 10/10] Added assertions for desktop options --- system/desktop/default.nix | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/system/desktop/default.nix b/system/desktop/default.nix index 3ff2506..db4f920 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -1,5 +1,12 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let mkEO = lib.mkEnableOption; + cfg = config.niksos.desktop; + + inherit (lib) mkIf optional; in { imports = [ ./greetd.nix @@ -15,4 +22,12 @@ in { hyprland = mkEO "enable hyprland related programs."; kde = mkEO "enable kde specialisation."; }; + + config.assertions = mkIf (cfg.hyprland + || cfg.kde) [ + { + assertion = cfg.enable; + message = "You need to enable desktop for the hyprland/kde module to work"; + } + ]; }