From 63ffbcfe89f83fb55737f423a80c5a5cd81e62b8 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 13:05:53 +0100
Subject: [PATCH 01/13] create new versions of modules in temp dir

---
 system/default.nix                            |  1 +
 system/temp-new/README.md                     |  2 +
 system/temp-new/base.nix                      | 90 +++++++++++++++++++
 system/temp-new/default.nix                   | 11 +++
 system/temp-new/desktop-common.nix            | 58 ++++++++++++
 .../temp-new/fragments/hardware/bluetooth.nix | 16 ++++
 .../fragments/hardware/nvidia-modeset.nix     | 47 ++++++++++
 system/temp-new/fragments/me.nix              | 25 ++++++
 system/temp-new/fragments/multimedia.nix      | 22 +++++
 system/temp-new/fragments/opengl.nix          | 15 ++++
 .../temp-new/fragments/software/syncthing.nix | 19 ++++
 system/temp-new/fragments/sound.nix           | 34 +++++++
 system/temp-new/gaming.nix                    | 40 +++++++++
 system/temp-new/hyprland.nix                  | 45 ++++++++++
 system/temp-new/new-fragments/README.md       | 19 ++++
 system/temp-new/new-fragments/android.nix     |  9 ++
 system/temp-new/new-fragments/debugging.nix   |  9 ++
 system/temp-new/plasma.nix                    | 49 ++++++++++
 system/temp-new/remote.nix                    | 23 +++++
 system/temp-new/wm-common.nix                 | 21 +++++
 20 files changed, 555 insertions(+)
 create mode 100644 system/temp-new/README.md
 create mode 100644 system/temp-new/base.nix
 create mode 100644 system/temp-new/default.nix
 create mode 100644 system/temp-new/desktop-common.nix
 create mode 100644 system/temp-new/fragments/hardware/bluetooth.nix
 create mode 100644 system/temp-new/fragments/hardware/nvidia-modeset.nix
 create mode 100644 system/temp-new/fragments/me.nix
 create mode 100644 system/temp-new/fragments/multimedia.nix
 create mode 100644 system/temp-new/fragments/opengl.nix
 create mode 100644 system/temp-new/fragments/software/syncthing.nix
 create mode 100644 system/temp-new/fragments/sound.nix
 create mode 100644 system/temp-new/gaming.nix
 create mode 100644 system/temp-new/hyprland.nix
 create mode 100644 system/temp-new/new-fragments/README.md
 create mode 100644 system/temp-new/new-fragments/android.nix
 create mode 100644 system/temp-new/new-fragments/debugging.nix
 create mode 100644 system/temp-new/plasma.nix
 create mode 100644 system/temp-new/remote.nix
 create mode 100644 system/temp-new/wm-common.nix

diff --git a/system/default.nix b/system/default.nix
index 09dcd6a..0927272 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -4,6 +4,7 @@ let
 in
 {
   imports = [
+    ./temp-new
   ];
   config = {};
   options.nixfiles = {
diff --git a/system/temp-new/README.md b/system/temp-new/README.md
new file mode 100644
index 0000000..e91ba36
--- /dev/null
+++ b/system/temp-new/README.md
@@ -0,0 +1,2 @@
+# system
+This directory contains modules and configuration specific to my NixOS configuration. `default.nix` is the entrypoint to my module set; it can safely be loaded without making any configuration changes by default. 
diff --git a/system/temp-new/base.nix b/system/temp-new/base.nix
new file mode 100644
index 0000000..8301dd4
--- /dev/null
+++ b/system/temp-new/base.nix
@@ -0,0 +1,90 @@
+{ config, lib, pkgs, options, inputs, ...}@args:
+let
+  cfg = config.nixfiles.profile.base;
+in
+{
+  options.nixfiles.profile.base = {
+    enable = lib.mkEnableOption "base config";
+  };
+               # TODO was gonna add something but i forgor and now i'm too lazy
+               # to delete this
+  config = lib.mkMerge [
+    (lib.mkIf cfg.enable {
+
+      # Enable my account
+      nixfiles.common.me = lib.mkDefault true;
+
+      # locale settings
+      i18n = {
+        defaultLocale = "en_US.UTF-8";
+        extraLocaleSettings = {
+          LC_ALL = "en_US.UTF-8";
+        };
+      };
+
+      # Enable flakes
+      nix.settings.experimental-features = ["nix-command" "flakes" ];
+
+      # fallback to building locally if binary cache fails (home-manager should be
+      # able to handle simple rebuilds offline)
+      nix.settings.fallback = true;
+
+      # Allow unfree packages
+      nixpkgs.config.allowUnfree = true;
+
+      # networking.hostName = "nixos"; # Define your hostname.
+      # Pick only one of the below networking options.
+      # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
+      networking.networkmanager.enable = lib.mkDefault true;  # Easiest to use and most distros use this by default.
+
+      # List packages installed in system profile. To search, run:
+      # $ nix search wget
+      environment.systemPackages = with pkgs; [
+        neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
+        wget
+        curl
+        git
+        git-lfs
+        stow
+        zsh
+        ntfs3g
+        openssh
+        sshfs
+        file
+
+        fd
+        ripgrep
+        sbctl # TODO move this elsewhere
+        comma
+        nil
+
+        # network utilities
+        inetutils
+        socat
+        nmap
+        hping
+
+        # system utilities
+        htop
+        lshw
+        pciutils
+      ];
+
+      # this makes comma and legacy nix utils use the flake nixpkgs for ABI
+      # compatibility becasue once `, vkcube` couldn't find the correct opengl
+      # driver or something (also it reduces the download size of temporary shell
+      # closures)
+      nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ] ++ options.nix.nixPath.default;
+
+      programs.ssh.enableAskPassword = false;
+      programs.fuse.userAllowOther = true;
+
+      programs.gnupg.agent = {
+        enable = lib.mkDefault true;
+        enableSSHSupport = lib.mkDefault true;
+      };
+
+      boot.loader.systemd-boot.configurationLimit = lib.mkDefault 15;
+    })
+  ];
+}
diff --git a/system/temp-new/default.nix b/system/temp-new/default.nix
new file mode 100644
index 0000000..09dcd6a
--- /dev/null
+++ b/system/temp-new/default.nix
@@ -0,0 +1,11 @@
+{ pkgs, config, lib, options, ... }@args:
+let
+  cfg = config.nixfiles;
+in
+{
+  imports = [
+  ];
+  config = {};
+  options.nixfiles = {
+  };
+}
diff --git a/system/temp-new/desktop-common.nix b/system/temp-new/desktop-common.nix
new file mode 100644
index 0000000..6449a28
--- /dev/null
+++ b/system/temp-new/desktop-common.nix
@@ -0,0 +1,58 @@
+{ config, lib, pkgs, outputs, ...}:
+let
+  cfg = config.nixfiles.common.desktop;
+  inherit (lib) mkIf mkDefault mkForce mkEnableOption;
+in
+{
+  # imports = [
+  #   ./base.nix
+  #   ./fragments/sound.nix
+  #   ./fragments/multimedia.nix
+  #   ./fragments/software/syncthing.nix
+  #   ./fragments/hardware/bluetooth.nix
+  # ];
+
+  options.nixfiles.common.desktop = {
+    enable = mkEnableOption "common desktop options";
+  };
+
+  config = mkIf cfg.enable {
+    # enable option sets
+    nixfiles = {
+      packageSets.multimedia.enable = true;
+      common = {
+        syncthing.enable = true;
+        bluetooth.enable = true;
+        sound.enable = true;
+      };
+    };
+
+    # Enable the X11 windowing system.
+    services.xserver.enable = true;
+
+    environment.systemPackages = with pkgs; [
+      arc-theme
+      wl-clipboard
+    ];
+
+    # Enable flatpak
+    services.flatpak.enable = mkDefault true;
+
+    # Enable CUPS to print documents.
+    services.printing.enable = mkDefault true;
+
+    fonts.packages = with pkgs; [
+      (nerdfonts.override { fonts = [ "FiraCode" ]; })
+      noto-fonts-cjk
+      (outputs.packages.${pkgs.system}.google-fonts.override { fonts = [ "NovaSquare" ];})
+    ];
+
+    # TODO this should be defined in home-manager or not at all probably
+    # FIXME also my name is hardcoded
+    users.users.nullbite = {
+      packages = with pkgs; [
+        firefox
+      ];
+    };
+  };
+}
diff --git a/system/temp-new/fragments/hardware/bluetooth.nix b/system/temp-new/fragments/hardware/bluetooth.nix
new file mode 100644
index 0000000..1a8c7fb
--- /dev/null
+++ b/system/temp-new/fragments/hardware/bluetooth.nix
@@ -0,0 +1,16 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.bluetooth;
+in
+{
+  options.nixfiles.common.bluetooth = {
+    enable = lib.mkEnableOption "Bluetooth";
+  };
+
+  config = lib.mkIf cfg.enable {
+    hardware.bluetooth = {
+      enable = lib.mkDefault true;
+      powerOnBoot = lib.mkDefault true;
+    };
+  };
+}
diff --git a/system/temp-new/fragments/hardware/nvidia-modeset.nix b/system/temp-new/fragments/hardware/nvidia-modeset.nix
new file mode 100644
index 0000000..1011b96
--- /dev/null
+++ b/system/temp-new/fragments/hardware/nvidia-modeset.nix
@@ -0,0 +1,47 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.nvidia;
+in
+{
+  # imports = [
+  #   ../opengl.nix
+  # ];
+
+  # Load nvidia driver for Xorg and Wayland
+  options.nixfiles.common.nvidia = {
+    modesetting.enable = lib.mkEnableOption "NVIDIA configuration with modesetting";
+  };
+  config = lib.mkIf cfg.modesetting.enable {
+    services.xserver.videoDrivers = ["nvidia"];
+
+    nixfiles.common.opengl.enable = true;
+
+    hardware.nvidia = {
+
+      # Modesetting is required.
+      modesetting.enable = lib.mkDefault true;
+
+      # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
+      powerManagement.enable = lib.mkDefault false;
+      # Fine-grained power management. Turns off GPU when not in use.
+      # Experimental and only works on modern Nvidia GPUs (Turing or newer).
+      powerManagement.finegrained = lib.mkDefault false;
+
+      # Use the NVidia open source kernel module (not to be confused with the
+      # independent third-party "nouveau" open source driver).
+      # Support is limited to the Turing and later architectures. Full list of 
+      # supported GPUs is at: 
+      # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus 
+      # Only available from driver 515.43.04+
+      # Currently alpha-quality/buggy, so false is currently the recommended setting.
+      open = lib.mkDefault false;
+
+      # Enable the Nvidia settings menu,
+      # accessible via `nvidia-settings`.
+      nvidiaSettings = lib.mkDefault true;
+
+      # Optionally, you may need to select the appropriate driver version for your specific GPU.
+      package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;
+    };
+  };
+}
diff --git a/system/temp-new/fragments/me.nix b/system/temp-new/fragments/me.nix
new file mode 100644
index 0000000..c60924d
--- /dev/null
+++ b/system/temp-new/fragments/me.nix
@@ -0,0 +1,25 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.me;
+in
+{
+  options.nixfiles.common.me = lib.mkEnableOption "my user account";
+  config = lib.mkIf cfg.enable {
+    users.users.nullbite = {
+      isNormalUser = true;
+      extraGroups = [ "wheel" ];
+      packages = with pkgs; [
+        keychain
+      ];
+      initialPassword = "changeme";
+      shell = pkgs.zsh;
+    };
+
+    # shell config
+    programs.zsh.enable = true;
+    programs.fzf = {
+      keybindings = true;
+      fuzzyCompletion = true;
+    };
+  };
+}
diff --git a/system/temp-new/fragments/multimedia.nix b/system/temp-new/fragments/multimedia.nix
new file mode 100644
index 0000000..ab6f5fc
--- /dev/null
+++ b/system/temp-new/fragments/multimedia.nix
@@ -0,0 +1,22 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.packageSets.multimedia;
+  inherit (lib) optionals mkEnableOption mkIf;
+in
+{
+  options.nixfiles.packageSets.multimedia = {
+    enable = mkEnableOption "multimedia packages";
+  };
+  config = mkIf cfg.enable {
+    environment.systemPackages = with pkgs; optionals config.services.xserver.enable [
+      mpv
+      gimp-with-plugins
+      krita
+      inkscape
+    ] ++ [
+      yt-dlp
+      imagemagick
+      ffmpeg
+    ];
+  };
+}
diff --git a/system/temp-new/fragments/opengl.nix b/system/temp-new/fragments/opengl.nix
new file mode 100644
index 0000000..afad162
--- /dev/null
+++ b/system/temp-new/fragments/opengl.nix
@@ -0,0 +1,15 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.opengl;
+in
+{
+  options.nixfiles.common.opengl.enable = lib.mkEnableOption "OpenGL configuration";
+  config = lib.mkIf cfg.enable {
+    # Enable OpenGL
+    hardware.opengl = {
+      enable = true;
+      driSupport = lib.mkDefault true;
+      driSupport32Bit = lib.mkDefault config.hardware.opengl.driSupport;
+    };
+  };
+}
diff --git a/system/temp-new/fragments/software/syncthing.nix b/system/temp-new/fragments/software/syncthing.nix
new file mode 100644
index 0000000..e17fad4
--- /dev/null
+++ b/system/temp-new/fragments/software/syncthing.nix
@@ -0,0 +1,19 @@
+{ config, lib, pkgs, ...}:
+let
+  inherit (lib) mkEnableOption mkIf;
+  cfg = config.nixfiles.programs.syncthing;
+in
+{
+  options.nixfiles.programs.syncthing = {
+    enable = mkEnableOption "Syncthing configuration";
+  };
+
+  config = mkIf cfg.enable {
+    services.syncthing = {
+      enable = lib.mkDefault true;
+      user = lib.mkDefault "nullbite";
+      dataDir = lib.mkDefault "/home/nullbite/Documents";
+      configDir = lib.mkDefault "/home/nullbite/.config/syncthing";
+    };
+  };
+}
diff --git a/system/temp-new/fragments/sound.nix b/system/temp-new/fragments/sound.nix
new file mode 100644
index 0000000..cf52088
--- /dev/null
+++ b/system/temp-new/fragments/sound.nix
@@ -0,0 +1,34 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.sound;
+  inherit (lib) mkEnableOption mkIf mkDefault;
+in
+{
+  # Enable sound.
+  # sound.enable = true;
+  # hardware.pulseaudio.enable = true;
+
+  options.nixfiles.common.sound = {
+    enable = mkEnableOption "sound configuration";
+  };
+
+  config = mkIf cfg.enable {
+    security.rtkit.enable = mkDefault true;
+    services.pipewire = {
+      enable = true;
+      alsa.enable = mkDefault true;
+      alsa.support32Bit = mkDefault config.services.pipewire.alsa.enable;
+      pulse.enable = mkDefault true;
+      jack.enable = mkDefault true;
+    };
+
+    environment.systemPackages = with pkgs; [
+      qpwgraph
+      easyeffects
+    ] ++ optionals config.services.pipewire.pulse.enable [
+      pavucontrol
+      ncpamixer
+      pulsemixer
+    ];
+  };
+}
diff --git a/system/temp-new/gaming.nix b/system/temp-new/gaming.nix
new file mode 100644
index 0000000..a332b65
--- /dev/null
+++ b/system/temp-new/gaming.nix
@@ -0,0 +1,40 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.packageSets.gaming;
+in
+{
+  # oopsies this is for home-manager
+  # programs.mangohud.enable = lib.mkDefault true;
+
+  options.nixfiles.packageSets.gaming = {
+    enable = lib.mkEnableOption "gaming package set";
+  };
+  config = lib.mkIf cfg.enable {
+    programs.steam = {
+      enable = lib.mkDefault true;
+      gamescopeSession = {
+        enable = lib.mkDefault true;
+      };
+    };
+
+    programs.gamemode = {
+      enable = lib.mkDefault true;
+      enableRenice = lib.mkDefault true;
+    };
+
+    programs.gamescope = {
+      enable = lib.mkDefault true;
+      capSysNice = lib.mkDefault false;
+    };
+
+    environment.systemPackages = with pkgs; [
+      mangohud
+      goverlay
+      prismlauncher
+      glxinfo
+      vulkan-tools
+      legendary-gl
+      heroic
+    ];
+  };
+}
diff --git a/system/temp-new/hyprland.nix b/system/temp-new/hyprland.nix
new file mode 100644
index 0000000..a9a9598
--- /dev/null
+++ b/system/temp-new/hyprland.nix
@@ -0,0 +1,45 @@
+{ lib, pkgs, config, ... }:
+let
+  cfg = config.nixfiles.sessions.hyprland;
+in
+{
+  # imports = [
+  #   ./desktop-common.nix
+  #   # FIXME make this into an option
+  #   ./wm-common.nix
+  # ];
+
+  options.nixfiles.sessions.hyprland = {
+    enable = lib.mkEnableOption "hyprland configuration";
+  };
+
+  config = lib.mkIf cfg.enable {
+    services.xserver.displayManager.sddm.enable = true;
+
+    programs.hyprland = {
+      enable = true;
+      # TODO base this on if nvidia is enabled
+      enableNvidiaPatches = lib.mkDefault true;
+      xwayland.enable = true;
+    };
+
+    xdg.portal = {
+      enable = true;
+      extraPortals = [
+        pkgs.xdg-desktop-portal-gtk
+      ];
+    };
+
+    environment.systemPackages = with pkgs; [
+      kitty
+        dunst
+        polkit-kde-agent
+        eww
+        hyprpaper
+        rofi
+        hyprpicker
+        udiskie
+        polkit-kde-agent
+    ];
+  };
+}
diff --git a/system/temp-new/new-fragments/README.md b/system/temp-new/new-fragments/README.md
new file mode 100644
index 0000000..3031dac
--- /dev/null
+++ b/system/temp-new/new-fragments/README.md
@@ -0,0 +1,19 @@
+# Fragments
+These are Nix modules which aim to configure only one aspect of the system.
+This can include installing and configuring single programs such as Steam,
+MangoHud, Syncthing, or OpenSSH, as well as setting generic options for certain
+hardware setups, such as NVIDIA PRIME Offloading.
+
+## TODO
+These are some fragments that I want to create:
+- hardware/nvidia
+- hardware/nvidia-supergfxd
+- hardware/printing
+	- CUPS
+	- QZTray (maybe?)
+- software/steam
+- software/syncthing
+- software/libreoffice
+- software/ssh
+- software/gnupg
+- software/pam-gnupg (dep. software/gnupg)
diff --git a/system/temp-new/new-fragments/android.nix b/system/temp-new/new-fragments/android.nix
new file mode 100644
index 0000000..39a069c
--- /dev/null
+++ b/system/temp-new/new-fragments/android.nix
@@ -0,0 +1,9 @@
+{ config, lib, pkgs, outputs, vars, ...}@args:
+{
+  imports = [ outputs.nixosModules.adb ];
+  
+  config = {
+    programs.adb.enable = true;
+    users.users.${vars.username}.extraGroups = [ "adbusers" ];
+  };
+}
diff --git a/system/temp-new/new-fragments/debugging.nix b/system/temp-new/new-fragments/debugging.nix
new file mode 100644
index 0000000..0bde8b4
--- /dev/null
+++ b/system/temp-new/new-fragments/debugging.nix
@@ -0,0 +1,9 @@
+{ config, lib, pkgs, ...}:
+{
+  environment = {
+    enableDebugInfo = true;
+    systemPackages = with pkgs; [
+      gdb
+    ];
+  };
+}
diff --git a/system/temp-new/plasma.nix b/system/temp-new/plasma.nix
new file mode 100644
index 0000000..f1dc0f4
--- /dev/null
+++ b/system/temp-new/plasma.nix
@@ -0,0 +1,49 @@
+{ config, lib, pkgs, ...}:
+let
+  sleep = "${pkgs.coreutils}/bin/sleep";
+  systemctl = "${pkgs.systemd}/bin/systemctl";
+  inherit (lib) mkIf mkEnableOption mkForce mkDefault;
+  cfg = config.nixfiles.session.plasma;
+in
+{
+  # imports = [
+  #   ./desktop-common.nix
+  # ];
+
+  options.nixfiles.session.plasma = {
+    enable = mkEnableOption "KDE Plasma session";
+  };
+
+  config = mkIf cfg.enable {
+    nixfiles.common.desktop.enable = true;
+
+    services.xserver.displayManager.sddm.enable = mkDefault true;
+    services.xserver.desktopManager.plasma5.enable = true;
+    services.xserver.displayManager.defaultSession = "plasmawayland";
+    programs.kdeconnect.enable = mkDefault true;
+
+    systemd.user = {
+      services.restart-xdg-desktop-portal-kde = {
+        enable = true;
+        description = "hack to fix xdg-desktop-portal on kde";
+        wantedBy = [ "graphical-session.target" ];
+        after = [ "plasma-core.target" "xdg-desktop-portal.service" ];
+        requisite = [ "plasma-core.target" ];
+
+        serviceConfig = {
+          ExecStart = [
+            "${sleep} 5"
+            "${systemctl} --user restart xdg-desktop-portal.service"
+          ];
+          Type = "oneshot";
+          RemainAfterExit = "yes";
+        };
+      };
+    };
+
+    environment.systemPackages = with pkgs; [
+      # this fixes tiny file dialogs for Minecraft
+      libsForQt5.kdialog
+    ];
+  };
+}
diff --git a/system/temp-new/remote.nix b/system/temp-new/remote.nix
new file mode 100644
index 0000000..78acb17
--- /dev/null
+++ b/system/temp-new/remote.nix
@@ -0,0 +1,23 @@
+{ config, lib, pkgs, ... }:
+with lib; let
+  cfg = config.nixfiles.common.remoteAccess;
+in
+{
+  config = lib.mkIf cfg.enable {
+    # Enable the OpenSSH daemon.
+    # services.openssh.enable = true;
+    services.openssh = {
+      enable = true;
+      openFirewall = true;
+      settings = {
+
+      };
+    };
+
+    services.tailscale.enable = true;
+
+    networking.wireguard.enable = true;
+  };
+  options = {
+    nixfiles.common.remoteAccess = mkEnbaleOption "remote access options" ; };
+}
diff --git a/system/temp-new/wm-common.nix b/system/temp-new/wm-common.nix
new file mode 100644
index 0000000..d3bd487
--- /dev/null
+++ b/system/temp-new/wm-common.nix
@@ -0,0 +1,21 @@
+{ pkgs, lib, config, options, ...}:
+let
+  inherit (lib) mkDefault mkIf mkEnableOption;
+  cfg = config.nixfiles.common.window-manager;
+in
+{
+  config = mkIf cfg.enable {
+    # Common options for standalone window managers; many of these (or
+    # alternatives thereof) are pulled in by desktop environments.
+    services = {
+      power-profiles-daemon.enable = mkDefault true;
+      blueman.enable = mkDefault config.hardware.bluetooth.enable;
+    };
+    programs = {
+      nm-applet.enable = mkDefault config.networking.networkmanager.enable;
+    };
+  };
+  options = {
+    nixfiles.common.window-manager.enable = mkEnableOption "common window manager configuration";
+  };
+}

From 969abe113e074282396fde0bc2ee4ce342c602d0 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 13:10:31 +0100
Subject: [PATCH 02/13] Replace old modules

---
 system/base.nix                               | 91 ++++++++++++++++++-
 system/default.nix                            |  1 -
 system/desktop-common.nix                     | 77 ++++++++++------
 system/fragments/base.nix                     | 74 ---------------
 system/fragments/cli-multimedia.nix           |  8 --
 system/fragments/hardware/bluetooth.nix       | 15 ++-
 system/fragments/hardware/nvidia-modeset.nix  | 60 +++++++-----
 system/fragments/me.nix                       | 35 ++++---
 system/fragments/multimedia.nix               | 24 ++++-
 system/fragments/opengl.nix                   | 18 ++--
 system/fragments/software/syncthing.nix       | 20 +++-
 system/fragments/sound.nix                    | 42 ++++++---
 system/gaming.nix                             | 50 +++++-----
 system/hyprland.nix                           | 64 +++++++------
 system/{fragments => new-fragments}/README.md |  0
 system/{ => new-fragments}/android.nix        |  0
 system/{ => new-fragments}/debugging.nix      |  0
 system/plasma.nix                             | 68 ++++++++------
 system/remote.nix                             | 27 ++++--
 system/temp-new/README.md                     |  2 -
 system/temp-new/base.nix                      | 90 ------------------
 system/temp-new/default.nix                   | 11 ---
 system/temp-new/desktop-common.nix            | 58 ------------
 .../temp-new/fragments/hardware/bluetooth.nix | 16 ----
 .../fragments/hardware/nvidia-modeset.nix     | 47 ----------
 system/temp-new/fragments/me.nix              | 25 -----
 system/temp-new/fragments/multimedia.nix      | 22 -----
 system/temp-new/fragments/opengl.nix          | 15 ---
 .../temp-new/fragments/software/syncthing.nix | 19 ----
 system/temp-new/fragments/sound.nix           | 34 -------
 system/temp-new/gaming.nix                    | 40 --------
 system/temp-new/hyprland.nix                  | 45 ---------
 system/temp-new/new-fragments/README.md       | 19 ----
 system/temp-new/new-fragments/android.nix     |  9 --
 system/temp-new/new-fragments/debugging.nix   |  9 --
 system/temp-new/plasma.nix                    | 49 ----------
 system/temp-new/remote.nix                    | 23 -----
 system/temp-new/wm-common.nix                 | 21 -----
 system/wm-common.nix                          | 22 +++--
 39 files changed, 411 insertions(+), 839 deletions(-)
 delete mode 100644 system/fragments/base.nix
 delete mode 100644 system/fragments/cli-multimedia.nix
 rename system/{fragments => new-fragments}/README.md (100%)
 rename system/{ => new-fragments}/android.nix (100%)
 rename system/{ => new-fragments}/debugging.nix (100%)
 delete mode 100644 system/temp-new/README.md
 delete mode 100644 system/temp-new/base.nix
 delete mode 100644 system/temp-new/default.nix
 delete mode 100644 system/temp-new/desktop-common.nix
 delete mode 100644 system/temp-new/fragments/hardware/bluetooth.nix
 delete mode 100644 system/temp-new/fragments/hardware/nvidia-modeset.nix
 delete mode 100644 system/temp-new/fragments/me.nix
 delete mode 100644 system/temp-new/fragments/multimedia.nix
 delete mode 100644 system/temp-new/fragments/opengl.nix
 delete mode 100644 system/temp-new/fragments/software/syncthing.nix
 delete mode 100644 system/temp-new/fragments/sound.nix
 delete mode 100644 system/temp-new/gaming.nix
 delete mode 100644 system/temp-new/hyprland.nix
 delete mode 100644 system/temp-new/new-fragments/README.md
 delete mode 100644 system/temp-new/new-fragments/android.nix
 delete mode 100644 system/temp-new/new-fragments/debugging.nix
 delete mode 100644 system/temp-new/plasma.nix
 delete mode 100644 system/temp-new/remote.nix
 delete mode 100644 system/temp-new/wm-common.nix

diff --git a/system/base.nix b/system/base.nix
index aa55cee..8301dd4 100644
--- a/system/base.nix
+++ b/system/base.nix
@@ -1,7 +1,90 @@
-{ config, lib, pkgs, ...}:
+{ config, lib, pkgs, options, inputs, ...}@args:
+let
+  cfg = config.nixfiles.profile.base;
+in
 {
-  imports = [
-    ./fragments/base.nix
-    ./fragments/me.nix
+  options.nixfiles.profile.base = {
+    enable = lib.mkEnableOption "base config";
+  };
+               # TODO was gonna add something but i forgor and now i'm too lazy
+               # to delete this
+  config = lib.mkMerge [
+    (lib.mkIf cfg.enable {
+
+      # Enable my account
+      nixfiles.common.me = lib.mkDefault true;
+
+      # locale settings
+      i18n = {
+        defaultLocale = "en_US.UTF-8";
+        extraLocaleSettings = {
+          LC_ALL = "en_US.UTF-8";
+        };
+      };
+
+      # Enable flakes
+      nix.settings.experimental-features = ["nix-command" "flakes" ];
+
+      # fallback to building locally if binary cache fails (home-manager should be
+      # able to handle simple rebuilds offline)
+      nix.settings.fallback = true;
+
+      # Allow unfree packages
+      nixpkgs.config.allowUnfree = true;
+
+      # networking.hostName = "nixos"; # Define your hostname.
+      # Pick only one of the below networking options.
+      # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
+      networking.networkmanager.enable = lib.mkDefault true;  # Easiest to use and most distros use this by default.
+
+      # List packages installed in system profile. To search, run:
+      # $ nix search wget
+      environment.systemPackages = with pkgs; [
+        neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
+        wget
+        curl
+        git
+        git-lfs
+        stow
+        zsh
+        ntfs3g
+        openssh
+        sshfs
+        file
+
+        fd
+        ripgrep
+        sbctl # TODO move this elsewhere
+        comma
+        nil
+
+        # network utilities
+        inetutils
+        socat
+        nmap
+        hping
+
+        # system utilities
+        htop
+        lshw
+        pciutils
+      ];
+
+      # this makes comma and legacy nix utils use the flake nixpkgs for ABI
+      # compatibility becasue once `, vkcube` couldn't find the correct opengl
+      # driver or something (also it reduces the download size of temporary shell
+      # closures)
+      nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ] ++ options.nix.nixPath.default;
+
+      programs.ssh.enableAskPassword = false;
+      programs.fuse.userAllowOther = true;
+
+      programs.gnupg.agent = {
+        enable = lib.mkDefault true;
+        enableSSHSupport = lib.mkDefault true;
+      };
+
+      boot.loader.systemd-boot.configurationLimit = lib.mkDefault 15;
+    })
   ];
 }
diff --git a/system/default.nix b/system/default.nix
index 0927272..09dcd6a 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -4,7 +4,6 @@ let
 in
 {
   imports = [
-    ./temp-new
   ];
   config = {};
   options.nixfiles = {
diff --git a/system/desktop-common.nix b/system/desktop-common.nix
index 49aa07e..6449a28 100644
--- a/system/desktop-common.nix
+++ b/system/desktop-common.nix
@@ -1,37 +1,58 @@
 { config, lib, pkgs, outputs, ...}:
-
+let
+  cfg = config.nixfiles.common.desktop;
+  inherit (lib) mkIf mkDefault mkForce mkEnableOption;
+in
 {
-  imports = [
-    ./base.nix
-    ./fragments/sound.nix
-    ./fragments/multimedia.nix
-    ./fragments/software/syncthing.nix
-    ./fragments/hardware/bluetooth.nix
-  ];
-  
-  # Enable the X11 windowing system.
-  services.xserver.enable = true;
+  # imports = [
+  #   ./base.nix
+  #   ./fragments/sound.nix
+  #   ./fragments/multimedia.nix
+  #   ./fragments/software/syncthing.nix
+  #   ./fragments/hardware/bluetooth.nix
+  # ];
 
-  environment.systemPackages = with pkgs; [
-    arc-theme
-    wl-clipboard
-  ];
+  options.nixfiles.common.desktop = {
+    enable = mkEnableOption "common desktop options";
+  };
 
-  # Enable flatpak
-  services.flatpak.enable = true;
+  config = mkIf cfg.enable {
+    # enable option sets
+    nixfiles = {
+      packageSets.multimedia.enable = true;
+      common = {
+        syncthing.enable = true;
+        bluetooth.enable = true;
+        sound.enable = true;
+      };
+    };
 
-  # Enable CUPS to print documents.
-  services.printing.enable = true;
+    # Enable the X11 windowing system.
+    services.xserver.enable = true;
 
-  fonts.packages = with pkgs; [
-    (nerdfonts.override { fonts = [ "FiraCode" ]; })
-    noto-fonts-cjk
-    (outputs.packages.${pkgs.system}.google-fonts.override { fonts = [ "NovaSquare" ];})
-  ];
-
-  users.users.nullbite = {
-    packages = with pkgs; [
-      firefox
+    environment.systemPackages = with pkgs; [
+      arc-theme
+      wl-clipboard
     ];
+
+    # Enable flatpak
+    services.flatpak.enable = mkDefault true;
+
+    # Enable CUPS to print documents.
+    services.printing.enable = mkDefault true;
+
+    fonts.packages = with pkgs; [
+      (nerdfonts.override { fonts = [ "FiraCode" ]; })
+      noto-fonts-cjk
+      (outputs.packages.${pkgs.system}.google-fonts.override { fonts = [ "NovaSquare" ];})
+    ];
+
+    # TODO this should be defined in home-manager or not at all probably
+    # FIXME also my name is hardcoded
+    users.users.nullbite = {
+      packages = with pkgs; [
+        firefox
+      ];
+    };
   };
 }
diff --git a/system/fragments/base.nix b/system/fragments/base.nix
deleted file mode 100644
index de4d18b..0000000
--- a/system/fragments/base.nix
+++ /dev/null
@@ -1,74 +0,0 @@
-{ config, lib, pkgs, options, inputs, ...}@args:
-{
-  # locale settings
-  i18n = {
-    defaultLocale = "en_US.UTF-8";
-    extraLocaleSettings = {
-      LC_ALL = "en_US.UTF-8";
-    };
-  };
-
-  # Enable flakes
-  nix.settings.experimental-features = ["nix-command" "flakes" ];
-
-  # fallback to building locally if binary cache fails (home-manager should be
-  # able to handle simple rebuilds offline)
-  nix.settings.fallback = true;
-
-  # Allow unfree packages
-  nixpkgs.config.allowUnfree = true;
-
-  # networking.hostName = "nixos"; # Define your hostname.
-  # Pick only one of the below networking options.
-  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
-  networking.networkmanager.enable = lib.mkDefault true;  # Easiest to use and most distros use this by default.
-
-  # List packages installed in system profile. To search, run:
-  # $ nix search wget
-  environment.systemPackages = with pkgs; [
-    neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
-    wget
-    curl
-    git
-    git-lfs
-    stow
-    zsh
-    ntfs3g
-    openssh
-    sshfs
-    file
-
-    fd
-    ripgrep
-    sbctl # TODO move this elsewhere
-    comma
-    nil
-
-    # network utilities
-    inetutils
-    socat
-    nmap
-    hping
-
-    # system utilities
-    htop
-    lshw
-    pciutils
-  ];
-
-  # this makes comma and legacy nix utils use the flake nixpkgs for ABI
-  # compatibility becasue once `, vkcube` couldn't find the correct opengl
-  # driver or something (also it reduces the download size of temporary shell
-  # closures)
-  nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ] ++ options.nix.nixPath.default;
-
-  programs.ssh.enableAskPassword = false;
-  programs.fuse.userAllowOther = true;
-
-  programs.gnupg.agent = {
-    enable = lib.mkDefault true;
-    enableSSHSupport = lib.mkDefault true;
-  };
-
-  boot.loader.systemd-boot.configurationLimit = lib.mkDefault 15;
-}
diff --git a/system/fragments/cli-multimedia.nix b/system/fragments/cli-multimedia.nix
deleted file mode 100644
index 370aac0..0000000
--- a/system/fragments/cli-multimedia.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ config, lib, pkgs, ...}:
-{
-  environment.systemPackages = with pkgs; [
-    yt-dlp
-    imagemagick
-    ffmpeg
-  ];
-}
diff --git a/system/fragments/hardware/bluetooth.nix b/system/fragments/hardware/bluetooth.nix
index dd84452..1a8c7fb 100644
--- a/system/fragments/hardware/bluetooth.nix
+++ b/system/fragments/hardware/bluetooth.nix
@@ -1,7 +1,16 @@
 { config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.bluetooth;
+in
 {
-  hardware.bluetooth = {
-    enable = lib.mkDefault true;
-    powerOnBoot = lib.mkDefault true;
+  options.nixfiles.common.bluetooth = {
+    enable = lib.mkEnableOption "Bluetooth";
+  };
+
+  config = lib.mkIf cfg.enable {
+    hardware.bluetooth = {
+      enable = lib.mkDefault true;
+      powerOnBoot = lib.mkDefault true;
+    };
   };
 }
diff --git a/system/fragments/hardware/nvidia-modeset.nix b/system/fragments/hardware/nvidia-modeset.nix
index 2f9c44b..1011b96 100644
--- a/system/fragments/hardware/nvidia-modeset.nix
+++ b/system/fragments/hardware/nvidia-modeset.nix
@@ -1,37 +1,47 @@
 { config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.nvidia;
+in
 {
-  imports = [
-    ../opengl.nix
-  ];
+  # imports = [
+  #   ../opengl.nix
+  # ];
 
   # Load nvidia driver for Xorg and Wayland
-  services.xserver.videoDrivers = ["nvidia"];
+  options.nixfiles.common.nvidia = {
+    modesetting.enable = lib.mkEnableOption "NVIDIA configuration with modesetting";
+  };
+  config = lib.mkIf cfg.modesetting.enable {
+    services.xserver.videoDrivers = ["nvidia"];
 
-  hardware.nvidia = {
+    nixfiles.common.opengl.enable = true;
 
-    # Modesetting is required.
-    modesetting.enable = lib.mkDefault true;
+    hardware.nvidia = {
 
-    # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
-    powerManagement.enable = lib.mkDefault false;
-    # Fine-grained power management. Turns off GPU when not in use.
-    # Experimental and only works on modern Nvidia GPUs (Turing or newer).
-    powerManagement.finegrained = lib.mkDefault false;
+      # Modesetting is required.
+      modesetting.enable = lib.mkDefault true;
 
-    # Use the NVidia open source kernel module (not to be confused with the
-    # independent third-party "nouveau" open source driver).
-    # Support is limited to the Turing and later architectures. Full list of 
-    # supported GPUs is at: 
-    # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus 
-    # Only available from driver 515.43.04+
-    # Currently alpha-quality/buggy, so false is currently the recommended setting.
-    open = lib.mkDefault false;
+      # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
+      powerManagement.enable = lib.mkDefault false;
+      # Fine-grained power management. Turns off GPU when not in use.
+      # Experimental and only works on modern Nvidia GPUs (Turing or newer).
+      powerManagement.finegrained = lib.mkDefault false;
 
-    # Enable the Nvidia settings menu,
-	# accessible via `nvidia-settings`.
-    nvidiaSettings = lib.mkDefault true;
+      # Use the NVidia open source kernel module (not to be confused with the
+      # independent third-party "nouveau" open source driver).
+      # Support is limited to the Turing and later architectures. Full list of 
+      # supported GPUs is at: 
+      # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus 
+      # Only available from driver 515.43.04+
+      # Currently alpha-quality/buggy, so false is currently the recommended setting.
+      open = lib.mkDefault false;
 
-    # Optionally, you may need to select the appropriate driver version for your specific GPU.
-    package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;
+      # Enable the Nvidia settings menu,
+      # accessible via `nvidia-settings`.
+      nvidiaSettings = lib.mkDefault true;
+
+      # Optionally, you may need to select the appropriate driver version for your specific GPU.
+      package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;
+    };
   };
 }
diff --git a/system/fragments/me.nix b/system/fragments/me.nix
index 5a74daa..c60924d 100644
--- a/system/fragments/me.nix
+++ b/system/fragments/me.nix
@@ -1,20 +1,25 @@
 { config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.me;
+in
 {
-  users.users.nullbite = {
-    isNormalUser = true;
-    extraGroups = [ "wheel" ];
-    packages = with pkgs; [
-      keychain
-    ];
-    initialPassword = "changeme";
-    shell = pkgs.zsh;
-  };
+  options.nixfiles.common.me = lib.mkEnableOption "my user account";
+  config = lib.mkIf cfg.enable {
+    users.users.nullbite = {
+      isNormalUser = true;
+      extraGroups = [ "wheel" ];
+      packages = with pkgs; [
+        keychain
+      ];
+      initialPassword = "changeme";
+      shell = pkgs.zsh;
+    };
 
-  # shell config
-  programs.zsh.enable = true;
-  programs.fzf = {
-    keybindings = true;
-    fuzzyCompletion = true;
+    # shell config
+    programs.zsh.enable = true;
+    programs.fzf = {
+      keybindings = true;
+      fuzzyCompletion = true;
+    };
   };
-
 }
diff --git a/system/fragments/multimedia.nix b/system/fragments/multimedia.nix
index 7120919..ab6f5fc 100644
--- a/system/fragments/multimedia.nix
+++ b/system/fragments/multimedia.nix
@@ -1,8 +1,22 @@
 { config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.packageSets.multimedia;
+  inherit (lib) optionals mkEnableOption mkIf;
+in
 {
-  imports = [ ./cli-multimedia.nix ];
-  environment.systemPackages = with pkgs; [
-    mpv
-    gimp-with-plugins
-  ];
+  options.nixfiles.packageSets.multimedia = {
+    enable = mkEnableOption "multimedia packages";
+  };
+  config = mkIf cfg.enable {
+    environment.systemPackages = with pkgs; optionals config.services.xserver.enable [
+      mpv
+      gimp-with-plugins
+      krita
+      inkscape
+    ] ++ [
+      yt-dlp
+      imagemagick
+      ffmpeg
+    ];
+  };
 }
diff --git a/system/fragments/opengl.nix b/system/fragments/opengl.nix
index 79ee5d2..afad162 100644
--- a/system/fragments/opengl.nix
+++ b/system/fragments/opengl.nix
@@ -1,11 +1,15 @@
 { config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.opengl;
+in
 {
-
-  # Enable OpenGL
-  hardware.opengl = {
-    enable = true;
-    driSupport = true;
-    driSupport32Bit = true;
+  options.nixfiles.common.opengl.enable = lib.mkEnableOption "OpenGL configuration";
+  config = lib.mkIf cfg.enable {
+    # Enable OpenGL
+    hardware.opengl = {
+      enable = true;
+      driSupport = lib.mkDefault true;
+      driSupport32Bit = lib.mkDefault config.hardware.opengl.driSupport;
+    };
   };
-
 }
diff --git a/system/fragments/software/syncthing.nix b/system/fragments/software/syncthing.nix
index da6d2da..e17fad4 100644
--- a/system/fragments/software/syncthing.nix
+++ b/system/fragments/software/syncthing.nix
@@ -1,9 +1,19 @@
 { config, lib, pkgs, ...}:
+let
+  inherit (lib) mkEnableOption mkIf;
+  cfg = config.nixfiles.programs.syncthing;
+in
 {
-  services.syncthing = {
-    enable = lib.mkDefault true;
-    user = lib.mkDefault "nullbite";
-    dataDir = lib.mkDefault "/home/nullbite/Documents";
-    configDir = lib.mkDefault "/home/nullbite/.config/syncthing";
+  options.nixfiles.programs.syncthing = {
+    enable = mkEnableOption "Syncthing configuration";
+  };
+
+  config = mkIf cfg.enable {
+    services.syncthing = {
+      enable = lib.mkDefault true;
+      user = lib.mkDefault "nullbite";
+      dataDir = lib.mkDefault "/home/nullbite/Documents";
+      configDir = lib.mkDefault "/home/nullbite/.config/syncthing";
+    };
   };
 }
diff --git a/system/fragments/sound.nix b/system/fragments/sound.nix
index a4e606a..cf52088 100644
--- a/system/fragments/sound.nix
+++ b/system/fragments/sound.nix
@@ -1,22 +1,34 @@
 { config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.common.sound;
+  inherit (lib) mkEnableOption mkIf mkDefault;
+in
 {
   # Enable sound.
   # sound.enable = true;
   # hardware.pulseaudio.enable = true;
-  security.rtkit.enable = true;
-  services.pipewire = {
-    enable = true;
-    alsa.enable = true;
-    alsa.support32Bit = true;
-    pulse.enable = true;
-    jack.enable = true;
+
+  options.nixfiles.common.sound = {
+    enable = mkEnableOption "sound configuration";
+  };
+
+  config = mkIf cfg.enable {
+    security.rtkit.enable = mkDefault true;
+    services.pipewire = {
+      enable = true;
+      alsa.enable = mkDefault true;
+      alsa.support32Bit = mkDefault config.services.pipewire.alsa.enable;
+      pulse.enable = mkDefault true;
+      jack.enable = mkDefault true;
+    };
+
+    environment.systemPackages = with pkgs; [
+      qpwgraph
+      easyeffects
+    ] ++ optionals config.services.pipewire.pulse.enable [
+      pavucontrol
+      ncpamixer
+      pulsemixer
+    ];
   };
-  
-  environment.systemPackages = with pkgs; [
-    qpwgraph
-    pavucontrol
-    ncpamixer
-    pulsemixer
-    easyeffects
-  ];
 }
diff --git a/system/gaming.nix b/system/gaming.nix
index 258d158..a332b65 100644
--- a/system/gaming.nix
+++ b/system/gaming.nix
@@ -1,32 +1,40 @@
 { config, lib, pkgs, ...}:
+let
+  cfg = config.nixfiles.packageSets.gaming;
+in
 {
   # oopsies this is for home-manager
   # programs.mangohud.enable = lib.mkDefault true;
 
-  programs.steam = {
-    enable = lib.mkDefault true;
-    gamescopeSession = {
+  options.nixfiles.packageSets.gaming = {
+    enable = lib.mkEnableOption "gaming package set";
+  };
+  config = lib.mkIf cfg.enable {
+    programs.steam = {
       enable = lib.mkDefault true;
+      gamescopeSession = {
+        enable = lib.mkDefault true;
+      };
     };
-  };
 
-  programs.gamemode = {
-    enable = lib.mkDefault true;
-    enableRenice = lib.mkDefault true;
-  };
+    programs.gamemode = {
+      enable = lib.mkDefault true;
+      enableRenice = lib.mkDefault true;
+    };
 
-  programs.gamescope = {
-    enable = lib.mkDefault true;
-    capSysNice = lib.mkDefault false;
-  };
+    programs.gamescope = {
+      enable = lib.mkDefault true;
+      capSysNice = lib.mkDefault false;
+    };
 
-  environment.systemPackages = with pkgs; [
-    mangohud
-    goverlay
-    prismlauncher
-    glxinfo
-    vulkan-tools
-    legendary-gl
-    heroic
-  ];
+    environment.systemPackages = with pkgs; [
+      mangohud
+      goverlay
+      prismlauncher
+      glxinfo
+      vulkan-tools
+      legendary-gl
+      heroic
+    ];
+  };
 }
diff --git a/system/hyprland.nix b/system/hyprland.nix
index a71426e..a9a9598 100644
--- a/system/hyprland.nix
+++ b/system/hyprland.nix
@@ -1,35 +1,45 @@
 { lib, pkgs, config, ... }:
+let
+  cfg = config.nixfiles.sessions.hyprland;
+in
 {
-  imports = [
-    ./desktop-common.nix
-    # FIXME make this into an option
-    ./wm-common.nix
-  ];
+  # imports = [
+  #   ./desktop-common.nix
+  #   # FIXME make this into an option
+  #   ./wm-common.nix
+  # ];
 
-  services.xserver.displayManager.sddm.enable = true;
-
-  programs.hyprland = {
-    enable = true;
-    enableNvidiaPatches = true;
-    xwayland.enable = true;
+  options.nixfiles.sessions.hyprland = {
+    enable = lib.mkEnableOption "hyprland configuration";
   };
 
-  xdg.portal = {
-    enable = true;
-    extraPortals = [
-      pkgs.xdg-desktop-portal-gtk
+  config = lib.mkIf cfg.enable {
+    services.xserver.displayManager.sddm.enable = true;
+
+    programs.hyprland = {
+      enable = true;
+      # TODO base this on if nvidia is enabled
+      enableNvidiaPatches = lib.mkDefault true;
+      xwayland.enable = true;
+    };
+
+    xdg.portal = {
+      enable = true;
+      extraPortals = [
+        pkgs.xdg-desktop-portal-gtk
+      ];
+    };
+
+    environment.systemPackages = with pkgs; [
+      kitty
+        dunst
+        polkit-kde-agent
+        eww
+        hyprpaper
+        rofi
+        hyprpicker
+        udiskie
+        polkit-kde-agent
     ];
   };
-
-  environment.systemPackages = with pkgs; [
-    kitty
-    dunst
-    polkit-kde-agent
-    eww
-    hyprpaper
-    rofi
-    hyprpicker
-    udiskie
-    polkit-kde-agent
-  ];
 }
diff --git a/system/fragments/README.md b/system/new-fragments/README.md
similarity index 100%
rename from system/fragments/README.md
rename to system/new-fragments/README.md
diff --git a/system/android.nix b/system/new-fragments/android.nix
similarity index 100%
rename from system/android.nix
rename to system/new-fragments/android.nix
diff --git a/system/debugging.nix b/system/new-fragments/debugging.nix
similarity index 100%
rename from system/debugging.nix
rename to system/new-fragments/debugging.nix
diff --git a/system/plasma.nix b/system/plasma.nix
index 5e69c8d..f1dc0f4 100644
--- a/system/plasma.nix
+++ b/system/plasma.nix
@@ -2,38 +2,48 @@
 let
   sleep = "${pkgs.coreutils}/bin/sleep";
   systemctl = "${pkgs.systemd}/bin/systemctl";
+  inherit (lib) mkIf mkEnableOption mkForce mkDefault;
+  cfg = config.nixfiles.session.plasma;
 in
 {
-  imports = [
-    ./desktop-common.nix
-  ];
+  # imports = [
+  #   ./desktop-common.nix
+  # ];
 
-  services.xserver.displayManager.sddm.enable = true;
-  services.xserver.desktopManager.plasma5.enable = true;
-  services.xserver.displayManager.defaultSession = "plasmawayland";
-  programs.kdeconnect.enable = true;
-
-  systemd.user = {
-    services.restart-xdg-desktop-portal-kde = {
-      enable = true;
-      description = "hack to fix xdg-desktop-portal on kde";
-      wantedBy = [ "graphical-session.target" ];
-      after = [ "plasma-core.target" "xdg-desktop-portal.service" ];
-      requisite = [ "plasma-core.target" ];
-
-      serviceConfig = {
-        ExecStart = [
-          "${sleep} 5"
-          "${systemctl} --user restart xdg-desktop-portal.service"
-        ];
-        Type = "oneshot";
-        RemainAfterExit = "yes";
-      };
-    };
+  options.nixfiles.session.plasma = {
+    enable = mkEnableOption "KDE Plasma session";
   };
 
-  environment.systemPackages = with pkgs; [
-    # this fixes tiny file dialogs for Minecraft
-    libsForQt5.kdialog
-  ];
+  config = mkIf cfg.enable {
+    nixfiles.common.desktop.enable = true;
+
+    services.xserver.displayManager.sddm.enable = mkDefault true;
+    services.xserver.desktopManager.plasma5.enable = true;
+    services.xserver.displayManager.defaultSession = "plasmawayland";
+    programs.kdeconnect.enable = mkDefault true;
+
+    systemd.user = {
+      services.restart-xdg-desktop-portal-kde = {
+        enable = true;
+        description = "hack to fix xdg-desktop-portal on kde";
+        wantedBy = [ "graphical-session.target" ];
+        after = [ "plasma-core.target" "xdg-desktop-portal.service" ];
+        requisite = [ "plasma-core.target" ];
+
+        serviceConfig = {
+          ExecStart = [
+            "${sleep} 5"
+            "${systemctl} --user restart xdg-desktop-portal.service"
+          ];
+          Type = "oneshot";
+          RemainAfterExit = "yes";
+        };
+      };
+    };
+
+    environment.systemPackages = with pkgs; [
+      # this fixes tiny file dialogs for Minecraft
+      libsForQt5.kdialog
+    ];
+  };
 }
diff --git a/system/remote.nix b/system/remote.nix
index 86d20e3..78acb17 100644
--- a/system/remote.nix
+++ b/system/remote.nix
@@ -1,16 +1,23 @@
 { config, lib, pkgs, ... }:
+with lib; let
+  cfg = config.nixfiles.common.remoteAccess;
+in
 {
-  # Enable the OpenSSH daemon.
-  # services.openssh.enable = true;
-  services.openssh = {
-    enable = true;
-    openFirewall = true;
-    settings = {
+  config = lib.mkIf cfg.enable {
+    # Enable the OpenSSH daemon.
+    # services.openssh.enable = true;
+    services.openssh = {
+      enable = true;
+      openFirewall = true;
+      settings = {
 
+      };
     };
+
+    services.tailscale.enable = true;
+
+    networking.wireguard.enable = true;
   };
-
-  services.tailscale.enable = true;
-
-  networking.wireguard.enable = true;
+  options = {
+    nixfiles.common.remoteAccess = mkEnbaleOption "remote access options" ; };
 }
diff --git a/system/temp-new/README.md b/system/temp-new/README.md
deleted file mode 100644
index e91ba36..0000000
--- a/system/temp-new/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# system
-This directory contains modules and configuration specific to my NixOS configuration. `default.nix` is the entrypoint to my module set; it can safely be loaded without making any configuration changes by default. 
diff --git a/system/temp-new/base.nix b/system/temp-new/base.nix
deleted file mode 100644
index 8301dd4..0000000
--- a/system/temp-new/base.nix
+++ /dev/null
@@ -1,90 +0,0 @@
-{ config, lib, pkgs, options, inputs, ...}@args:
-let
-  cfg = config.nixfiles.profile.base;
-in
-{
-  options.nixfiles.profile.base = {
-    enable = lib.mkEnableOption "base config";
-  };
-               # TODO was gonna add something but i forgor and now i'm too lazy
-               # to delete this
-  config = lib.mkMerge [
-    (lib.mkIf cfg.enable {
-
-      # Enable my account
-      nixfiles.common.me = lib.mkDefault true;
-
-      # locale settings
-      i18n = {
-        defaultLocale = "en_US.UTF-8";
-        extraLocaleSettings = {
-          LC_ALL = "en_US.UTF-8";
-        };
-      };
-
-      # Enable flakes
-      nix.settings.experimental-features = ["nix-command" "flakes" ];
-
-      # fallback to building locally if binary cache fails (home-manager should be
-      # able to handle simple rebuilds offline)
-      nix.settings.fallback = true;
-
-      # Allow unfree packages
-      nixpkgs.config.allowUnfree = true;
-
-      # networking.hostName = "nixos"; # Define your hostname.
-      # Pick only one of the below networking options.
-      # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
-      networking.networkmanager.enable = lib.mkDefault true;  # Easiest to use and most distros use this by default.
-
-      # List packages installed in system profile. To search, run:
-      # $ nix search wget
-      environment.systemPackages = with pkgs; [
-        neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
-        wget
-        curl
-        git
-        git-lfs
-        stow
-        zsh
-        ntfs3g
-        openssh
-        sshfs
-        file
-
-        fd
-        ripgrep
-        sbctl # TODO move this elsewhere
-        comma
-        nil
-
-        # network utilities
-        inetutils
-        socat
-        nmap
-        hping
-
-        # system utilities
-        htop
-        lshw
-        pciutils
-      ];
-
-      # this makes comma and legacy nix utils use the flake nixpkgs for ABI
-      # compatibility becasue once `, vkcube` couldn't find the correct opengl
-      # driver or something (also it reduces the download size of temporary shell
-      # closures)
-      nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ] ++ options.nix.nixPath.default;
-
-      programs.ssh.enableAskPassword = false;
-      programs.fuse.userAllowOther = true;
-
-      programs.gnupg.agent = {
-        enable = lib.mkDefault true;
-        enableSSHSupport = lib.mkDefault true;
-      };
-
-      boot.loader.systemd-boot.configurationLimit = lib.mkDefault 15;
-    })
-  ];
-}
diff --git a/system/temp-new/default.nix b/system/temp-new/default.nix
deleted file mode 100644
index 09dcd6a..0000000
--- a/system/temp-new/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ pkgs, config, lib, options, ... }@args:
-let
-  cfg = config.nixfiles;
-in
-{
-  imports = [
-  ];
-  config = {};
-  options.nixfiles = {
-  };
-}
diff --git a/system/temp-new/desktop-common.nix b/system/temp-new/desktop-common.nix
deleted file mode 100644
index 6449a28..0000000
--- a/system/temp-new/desktop-common.nix
+++ /dev/null
@@ -1,58 +0,0 @@
-{ config, lib, pkgs, outputs, ...}:
-let
-  cfg = config.nixfiles.common.desktop;
-  inherit (lib) mkIf mkDefault mkForce mkEnableOption;
-in
-{
-  # imports = [
-  #   ./base.nix
-  #   ./fragments/sound.nix
-  #   ./fragments/multimedia.nix
-  #   ./fragments/software/syncthing.nix
-  #   ./fragments/hardware/bluetooth.nix
-  # ];
-
-  options.nixfiles.common.desktop = {
-    enable = mkEnableOption "common desktop options";
-  };
-
-  config = mkIf cfg.enable {
-    # enable option sets
-    nixfiles = {
-      packageSets.multimedia.enable = true;
-      common = {
-        syncthing.enable = true;
-        bluetooth.enable = true;
-        sound.enable = true;
-      };
-    };
-
-    # Enable the X11 windowing system.
-    services.xserver.enable = true;
-
-    environment.systemPackages = with pkgs; [
-      arc-theme
-      wl-clipboard
-    ];
-
-    # Enable flatpak
-    services.flatpak.enable = mkDefault true;
-
-    # Enable CUPS to print documents.
-    services.printing.enable = mkDefault true;
-
-    fonts.packages = with pkgs; [
-      (nerdfonts.override { fonts = [ "FiraCode" ]; })
-      noto-fonts-cjk
-      (outputs.packages.${pkgs.system}.google-fonts.override { fonts = [ "NovaSquare" ];})
-    ];
-
-    # TODO this should be defined in home-manager or not at all probably
-    # FIXME also my name is hardcoded
-    users.users.nullbite = {
-      packages = with pkgs; [
-        firefox
-      ];
-    };
-  };
-}
diff --git a/system/temp-new/fragments/hardware/bluetooth.nix b/system/temp-new/fragments/hardware/bluetooth.nix
deleted file mode 100644
index 1a8c7fb..0000000
--- a/system/temp-new/fragments/hardware/bluetooth.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  cfg = config.nixfiles.common.bluetooth;
-in
-{
-  options.nixfiles.common.bluetooth = {
-    enable = lib.mkEnableOption "Bluetooth";
-  };
-
-  config = lib.mkIf cfg.enable {
-    hardware.bluetooth = {
-      enable = lib.mkDefault true;
-      powerOnBoot = lib.mkDefault true;
-    };
-  };
-}
diff --git a/system/temp-new/fragments/hardware/nvidia-modeset.nix b/system/temp-new/fragments/hardware/nvidia-modeset.nix
deleted file mode 100644
index 1011b96..0000000
--- a/system/temp-new/fragments/hardware/nvidia-modeset.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  cfg = config.nixfiles.common.nvidia;
-in
-{
-  # imports = [
-  #   ../opengl.nix
-  # ];
-
-  # Load nvidia driver for Xorg and Wayland
-  options.nixfiles.common.nvidia = {
-    modesetting.enable = lib.mkEnableOption "NVIDIA configuration with modesetting";
-  };
-  config = lib.mkIf cfg.modesetting.enable {
-    services.xserver.videoDrivers = ["nvidia"];
-
-    nixfiles.common.opengl.enable = true;
-
-    hardware.nvidia = {
-
-      # Modesetting is required.
-      modesetting.enable = lib.mkDefault true;
-
-      # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
-      powerManagement.enable = lib.mkDefault false;
-      # Fine-grained power management. Turns off GPU when not in use.
-      # Experimental and only works on modern Nvidia GPUs (Turing or newer).
-      powerManagement.finegrained = lib.mkDefault false;
-
-      # Use the NVidia open source kernel module (not to be confused with the
-      # independent third-party "nouveau" open source driver).
-      # Support is limited to the Turing and later architectures. Full list of 
-      # supported GPUs is at: 
-      # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus 
-      # Only available from driver 515.43.04+
-      # Currently alpha-quality/buggy, so false is currently the recommended setting.
-      open = lib.mkDefault false;
-
-      # Enable the Nvidia settings menu,
-      # accessible via `nvidia-settings`.
-      nvidiaSettings = lib.mkDefault true;
-
-      # Optionally, you may need to select the appropriate driver version for your specific GPU.
-      package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;
-    };
-  };
-}
diff --git a/system/temp-new/fragments/me.nix b/system/temp-new/fragments/me.nix
deleted file mode 100644
index c60924d..0000000
--- a/system/temp-new/fragments/me.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  cfg = config.nixfiles.common.me;
-in
-{
-  options.nixfiles.common.me = lib.mkEnableOption "my user account";
-  config = lib.mkIf cfg.enable {
-    users.users.nullbite = {
-      isNormalUser = true;
-      extraGroups = [ "wheel" ];
-      packages = with pkgs; [
-        keychain
-      ];
-      initialPassword = "changeme";
-      shell = pkgs.zsh;
-    };
-
-    # shell config
-    programs.zsh.enable = true;
-    programs.fzf = {
-      keybindings = true;
-      fuzzyCompletion = true;
-    };
-  };
-}
diff --git a/system/temp-new/fragments/multimedia.nix b/system/temp-new/fragments/multimedia.nix
deleted file mode 100644
index ab6f5fc..0000000
--- a/system/temp-new/fragments/multimedia.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  cfg = config.nixfiles.packageSets.multimedia;
-  inherit (lib) optionals mkEnableOption mkIf;
-in
-{
-  options.nixfiles.packageSets.multimedia = {
-    enable = mkEnableOption "multimedia packages";
-  };
-  config = mkIf cfg.enable {
-    environment.systemPackages = with pkgs; optionals config.services.xserver.enable [
-      mpv
-      gimp-with-plugins
-      krita
-      inkscape
-    ] ++ [
-      yt-dlp
-      imagemagick
-      ffmpeg
-    ];
-  };
-}
diff --git a/system/temp-new/fragments/opengl.nix b/system/temp-new/fragments/opengl.nix
deleted file mode 100644
index afad162..0000000
--- a/system/temp-new/fragments/opengl.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  cfg = config.nixfiles.common.opengl;
-in
-{
-  options.nixfiles.common.opengl.enable = lib.mkEnableOption "OpenGL configuration";
-  config = lib.mkIf cfg.enable {
-    # Enable OpenGL
-    hardware.opengl = {
-      enable = true;
-      driSupport = lib.mkDefault true;
-      driSupport32Bit = lib.mkDefault config.hardware.opengl.driSupport;
-    };
-  };
-}
diff --git a/system/temp-new/fragments/software/syncthing.nix b/system/temp-new/fragments/software/syncthing.nix
deleted file mode 100644
index e17fad4..0000000
--- a/system/temp-new/fragments/software/syncthing.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.nixfiles.programs.syncthing;
-in
-{
-  options.nixfiles.programs.syncthing = {
-    enable = mkEnableOption "Syncthing configuration";
-  };
-
-  config = mkIf cfg.enable {
-    services.syncthing = {
-      enable = lib.mkDefault true;
-      user = lib.mkDefault "nullbite";
-      dataDir = lib.mkDefault "/home/nullbite/Documents";
-      configDir = lib.mkDefault "/home/nullbite/.config/syncthing";
-    };
-  };
-}
diff --git a/system/temp-new/fragments/sound.nix b/system/temp-new/fragments/sound.nix
deleted file mode 100644
index cf52088..0000000
--- a/system/temp-new/fragments/sound.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  cfg = config.nixfiles.common.sound;
-  inherit (lib) mkEnableOption mkIf mkDefault;
-in
-{
-  # Enable sound.
-  # sound.enable = true;
-  # hardware.pulseaudio.enable = true;
-
-  options.nixfiles.common.sound = {
-    enable = mkEnableOption "sound configuration";
-  };
-
-  config = mkIf cfg.enable {
-    security.rtkit.enable = mkDefault true;
-    services.pipewire = {
-      enable = true;
-      alsa.enable = mkDefault true;
-      alsa.support32Bit = mkDefault config.services.pipewire.alsa.enable;
-      pulse.enable = mkDefault true;
-      jack.enable = mkDefault true;
-    };
-
-    environment.systemPackages = with pkgs; [
-      qpwgraph
-      easyeffects
-    ] ++ optionals config.services.pipewire.pulse.enable [
-      pavucontrol
-      ncpamixer
-      pulsemixer
-    ];
-  };
-}
diff --git a/system/temp-new/gaming.nix b/system/temp-new/gaming.nix
deleted file mode 100644
index a332b65..0000000
--- a/system/temp-new/gaming.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  cfg = config.nixfiles.packageSets.gaming;
-in
-{
-  # oopsies this is for home-manager
-  # programs.mangohud.enable = lib.mkDefault true;
-
-  options.nixfiles.packageSets.gaming = {
-    enable = lib.mkEnableOption "gaming package set";
-  };
-  config = lib.mkIf cfg.enable {
-    programs.steam = {
-      enable = lib.mkDefault true;
-      gamescopeSession = {
-        enable = lib.mkDefault true;
-      };
-    };
-
-    programs.gamemode = {
-      enable = lib.mkDefault true;
-      enableRenice = lib.mkDefault true;
-    };
-
-    programs.gamescope = {
-      enable = lib.mkDefault true;
-      capSysNice = lib.mkDefault false;
-    };
-
-    environment.systemPackages = with pkgs; [
-      mangohud
-      goverlay
-      prismlauncher
-      glxinfo
-      vulkan-tools
-      legendary-gl
-      heroic
-    ];
-  };
-}
diff --git a/system/temp-new/hyprland.nix b/system/temp-new/hyprland.nix
deleted file mode 100644
index a9a9598..0000000
--- a/system/temp-new/hyprland.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ lib, pkgs, config, ... }:
-let
-  cfg = config.nixfiles.sessions.hyprland;
-in
-{
-  # imports = [
-  #   ./desktop-common.nix
-  #   # FIXME make this into an option
-  #   ./wm-common.nix
-  # ];
-
-  options.nixfiles.sessions.hyprland = {
-    enable = lib.mkEnableOption "hyprland configuration";
-  };
-
-  config = lib.mkIf cfg.enable {
-    services.xserver.displayManager.sddm.enable = true;
-
-    programs.hyprland = {
-      enable = true;
-      # TODO base this on if nvidia is enabled
-      enableNvidiaPatches = lib.mkDefault true;
-      xwayland.enable = true;
-    };
-
-    xdg.portal = {
-      enable = true;
-      extraPortals = [
-        pkgs.xdg-desktop-portal-gtk
-      ];
-    };
-
-    environment.systemPackages = with pkgs; [
-      kitty
-        dunst
-        polkit-kde-agent
-        eww
-        hyprpaper
-        rofi
-        hyprpicker
-        udiskie
-        polkit-kde-agent
-    ];
-  };
-}
diff --git a/system/temp-new/new-fragments/README.md b/system/temp-new/new-fragments/README.md
deleted file mode 100644
index 3031dac..0000000
--- a/system/temp-new/new-fragments/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Fragments
-These are Nix modules which aim to configure only one aspect of the system.
-This can include installing and configuring single programs such as Steam,
-MangoHud, Syncthing, or OpenSSH, as well as setting generic options for certain
-hardware setups, such as NVIDIA PRIME Offloading.
-
-## TODO
-These are some fragments that I want to create:
-- hardware/nvidia
-- hardware/nvidia-supergfxd
-- hardware/printing
-	- CUPS
-	- QZTray (maybe?)
-- software/steam
-- software/syncthing
-- software/libreoffice
-- software/ssh
-- software/gnupg
-- software/pam-gnupg (dep. software/gnupg)
diff --git a/system/temp-new/new-fragments/android.nix b/system/temp-new/new-fragments/android.nix
deleted file mode 100644
index 39a069c..0000000
--- a/system/temp-new/new-fragments/android.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ config, lib, pkgs, outputs, vars, ...}@args:
-{
-  imports = [ outputs.nixosModules.adb ];
-  
-  config = {
-    programs.adb.enable = true;
-    users.users.${vars.username}.extraGroups = [ "adbusers" ];
-  };
-}
diff --git a/system/temp-new/new-fragments/debugging.nix b/system/temp-new/new-fragments/debugging.nix
deleted file mode 100644
index 0bde8b4..0000000
--- a/system/temp-new/new-fragments/debugging.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ config, lib, pkgs, ...}:
-{
-  environment = {
-    enableDebugInfo = true;
-    systemPackages = with pkgs; [
-      gdb
-    ];
-  };
-}
diff --git a/system/temp-new/plasma.nix b/system/temp-new/plasma.nix
deleted file mode 100644
index f1dc0f4..0000000
--- a/system/temp-new/plasma.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ config, lib, pkgs, ...}:
-let
-  sleep = "${pkgs.coreutils}/bin/sleep";
-  systemctl = "${pkgs.systemd}/bin/systemctl";
-  inherit (lib) mkIf mkEnableOption mkForce mkDefault;
-  cfg = config.nixfiles.session.plasma;
-in
-{
-  # imports = [
-  #   ./desktop-common.nix
-  # ];
-
-  options.nixfiles.session.plasma = {
-    enable = mkEnableOption "KDE Plasma session";
-  };
-
-  config = mkIf cfg.enable {
-    nixfiles.common.desktop.enable = true;
-
-    services.xserver.displayManager.sddm.enable = mkDefault true;
-    services.xserver.desktopManager.plasma5.enable = true;
-    services.xserver.displayManager.defaultSession = "plasmawayland";
-    programs.kdeconnect.enable = mkDefault true;
-
-    systemd.user = {
-      services.restart-xdg-desktop-portal-kde = {
-        enable = true;
-        description = "hack to fix xdg-desktop-portal on kde";
-        wantedBy = [ "graphical-session.target" ];
-        after = [ "plasma-core.target" "xdg-desktop-portal.service" ];
-        requisite = [ "plasma-core.target" ];
-
-        serviceConfig = {
-          ExecStart = [
-            "${sleep} 5"
-            "${systemctl} --user restart xdg-desktop-portal.service"
-          ];
-          Type = "oneshot";
-          RemainAfterExit = "yes";
-        };
-      };
-    };
-
-    environment.systemPackages = with pkgs; [
-      # this fixes tiny file dialogs for Minecraft
-      libsForQt5.kdialog
-    ];
-  };
-}
diff --git a/system/temp-new/remote.nix b/system/temp-new/remote.nix
deleted file mode 100644
index 78acb17..0000000
--- a/system/temp-new/remote.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ config, lib, pkgs, ... }:
-with lib; let
-  cfg = config.nixfiles.common.remoteAccess;
-in
-{
-  config = lib.mkIf cfg.enable {
-    # Enable the OpenSSH daemon.
-    # services.openssh.enable = true;
-    services.openssh = {
-      enable = true;
-      openFirewall = true;
-      settings = {
-
-      };
-    };
-
-    services.tailscale.enable = true;
-
-    networking.wireguard.enable = true;
-  };
-  options = {
-    nixfiles.common.remoteAccess = mkEnbaleOption "remote access options" ; };
-}
diff --git a/system/temp-new/wm-common.nix b/system/temp-new/wm-common.nix
deleted file mode 100644
index d3bd487..0000000
--- a/system/temp-new/wm-common.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ pkgs, lib, config, options, ...}:
-let
-  inherit (lib) mkDefault mkIf mkEnableOption;
-  cfg = config.nixfiles.common.window-manager;
-in
-{
-  config = mkIf cfg.enable {
-    # Common options for standalone window managers; many of these (or
-    # alternatives thereof) are pulled in by desktop environments.
-    services = {
-      power-profiles-daemon.enable = mkDefault true;
-      blueman.enable = mkDefault config.hardware.bluetooth.enable;
-    };
-    programs = {
-      nm-applet.enable = mkDefault config.networking.networkmanager.enable;
-    };
-  };
-  options = {
-    nixfiles.common.window-manager.enable = mkEnableOption "common window manager configuration";
-  };
-}
diff --git a/system/wm-common.nix b/system/wm-common.nix
index 606f19b..d3bd487 100644
--- a/system/wm-common.nix
+++ b/system/wm-common.nix
@@ -1,15 +1,21 @@
 { pkgs, lib, config, options, ...}:
 let
-  inherit (lib) mkDefault;
+  inherit (lib) mkDefault mkIf mkEnableOption;
+  cfg = config.nixfiles.common.window-manager;
 in
 {
-  # Common options for standalone window managers; many of these (or
-  # alternatives thereof) are pulled in by desktop environments.
-  services = {
-    power-profiles-daemon.enable = mkDefault true;
-    blueman.enable = mkDefault config.hardware.bluetooth.enable;
+  config = mkIf cfg.enable {
+    # Common options for standalone window managers; many of these (or
+    # alternatives thereof) are pulled in by desktop environments.
+    services = {
+      power-profiles-daemon.enable = mkDefault true;
+      blueman.enable = mkDefault config.hardware.bluetooth.enable;
+    };
+    programs = {
+      nm-applet.enable = mkDefault config.networking.networkmanager.enable;
+    };
   };
-  programs = {
-    nm-applet.enable = mkDefault config.networking.networkmanager.enable;
+  options = {
+    nixfiles.common.window-manager.enable = mkEnableOption "common window manager configuration";
   };
 }

From 6ea5c557a3d61bca24aef49b25007d2d51038336 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 14:48:09 +0100
Subject: [PATCH 03/13] Reorganize system modules

---
 system/README.md                                         | 4 +++-
 system/common/default.nix                                | 9 +++++++++
 system/{desktop-common.nix => common/desktop.nix}        | 0
 system/{fragments => common}/me.nix                      | 0
 system/{ => common}/remote.nix                           | 0
 system/{wm-common.nix => common/wm.nix}                  | 0
 system/{new-fragments => fragments}/README.md            | 0
 system/{new-fragments => fragments}/android.nix          | 0
 system/{new-fragments => fragments}/debugging.nix        | 0
 system/{fragments => }/hardware/bluetooth.nix            | 0
 system/hardware/default.nix                              | 9 +++++++++
 .../hardware/nvidia-modeset.nix => hardware/nvidia.nix}  | 0
 system/{fragments => hardware}/opengl.nix                | 0
 system/{fragments => hardware}/sound.nix                 | 0
 system/package-sets/default.nix                          | 7 +++++++
 system/{ => package-sets}/gaming.nix                     | 0
 system/{fragments => package-sets}/multimedia.nix        | 0
 system/{ => profile}/base.nix                            | 0
 system/profile/default.nix                               | 6 ++++++
 system/programs/default.nix                              | 6 ++++++
 system/{fragments/software => programs}/syncthing.nix    | 0
 system/sessions/default.nix                              | 5 +++++
 system/{ => sessions}/hyprland.nix                       | 0
 system/{ => sessions}/plasma.nix                         | 0
 24 files changed, 45 insertions(+), 1 deletion(-)
 create mode 100644 system/common/default.nix
 rename system/{desktop-common.nix => common/desktop.nix} (100%)
 rename system/{fragments => common}/me.nix (100%)
 rename system/{ => common}/remote.nix (100%)
 rename system/{wm-common.nix => common/wm.nix} (100%)
 rename system/{new-fragments => fragments}/README.md (100%)
 rename system/{new-fragments => fragments}/android.nix (100%)
 rename system/{new-fragments => fragments}/debugging.nix (100%)
 rename system/{fragments => }/hardware/bluetooth.nix (100%)
 create mode 100644 system/hardware/default.nix
 rename system/{fragments/hardware/nvidia-modeset.nix => hardware/nvidia.nix} (100%)
 rename system/{fragments => hardware}/opengl.nix (100%)
 rename system/{fragments => hardware}/sound.nix (100%)
 create mode 100644 system/package-sets/default.nix
 rename system/{ => package-sets}/gaming.nix (100%)
 rename system/{fragments => package-sets}/multimedia.nix (100%)
 rename system/{ => profile}/base.nix (100%)
 create mode 100644 system/profile/default.nix
 create mode 100644 system/programs/default.nix
 rename system/{fragments/software => programs}/syncthing.nix (100%)
 create mode 100644 system/sessions/default.nix
 rename system/{ => sessions}/hyprland.nix (100%)
 rename system/{ => sessions}/plasma.nix (100%)

diff --git a/system/README.md b/system/README.md
index e91ba36..f066869 100644
--- a/system/README.md
+++ b/system/README.md
@@ -1,2 +1,4 @@
 # system
-This directory contains modules and configuration specific to my NixOS configuration. `default.nix` is the entrypoint to my module set; it can safely be loaded without making any configuration changes by default. 
+This directory contains modules and configuration specific to my NixOS
+configuration. `default.nix` is the entrypoint to my module set; it can
+safely be loaded without making any configuration changes by default. 
diff --git a/system/common/default.nix b/system/common/default.nix
new file mode 100644
index 0000000..84e16c5
--- /dev/null
+++ b/system/common/default.nix
@@ -0,0 +1,9 @@
+{...}:
+{
+  imports = [
+    ./desktop.nix
+    ./me.nix
+    ./remote.nix
+    ./wm.nix
+  ];
+}
diff --git a/system/desktop-common.nix b/system/common/desktop.nix
similarity index 100%
rename from system/desktop-common.nix
rename to system/common/desktop.nix
diff --git a/system/fragments/me.nix b/system/common/me.nix
similarity index 100%
rename from system/fragments/me.nix
rename to system/common/me.nix
diff --git a/system/remote.nix b/system/common/remote.nix
similarity index 100%
rename from system/remote.nix
rename to system/common/remote.nix
diff --git a/system/wm-common.nix b/system/common/wm.nix
similarity index 100%
rename from system/wm-common.nix
rename to system/common/wm.nix
diff --git a/system/new-fragments/README.md b/system/fragments/README.md
similarity index 100%
rename from system/new-fragments/README.md
rename to system/fragments/README.md
diff --git a/system/new-fragments/android.nix b/system/fragments/android.nix
similarity index 100%
rename from system/new-fragments/android.nix
rename to system/fragments/android.nix
diff --git a/system/new-fragments/debugging.nix b/system/fragments/debugging.nix
similarity index 100%
rename from system/new-fragments/debugging.nix
rename to system/fragments/debugging.nix
diff --git a/system/fragments/hardware/bluetooth.nix b/system/hardware/bluetooth.nix
similarity index 100%
rename from system/fragments/hardware/bluetooth.nix
rename to system/hardware/bluetooth.nix
diff --git a/system/hardware/default.nix b/system/hardware/default.nix
new file mode 100644
index 0000000..2b2c44c
--- /dev/null
+++ b/system/hardware/default.nix
@@ -0,0 +1,9 @@
+{...}:
+{
+  imports = [
+    ./bluetooth.nix
+    ./nvidia.nix
+    ./opengl.nix
+    ./sound.nix
+  ];
+}
diff --git a/system/fragments/hardware/nvidia-modeset.nix b/system/hardware/nvidia.nix
similarity index 100%
rename from system/fragments/hardware/nvidia-modeset.nix
rename to system/hardware/nvidia.nix
diff --git a/system/fragments/opengl.nix b/system/hardware/opengl.nix
similarity index 100%
rename from system/fragments/opengl.nix
rename to system/hardware/opengl.nix
diff --git a/system/fragments/sound.nix b/system/hardware/sound.nix
similarity index 100%
rename from system/fragments/sound.nix
rename to system/hardware/sound.nix
diff --git a/system/package-sets/default.nix b/system/package-sets/default.nix
new file mode 100644
index 0000000..ba7cdaf
--- /dev/null
+++ b/system/package-sets/default.nix
@@ -0,0 +1,7 @@
+{...}:
+{
+  imports = [
+    ./gaming.nix
+    ./multimedia.nix
+  ];
+}
diff --git a/system/gaming.nix b/system/package-sets/gaming.nix
similarity index 100%
rename from system/gaming.nix
rename to system/package-sets/gaming.nix
diff --git a/system/fragments/multimedia.nix b/system/package-sets/multimedia.nix
similarity index 100%
rename from system/fragments/multimedia.nix
rename to system/package-sets/multimedia.nix
diff --git a/system/base.nix b/system/profile/base.nix
similarity index 100%
rename from system/base.nix
rename to system/profile/base.nix
diff --git a/system/profile/default.nix b/system/profile/default.nix
new file mode 100644
index 0000000..8d83827
--- /dev/null
+++ b/system/profile/default.nix
@@ -0,0 +1,6 @@
+{...}:
+{
+  imports = [
+    ./base.nix
+  ];
+}
diff --git a/system/programs/default.nix b/system/programs/default.nix
new file mode 100644
index 0000000..eb50170
--- /dev/null
+++ b/system/programs/default.nix
@@ -0,0 +1,6 @@
+{...}:
+{
+  imports = [
+    ./syncthing.nix
+  ];
+}
diff --git a/system/fragments/software/syncthing.nix b/system/programs/syncthing.nix
similarity index 100%
rename from system/fragments/software/syncthing.nix
rename to system/programs/syncthing.nix
diff --git a/system/sessions/default.nix b/system/sessions/default.nix
new file mode 100644
index 0000000..d8474e3
--- /dev/null
+++ b/system/sessions/default.nix
@@ -0,0 +1,5 @@
+{...}:
+{ imports = [
+  ./hyprland.nix
+  ./plasma.nix
+];}
diff --git a/system/hyprland.nix b/system/sessions/hyprland.nix
similarity index 100%
rename from system/hyprland.nix
rename to system/sessions/hyprland.nix
diff --git a/system/plasma.nix b/system/sessions/plasma.nix
similarity index 100%
rename from system/plasma.nix
rename to system/sessions/plasma.nix

From e99905a096a8c33125d1839ee1f417e614c5e3e6 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 14:49:33 +0100
Subject: [PATCH 04/13] Delete fragments/README.md

---
 system/fragments/README.md | 19 -------------------
 1 file changed, 19 deletions(-)
 delete mode 100644 system/fragments/README.md

diff --git a/system/fragments/README.md b/system/fragments/README.md
deleted file mode 100644
index 3031dac..0000000
--- a/system/fragments/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Fragments
-These are Nix modules which aim to configure only one aspect of the system.
-This can include installing and configuring single programs such as Steam,
-MangoHud, Syncthing, or OpenSSH, as well as setting generic options for certain
-hardware setups, such as NVIDIA PRIME Offloading.
-
-## TODO
-These are some fragments that I want to create:
-- hardware/nvidia
-- hardware/nvidia-supergfxd
-- hardware/printing
-	- CUPS
-	- QZTray (maybe?)
-- software/steam
-- software/syncthing
-- software/libreoffice
-- software/ssh
-- software/gnupg
-- software/pam-gnupg (dep. software/gnupg)

From 1dedbbb489d6e2088d02d879d6ad70dadb644f5f Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 15:08:16 +0100
Subject: [PATCH 05/13] Rename some common options to hardware

---
 system/hardware/bluetooth.nix | 4 ++--
 system/hardware/nvidia.nix    | 6 +++---
 system/hardware/opengl.nix    | 4 ++--
 system/hardware/sound.nix     | 4 ++--
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/system/hardware/bluetooth.nix b/system/hardware/bluetooth.nix
index 1a8c7fb..a6916aa 100644
--- a/system/hardware/bluetooth.nix
+++ b/system/hardware/bluetooth.nix
@@ -1,9 +1,9 @@
 { config, lib, pkgs, ...}:
 let
-  cfg = config.nixfiles.common.bluetooth;
+  cfg = config.nixfiles.hardware.bluetooth;
 in
 {
-  options.nixfiles.common.bluetooth = {
+  options.nixfiles.hardware.bluetooth = {
     enable = lib.mkEnableOption "Bluetooth";
   };
 
diff --git a/system/hardware/nvidia.nix b/system/hardware/nvidia.nix
index 1011b96..7b36584 100644
--- a/system/hardware/nvidia.nix
+++ b/system/hardware/nvidia.nix
@@ -1,6 +1,6 @@
 { config, lib, pkgs, ...}:
 let
-  cfg = config.nixfiles.common.nvidia;
+  cfg = config.nixfiles.hardware.nvidia;
 in
 {
   # imports = [
@@ -8,13 +8,13 @@ in
   # ];
 
   # Load nvidia driver for Xorg and Wayland
-  options.nixfiles.common.nvidia = {
+  options.nixfiles.hardware.nvidia = {
     modesetting.enable = lib.mkEnableOption "NVIDIA configuration with modesetting";
   };
   config = lib.mkIf cfg.modesetting.enable {
     services.xserver.videoDrivers = ["nvidia"];
 
-    nixfiles.common.opengl.enable = true;
+    nixfiles.hardware.opengl.enable = true;
 
     hardware.nvidia = {
 
diff --git a/system/hardware/opengl.nix b/system/hardware/opengl.nix
index afad162..b48a19b 100644
--- a/system/hardware/opengl.nix
+++ b/system/hardware/opengl.nix
@@ -1,9 +1,9 @@
 { config, lib, pkgs, ...}:
 let
-  cfg = config.nixfiles.common.opengl;
+  cfg = config.nixfiles.hardware.opengl;
 in
 {
-  options.nixfiles.common.opengl.enable = lib.mkEnableOption "OpenGL configuration";
+  options.nixfiles.hardware.opengl.enable = lib.mkEnableOption "OpenGL configuration";
   config = lib.mkIf cfg.enable {
     # Enable OpenGL
     hardware.opengl = {
diff --git a/system/hardware/sound.nix b/system/hardware/sound.nix
index cf52088..ab264bd 100644
--- a/system/hardware/sound.nix
+++ b/system/hardware/sound.nix
@@ -1,6 +1,6 @@
 { config, lib, pkgs, ...}:
 let
-  cfg = config.nixfiles.common.sound;
+  cfg = config.nixfiles.hardware.sound;
   inherit (lib) mkEnableOption mkIf mkDefault;
 in
 {
@@ -8,7 +8,7 @@ in
   # sound.enable = true;
   # hardware.pulseaudio.enable = true;
 
-  options.nixfiles.common.sound = {
+  options.nixfiles.hardware.sound = {
     enable = mkEnableOption "sound configuration";
   };
 

From e4ad12e39e07d91882e2ed6177070dd786a05ae0 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 15:08:40 +0100
Subject: [PATCH 06/13] system: import all modules

---
 system/default.nix | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/system/default.nix b/system/default.nix
index 09dcd6a..d3ce6be 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -4,6 +4,12 @@ let
 in
 {
   imports = [
+    ./common
+    ./hardware
+    ./package-sets
+    ./profile
+    ./programs
+    ./sessions
   ];
   config = {};
   options.nixfiles = {

From dc9ac237ff54561eb504d2130ad2401534bf3c2d Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 15:11:14 +0100
Subject: [PATCH 07/13] Rename (nixfiles.common) window-manager to wm

---
 system/common/wm.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/system/common/wm.nix b/system/common/wm.nix
index d3bd487..30b6f20 100644
--- a/system/common/wm.nix
+++ b/system/common/wm.nix
@@ -1,7 +1,7 @@
 { pkgs, lib, config, options, ...}:
 let
   inherit (lib) mkDefault mkIf mkEnableOption;
-  cfg = config.nixfiles.common.window-manager;
+  cfg = config.nixfiles.common.wm;
 in
 {
   config = mkIf cfg.enable {
@@ -16,6 +16,6 @@ in
     };
   };
   options = {
-    nixfiles.common.window-manager.enable = mkEnableOption "common window manager configuration";
+    nixfiles.common.wm.enable = mkEnableOption "common window manager configuration";
   };
 }

From dba31a2cbb59cda3203c33f3b8d6599ea8eae4e0 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 15:20:44 +0100
Subject: [PATCH 08/13] Add option dependencies for desktop and hyprland

---
 system/common/desktop.nix    | 9 +++++----
 system/sessions/hyprland.nix | 6 ++++++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/system/common/desktop.nix b/system/common/desktop.nix
index 6449a28..61119d8 100644
--- a/system/common/desktop.nix
+++ b/system/common/desktop.nix
@@ -19,11 +19,12 @@ in
   config = mkIf cfg.enable {
     # enable option sets
     nixfiles = {
-      packageSets.multimedia.enable = true;
+      profile.base.enable = true;
+      packageSets.multimedia.enable = mkDefault true;
+      programs.syncthing.enable = mkDefault true;
       common = {
-        syncthing.enable = true;
-        bluetooth.enable = true;
-        sound.enable = true;
+        bluetooth.enable = mkDefault true;
+        sound.enable = mkDefault true;
       };
     };
 
diff --git a/system/sessions/hyprland.nix b/system/sessions/hyprland.nix
index a9a9598..a55ba7d 100644
--- a/system/sessions/hyprland.nix
+++ b/system/sessions/hyprland.nix
@@ -14,6 +14,12 @@ in
   };
 
   config = lib.mkIf cfg.enable {
+    # enable dependencies
+    nixfiles.common = {
+      desktop.enable = true;
+      wm.enable = true;
+    };
+
     services.xserver.displayManager.sddm.enable = true;
 
     programs.hyprland = {

From 8146099eb613b92f4e48e2e9583c3230c15528a0 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 15:38:49 +0100
Subject: [PATCH 09/13] remove broken `with` statement (average nix lang)

---
 system/common/remote.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/system/common/remote.nix b/system/common/remote.nix
index 78acb17..f3c1008 100644
--- a/system/common/remote.nix
+++ b/system/common/remote.nix
@@ -1,5 +1,5 @@
 { config, lib, pkgs, ... }:
-with lib; let
+let
   cfg = config.nixfiles.common.remoteAccess;
 in
 {
@@ -19,5 +19,5 @@ in
     networking.wireguard.enable = true;
   };
   options = {
-    nixfiles.common.remoteAccess = mkEnbaleOption "remote access options" ; };
+    nixfiles.common.remoteAccess = lib.mkEnbaleOption "remote access options" ; };
 }

From 405f7b432924bb6305a0694007c8bc949f5f6de6 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 15:39:51 +0100
Subject: [PATCH 10/13] Fix typo

---
 system/common/remote.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/system/common/remote.nix b/system/common/remote.nix
index f3c1008..b941501 100644
--- a/system/common/remote.nix
+++ b/system/common/remote.nix
@@ -19,5 +19,5 @@ in
     networking.wireguard.enable = true;
   };
   options = {
-    nixfiles.common.remoteAccess = lib.mkEnbaleOption "remote access options" ; };
+    nixfiles.common.remoteAccess = lib.mkEnableOption "remote access options" ; };
 }

From ff029aea41e27616494bb6cc696be7bff858b8cc Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 16:53:38 +0100
Subject: [PATCH 11/13] Fix a lot of module options

---
 system/common/desktop.nix | 2 +-
 system/common/me.nix      | 5 ++++-
 system/common/remote.nix  | 2 +-
 system/profile/base.nix   | 2 +-
 4 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/system/common/desktop.nix b/system/common/desktop.nix
index 61119d8..edf5df4 100644
--- a/system/common/desktop.nix
+++ b/system/common/desktop.nix
@@ -22,7 +22,7 @@ in
       profile.base.enable = true;
       packageSets.multimedia.enable = mkDefault true;
       programs.syncthing.enable = mkDefault true;
-      common = {
+      hardware = {
         bluetooth.enable = mkDefault true;
         sound.enable = mkDefault true;
       };
diff --git a/system/common/me.nix b/system/common/me.nix
index c60924d..74c3271 100644
--- a/system/common/me.nix
+++ b/system/common/me.nix
@@ -3,7 +3,10 @@ let
   cfg = config.nixfiles.common.me;
 in
 {
-  options.nixfiles.common.me = lib.mkEnableOption "my user account";
+  options.nixfiles.common.me = {
+    enable = lib.mkEnableOption "my user account";
+  };
+
   config = lib.mkIf cfg.enable {
     users.users.nullbite = {
       isNormalUser = true;
diff --git a/system/common/remote.nix b/system/common/remote.nix
index b941501..699e0d2 100644
--- a/system/common/remote.nix
+++ b/system/common/remote.nix
@@ -19,5 +19,5 @@ in
     networking.wireguard.enable = true;
   };
   options = {
-    nixfiles.common.remoteAccess = lib.mkEnableOption "remote access options" ; };
+    nixfiles.common.remoteAccess.enable = lib.mkEnableOption "remote access options" ; };
 }
diff --git a/system/profile/base.nix b/system/profile/base.nix
index 8301dd4..589f681 100644
--- a/system/profile/base.nix
+++ b/system/profile/base.nix
@@ -12,7 +12,7 @@ in
     (lib.mkIf cfg.enable {
 
       # Enable my account
-      nixfiles.common.me = lib.mkDefault true;
+      nixfiles.common.me.enable = lib.mkDefault true;
 
       # locale settings
       i18n = {

From da9ffbd320cb76b9e2be07575924520e917c2eb3 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 18:25:31 +0100
Subject: [PATCH 12/13] small fixes

---
 modules/home-manager/default.nix | 1 +
 system/hardware/sound.nix        | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix
index 0967ef4..da2b766 100644
--- a/modules/home-manager/default.nix
+++ b/modules/home-manager/default.nix
@@ -1 +1,2 @@
+_:
 {}
diff --git a/system/hardware/sound.nix b/system/hardware/sound.nix
index ab264bd..1e8b92f 100644
--- a/system/hardware/sound.nix
+++ b/system/hardware/sound.nix
@@ -1,7 +1,7 @@
 { config, lib, pkgs, ...}:
 let
   cfg = config.nixfiles.hardware.sound;
-  inherit (lib) mkEnableOption mkIf mkDefault;
+  inherit (lib) optionals mkEnableOption mkIf mkDefault;
 in
 {
   # Enable sound.

From 5dc2cfad0d74ccb6724c345985e63f3dd8da2d10 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 8 Feb 2024 18:34:31 +0100
Subject: [PATCH 13/13] slab: switch to nixfiles options

---
 hosts/slab/configuration.nix | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/hosts/slab/configuration.nix b/hosts/slab/configuration.nix
index 1982631..469884d 100644
--- a/hosts/slab/configuration.nix
+++ b/hosts/slab/configuration.nix
@@ -17,14 +17,18 @@
     [ # Include the results of the hardware scan.
       ./hardware-configuration.nix
 
+      ../../system # nixfiles modules
       ./nvidia-optimus.nix
-      ../../system/remote.nix
-      # ../../system/plasma.nix
-      ../../system/fragments/opengl.nix
-      ../../system/gaming.nix
-      ../../system/android.nix
-      ../../system/hyprland.nix
+      ../../system/fragments/android.nix
     ];
+  nixfiles = {
+    common.remoteAccess.enable = true;
+    hardware.opengl.enable = true;
+    packageSets.gaming.enable = true;
+    sessions.hyprland.enable = true;
+    sessions.plasma.enable = lib.mkDefault false;
+  };
+
 
   networking.hostName = "slab";