Final commit; switching to new branch
diff --git a/.history/home/home_20220302103816.nix b/.history/home/home_20220302103816.nix
new file mode 100644
index 0000000..0051cb0
--- /dev/null
+++ b/.history/home/home_20220302103816.nix
@@ -0,0 +1,137 @@
+{ config, pkgs, nixpkgs, ... }:
+let
+  username = "minion";
+  homedir = "/home/${username}";
+
+  comma = import ( pkgs.fetchFromGitHub {
+      owner = "nix-community";
+      repo = "comma";
+      rev = "02e3e5545b0c62595a77f3d5de1223c536af0614";
+      sha256 = "sha256-WBIQmwlkb/GMoOq+Dnyrk8YmgiM/wJnc5HYZP8Uw72E=";
+  }) {};
+
+in {
+  # Home Manager needs a bit of information about you and the
+  # paths it should manage.
+  home.username = username;
+  home.homeDirectory = homedir;
+
+  programs.vscode.enable = true;
+  programs.vscode.package = pkgs.vscode-fhs;
+
+  programs.go.enable = true;
+
+  # programs.steam.enable = true;
+
+  programs.gpg.enable = true;
+  services.gpg-agent = {
+    enable = true;
+    pinentryFlavor = "qt";
+  };
+
+  nixpkgs.overlays = [ 
+    (import ./overlays/anytype.nix)
+    (import ./overlays/mindustry.nix)
+    (import ./overlays/nur.nix)
+  ];
+
+  home.packages = with pkgs; [
+    steam-tui steam-run
+    minecraft
+    git-crypt gnupg pinentry_qt
+    spotify
+    keepassxc
+    grim slurp
+    neovim helix
+    qemu
+    bind
+    file
+    nur.repos.kira-bruneau.rofi-wayland
+    rofimoji
+    anytype-latest
+    htop
+    hue-cli
+    comma
+    zip
+    mindustry-alpha-wayland
+    nodejs-17_x
+    element
+    tdesktop
+  ];
+
+  programs.zsh = {
+    enable = true;
+    oh-my-zsh = {
+       enable = true;
+      plugins = [ "git" ];
+      theme = "crunch";
+    };
+    history = {
+      size = 10000;
+      path = "${config.xdg.dataHome}/zsh/history";
+      expireDuplicatesFirst = true;
+      extended = true;
+    };
+    initExtra = ''
+      bindkey "\'\'$\{key[Up]}" up-line-or-search
+
+      command_not_found_handler ()
+      {
+      #     echo "Command '$1' not found, searching for it in the Nix store..."
+      #     , $@
+          local p='/nix/store/ycclzpk99snlrk8sg9n4j8pm1927gavw-command-not-found/bin/command-not-found';
+          if [ -x "$p" ] && [ -f '/nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite' ]; then
+              "$p" "$@" 2>&1 | sed -r 's/nix-shell -p (\S+)/nix shell nixpkgs#\1/g' 1>&2;
+             if [ $? = 126 ]; then
+                  "$@";
+              else
+                  return 127;
+              fi;
+          else
+              echo "$1: command not found" 1>&2;
+              return 127;
+          fi
+      }
+    '';
+    enableSyntaxHighlighting = true;
+    enableAutosuggestions = true;
+    autocd = true;
+    dotDir = ".local/share/zsh";
+  };
+
+  programs.git = {
+    enable = true;
+
+    userName = "Skyler Turner";
+    userEmail = "skyler@clicksminuteper.net";
+
+    signing = {
+      key = "24D31D3B1B986F33";
+      signByDefault = true;
+      gpgPath = "gpg2";
+    };
+
+    lfs.enable = true;
+    delta.enable = true;
+
+    extraConfig = {
+      init.defaultBranch = "development";
+      color.ui = "auto";
+      core.autocrlf = "input";
+      pull.rebase = false;
+    };
+  };
+
+  # This value determines the Home Manager release that your
+  # configuration is compatible with. This helps avoid breakage
+  # when a new Home Manager release introduces backwards
+  # incompatible changes.
+  #
+  # You can update Home Manager without changing this value. See
+  # the Home Manager release notes for a list of state version
+  # changes in each release.
+  home.stateVersion = "21.11";
+
+  # Let Home Manager install and manage itself.
+  programs.home-manager.enable = true;
+}
diff --git a/.history/home/home_20220304211833.nix b/.history/home/home_20220304211833.nix
new file mode 100644
index 0000000..d7a3995
--- /dev/null
+++ b/.history/home/home_20220304211833.nix
@@ -0,0 +1,117 @@
+{ config, pkgs, nixpkgs, ... }:
+let
+  username = "minion";
+  homedir = "/home/${username}";
+
+  comma = import ( pkgs.fetchFromGitHub {
+      owner = "nix-community";
+      repo = "comma";
+      rev = "02e3e5545b0c62595a77f3d5de1223c536af0614";
+      sha256 = "sha256-WBIQmwlkb/GMoOq+Dnyrk8YmgiM/wJnc5HYZP8Uw72E=";
+  }) {};
+
+in {
+  # Home Manager needs a bit of information about you and the
+  # paths it should manage.
+  home.username = username;
+  home.homeDirectory = homedir;
+
+  programs.vscode.enable = true;
+  programs.vscode.package = pkgs.vscode-fhs;
+
+  programs.go.enable = true;
+
+  # programs.steam.enable = true;
+
+  programs.gpg.enable = true;
+  services.gpg-agent = {
+    enable = true;
+    pinentryFlavor = "qt";
+  };
+
+  nixpkgs.overlays = [ 
+    (import ./overlays/anytype.nix)
+    (import ./overlays/mindustry.nix)
+    (import ./overlays/nur.nix)
+  ];
+
+  home.packages = with pkgs; [
+
+  ];
+
+  programs.zsh = {
+    enable = true;
+    oh-my-zsh = {
+       enable = true;
+      plugins = [ "git" ];
+      theme = "crunch";
+    };
+    history = {
+      size = 10000;
+      path = "${config.xdg.dataHome}/zsh/history";
+      expireDuplicatesFirst = true;
+      extended = true;
+    };
+    initExtra = ''
+      bindkey "\'\'$\{key[Up]}" up-line-or-search
+
+      command_not_found_handler ()
+      {
+      #     echo "Command '$1' not found, searching for it in the Nix store..."
+      #     , $@
+          local p='/nix/store/ycclzpk99snlrk8sg9n4j8pm1927gavw-command-not-found/bin/command-not-found';
+          if [ -x "$p" ] && [ -f '/nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite' ]; then
+              "$p" "$@" 2>&1 | sed -r 's/nix-shell -p (\S+)/nix shell nixpkgs#\1/g' 1>&2;
+             if [ $? = 126 ]; then
+                  "$@";
+              else
+                  return 127;
+              fi;
+          else
+              echo "$1: command not found" 1>&2;
+              return 127;
+          fi
+      }
+    '';
+    enableSyntaxHighlighting = true;
+    enableAutosuggestions = true;
+    autocd = true;
+    dotDir = ".local/share/zsh";
+  };
+
+  programs.git = {
+    enable = true;
+
+    userName = "Skyler Turner";
+    userEmail = "skyler@clicksminuteper.net";
+
+    signing = {
+      key = "24D31D3B1B986F33";
+      signByDefault = true;
+      gpgPath = "gpg2";
+    };
+
+    lfs.enable = true;
+    delta.enable = true;
+
+    extraConfig = {
+      init.defaultBranch = "development";
+      color.ui = "auto";
+      core.autocrlf = "input";
+      pull.rebase = false;
+    };
+  };
+
+  # This value determines the Home Manager release that your
+  # configuration is compatible with. This helps avoid breakage
+  # when a new Home Manager release introduces backwards
+  # incompatible changes.
+  #
+  # You can update Home Manager without changing this value. See
+  # the Home Manager release notes for a list of state version
+  # changes in each release.
+  home.stateVersion = "21.11";
+
+  # Let Home Manager install and manage itself.
+  programs.home-manager.enable = true;
+}
diff --git a/.history/home/home_20220304215813.nix b/.history/home/home_20220304215813.nix
new file mode 100644
index 0000000..a807cd1
--- /dev/null
+++ b/.history/home/home_20220304215813.nix
@@ -0,0 +1,115 @@
+{ config, pkgs, nixpkgs, ... }:
+let
+  username = "minion";
+  homedir = "/home/${username}";
+
+  comma = import ( pkgs.fetchFromGitHub {
+      owner = "nix-community";
+      repo = "comma";
+      rev = "02e3e5545b0c62595a77f3d5de1223c536af0614";
+      sha256 = "sha256-WBIQmwlkb/GMoOq+Dnyrk8YmgiM/wJnc5HYZP8Uw72E=";
+  }) {};
+
+in {
+  # Home Manager needs a bit of information about you and the
+  # paths it should manage.
+  home.username = username;
+  home.homeDirectory = homedir;
+
+
+  programs.go.enable = true;
+
+  # programs.steam.enable = true;
+
+  programs.gpg.enable = true;
+  services.gpg-agent = {
+    enable = true;
+    pinentryFlavor = "qt";
+  };
+
+  nixpkgs.overlays = [ 
+    (import ./overlays/anytype.nix)
+    (import ./overlays/mindustry.nix)
+    (import ./overlays/nur.nix)
+  ];
+
+  home.packages = with pkgs; [
+
+  ];
+
+  programs.zsh = {
+    enable = true;
+    oh-my-zsh = {
+       enable = true;
+      plugins = [ "git" ];
+      theme = "crunch";
+    };
+    history = {
+      size = 10000;
+      path = "${config.xdg.dataHome}/zsh/history";
+      expireDuplicatesFirst = true;
+      extended = true;
+    };
+    initExtra = ''
+      bindkey "\'\'$\{key[Up]}" up-line-or-search
+
+      command_not_found_handler ()
+      {
+      #     echo "Command '$1' not found, searching for it in the Nix store..."
+      #     , $@
+          local p='/nix/store/ycclzpk99snlrk8sg9n4j8pm1927gavw-command-not-found/bin/command-not-found';
+          if [ -x "$p" ] && [ -f '/nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite' ]; then
+              "$p" "$@" 2>&1 | sed -r 's/nix-shell -p (\S+)/nix shell nixpkgs#\1/g' 1>&2;
+             if [ $? = 126 ]; then
+                  "$@";
+              else
+                  return 127;
+              fi;
+          else
+              echo "$1: command not found" 1>&2;
+              return 127;
+          fi
+      }
+    '';
+    enableSyntaxHighlighting = true;
+    enableAutosuggestions = true;
+    autocd = true;
+    dotDir = ".local/share/zsh";
+  };
+
+  programs.git = {
+    enable = true;
+
+    userName = "Skyler Turner";
+    userEmail = "skyler@clicksminuteper.net";
+
+    signing = {
+      key = "24D31D3B1B986F33";
+      signByDefault = true;
+      gpgPath = "gpg2";
+    };
+
+    lfs.enable = true;
+    delta.enable = true;
+
+    extraConfig = {
+      init.defaultBranch = "development";
+      color.ui = "auto";
+      core.autocrlf = "input";
+      pull.rebase = false;
+    };
+  };
+
+  # This value determines the Home Manager release that your
+  # configuration is compatible with. This helps avoid breakage
+  # when a new Home Manager release introduces backwards
+  # incompatible changes.
+  #
+  # You can update Home Manager without changing this value. See
+  # the Home Manager release notes for a list of state version
+  # changes in each release.
+  home.stateVersion = "21.11";
+
+  # Let Home Manager install and manage itself.
+  programs.home-manager.enable = true;
+}
diff --git a/.history/home/home_20220304220729.nix b/.history/home/home_20220304220729.nix
new file mode 100644
index 0000000..c068d19
--- /dev/null
+++ b/.history/home/home_20220304220729.nix
@@ -0,0 +1,76 @@
+{ config, pkgs, nixpkgs, ... }:
+let
+  username = "minion";
+  homedir = "/home/${username}";
+
+  comma = import ( pkgs.fetchFromGitHub {
+      owner = "nix-community";
+      repo = "comma";
+      rev = "02e3e5545b0c62595a77f3d5de1223c536af0614";
+      sha256 = "sha256-WBIQmwlkb/GMoOq+Dnyrk8YmgiM/wJnc5HYZP8Uw72E=";
+  }) {};
+
+in {
+  # Home Manager needs a bit of information about you and the
+  # paths it should manage.
+  home.username = username;
+  home.homeDirectory = homedir;
+
+
+  programs.go.enable = true;
+
+  # programs.steam.enable = true;
+
+  programs.gpg.enable = true;
+  services.gpg-agent = {
+    enable = true;
+    pinentryFlavor = "qt";
+  };
+
+  nixpkgs.overlays = [ 
+    (import ./overlays/anytype.nix)
+    (import ./overlays/mindustry.nix)
+    (import ./overlays/nur.nix)
+  ];
+
+  home.packages = with pkgs; [
+
+  ];
+
+
+  programs.git = {
+    enable = true;
+
+    userName = "Skyler Turner";
+    userEmail = "skyler@clicksminuteper.net";
+
+    signing = {
+      key = "24D31D3B1B986F33";
+      signByDefault = true;
+      gpgPath = "gpg2";
+    };
+
+    lfs.enable = true;
+    delta.enable = true;
+
+    extraConfig = {
+      init.defaultBranch = "development";
+      color.ui = "auto";
+      core.autocrlf = "input";
+      pull.rebase = false;
+    };
+  };
+
+  # This value determines the Home Manager release that your
+  # configuration is compatible with. This helps avoid breakage
+  # when a new Home Manager release introduces backwards
+  # incompatible changes.
+  #
+  # You can update Home Manager without changing this value. See
+  # the Home Manager release notes for a list of state version
+  # changes in each release.
+  home.stateVersion = "21.11";
+
+  # Let Home Manager install and manage itself.
+  programs.home-manager.enable = true;
+}
diff --git a/.history/home/home_20220304220747.nix b/.history/home/home_20220304220747.nix
new file mode 100644
index 0000000..a807cd1
--- /dev/null
+++ b/.history/home/home_20220304220747.nix
@@ -0,0 +1,115 @@
+{ config, pkgs, nixpkgs, ... }:
+let
+  username = "minion";
+  homedir = "/home/${username}";
+
+  comma = import ( pkgs.fetchFromGitHub {
+      owner = "nix-community";
+      repo = "comma";
+      rev = "02e3e5545b0c62595a77f3d5de1223c536af0614";
+      sha256 = "sha256-WBIQmwlkb/GMoOq+Dnyrk8YmgiM/wJnc5HYZP8Uw72E=";
+  }) {};
+
+in {
+  # Home Manager needs a bit of information about you and the
+  # paths it should manage.
+  home.username = username;
+  home.homeDirectory = homedir;
+
+
+  programs.go.enable = true;
+
+  # programs.steam.enable = true;
+
+  programs.gpg.enable = true;
+  services.gpg-agent = {
+    enable = true;
+    pinentryFlavor = "qt";
+  };
+
+  nixpkgs.overlays = [ 
+    (import ./overlays/anytype.nix)
+    (import ./overlays/mindustry.nix)
+    (import ./overlays/nur.nix)
+  ];
+
+  home.packages = with pkgs; [
+
+  ];
+
+  programs.zsh = {
+    enable = true;
+    oh-my-zsh = {
+       enable = true;
+      plugins = [ "git" ];
+      theme = "crunch";
+    };
+    history = {
+      size = 10000;
+      path = "${config.xdg.dataHome}/zsh/history";
+      expireDuplicatesFirst = true;
+      extended = true;
+    };
+    initExtra = ''
+      bindkey "\'\'$\{key[Up]}" up-line-or-search
+
+      command_not_found_handler ()
+      {
+      #     echo "Command '$1' not found, searching for it in the Nix store..."
+      #     , $@
+          local p='/nix/store/ycclzpk99snlrk8sg9n4j8pm1927gavw-command-not-found/bin/command-not-found';
+          if [ -x "$p" ] && [ -f '/nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite' ]; then
+              "$p" "$@" 2>&1 | sed -r 's/nix-shell -p (\S+)/nix shell nixpkgs#\1/g' 1>&2;
+             if [ $? = 126 ]; then
+                  "$@";
+              else
+                  return 127;
+              fi;
+          else
+              echo "$1: command not found" 1>&2;
+              return 127;
+          fi
+      }
+    '';
+    enableSyntaxHighlighting = true;
+    enableAutosuggestions = true;
+    autocd = true;
+    dotDir = ".local/share/zsh";
+  };
+
+  programs.git = {
+    enable = true;
+
+    userName = "Skyler Turner";
+    userEmail = "skyler@clicksminuteper.net";
+
+    signing = {
+      key = "24D31D3B1B986F33";
+      signByDefault = true;
+      gpgPath = "gpg2";
+    };
+
+    lfs.enable = true;
+    delta.enable = true;
+
+    extraConfig = {
+      init.defaultBranch = "development";
+      color.ui = "auto";
+      core.autocrlf = "input";
+      pull.rebase = false;
+    };
+  };
+
+  # This value determines the Home Manager release that your
+  # configuration is compatible with. This helps avoid breakage
+  # when a new Home Manager release introduces backwards
+  # incompatible changes.
+  #
+  # You can update Home Manager without changing this value. See
+  # the Home Manager release notes for a list of state version
+  # changes in each release.
+  home.stateVersion = "21.11";
+
+  # Let Home Manager install and manage itself.
+  programs.home-manager.enable = true;
+}
diff --git a/.history/home/home_20220304220756.nix b/.history/home/home_20220304220756.nix
new file mode 100644
index 0000000..978a049
--- /dev/null
+++ b/.history/home/home_20220304220756.nix
@@ -0,0 +1,77 @@
+{ config, pkgs, nixpkgs, ... }:
+let
+  username = "minion";
+  homedir = "/home/${username}";
+
+  comma = import ( pkgs.fetchFromGitHub {
+      owner = "nix-community";
+      repo = "comma";
+      rev = "02e3e5545b0c62595a77f3d5de1223c536af0614";
+      sha256 = "sha256-WBIQmwlkb/GMoOq+Dnyrk8YmgiM/wJnc5HYZP8Uw72E=";
+  }) {};
+
+in {
+  # Home Manager needs a bit of information about you and the
+  # paths it should manage.
+  home.username = username;
+  home.homeDirectory = homedir;
+
+
+  programs.go.enable = true;
+
+  # programs.steam.enable = true;
+
+  programs.gpg.enable = true;
+  services.gpg-agent = {
+    enable = true;
+    pinentryFlavor = "qt";
+  };
+
+  nixpkgs.overlays = [ 
+    (import ./overlays/anytype.nix)
+    (import ./overlays/mindustry.nix)
+    (import ./overlays/nur.nix)
+  ];
+
+  home.packages = with pkgs; [
+
+  ];
+
+
+
+  programs.git = {
+    enable = true;
+
+    userName = "Skyler Turner";
+    userEmail = "skyler@clicksminuteper.net";
+
+    signing = {
+      key = "24D31D3B1B986F33";
+      signByDefault = true;
+      gpgPath = "gpg2";
+    };
+
+    lfs.enable = true;
+    delta.enable = true;
+
+    extraConfig = {
+      init.defaultBranch = "development";
+      color.ui = "auto";
+      core.autocrlf = "input";
+      pull.rebase = false;
+    };
+  };
+
+  # This value determines the Home Manager release that your
+  # configuration is compatible with. This helps avoid breakage
+  # when a new Home Manager release introduces backwards
+  # incompatible changes.
+  #
+  # You can update Home Manager without changing this value. See
+  # the Home Manager release notes for a list of state version
+  # changes in each release.
+  home.stateVersion = "21.11";
+
+  # Let Home Manager install and manage itself.
+  programs.home-manager.enable = true;
+}
diff --git a/.history/home/home_20220304220938.nix b/.history/home/home_20220304220938.nix
new file mode 100644
index 0000000..6b78b00
--- /dev/null
+++ b/.history/home/home_20220304220938.nix
@@ -0,0 +1,55 @@
+{ config, pkgs, nixpkgs, ... }:
+let
+  username = "minion";
+  homedir = "/home/${username}";
+
+  comma = import ( pkgs.fetchFromGitHub {
+      owner = "nix-community";
+      repo = "comma";
+      rev = "02e3e5545b0c62595a77f3d5de1223c536af0614";
+      sha256 = "sha256-WBIQmwlkb/GMoOq+Dnyrk8YmgiM/wJnc5HYZP8Uw72E=";
+  }) {};
+
+in {
+  # Home Manager needs a bit of information about you and the
+  # paths it should manage.
+  home.username = username;
+  home.homeDirectory = homedir;
+
+
+  programs.go.enable = true;
+
+  # programs.steam.enable = true;
+
+  programs.gpg.enable = true;
+  services.gpg-agent = {
+    enable = true;
+    pinentryFlavor = "qt";
+  };
+
+  nixpkgs.overlays = [ 
+    (import ./overlays/anytype.nix)
+    (import ./overlays/mindustry.nix)
+    (import ./overlays/nur.nix)
+  ];
+
+  home.packages = with pkgs; [
+
+  ];
+
+
+
+
+  # This value determines the Home Manager release that your
+  # configuration is compatible with. This helps avoid breakage
+  # when a new Home Manager release introduces backwards
+  # incompatible changes.
+  #
+  # You can update Home Manager without changing this value. See
+  # the Home Manager release notes for a list of state version
+  # changes in each release.
+  home.stateVersion = "21.11";
+
+  # Let Home Manager install and manage itself.
+  programs.home-manager.enable = true;
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302082907.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302082907.nix
new file mode 100644
index 0000000..32de1ff
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302082907.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; hash = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092111.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092111.nix
new file mode 100644
index 0000000..6e6e153
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092111.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092117.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092117.nix
new file mode 100644
index 0000000..2f184d5
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092117.nix
@@ -0,0 +1,22 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092127.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092127.nix
new file mode 100644
index 0000000..96b5dc1
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092127.nix
@@ -0,0 +1,22 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    s
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092131.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092131.nix
new file mode 100644
index 0000000..61b811d
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092131.nix
@@ -0,0 +1,22 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    src
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092139.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092139.nix
new file mode 100644
index 0000000..6797b8e
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092139.nix
@@ -0,0 +1,23 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+    
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092145.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092145.nix
new file mode 100644
index 0000000..7115748
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092145.nix
@@ -0,0 +1,23 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+    src.flake = false;
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092213.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092213.nix
new file mode 100644
index 0000000..6e6e153
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092213.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092215.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092215.nix
new file mode 100644
index 0000000..5d536e1
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092215.nix
@@ -0,0 +1,22 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092216.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092216.nix
new file mode 100644
index 0000000..1dac757
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092216.nix
@@ -0,0 +1,27 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+
+    s
+rc.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+    s
+rc.flake = false;
+
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092221.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092221.nix
new file mode 100644
index 0000000..edde977
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092221.nix
@@ -0,0 +1,26 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+    
+  inputs.s
+rc.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+    s
+rc.flake = false;
+
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092225.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092225.nix
new file mode 100644
index 0000000..a9e2b7c
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092225.nix
@@ -0,0 +1,25 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+  
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+    s
+rc.flake = false;
+
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092226.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092226.nix
new file mode 100644
index 0000000..0752552
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092226.nix
@@ -0,0 +1,25 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+    s
+rc.flake = false;
+
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092230.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092230.nix
new file mode 100644
index 0000000..26db362
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092230.nix
@@ -0,0 +1,23 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092239.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092239.nix
new file mode 100644
index 0000000..10bb642
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092239.nix
@@ -0,0 +1,23 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092315.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092315.nix
new file mode 100644
index 0000000..121ebde
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092315.nix
@@ -0,0 +1,22 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092321.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092321.nix
new file mode 100644
index 0000000..21b04c5
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092321.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092325.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092325.nix
new file mode 100644
index 0000000..59a02f8
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092325.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092342.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092342.nix
new file mode 100644
index 0000000..8332665
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092342.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092344.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092344.nix
new file mode 100644
index 0000000..78bb21d
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092344.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092452.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092452.nix
new file mode 100644
index 0000000..93ed200
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092452.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin ";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092457.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092457.nix
new file mode 100644
index 0000000..31dbb4e
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092457.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/lib/* $out/lib";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092459.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092459.nix
new file mode 100644
index 0000000..35fb2a8
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092459.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/lib/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092505.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092505.nix
new file mode 100644
index 0000000..9d8410b
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092505.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092509.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092509.nix
new file mode 100644
index 0000000..6b40166
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092509.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin $";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092510.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092510.nix
new file mode 100644
index 0000000..48b44f6
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092510.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin ";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092514.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092514.nix
new file mode 100644
index 0000000..e1207be
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092514.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin && rm ";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092516.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092516.nix
new file mode 100644
index 0000000..d2b6202
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092516.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "https://github.com/AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin && rm -rf $out/bin/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092611.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092611.nix
new file mode 100644
index 0000000..aaa5e69
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092611.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = "github:AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin && rm -rf $out/bin/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092619.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092619.nix
new file mode 100644
index 0000000..8d116ad
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092619.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = github:AndroidDumps/Firmware_extractor.git";
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin && rm -rf $out/bin/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092624.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092624.nix
new file mode 100644
index 0000000..5eae93f
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092624.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = github:AndroidDumps/Firmware_extractor;
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin && rm -rf $out/bin/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092651.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092651.nix
new file mode 100644
index 0000000..4394d0e
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092651.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = github:AndroidDumps/Firmware_extractor;
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs, src }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin && rm -rf $out/bin/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092709.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092709.nix
new file mode 100644
index 0000000..4394d0e
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092709.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = github:AndroidDumps/Firmware_extractor;
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs, src }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin && rm -rf $out/bin/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092713.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092713.nix
new file mode 100644
index 0000000..6fcf4f1
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092713.nix
@@ -0,0 +1,22 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = github:AndroidDumps/Firmware_extractor;
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs, src }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        inherit src;
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin && rm -rf $out/bin/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092750.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092750.nix
new file mode 100644
index 0000000..2c3928b
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220302092750.nix
@@ -0,0 +1,22 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = github:AndroidDumps/Firmware_extractor;
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs, src }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        inherit src;
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220304091156.nix b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220304091156.nix
new file mode 100644
index 0000000..2c3928b
--- /dev/null
+++ b/.history/packages/com.github.androiddumps.firmware_extractor/flake_20220304091156.nix
@@ -0,0 +1,22 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  inputs.src.url = github:AndroidDumps/Firmware_extractor;
+  inputs.src.flake = false;
+
+  outputs = { self, nixpkgs, src }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        inherit src;
+        name = "partition-tools";
+        installPhase = "mkdir -p $out/bin && cp ${src}/tools/Linux/bin/* $out/bin && cp ${src}/tools/Linux/bin/bin/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080455.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080455.nix
new file mode 100644
index 0000000..94f2327
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080455.nix
@@ -0,0 +1,11 @@
+{
+  description = "A very basic flake";
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080549.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080549.nix
new file mode 100644
index 0000000..29eff46
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080549.nix
@@ -0,0 +1,11 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080600.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080600.nix
new file mode 100644
index 0000000..c8922a9
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080600.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080609.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080609.nix
new file mode 100644
index 0000000..9a84f3d
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080609.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = ""
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080613.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080613.nix
new file mode 100644
index 0000000..229668f
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080613.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs = 
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080620.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080620.nix
new file mode 100644
index 0000000..dcadd93
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080620.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = 
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080622.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080622.nix
new file mode 100644
index 0000000..8a622be
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080622.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080625.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080625.nix
new file mode 100644
index 0000000..cd6429b
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080625.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:Nix
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080628.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080628.nix
new file mode 100644
index 0000000..70d9d26
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080628.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080632.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080632.nix
new file mode 100644
index 0000000..299cb0d
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080632.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080635.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080635.nix
new file mode 100644
index 0000000..4c8540c
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080635.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080636.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080636.nix
new file mode 100644
index 0000000..534616c
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080636.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080640.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080640.nix
new file mode 100644
index 0000000..1e08f1f
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080640.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080745.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080745.nix
new file mode 100644
index 0000000..5764a9c
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080745.nix
@@ -0,0 +1,15 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = {
+      
+    };
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080756.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080756.nix
new file mode 100644
index 0000000..1a4c6c7
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080756.nix
@@ -0,0 +1,15 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = {
+
+    };
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080805.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080805.nix
new file mode 100644
index 0000000..1e08f1f
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080805.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080813.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080813.nix
new file mode 100644
index 0000000..b913a60
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080813.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080816.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080816.nix
new file mode 100644
index 0000000..2116f99
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080816.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools = nixpkgs.legacyPackages.x86_64-linux.hello;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080824.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080824.nix
new file mode 100644
index 0000000..0704ba0
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080824.nix
@@ -0,0 +1,13 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools = nixpkg;
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080831.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080831.nix
new file mode 100644
index 0000000..ba6fe49
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080831.nix
@@ -0,0 +1,15 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools = mkDerivation {
+      
+    };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080928.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080928.nix
new file mode 100644
index 0000000..2b0f365
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080928.nix
@@ -0,0 +1,14 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools = 
+      with import nixpkgs { system = "x" }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080935.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080935.nix
new file mode 100644
index 0000000..6d9b1b3
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080935.nix
@@ -0,0 +1,14 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools = 
+      with import nixpkgs { system = "x86_64-linux"; }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080938.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080938.nix
new file mode 100644
index 0000000..6259918
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080938.nix
@@ -0,0 +1,14 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080944.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080944.nix
new file mode 100644
index 0000000..f041526
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080944.nix
@@ -0,0 +1,15 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mk
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080946.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080946.nix
new file mode 100644
index 0000000..2dc51e9
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080946.nix
@@ -0,0 +1,15 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation 
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080949.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080949.nix
new file mode 100644
index 0000000..2773e9d
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080949.nix
@@ -0,0 +1,17 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080950.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080950.nix
new file mode 100644
index 0000000..a39c53a
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080950.nix
@@ -0,0 +1,18 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080956.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080956.nix
new file mode 100644
index 0000000..dd0cceb
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302080956.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "
+        
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081003.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081003.nix
new file mode 100644
index 0000000..7d53d19
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081003.nix
@@ -0,0 +1,18 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081033.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081033.nix
new file mode 100644
index 0000000..8ad9990
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081033.nix
@@ -0,0 +1,18 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081036.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081036.nix
new file mode 100644
index 0000000..24c1c0b
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081036.nix
@@ -0,0 +1,18 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" }
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081038.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081038.nix
new file mode 100644
index 0000000..20fa2dd
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081038.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081049.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081049.nix
new file mode 100644
index 0000000..b1436f0
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081049.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        build
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081053.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081053.nix
new file mode 100644
index 0000000..dd901f8
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081053.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPh
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081057.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081057.nix
new file mode 100644
index 0000000..fa71efd
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081057.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = unpackPhase;
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081059.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081059.nix
new file mode 100644
index 0000000..54b80a6
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081059.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = unpackPhase;
+        
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081102.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081102.nix
new file mode 100644
index 0000000..d6c6500
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081102.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = ""
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081136.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081136.nix
new file mode 100644
index 0000000..a5ead18
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081136.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "ta"
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081138.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081138.nix
new file mode 100644
index 0000000..b390554
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081138.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar "
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081140.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081140.nix
new file mode 100644
index 0000000..a695399
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081140.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081143.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081143.nix
new file mode 100644
index 0000000..d68a4d3
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081143.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz ";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081145.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081145.nix
new file mode 100644
index 0000000..2aba8b1
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081145.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081153.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081153.nix
new file mode 100644
index 0000000..1f4ebfe
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081153.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && gcc";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081157.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081157.nix
new file mode 100644
index 0000000..ed33628
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081157.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && ";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081252.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081252.nix
new file mode 100644
index 0000000..bfe9079
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081252.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ ";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081255.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081255.nix
new file mode 100644
index 0000000..56cc6c7
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081255.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081258.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081258.nix
new file mode 100644
index 0000000..93e1eed
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081258.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o *.";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081300.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081300.nix
new file mode 100644
index 0000000..a037f6f
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081300.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o *.cc ";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081305.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081305.nix
new file mode 100644
index 0000000..2f42f51
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081305.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc ";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081318.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081318.nix
new file mode 100644
index 0000000..f9dc26d
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081318.nix
@@ -0,0 +1,19 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081321.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081321.nix
new file mode 100644
index 0000000..d1c8501
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081321.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081346.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081346.nix
new file mode 100644
index 0000000..19dcc5f
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081346.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        install
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081353.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081353.nix
new file mode 100644
index 0000000..14aa7b5
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081353.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mk"
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081354.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081354.nix
new file mode 100644
index 0000000..f1dc5b6
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081354.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkd"
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081355.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081355.nix
new file mode 100644
index 0000000..be8a59d
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081355.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out $out/bin/partition-tools";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081358.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081358.nix
new file mode 100644
index 0000000..ee1b592
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081358.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out $out/bin/.";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081401.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081401.nix
new file mode 100644
index 0000000..eeaaa89
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081401.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out $out/bin/";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081408.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081408.nix
new file mode 100644
index 0000000..cd2bf8a
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081408.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out $out/bin";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081410.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081410.nix
new file mode 100644
index 0000000..02fc56e
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081410.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/ $out/bin";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081412.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081412.nix
new file mode 100644
index 0000000..632a1b3
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081412.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz" };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081436.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081436.nix
new file mode 100644
index 0000000..73f638d
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081436.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      }
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081451.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081451.nix
new file mode 100644
index 0000000..3df6640
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081451.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081917.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081917.nix
new file mode 100644
index 0000000..c36cbdc
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081917.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux";  };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081919.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081919.nix
new file mode 100644
index 0000000..5524dd5
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081919.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; s };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081922.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081922.nix
new file mode 100644
index 0000000..7b11bac
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081922.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; sha };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081927.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081927.nix
new file mode 100644
index 0000000..dd780b5
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081927.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; sha256 = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081936.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081936.nix
new file mode 100644
index 0000000..e9e2bab
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302081936.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; hash = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082017.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082017.nix
new file mode 100644
index 0000000..dd780b5
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082017.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; sha256 = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082026.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082026.nix
new file mode 100644
index 0000000..3df6640
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082026.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082027.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082027.nix
new file mode 100644
index 0000000..3196181
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082027.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; sha256 = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082029.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082029.nix
new file mode 100644
index 0000000..8ccc9bf
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082029.nix
@@ -0,0 +1,20 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; hash = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082746.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082746.nix
new file mode 100644
index 0000000..7c3ac28
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082746.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; hash = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+        un
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082756.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082756.nix
new file mode 100644
index 0000000..0e136a0
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082756.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; hash = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+        unpackPhase = "tar xzf $"
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082759.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082759.nix
new file mode 100644
index 0000000..3057253
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082759.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; hash = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "tar xzf partition_tools.tar.gz && g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082805.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082805.nix
new file mode 100644
index 0000000..b80c9b9
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082805.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; hash = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082908.nix b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082908.nix
new file mode 100644
index 0000000..32de1ff
--- /dev/null
+++ b/.history/packages/com.googlesource.android.partition-tools.platform.system.extras/flake_20220302082908.nix
@@ -0,0 +1,21 @@
+{
+  description = "A flake to build android's partition-tools package";
+
+  inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
+
+  outputs = { self, nixpkgs }: {
+
+    packages.x86_64-linux.partition-tools =
+      with import nixpkgs { system = "x86_64-linux"; };
+      stdenv.mkDerivation rec {
+        name = "partition-tools";
+        src = fetchurl { url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"; hash = "sha256-bsO2QEcO9HuR4lZ6j+CmEIrvfT2YaynWvK4ZZLIv/CU="; };
+        unpackPhase = "tar xzf ${src}";
+        buildPhase = "g++ -o out *.cc";
+        installPhase = "mkdir -p $out/bin && cp out/* $out/bin";
+      };
+
+    defaultPackage.x86_64-linux = self.packages.x86_64-linux.partition-tools;
+
+  };
+}
diff --git a/.history/shell_20220301141756.nix b/.history/shell_20220301141756.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.history/shell_20220301141756.nix
diff --git a/.history/shell_20220301141758.nix b/.history/shell_20220301141758.nix
new file mode 100644
index 0000000..699d9ed
--- /dev/null
+++ b/.history/shell_20220301141758.nix
@@ -0,0 +1,7 @@
+{ pkgs, ... }:
+
+pkgs.mkShell {
+  buildInputs = with pkgs; [
+    rnix-lsp
+  ];
+}
diff --git a/.history/shell_20220301141800.nix b/.history/shell_20220301141800.nix
new file mode 100644
index 0000000..a728c5a
--- /dev/null
+++ b/.history/shell_20220301141800.nix
@@ -0,0 +1,7 @@
+{ pkgs, ... }:
+
+pkgs.mkShell {
+  buildInputs = with pkgs; [
+    rnix-lsp
+  ];
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301112917.nix b/.history/shells/android_20220301112917.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.history/shells/android_20220301112917.nix
diff --git a/.history/shells/android_20220301144432.nix b/.history/shells/android_20220301144432.nix
new file mode 100644
index 0000000..c00ba87
--- /dev/null
+++ b/.history/shells/android_20220301144432.nix
@@ -0,0 +1 @@
+she
\ No newline at end of file
diff --git a/.history/shells/android_20220301144433.nix b/.history/shells/android_20220301144433.nix
new file mode 100644
index 0000000..2f259b7
--- /dev/null
+++ b/.history/shells/android_20220301144433.nix
@@ -0,0 +1 @@
+s
\ No newline at end of file
diff --git a/.history/shells/android_20220301144434.nix b/.history/shells/android_20220301144434.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.history/shells/android_20220301144434.nix
diff --git a/.history/shells/android_20220301144545.nix b/.history/shells/android_20220301144545.nix
new file mode 100644
index 0000000..c793025
--- /dev/null
+++ b/.history/shells/android_20220301144545.nix
@@ -0,0 +1 @@
+7
\ No newline at end of file
diff --git a/.history/shells/android_20220301144546.nix b/.history/shells/android_20220301144546.nix
new file mode 100644
index 0000000..a4890ce
--- /dev/null
+++ b/.history/shells/android_20220301144546.nix
@@ -0,0 +1 @@
+700
diff --git a/.history/shells/android_20220301144547.nix b/.history/shells/android_20220301144547.nix
new file mode 100644
index 0000000..440e3e7
--- /dev/null
+++ b/.history/shells/android_20220301144547.nix
@@ -0,0 +1,2 @@
+700
+
diff --git a/.history/shells/android_20220301144548.nix b/.history/shells/android_20220301144548.nix
new file mode 100644
index 0000000..a4890ce
--- /dev/null
+++ b/.history/shells/android_20220301144548.nix
@@ -0,0 +1 @@
+700
diff --git a/.history/shells/android_20220301144549.nix b/.history/shells/android_20220301144549.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.history/shells/android_20220301144549.nix
diff --git a/.history/shells/android_20220301144550.nix b/.history/shells/android_20220301144550.nix
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/.history/shells/android_20220301144550.nix
@@ -0,0 +1 @@
+
diff --git a/.history/shells/android_20220301144551.nix b/.history/shells/android_20220301144551.nix
new file mode 100644
index 0000000..5de84fa
--- /dev/null
+++ b/.history/shells/android_20220301144551.nix
@@ -0,0 +1,6 @@
+
+
+
+
+7
+7
\ No newline at end of file
diff --git a/.history/shells/android_20220301144552.nix b/.history/shells/android_20220301144552.nix
new file mode 100644
index 0000000..bf5622a
--- /dev/null
+++ b/.history/shells/android_20220301144552.nix
@@ -0,0 +1,6 @@
+
+
+
+
+7
+777
\ No newline at end of file
diff --git a/.history/shells/android_20220301144553.nix b/.history/shells/android_20220301144553.nix
new file mode 100644
index 0000000..1fa0131
--- /dev/null
+++ b/.history/shells/android_20220301144553.nix
@@ -0,0 +1,6 @@
+
+
+
+
+7
+77
\ No newline at end of file
diff --git a/.history/shells/android_20220301144555.nix b/.history/shells/android_20220301144555.nix
new file mode 100644
index 0000000..5de84fa
--- /dev/null
+++ b/.history/shells/android_20220301144555.nix
@@ -0,0 +1,6 @@
+
+
+
+
+7
+7
\ No newline at end of file
diff --git a/.history/shells/android_20220301144556.nix b/.history/shells/android_20220301144556.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.history/shells/android_20220301144556.nix
diff --git a/.history/shells/android_20220301144558.nix b/.history/shells/android_20220301144558.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.history/shells/android_20220301144558.nix
diff --git a/.history/shells/android_20220301144600.nix b/.history/shells/android_20220301144600.nix
new file mode 100644
index 0000000..492920e
--- /dev/null
+++ b/.history/shells/android_20220301144600.nix
@@ -0,0 +1 @@
+4=
\ No newline at end of file
diff --git a/.history/shells/android_20220301144603.nix b/.history/shells/android_20220301144603.nix
new file mode 100644
index 0000000..bf0d87a
--- /dev/null
+++ b/.history/shells/android_20220301144603.nix
@@ -0,0 +1 @@
+4
\ No newline at end of file
diff --git a/.history/shells/android_20220301144604.nix b/.history/shells/android_20220301144604.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.history/shells/android_20220301144604.nix
diff --git a/.history/shells/android_20220301145620.nix b/.history/shells/android_20220301145620.nix
new file mode 100644
index 0000000..dd626a0
--- /dev/null
+++ b/.history/shells/android_20220301145620.nix
@@ -0,0 +1 @@
+()
\ No newline at end of file
diff --git a/.history/shells/android_20220301145621.nix b/.history/shells/android_20220301145621.nix
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/.history/shells/android_20220301145621.nix
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145622.nix b/.history/shells/android_20220301145622.nix
new file mode 100644
index 0000000..770cd3c
--- /dev/null
+++ b/.history/shells/android_20220301145622.nix
@@ -0,0 +1 @@
+{ plgkgs}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145623.nix b/.history/shells/android_20220301145623.nix
new file mode 100644
index 0000000..327e9ed
--- /dev/null
+++ b/.history/shells/android_20220301145623.nix
@@ -0,0 +1 @@
+{ pl}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145624.nix b/.history/shells/android_20220301145624.nix
new file mode 100644
index 0000000..bf0a8bd
--- /dev/null
+++ b/.history/shells/android_20220301145624.nix
@@ -0,0 +1 @@
+{ p}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145625.nix b/.history/shells/android_20220301145625.nix
new file mode 100644
index 0000000..e8d2fd9
--- /dev/null
+++ b/.history/shells/android_20220301145625.nix
@@ -0,0 +1 @@
+{ pkgs }
\ No newline at end of file
diff --git a/.history/shells/android_20220301145626.nix b/.history/shells/android_20220301145626.nix
new file mode 100644
index 0000000..9e1b704
--- /dev/null
+++ b/.history/shells/android_20220301145626.nix
@@ -0,0 +1 @@
+{ pkgs ? }
\ No newline at end of file
diff --git a/.history/shells/android_20220301145627.nix b/.history/shells/android_20220301145627.nix
new file mode 100644
index 0000000..ea8f02b
--- /dev/null
+++ b/.history/shells/android_20220301145627.nix
@@ -0,0 +1 @@
+{ pkgs ? mim}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145629.nix b/.history/shells/android_20220301145629.nix
new file mode 100644
index 0000000..d28f10d
--- /dev/null
+++ b/.history/shells/android_20220301145629.nix
@@ -0,0 +1 @@
+{ pkgs ? mi}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145630.nix b/.history/shells/android_20220301145630.nix
new file mode 100644
index 0000000..d4edc6d
--- /dev/null
+++ b/.history/shells/android_20220301145630.nix
@@ -0,0 +1 @@
+{ pkgs ? m}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145631.nix b/.history/shells/android_20220301145631.nix
new file mode 100644
index 0000000..9e1b704
--- /dev/null
+++ b/.history/shells/android_20220301145631.nix
@@ -0,0 +1 @@
+{ pkgs ? }
\ No newline at end of file
diff --git a/.history/shells/android_20220301145632.nix b/.history/shells/android_20220301145632.nix
new file mode 100644
index 0000000..57daf01
--- /dev/null
+++ b/.history/shells/android_20220301145632.nix
@@ -0,0 +1 @@
+{ pkgs ? i}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145633.nix b/.history/shells/android_20220301145633.nix
new file mode 100644
index 0000000..309833b
--- /dev/null
+++ b/.history/shells/android_20220301145633.nix
@@ -0,0 +1 @@
+{ pkgs ? import }
\ No newline at end of file
diff --git a/.history/shells/android_20220301145724.nix b/.history/shells/android_20220301145724.nix
new file mode 100644
index 0000000..d6ebe9a
--- /dev/null
+++ b/.history/shells/android_20220301145724.nix
@@ -0,0 +1 @@
+{ pkgs ? import <nixpkgs {} }
\ No newline at end of file
diff --git a/.history/shells/android_20220301145727.nix b/.history/shells/android_20220301145727.nix
new file mode 100644
index 0000000..fa57a56
--- /dev/null
+++ b/.history/shells/android_20220301145727.nix
@@ -0,0 +1 @@
+{ pkgs ? import <nixpkgs {} }:
diff --git a/.history/shells/android_20220301145737.nix b/.history/shells/android_20220301145737.nix
new file mode 100644
index 0000000..738b9da
--- /dev/null
+++ b/.history/shells/android_20220301145737.nix
@@ -0,0 +1,4 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145756.nix b/.history/shells/android_20220301145756.nix
new file mode 100644
index 0000000..999b711
--- /dev/null
+++ b/.history/shells/android_20220301145756.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import ./)
+  ]
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145801.nix b/.history/shells/android_20220301145801.nix
new file mode 100644
index 0000000..14e18d9
--- /dev/null
+++ b/.history/shells/android_20220301145801.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import ./packages/)
+  ]
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145805.nix b/.history/shells/android_20220301145805.nix
new file mode 100644
index 0000000..c87b636
--- /dev/null
+++ b/.history/shells/android_20220301145805.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import ./packages/com.googlesource.android.)
+  ]
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145817.nix b/.history/shells/android_20220301145817.nix
new file mode 100644
index 0000000..2fb4888
--- /dev/null
+++ b/.history/shells/android_20220301145817.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import com.googlesource.android.partition-tools.platform.system.extras.nix)
+  ]
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145837.nix b/.history/shells/android_20220301145837.nix
new file mode 100644
index 0000000..c899b8f
--- /dev/null
+++ b/.history/shells/android_20220301145837.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/nix/com.googlesource.android.partition-tools.platform.system.extras.nix)
+  ]
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145839.nix b/.history/shells/android_20220301145839.nix
new file mode 100644
index 0000000..4364738
--- /dev/null
+++ b/.history/shells/android_20220301145839.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/nix/shells/com.googlesource.android.partition-tools.platform.system.extras.nix)
+  ]
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145845.nix b/.history/shells/android_20220301145845.nix
new file mode 100644
index 0000000..5f5be0a
--- /dev/null
+++ b/.history/shells/android_20220301145845.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/nix/shells/packages/com.googlesource.android.partition-tools.platform.system.extras.nix)
+  ]
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145851.nix b/.history/shells/android_20220301145851.nix
new file mode 100644
index 0000000..b0bd0ad
--- /dev/null
+++ b/.history/shells/android_20220301145851.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/nix/shells/packages/com.googlesource.android.partition-tools.platform.system.extras.nix {inherit pkgs;})
+  ]
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145855.nix b/.history/shells/android_20220301145855.nix
new file mode 100644
index 0000000..1dacadd
--- /dev/null
+++ b/.history/shells/android_20220301145855.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/nix/shells/packages/com.googlesource.android.partition-tools.platform.system.extras.nix {inherit pkgs;})
+  ];
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145918.nix b/.history/shells/android_20220301145918.nix
new file mode 100644
index 0000000..6928b22
--- /dev/null
+++ b/.history/shells/android_20220301145918.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs> {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/nix/shells/packages/com.googlesource.android.partition-tools.platform.system.extras.nix {inherit pkgs;})
+  ];
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301145958.nix b/.history/shells/android_20220301145958.nix
new file mode 100644
index 0000000..16230a8
--- /dev/null
+++ b/.history/shells/android_20220301145958.nix
@@ -0,0 +1,7 @@
+{ pkgs ? import <nixpkgs> {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/Nix/shells/packages/com.googlesource.android.partition-tools.platform.system.extras.nix {inherit pkgs;})
+    (import /home/minion/Nix/shells/packages/com.googlesource.android.partition-tools.platform.system.extras.nix {inherit pkgs;})
+  ];
+}
\ No newline at end of file
diff --git a/.history/shells/android_20220301150001.nix b/.history/shells/android_20220301150001.nix
new file mode 100644
index 0000000..bd24134
--- /dev/null
+++ b/.history/shells/android_20220301150001.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs> {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/Nix/shells/packages/com.googlesource.android.partition-tools.platform.system.extras.nix {inherit pkgs;})
+  ];
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140746.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140746.nix
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140746.nix
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140811.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140811.nix
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140811.nix
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140813.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140813.nix
new file mode 100644
index 0000000..e041e2a
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140813.nix
@@ -0,0 +1 @@
+{}: 
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140814.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140814.nix
new file mode 100644
index 0000000..372d417
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301140814.nix
@@ -0,0 +1,3 @@
+{}: {
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141107.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141107.nix
new file mode 100644
index 0000000..8dc0048
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141107.nix
@@ -0,0 +1,3 @@
+{ pkgs }: {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141108.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141108.nix
new file mode 100644
index 0000000..81244ad
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141108.nix
@@ -0,0 +1,3 @@
+{ pkgs }: {
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141110.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141110.nix
new file mode 100644
index 0000000..43be7b5
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141110.nix
@@ -0,0 +1,4 @@
+{ pkgs }:
+ {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141112.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141112.nix
new file mode 100644
index 0000000..b79ae79
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141112.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+
+ {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141113.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141113.nix
new file mode 100644
index 0000000..e6e2bb4
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141113.nix
@@ -0,0 +1,6 @@
+{ pkgs }: let
+
+
+ {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141114.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141114.nix
new file mode 100644
index 0000000..72dab3b
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141114.nix
@@ -0,0 +1,6 @@
+{ pkgs }: let
+
+
+n {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141115.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141115.nix
new file mode 100644
index 0000000..29a3cee
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141115.nix
@@ -0,0 +1,6 @@
+{ pkgs }: let
+
+
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141116.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141116.nix
new file mode 100644
index 0000000..f254e77
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141116.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141117.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141117.nix
new file mode 100644
index 0000000..c6e7d2e
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141117.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    sr
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141118.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141118.nix
new file mode 100644
index 0000000..c955c77
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141118.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = 
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141122.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141122.nix
new file mode 100644
index 0000000..9f5cf4c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141122.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs.
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141123.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141123.nix
new file mode 100644
index 0000000..9f2b53a
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141123.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs.fe
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141124.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141124.nix
new file mode 100644
index 0000000..797542f
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141124.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs.fetch
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141125.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141125.nix
new file mode 100644
index 0000000..295688e
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141125.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs.fetch       
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141126.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141126.nix
new file mode 100644
index 0000000..27bd174
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141126.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs.fetch 
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141127.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141127.nix
new file mode 100644
index 0000000..9f2b53a
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141127.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs.fe
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141128.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141128.nix
new file mode 100644
index 0000000..2823e2d
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141128.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141129.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141129.nix
new file mode 100644
index 0000000..9f5cf4c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301141129.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs.
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142045.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142045.nix
new file mode 100644
index 0000000..2823e2d
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142045.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142046.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142046.nix
new file mode 100644
index 0000000..9f5cf4c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142046.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pkgs.
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142106.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142106.nix
new file mode 100644
index 0000000..7566d59
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142106.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = p
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142107.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142107.nix
new file mode 100644
index 0000000..1ac7be5
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142107.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pbuit
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142108.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142108.nix
new file mode 100644
index 0000000..5c3585d
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142108.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = pbu
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142109.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142109.nix
new file mode 100644
index 0000000..c955c77
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142109.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = 
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142110.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142110.nix
new file mode 100644
index 0000000..5407d1e
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142110.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = b
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142111.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142111.nix
new file mode 100644
index 0000000..8081585
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142111.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = bui
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142112.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142112.nix
new file mode 100644
index 0000000..bcd28f0
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142112.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = buio
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142113.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142113.nix
new file mode 100644
index 0000000..57abeff
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142113.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = builtins.
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142115.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142115.nix
new file mode 100644
index 0000000..a2ab885
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142115.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = builtins.fetchT
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142116.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142116.nix
new file mode 100644
index 0000000..93e17a0
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142116.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = builtins.fetchTarb
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142117.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142117.nix
new file mode 100644
index 0000000..4d5377f
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142117.nix
@@ -0,0 +1,5 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {}
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142118.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142118.nix
new file mode 100644
index 0000000..afc71d7
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142118.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        u
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142119.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142119.nix
new file mode 100644
index 0000000..a92b0af
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142119.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        ulrl
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142120.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142120.nix
new file mode 100644
index 0000000..00f67ae
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142120.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142121.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142121.nix
new file mode 100644
index 0000000..afc71d7
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142121.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        u
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142122.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142122.nix
new file mode 100644
index 0000000..d2c2686
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142122.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = 
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142129.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142129.nix
new file mode 100644
index 0000000..a34cea2
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142129.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = ""
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142130.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142130.nix
new file mode 100644
index 0000000..b301ecf
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142130.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142131.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142131.nix
new file mode 100644
index 0000000..b301ecf
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142131.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz"
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142132.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142132.nix
new file mode 100644
index 0000000..39fa6d1
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142132.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142133.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142133.nix
new file mode 100644
index 0000000..8688841
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142133.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+        
+    }
+in {
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142916.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142916.nix
new file mode 100644
index 0000000..b3afe62
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301142916.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in {
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143458.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143458.nix
new file mode 100644
index 0000000..8d4d995
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143458.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in {
+    s
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143459.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143459.nix
new file mode 100644
index 0000000..b3afe62
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143459.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in {
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143500.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143500.nix
new file mode 100644
index 0000000..7f566f2
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143500.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in {
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143501.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143501.nix
new file mode 100644
index 0000000..4b89f02
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143501.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in s{
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143502.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143502.nix
new file mode 100644
index 0000000..d54565d
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143502.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in std{
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143503.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143503.nix
new file mode 100644
index 0000000..8cdca21
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143503.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.{
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143505.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143505.nix
new file mode 100644
index 0000000..7761f9c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143505.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mk{
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143506.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143506.nix
new file mode 100644
index 0000000..0a02566
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143506.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkD{
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143507.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143507.nix
new file mode 100644
index 0000000..8cfaa27
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143507.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivati{
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143508.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143508.nix
new file mode 100644
index 0000000..ce0d2c1
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143508.nix
@@ -0,0 +1,7 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143509.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143509.nix
new file mode 100644
index 0000000..27adb03
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143509.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143945.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143945.nix
new file mode 100644
index 0000000..8914c5c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143945.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    m
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143946.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143946.nix
new file mode 100644
index 0000000..124d7b7
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143946.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    mn
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143947.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143947.nix
new file mode 100644
index 0000000..124d7b7
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143947.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    mn
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143948.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143948.nix
new file mode 100644
index 0000000..a0aa267
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143948.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    n
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143949.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143949.nix
new file mode 100644
index 0000000..59c581b
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143949.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    nam
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143950.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143950.nix
new file mode 100644
index 0000000..e17537b
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143950.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = ""
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143955.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143955.nix
new file mode 100644
index 0000000..845c254
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143955.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = "pla"
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143956.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143956.nix
new file mode 100644
index 0000000..ae3a7d7
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143956.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = "plartiti"
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143957.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143957.nix
new file mode 100644
index 0000000..845c254
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143957.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = "pla"
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143958.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143958.nix
new file mode 100644
index 0000000..8ee2544
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143958.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = "p"
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143959.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143959.nix
new file mode 100644
index 0000000..00dd08e
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301143959.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = "partiti"
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144000.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144000.nix
new file mode 100644
index 0000000..fe530d4
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144000.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = "partition-t"
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144001.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144001.nix
new file mode 100644
index 0000000..e873185
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144001.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = "partition-tools";
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144002.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144002.nix
new file mode 100644
index 0000000..1ea476f
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144002.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    }
+in stdenv.mkDerivation {
+    name = "partition-tools";
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144013.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144013.nix
new file mode 100644
index 0000000..9cfacd8
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144013.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+
+    };
+in stdenv.mkDerivation {
+    name = "partition-tools";
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144014.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144014.nix
new file mode 100644
index 0000000..6a0ea35
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144014.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    name = "partition-tools";
+
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144016.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144016.nix
new file mode 100644
index 0000000..780f792
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144016.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    name = "partition-tools";
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144030.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144030.nix
new file mode 100644
index 0000000..9959092
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144030.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    name = "partition-tools";
+    src
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144031.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144031.nix
new file mode 100644
index 0000000..1eb336f
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144031.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    name = "partition-tools";
+    sr
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144032.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144032.nix
new file mode 100644
index 0000000..780f792
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144032.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    name = "partition-tools";
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144033.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144033.nix
new file mode 100644
index 0000000..989f6de
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144033.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    
+    name = "partition-tools";
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144034.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144034.nix
new file mode 100644
index 0000000..1735908
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144034.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inje
+    name = "partition-tools";
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144035.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144035.nix
new file mode 100644
index 0000000..1be8eec
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144035.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit 
+    name = "partition-tools";
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144036.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144036.nix
new file mode 100644
index 0000000..ce7674c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144036.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144334.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144334.nix
new file mode 100644
index 0000000..5cbe8a8
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144334.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    b
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144335.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144335.nix
new file mode 100644
index 0000000..4b6ba1b
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144335.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    build
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144336.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144336.nix
new file mode 100644
index 0000000..4c21e5c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144336.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs =
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144337.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144337.nix
new file mode 100644
index 0000000..e331ba4
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144337.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = "
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144338.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144338.nix
new file mode 100644
index 0000000..93f6f55
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144338.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = "gc
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144339.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144339.nix
new file mode 100644
index 0000000..e331ba4
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144339.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = "
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144340.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144340.nix
new file mode 100644
index 0000000..b057fae
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144340.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gc]
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144341.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144341.nix
new file mode 100644
index 0000000..f61e8b3
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144341.nix
@@ -0,0 +1,9 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144343.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144343.nix
new file mode 100644
index 0000000..91bb88d
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144343.nix
@@ -0,0 +1,10 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+    
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144348.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144348.nix
new file mode 100644
index 0000000..c1ace90
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144348.nix
@@ -0,0 +1,10 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+    syst
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144349.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144349.nix
new file mode 100644
index 0000000..eaf50c7
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144349.nix
@@ -0,0 +1,10 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+    system = 
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144350.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144350.nix
new file mode 100644
index 0000000..334fee7
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144350.nix
@@ -0,0 +1,10 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+    system = builti
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144351.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144351.nix
new file mode 100644
index 0000000..191e9f7
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144351.nix
@@ -0,0 +1,10 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+    system = builtins.
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144352.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144352.nix
new file mode 100644
index 0000000..834e830
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144352.nix
@@ -0,0 +1,10 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+    system = builtins.curr
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144353.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144353.nix
new file mode 100644
index 0000000..a8c61ce
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144353.nix
@@ -0,0 +1,10 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+    system = builtins.currentSyste
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144354.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144354.nix
new file mode 100644
index 0000000..9be3a5e
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144354.nix
@@ -0,0 +1,10 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+    buildInputs = [ gcc ];
+    system = builtins.currentSystem;
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144418.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144418.nix
new file mode 100644
index 0000000..6251cb0
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301144418.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150014.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150014.nix
new file mode 100644
index 0000000..94d5dbb
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150014.nix
@@ -0,0 +1,8 @@
+{ pkgs, stdenv }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150022.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150022.nix
new file mode 100644
index 0000000..bc5fe5c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150022.nix
@@ -0,0 +1,8 @@
+{ pkgs, stdenv }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in pkgs.stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150025.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150025.nix
new file mode 100644
index 0000000..8e9077d
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150025.nix
@@ -0,0 +1,8 @@
+{ pkg }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in pkgs.stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150026.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150026.nix
new file mode 100644
index 0000000..4a51801
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150026.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchTarball {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in pkgs.stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150453.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150453.nix
new file mode 100644
index 0000000..1ac0a48
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150453.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchUrl {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in pkgs.stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+}
\ No newline at end of file
diff --git a/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150503.nix b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150503.nix
new file mode 100644
index 0000000..468bf0c
--- /dev/null
+++ b/.history/shells/packages/com.googlesource.android.partition-tools.platform.system.extras_20220301150503.nix
@@ -0,0 +1,8 @@
+{ pkgs }: let
+    src = builtins.fetchurl {
+        url = "https://android.googlesource.com/platform/system/extras/+archive/master/partition_tools.tar.gz";
+    };
+in pkgs.stdenv.mkDerivation {
+    inherit src;
+    name = "partition-tools";
+}
\ No newline at end of file
diff --git a/.history/system/configuration_20220225100354.nix b/.history/system/configuration_20220225100354.nix
new file mode 100644
index 0000000..a65cfe5
--- /dev/null
+++ b/.history/system/configuration_20220225100354.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220306222416.nix b/.history/system/configuration_20220306222416.nix
new file mode 100644
index 0000000..3156a5e
--- /dev/null
+++ b/.history/system/configuration_20220306222416.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220306222421.nix b/.history/system/configuration_20220306222421.nix
new file mode 100644
index 0000000..fab96ec
--- /dev/null
+++ b/.history/system/configuration_20220306222421.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220306222503.nix b/.history/system/configuration_20220306222503.nix
new file mode 100644
index 0000000..cd90138
--- /dev/null
+++ b/.history/system/configuration_20220306222503.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+  //programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220306222504.nix b/.history/system/configuration_20220306222504.nix
new file mode 100644
index 0000000..fab96ec
--- /dev/null
+++ b/.history/system/configuration_20220306222504.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220306222507.nix b/.history/system/configuration_20220306222507.nix
new file mode 100644
index 0000000..aa294ee
--- /dev/null
+++ b/.history/system/configuration_20220306222507.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+/  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220306222513.nix b/.history/system/configuration_20220306222513.nix
new file mode 100644
index 0000000..aede5bc
--- /dev/null
+++ b/.history/system/configuration_20220306222513.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220306222615.nix b/.history/system/configuration_20220306222615.nix
new file mode 100644
index 0000000..533eba1
--- /dev/null
+++ b/.history/system/configuration_20220306222615.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220306222617.nix b/.history/system/configuration_20220306222617.nix
new file mode 100644
index 0000000..62c290d
--- /dev/null
+++ b/.history/system/configuration_20220306222617.nix
@@ -0,0 +1,347 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      wlr.enable = true;
+      
+    };
+  };
+
+  # Configure keymap in X11
+  services.xserver.layout = "gb";
+  # services.xserver.xkbOptions = "eurosign:e";
+ 
+
+  # Permit and install steam
+  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
+    "steam"
+    "steam-original"
+    "steam-runtime"
+  ];
+
+  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" ];
+
+  # Enable touchpad support (enabled default in most desktopManager).
+  services.xserver.libinput.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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093136.nix b/.history/system/configuration_20220309093136.nix
new file mode 100644
index 0000000..de796f3
--- /dev/null
+++ b/.history/system/configuration_20220309093136.nix
@@ -0,0 +1,357 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093200.nix b/.history/system/configuration_20220309093200.nix
new file mode 100644
index 0000000..e3007e7
--- /dev/null
+++ b/.history/system/configuration_20220309093200.nix
@@ -0,0 +1,360 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    
+  }
+  }
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093203.nix b/.history/system/configuration_20220309093203.nix
new file mode 100644
index 0000000..99a0e27
--- /dev/null
+++ b/.history/system/configuration_20220309093203.nix
@@ -0,0 +1,359 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+      
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093208.nix b/.history/system/configuration_20220309093208.nix
new file mode 100644
index 0000000..7e8beb7
--- /dev/null
+++ b/.history/system/configuration_20220309093208.nix
@@ -0,0 +1,359 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093211.nix b/.history/system/configuration_20220309093211.nix
new file mode 100644
index 0000000..cca550d
--- /dev/null
+++ b/.history/system/configuration_20220309093211.nix
@@ -0,0 +1,359 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    ""
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093219.nix b/.history/system/configuration_20220309093219.nix
new file mode 100644
index 0000000..6aedcb3
--- /dev/null
+++ b/.history/system/configuration_20220309093219.nix
@@ -0,0 +1,360 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = ''
+    ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093222.nix b/.history/system/configuration_20220309093222.nix
new file mode 100644
index 0000000..6aedcb3
--- /dev/null
+++ b/.history/system/configuration_20220309093222.nix
@@ -0,0 +1,360 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = ''
+    ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093224.nix b/.history/system/configuration_20220309093224.nix
new file mode 100644
index 0000000..7b41f81
--- /dev/null
+++ b/.history/system/configuration_20220309093224.nix
@@ -0,0 +1,361 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = ''
+    
+    ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093226.nix b/.history/system/configuration_20220309093226.nix
new file mode 100644
index 0000000..dbd0397
--- /dev/null
+++ b/.history/system/configuration_20220309093226.nix
@@ -0,0 +1,361 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = ''
+      auth include login
+    ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093306.nix b/.history/system/configuration_20220309093306.nix
new file mode 100644
index 0000000..c50a8d2
--- /dev/null
+++ b/.history/system/configuration_20220309093306.nix
@@ -0,0 +1,361 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock".text = ''
+      auth include login
+    ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093310.nix b/.history/system/configuration_20220309093310.nix
new file mode 100644
index 0000000..de0db70
--- /dev/null
+++ b/.history/system/configuration_20220309093310.nix
@@ -0,0 +1,361 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock"= ''
+      auth include login
+    ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093313.nix b/.history/system/configuration_20220309093313.nix
new file mode 100644
index 0000000..6c82dab
--- /dev/null
+++ b/.history/system/configuration_20220309093313.nix
@@ -0,0 +1,362 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      ''
+      auth include login
+    ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093317.nix b/.history/system/configuration_20220309093317.nix
new file mode 100644
index 0000000..264c22b
--- /dev/null
+++ b/.history/system/configuration_20220309093317.nix
@@ -0,0 +1,362 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      ''
+        auth include login
+      ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093320.nix b/.history/system/configuration_20220309093320.nix
new file mode 100644
index 0000000..ca85866
--- /dev/null
+++ b/.history/system/configuration_20220309093320.nix
@@ -0,0 +1,362 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      text = ''
+        auth include login
+      ''
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093323.nix b/.history/system/configuration_20220309093323.nix
new file mode 100644
index 0000000..d8d046b
--- /dev/null
+++ b/.history/system/configuration_20220309093323.nix
@@ -0,0 +1,363 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      text = ''
+        auth include login
+      ''
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093327.nix b/.history/system/configuration_20220309093327.nix
new file mode 100644
index 0000000..32a1395
--- /dev/null
+++ b/.history/system/configuration_20220309093327.nix
@@ -0,0 +1,363 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      text = ''
+        auth include login
+      '';
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093332.nix b/.history/system/configuration_20220309093332.nix
new file mode 100644
index 0000000..b4f0046
--- /dev/null
+++ b/.history/system/configuration_20220309093332.nix
@@ -0,0 +1,364 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      mode = 
+      text = ''
+        auth include login
+      '';
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093414.nix b/.history/system/configuration_20220309093414.nix
new file mode 100644
index 0000000..a0ff802
--- /dev/null
+++ b/.history/system/configuration_20220309093414.nix
@@ -0,0 +1,364 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      mode = "";
+      text = ''
+        auth include login
+      '';
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093523.nix b/.history/system/configuration_20220309093523.nix
new file mode 100644
index 0000000..10c1156
--- /dev/null
+++ b/.history/system/configuration_20220309093523.nix
@@ -0,0 +1,363 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {;
+      text = ''
+        auth include login
+      '';
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093524.nix b/.history/system/configuration_20220309093524.nix
new file mode 100644
index 0000000..b9a67c9
--- /dev/null
+++ b/.history/system/configuration_20220309093524.nix
@@ -0,0 +1,364 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      
+      text = ''
+        auth include login
+      '';
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093527.nix b/.history/system/configuration_20220309093527.nix
new file mode 100644
index 0000000..b4f0046
--- /dev/null
+++ b/.history/system/configuration_20220309093527.nix
@@ -0,0 +1,364 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      mode = 
+      text = ''
+        auth include login
+      '';
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093530.nix b/.history/system/configuration_20220309093530.nix
new file mode 100644
index 0000000..cae4bbf
--- /dev/null
+++ b/.history/system/configuration_20220309093530.nix
@@ -0,0 +1,364 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      mode = "0777";
+      text = ''
+        auth include login
+      '';
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/.history/system/configuration_20220309093909.nix b/.history/system/configuration_20220309093909.nix
new file mode 100644
index 0000000..445fe1f
--- /dev/null
+++ b/.history/system/configuration_20220309093909.nix
@@ -0,0 +1,364 @@
+# Edit this configuration file to define what should be installed on
+# your system.  Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, lib, ... }:
+
+{
+  imports =
+    [ # Include the results of the hardware scan.
+      ./hardware-configuration.nix
+      ../secrets/networking-configuration.nix
+      ./packaging-configuration.nix
+      ./containerd/containerd.nix
+    ];
+
+  # Prepare nix flakes
+  nix = {
+    package = pkgs.nixFlakes;
+    extraOptions = ''
+      experimental-features = nix-command flakes
+    '';
+  };
+
+  # 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" ];
+
+  # 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 = {
+    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.qt5ct.enable = true;
+#  programs.waybar.enable = false; # true;
+
+  # Get screensharing to work
+  xdg = {
+    portal = {
+      enable = true;
+      extraPortals = with pkgs; [
+        xdg-desktop-portal-wlr
+        xdg-desktop-portal-gtk
+      ];
+      gtkUsePortal = true;
+      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"
+  ];
+
+  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" ];
+
+  # 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" ]; # Enable ‘sudo’ for the user.
+    shell = pkgs.zsh;
+  };
+
+  # 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.
+    ((emacsPackagesNgGen 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
+    polkit_gnome
+    gtk-engine-murrine
+    gtk_engines
+    gsettings-desktop-schemas
+    lxappearance
+  ] ++ (import ./containerd/systemPackages.nix pkgs).systemPackages;
+
+#  environment.systemPackages = [
+#    import /scripts/jetbrains.rider.nix
+#  ];
+
+  fonts.fonts = with pkgs; [
+    nerdfonts
+    noto-fonts
+    noto-fonts-cjk
+    noto-fonts-emoji
+    liberation_ttf
+    fira-code
+    fira-code-symbols
+    mplus-outline-fonts
+    dina-font
+    proggyfonts
+    roboto
+  ];
+
+  # 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.kbfs.enableRedirector = true;
+  security.wrappers.keybase-redirector.owner = "root";
+  security.wrappers.keybase-redirector.group = "users";
+  services.gnome.gnome-keyring.enable = true;
+  services.i2p.enable = true;
+  services.tlp.enable = true;
+  virtualisation.docker.enable = true;
+  virtualisation.docker.enableOnBoot = false;
+
+  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 ''; };
+  };
+
+  environment.etc = {
+    "pam.d/swaylock" = {
+      mode = "0644";
+      text = ''
+        auth include login
+      '';
+    };
+  };
+
+  nixpkgs.overlays = [
+    (self: super: {
+      polkit = super.polkit.overrideAttrs (oldAttrs: {
+        patches = oldAttrs.patches ++ [
+          (super.fetchpatch {
+            url = "https://gitlab.freedesktop.org/polkit/polkit/-/commit/716a273ce0af467968057f3e107156182bd290b0.patch";
+            sha256 = "sha256-hOJJhUmxXm87W1ZU9Y1NJ8GCyKvPjbIVtCHlhRGlN8k=";
+          })];
+      });
+    })
+  ];
+
+  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?
+
+}
+
diff --git a/packages/anytype/arnarg/anytype.nix b/packages/anytype/arnarg/anytype.nix
new file mode 100644
index 0000000..7b766a9
--- /dev/null
+++ b/packages/anytype/arnarg/anytype.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchurl, appimageTools, makeDesktopItem, symlinkJoin }:
+let
+  version = "0.22.3";
+
+  extracted = appimageTools.extract {
+    name = "anytype2";
+    src = fetchurl {
+      url = "https://at9412003.fra1.cdn.digitaloceanspaces.com/Anytype-${version}.AppImage";
+      sha256 = "14pzzd4nmf6k53mrf0dl3yj091ryvv38ypv3228m1b4hc16s1jnv";
+    };
+  };
+
+  wrapped = appimageTools.wrapAppImage {
+    name = "anytype2";
+    src = extracted;
+    extraPkgs = pkgs: with pkgs; [libsecret];
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "anytype2";
+    desktopName = "anytype2";
+    icon = "${extracted}/anytype2.png";
+    comment = "operating system for life";
+    exec = "${wrapped}/bin/anytype2";
+    categories = "Utility";
+  };
+in symlinkJoin {
+  name = "anytype-${version}";
+  paths = [
+    wrapped
+    desktopItem
+  ];
+}
diff --git a/packages/anytype/arnarg/default.nix b/packages/anytype/arnarg/default.nix
new file mode 100644
index 0000000..f22fbfa
--- /dev/null
+++ b/packages/anytype/arnarg/default.nix
@@ -0,0 +1,11 @@
+{ pkgs, ... }:
+
+let
+  callPackage = pkgs.lib.callPackageWith pkgs;
+
+  lib = pkgs.lib;
+
+  self = {
+    anytype = callPackage ./anytype.nix { };
+  };
+in self
diff --git a/packages/anytype/arnarg/result b/packages/anytype/arnarg/result
new file mode 120000
index 0000000..889b810
--- /dev/null
+++ b/packages/anytype/arnarg/result
@@ -0,0 +1 @@
+/nix/store/nzx75xm4p6qh90n2xwr14sipqsq00679-anytype-0.22.3
\ No newline at end of file
diff --git a/packages/space/default.nix b/packages/space/default.nix
new file mode 100644
index 0000000..fe7a03a
--- /dev/null
+++ b/packages/space/default.nix
@@ -0,0 +1,15 @@
+let
+  version = "51995916";
+  buildNumber = "51995916";
+in { pkgs ? import <nixpkgs> {} }:
+pkgs.appimageTools.wrapType2 {
+  name = "Anytype";
+  version = version;
+  src = pkgs.fetchurl {
+    url = "https://download.anytype.io/?action=download&key=desktop&id=51995916";
+    sha256 = "sha256-28qgTWCQrFCREGNfj8bePocEpB+0AZfrKNO4akn7/5I=";
+    name = version + ".appimage";
+  };
+
+  extraPkgs = pkgs: with pkgs; [ libsecret xdg-desktop-portal hicolor-icon-theme ];
+}
diff --git a/packages/space/result b/packages/space/result
new file mode 120000
index 0000000..0399fef
--- /dev/null
+++ b/packages/space/result
@@ -0,0 +1 @@
+/nix/store/l1nr15d27mjdzrn0wi26ihdh3sjd3gdg-Anytype
\ No newline at end of file
diff --git a/result b/result
new file mode 120000
index 0000000..d8ecf7b
--- /dev/null
+++ b/result
@@ -0,0 +1 @@
+/nix/store/93ibymr70ikla4b56l4hjhjansz9ql5i-home-manager-generation
\ No newline at end of file
diff --git a/secrets/networking-configuration.wpa-old.nix b/secrets/networking-configuration.wpa-old.nix
new file mode 100644
index 0000000..53ca687
--- /dev/null
+++ b/secrets/networking-configuration.wpa-old.nix
Binary files differ
diff --git a/secrets/networking/eduroam.8021x b/secrets/networking/eduroam.8021x
new file mode 100644
index 0000000..46d30c2
--- /dev/null
+++ b/secrets/networking/eduroam.8021x
Binary files differ
diff --git a/secrets/networking/eduroam.pem b/secrets/networking/eduroam.pem
new file mode 100644
index 0000000..8ade6e4
--- /dev/null
+++ b/secrets/networking/eduroam.pem
Binary files differ
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000..a728c5a
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,7 @@
+{ pkgs, ... }:
+
+pkgs.mkShell {
+  buildInputs = with pkgs; [
+    rnix-lsp
+  ];
+}
\ No newline at end of file
diff --git a/shells/android.nix b/shells/android.nix
new file mode 100644
index 0000000..bd24134
--- /dev/null
+++ b/shells/android.nix
@@ -0,0 +1,6 @@
+{ pkgs ? import <nixpkgs> {} }:
+pkgs.mkShell {
+  buildInputs = [
+    (import /home/minion/Nix/shells/packages/com.googlesource.android.partition-tools.platform.system.extras.nix {inherit pkgs;})
+  ];
+}
\ No newline at end of file
diff --git a/users/minion/overlays/anytype.nix.save b/users/minion/overlays/anytype.nix.save
new file mode 100644
index 0000000..70fcd96
--- /dev/null
+++ b/users/minion/overlays/anytype.nix.save
@@ -0,0 +1,39 @@
+final: prev: let
+  build = "54367901";
+  sha = "sha256-kVM/F0LsIgMtur8jHZzUWkFIcfHe0i8y9Zxe3z5SkVM=";
+
+  pname = "anytype";
+  name = "${pname}-${build}";
+
+  src = final.fetchurl {
+    url = "https://download.anytype.io/?action=download&key=desktop&id=${build}";
+    sha256 = sha;
+    name = "AnyType-${build}.AppImage";
+  };
+
+  appimageContents = final.appimageTools.extractType2 { inherit name src; };
+in {
+  anytype-latest = prev.appimageTools.wrapType2 {
+    inherit name src;
+
+    extraPkgs = pkgs: (prev.appimageTools.defaultFhsEnvArgs.multiPkgs pkgs)
+      ++ [ pkgs.libsecret ];
+
+    extraInstallCommands = ''
+      mv $out/bin/${name} $out/bin/${pname}
+      install -m 444 -D ${appimageContents}/anytype2.desktop -t $out/share/applications
+      substituteInPlace $out/share/applications/anytype2.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+      install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/0x0/apps/anytype2.png \
+        $out/share/icons/hicolor/512x512/apps/anytype2.png
+    '';
+
+    meta = with prev.lib; {
+      description = "P2P note-taking tool";
+      homepage = "https://anytype.io/";
+      license = licenses.unfree;
+      maintainers = with maintainers; [ bbigras ];
+      platforms = [ "x86_64-linux" ];
+    };
+  };
+}
diff --git a/utils/fhs-env.nix b/utils/fhs-env.nix
new file mode 100644
index 0000000..8373dc6
--- /dev/null
+++ b/utils/fhs-env.nix
@@ -0,0 +1,20 @@
+{ pkgs ? import <nixpkgs> {} }:
+(pkgs.buildFHSUserEnv {
+  name = "fhs";
+  targetPkgs = pkgs: with pkgs; [
+    coreutils
+  ];
+  multiPkgs = pkgs: with pkgs; [
+    zlib
+    xorg.libXxf86vm
+    curl
+    openal
+    openssl
+    dict
+    xorg.libXext
+    xorg.libX11
+    xorg.libXrandr
+    mesa_glu
+  ];
+  runScript = "bash";
+}).env