My nixos configuration!
{
  inputs,
  outputs,
  lib,
  pkgs,
  config,
  ...
}:
{
  options.cady.home = {
    defaults = lib.mkEnableOption "Cady Universal Home Defaults!!";
    userDirsOverride = lib.mkEnableOption "apparently i hate uppercase now";
  };

  config = lib.mkMerge [
    (lib.mkIf config.cady.home.defaults {
      nixpkgs.config.allowUnfree = true;
      # QEMU + KVM autostart, see nix/common.nix for extra setup.
      dconf.settings = {
        "org/virt-manager/virt-manager/connections" = {
          autoconnect = [ "qemu:///system" ];
          uris = [ "qemu:///system" ];
        };
      };

      # Enable home-manager and git
      programs.home-manager.enable = true;
      programs.git = {
        enable = true;
        userEmail = lib.mkDefault "evanev7@gmail.com";
        userName = lib.mkDefault "caedesyth";
      };

      # Move .gtkrc-2.0 out of home and into .config, in line with gtk 3 and 4.
      gtk.gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
      # Disable news message
      news.display = "silent";
      # Reload systemd units when reloading home-manager
      systemd.user.startServices = "sd-switch";
    })
    (lib.mkIf config.cady.home.userDirsOverride {
      xdg.userDirs =
        let
          filesDir = "/mysc/files";
        in
        {
          enable = true;
          createDirectories = true;
          desktop = "${config.home.homeDirectory}/desktop";
          documents = "${config.home.homeDirectory}" + filesDir;
          download = "${config.home.homeDirectory}/downloads";
          music = "${config.home.homeDirectory}" + filesDir;
          pictures = "${config.home.homeDirectory}" + filesDir;
          publicShare = "${config.home.homeDirectory}/mysc/public";
          templates = "${config.home.homeDirectory}/mysc/templates";
          videos = "${config.home.homeDirectory}" + filesDir;
          extraConfig = {
            XDG_PROJECTS_DIR = "${config.home.homeDirectory}/projects";
          };
        };
      gtk.gtk3.bookmarks = builtins.map (file: "file://${config.home.homeDirectory}/${file}") [
        "desktop"
        "downloads"
        "nixos"
        "projects"
      ];
    })
  ];
}