diff --git a/home/modules/gui.nix b/home/modules/gui.nix
index 68bbfce..9cf651e 100644
--- a/home/modules/gui.nix
+++ b/home/modules/gui.nix
@@ -131,8 +131,8 @@ config = lib.mkMerge [
       a = "cycle audio";
       S = ''cycle-values sub-ass-override "force" "no"'';
       PRINT = "screenshot";
-      c = "add panscan 0.1";
-      C = "add panscan -0.1";
+      c = "add panscan 0.01";
+      C = "add panscan -0.01";
       PLAY = "cycle pause";
       PAUSE = "cycle pause";
       PLAYPAUSE = "cycle pause";
diff --git a/home/modules/i3-sway.nix b/home/modules/i3-sway.nix
index e7750b3..3730017 100644
--- a/home/modules/i3-sway.nix
+++ b/home/modules/i3-sway.nix
@@ -410,9 +410,12 @@ config = lib.mkMerge [
         "${modifier}+c" = "exec ${rofiSway}/bin/rofi -show calc -no-show-match -no-sort -no-persist-history";
         "${modifier}+Print" = "exec ${grimshot}/bin/grimshot copy area";
         "${modifier}+${if modifier == "Mod1" then "Mod4" else "Mod1"}+Print" = "exec ${grimshot}/bin/grimshot copy window";
-        "--locked XF86AudioRaiseVolume" = lib.mkIf (!config.minimal) "exec ${pkgs.pamixer}/bin/pamixer --increase 5";
-        "--locked XF86AudioLowerVolume" = lib.mkIf (!config.minimal) "exec ${pkgs.pamixer}/bin/pamixer --decrease 5";
-        "--locked XF86AudioMute" = lib.mkIf (!config.minimal) "exec ${pkgs.pamixer}/bin/pamixer --toggle-mute";
+        "--locked XF86AudioRaiseVolume" = lib.mkIf (!config.minimal)
+          (if config.phone.enable then "exec ${pkgs.pamixer}/bin/pamixer --increase 5" else "exec ${config.home.homeDirectory}/scripts/vol/raise.sh");
+        "--locked XF86AudioLowerVolume" = lib.mkIf (!config.minimal)
+          (if config.phone.enable then "exec ${pkgs.pamixer}/bin/pamixer --decrease 5" else "exec ${config.home.homeDirectory}/scripts/vol/lower.sh");
+        "--locked XF86AudioMute" = lib.mkIf (!config.minimal)
+          (if config.phone.enable then "exec ${pkgs.pamixer}/bin/pamixer --toggle-mute" else "exec ${config.home.homeDirectory}/scripts/vol/mute.sh");
         "--locked --inhibited XF86AudioPlay" = lib.mkIf (!config.minimal) "exec ${pkgs.playerctl}/bin/playerctl play-pause";
         "--locked --inhibited XF86AudioNext" = lib.mkIf (!config.minimal) "exec ${audioNext}";
         "--locked --inhibited XF86AudioPrev" = lib.mkIf (!config.minimal) "exec ${audioPrev}";
diff --git a/home/modules/nvim.nix b/home/modules/nvim.nix
index 1affb1d..32119b6 100644
--- a/home/modules/nvim.nix
+++ b/home/modules/nvim.nix
@@ -1,4 +1,21 @@
 { config, pkgs, lib, notlua, ... }:
+/*let
+  omnisharp-mono = pkgs.fetchzip {
+    url = "https://github.com/omnisharp/omnisharp-roslyn/releases/download/v1.39.13/omnisharp-linux-x64.zip";
+    name = "omnisharp-linux-x64.zip";
+    stripRoot = false;
+    hash = "sha256-N1c+4poK5TUr1mnLdBR04+M0Foh3EHTC7FVbJtZIchE=";
+  };
+  comb = pkgs.symlinkJoin {
+    name = "mono-msbuild";
+    paths = with pkgs; [
+      mono
+      msbuild
+    ];
+  };
+
+  omnishar-mono-cmd = [ "${comb}/bin/mono" "${omnisharp-mono}/omnisharp/OmniSharp.exe" ];
+in*/
 {
   imports = [ ./options.nix ];
   /*
@@ -351,6 +368,14 @@
               (lib.mapAttrsToList setupLsp {
                 bashls = { };
                 clangd = { };
+                csharp_ls = { };
+                /*omnisharp = {
+                  cmd = omnishar-mono-cmd;
+                  settings = {
+                    MSBuild.UseLegacySdkResolver = true;
+                  };
+                };*/
+                fsautocomplete = { };
                 # https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md
                 pylsp = {
                   settings.pylsp = {
@@ -465,6 +490,8 @@
         python-lsp-server.optional-dependencies.mccabe
         python-lsp-server.optional-dependencies.pycodestyle
       ]))
+      csharp-ls
+      fsautocomplete
     ];
     # extraPython3Packages = pyPkgs: with pyPkgs; [
     # ];
diff --git a/system/hosts/nixmsi.nix b/system/hosts/nixmsi.nix
index 4db48a9..70751b9 100644
--- a/system/hosts/nixmsi.nix
+++ b/system/hosts/nixmsi.nix
@@ -54,6 +54,7 @@
     "steam-original"
   ];
   hardware = {
+    flipperzero.enable = true;
     opentabletdriver.enable = true;
     steam-hardware.enable = true;
     graphics.enable32Bit = true;
@@ -184,9 +185,16 @@
     comma
     neovim
     man-pages man-pages-posix
+    distrobox
   ];
   documentation.dev.enable = true;
   virtualisation.waydroid.enable = true;
+  services.flatpak.enable = true;
+
+  virtualisation.podman = {
+    enable = true;
+    dockerCompat = true;
+  };
 
   impermanence.directories = [
     /secrets
diff --git a/system/modules/impermanence.nix b/system/modules/impermanence.nix
index db98114..06d1189 100644
--- a/system/modules/impermanence.nix
+++ b/system/modules/impermanence.nix
@@ -157,6 +157,8 @@ in {
         { directory = /var/lib/swtpm-localca; user = "root"; group = "root"; mode = "0750"; }
       ] ++ lib.optionals config.virtualisation.waydroid.enable [
         { directory = /var/lib/waydroid; user = "root"; group = "root"; mode = "0755"; }
+      ] ++ lib.optionals config.virtualisation.podman.enable [
+        { directory = /var/lib/containers; user = "root"; group = "root"; mode = "0700"; }
       ]) ++ cfg.directories);
       files = map (x:
         if builtins.isPath x then toString x