{ pkgs, pkgs-unstable, nurpkgs, registry, lib, modulesPath, config, ... }:
let
    nixScripts = import ./utils/nixFilesIn.nix lib ./nix/system;
    nixApps = import ./utils/nixFilesIn.nix lib ./apps/system;
    overlays = import ./utils/nixFilesIn.nix lib ./overlays;
    packages = import ./utils/nixFilesIn.nix lib ./packages;
in {
    imports = nixScripts ++ nixApps ++ [ (modulesPath + "/installer/scan/not-detected.nix") ];


  # Prepare nix flakes
  nix = {
    package = pkgs-unstable.nixFlakes;
    settings = {
      experimental-features = [ "nix-command" "flakes" ];
      auto-optimise-store = true;
      keep-outputs = true;
      flake-registry = "${registry}/flake-registry.json";
      extra-sandbox-paths = [ "/homeless-shelter/.ccache" ];
    };
    gc.automatic = true;
    gc.options = "--delete-older-than 7d";
  };

  programs.ccache = {
    enable = true;
#    packageNames = [ "nix" ];
    cacheDir = "/homeless-shelter/.ccache";
  };

  # Use the systemd-boot EFI boot loader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;
  boot.loader.grub.useOSProber = true;

  # Enable emulated systems
  boot.binfmt.emulatedSystems = [ "aarch64-linux" "armv6l-linux" ];

  boot.resumeDevice = "/dev/nvme0n1p5";

  # Enable apparmor
  security.apparmor.enable = true;
  security.apparmor.killUnconfinedConfinables = true;

  # Set your time zone.
  time.timeZone = "Europe/London";

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";
  console = {
    font = "Lat2-Terminus16";
    keyMap = "uk";
  };

  # Enable the X11 windowing system.
  services.xserver = {
    enable = true;
    desktopManager = {
      xterm.enable = false;
      # xfce.enable = true;
    };
    displayManager.startx.enable = true;
    # displayManager.sddm.enable = true;
  };

  services.zeronet.enable = true;
  services.zeronet.package = pkgs.zeronet-conservancy;

  services.arbtt = {
    enable = true;
    sampleRate = 30;
  };

  services = {
    syncthing = {
        enable = true;
        user = "minion";
        dataDir = "/home/minion/Documents";    # Default folder for new synced folders
        configDir = "/home/minion/.config/syncthing";   # Folder for Syncthing's settings and keys
    };
  };

  # And wayland
/*  programs.sway = {
    enable = true;
    wrapperFeatures.gtk = true; # so that gtk works properly
    extraPackages = with pkgs; [
      swaylock
      swayidle
      wl-clipboard
      mako # notification daemon
      alacritty # Alacritty is the default terminal in the config
    ];
  };*/

  programs.light.enable = true; # Needs udev rules to properly work

  programs.qt5ct = {
    enable = true;
  };
#  programs.waybar.enable = false; # true;

  # Get screensharing to work
  xdg = {
    portal = {
      enable = true;
      extraPortals = with pkgs; [
        xdg-desktop-portal-kde
      ];
      wlr.enable = true;
    };
  };

  systemd.user.services.xdg-desktop-portal = {
    unitConfig = {
      After = "graphical-session.target";
    };
  };

  # Configure keymap in X11
  services.xserver.layout = "gb";
  # services.xserver.xkbOptions = "eurosign:e";
  services.upower.enable = true;

  # Permit and install steam
  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
    "steam"
    "steam-original"
    "steam-runtime"
    "mongodb"
    "nvidia-x11"
    "nvidia-settings"
  ];

  programs.steam.enable = true;


  # Enable CUPS to print documents.
  services.printing.enable = true;

  # Enable sound.
  sound.enable = true;
  hardware.pulseaudio.enable = false;
  services.pipewire = {
    enable = true;
    alsa = {
      enable = true;
      support32Bit = true;
    };
    pulse.enable = true;
    /*config.pipewire = {
      "context.modules" = [
        {
          name = "libpipewire-module-filter-chain";
          args = {
            "node.name"        = "effect_output.virtual-surround-7.1-hesuvi";
            "node.description" = "Virtual Surround Sink";
            "media.name"       = "Virtual Surround Sink";
            nodes = [
              # duplicate inputs
              { type = "builtin"; label = "copy"; name = "copyFL";  }
              { type = "builtin"; label = "copy"; name = "copyFR";  }
              { type = "builtin"; label = "copy"; name = "copyFC";  }
              { type = "builtin"; label = "copy"; name = "copyRL";  }
              { type = "builtin"; label = "copy"; name = "copyRR";  }
              { type = "builtin"; label = "copy"; name = "copySL";  }
              { type = "builtin"; label = "copy"; name = "copySR";  }
              { type = "builtin"; label = "copy"; name = "copyLFE"; }

              # apply hrir - HeSuVi 14-channel WAV (not the *-.wav variants) (note: 44 in HeSuVi are the same, but resampled to 44100)
              { type = "builtin"; label = "convolver"; name = "convFL_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  0; }; }
              { type = "builtin"; label = "convolver"; name = "convFL_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  1; }; }
              { type = "builtin"; label = "convolver"; name = "convSL_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  2; }; }
              { type = "builtin"; label = "convolver"; name = "convSL_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  3; }; }
              { type = "builtin"; label = "convolver"; name = "convRL_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  4; }; }
              { type = "builtin"; label = "convolver"; name = "convRL_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  5; }; }
              { type = "builtin"; label = "convolver"; name = "convFC_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  6; }; }
              { type = "builtin"; label = "convolver"; name = "convFR_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  7; }; }
              { type = "builtin"; label = "convolver"; name = "convFR_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  8; }; }
              { type = "builtin"; label = "convolver"; name = "convSR_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  9; }; }
              { type = "builtin"; label = "convolver"; name = "convSR_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 10; }; }
              { type = "builtin"; label = "convolver"; name = "convRR_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 11; }; }
              { type = "builtin"; label = "convolver"; name = "convRR_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 12; }; }
              { type = "builtin"; label = "convolver"; name = "convFC_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 13; }; }

              # treat LFE as FC
              { type = "builtin"; label = "convolver"; name = "convLFE_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 13; }; }
              { type = "builtin"; label = "convolver"; name = "convLFE_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel =  6; }; }

              # stereo output
              { type = "builtin"; label = "mixer"; name = "mixR"; }
              { type = "builtin"; label = "mixer"; name = "mixL"; }
            ];
            links = [
              # input
              { output = "copyFL:Out";  input="convFL_L:In";  }
              { output = "copyFL:Out";  input="convFL_R:In";  }
              { output = "copySL:Out";  input="convSL_L:In";  }
              { output = "copySL:Out";  input="convSL_R:In";  }
              { output = "copyRL:Out";  input="convRL_L:In";  }
              { output = "copyRL:Out";  input="convRL_R:In";  }
              { output = "copyFC:Out";  input="convFC_L:In";  }
              { output = "copyFR:Out";  input="convFR_R:In";  }
              { output = "copyFR:Out";  input="convFR_L:In";  }
              { output = "copySR:Out";  input="convSR_R:In";  }
              { output = "copySR:Out";  input="convSR_L:In";  }
              { output = "copyRR:Out";  input="convRR_R:In";  }
              { output = "copyRR:Out";  input="convRR_L:In";  }
              { output = "copyFC:Out";  input="convFC_R:In";  }
              { output = "copyLFE:Out"; input="convLFE_L:In"; }
              { output = "copyLFE:Out"; input="convLFE_R:In"; }

              # output
              { output = "convFL_L:Out";  input="mixL:In 1"; }
              { output = "convFL_R:Out";  input="mixR:In 1"; }
              { output = "convSL_L:Out";  input="mixL:In 2"; }
              { output = "convSL_R:Out";  input="mixR:In 2"; }
              { output = "convRL_L:Out";  input="mixL:In 3"; }
              { output = "convRL_R:Out";  input="mixR:In 3"; }
              { output = "convFC_L:Out";  input="mixL:In 4"; }
              { output = "convFC_R:Out";  input="mixR:In 4"; }
              { output = "convFR_R:Out";  input="mixR:In 5"; }
              { output = "convFR_L:Out";  input="mixL:In 5"; }
              { output = "convSR_R:Out";  input="mixR:In 6"; }
              { output = "convSR_L:Out";  input="mixL:In 6"; }
              { output = "convRR_R:Out";  input="mixR:In 7"; }
              { output = "convRR_L:Out";  input="mixL:In 7"; }
              { output = "convLFE_R:Out"; input="mixR:In 8"; }
              { output = "convLFE_L:Out"; input="mixL:In 8"; }
            ];
            inputs  = [ "copyFL:In" "copyFR:In" "copyFC:In" "copyLFE:In" "copyRL:In" "copyRR:In" "copySL:In" "copySR:In" ];
            outputs = [ "mixL:Out" "mixR:Out" ];
          };
          "capture.props" = {
              "media.class"    = "Audio/Sink";
              "audio.channels" = 8;
              "audio.position" = [ "FL" "FR" "FC" "LFE" "RL" "RR" "SL" "SR" ];
          };
          "playback.props" = {
              "node.passive"   = true;
              "audio.channels" = 2;
              "audio.position" = [ "FL" "FR" ];
          };
        }
      ];
    };*/
  };
  environment.etc."pipewire/7.1-surround-sound.conf".source = ./pipewire/7.1-surround-sound.conf;

  hardware.openrazer.enable = true;
  hardware.openrazer.users = [ "minion" ];

  hardware.steam-hardware.enable = true;

  # Enable touchpad support (enabled default in most desktopManager).
  services.xserver.libinput.enable = true;

  programs.dconf.enable = true;

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.minion = {
    isNormalUser = true;
    extraGroups = [ "wheel" "kvm" "docker" "containerd" "dialout" "libvirtd" "video" ]; # Enable ‘sudo’ for the user.
    shell = pkgs.zsh;
  };

  programs.zsh.enable = true;

  environment.variables = {
    EDITOR = "${pkgs.vim}/bin/vim";
  };
  environment.defaultPackages = [
    pkgs.perl
    pkgs.rsync
    pkgs.strace
    pkgs.vim  # I'm installing vim here even though it isn't normally a default package, as I've removed nano
  ];  # The basic default packages, although without nano

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim  # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
    ((emacsPackagesFor emacs).emacsWithPackages (epkgs: [
      epkgs.vterm
      epkgs.emacsql-sqlite
    ]))  # Emacs + vterm-module (needed for vterm)
    wget
    firefox
    chromium  # Install chromium if needed
    texlive.combined.scheme-full
    keybase-gui
    bluez
    macchanger
    comic-relief
    qemu_kvm
    gtk-engine-murrine
    gtk_engines
    gsettings-desktop-schemas
    lxappearance
    libsForQt5.qt5.qtwayland
    qt6.qtwayland
    texworks
    wlogout
    wob
    wlsunset
    cni-plugins
    ccache
  ];

#  environment.systemPackages = [
#    import /scripts/jetbrains.rider.nix
#  ];

  nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-features=WebUIDarkMode --force-dark-mode --enable-features=WebRTCPipeWireCapturer"; # --enable-gpu";


  fonts = {
    fonts = with pkgs; [
      nerdfonts
      noto-fonts
      noto-fonts-cjk
      noto-fonts-emoji
      liberation_ttf
      fira-code
      fira-code-symbols
      mplus-outline-fonts.githubRelease
      dina-font
      proggyfonts
      roboto
      roboto-mono
      roboto-slab
      twitter-color-emoji
      twemoji-color-font
      ubuntu_font_family
    ];

    enableDefaultFonts = true;
    fontDir.enable = true;

    fontconfig = {
      defaultFonts = {
        serif = [ "Roboto Slab" ];
        sansSerif = [ "Roboto" "Ubuntu" ];
        monospace = [ "Roboto Mono" "Ubuntu Mono" ];
        emoji = [ "Twitter Color Emoji" ];
      };
    };
  };

  # Some programs need SUID wrappers, can be configured further or are
  # started in user sessions.
  programs.mtr.enable = true;
  programs.kdeconnect.enable = true;
  programs.gnupg.agent = {
    enable = true;
    enableSSHSupport = true;
  };

  # List services that you want to enable:

  # Enable the OpenSSH daemon.
  services.openssh.enable = true;
  services.keybase.enable = true;
  services.kbfs.enable = true;
  services.gnome.gnome-keyring.enable = true;
  services.i2p.enable = true;
  services.tlp.enable = true;

  virtualisation.docker.enable = true;
  virtualisation.docker.enableOnBoot = false;
  virtualisation.libvirtd.enable = true;
  virtualisation.libvirtd.onBoot = "ignore";

  hardware.bluetooth.enable = true;

  environment.pathsToLink = [ "/share/zsh" "/libexec" ];

  virtualisation.libvirtd.qemu.package = pkgs.qemu_kvm;
  virtualisation.kvmgt.enable = true;

  services.openvpn.servers = {
    clicks = { config = '' config /home/minion/Nix/secrets/clicks/client.ovpn ''; autoStart = false; };
  };

  environment.etc = {
    "pam.d/swaylock" = {
      mode = "0644";
      text = ''
        auth include login
      '';
    };
  };

  nixpkgs.overlays = [
    (self: super: {
       steam = super.steam.override {
         extraPkgs = pkgs: with pkgs; [
           cups
           libxml2
         ];
       };
#      polkit = super.polkit.overrideAttrs (oldAttrs: {
#        patches = oldAttrs.patches ++ [
#          (super.fetchpatch {
#            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
#            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
#          })];
#      });
    })
  ] ++ map (f: import f) overlays ++ [
    (self: (super: builtins.listToAttrs (
      map (f: {
        name = builtins.elemAt (builtins.match "^(.*/)*(.*)\\.nix$" (toString f)) 1;
        value = super.lib.callPackageWith (self) (import f) {};
      }) packages
    )))
    nurpkgs.overlay
  ];

  xdg.mime.defaultApplications = {
    "text/html" = "chromium-browser.desktop";
    "x-scheme-handler/http" = "chromium-browser.desktop";
    "x-scheme-handler/https" = "chromium-browser.desktop";
    "x-scheme-handler/about" = "chromium-browser.desktop";
    "x-scheme-handler/unknown" = "chromium-browser.desktop";
  };

  # environment.sessionsVariables.DEFAULT_BROWSER = "${pkgs.chromium}/bin/chromium";


  boot.supportedFilesystems = [ "kbfs" ];

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "21.11"; # Did you read the comment?

    boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ];
  boot.initrd.kernelModules = [ ];
  boot.kernelModules = [ "kvm-intel" ];
#  boot.extraModulePackages = [ config.boot.kernelPackages.exfat-nofuse ];  # Broken in nixpkgs; seems to be mountable and usable anyway

  fileSystems."/" =
    { device = "/dev/disk/by-label/nixos";
      fsType = "ext4";
    };

  fileSystems."/boot" =
    { device = "/dev/disk/by-label/boot";
      fsType = "vfat";
    };

  swapDevices =
    [ { device = "/dev/disk/by-label/swap"; }
    ];

  powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

#  hardware.nvidia.modesetting.enable = true;
#  services.xserver.videoDrivers = [ "nvidia" ];

#  hardware.opentabletdriver.enable = true;

  virtualisation.containerd.enable = true;

  virtualisation.containerd.settings = {
    version = 2;
#    grpc = {
#      uid = 1000;
#    };
  };

  networking.hostName = "python";

  networking.wireless.iwd.enable = true;
  networking.wireless.iwd.settings = {
    Settings = {
      AutoConnect = true;
      AlwaysRandomizeAddress = true;
    };
  };
  networking.search = [
    "python.local"
  ];
}
