ATProto Browser

ATProto Browser

Experimental browser for the Atmosphere

Record data

{
  "uri": "at://did:plc:w3aonw33w3mz3mwws34x5of6/sh.tangled.repo.pull/3lmz7dekcpx22",
  "cid": "bafyreie7va2rkm4nrneao3ebqiyrvw7be5sv3u5lh5x6lppocfiuppmuwq",
  "value": {
    "$type": "sh.tangled.repo.pull",
    "patch": "diff --git a/.gitattributes b/.gitattributes\nindex 5cae0aaa38f6a5318bae80c2d39138351cbe21ce..94d88aecc29570b4ba0e9b97cbdea06da0286b3d 100644\n--- a/.gitattributes\n+++ b/.gitattributes\n@@ -1,2 +1,2 @@\n-secrets/** filter=git-crypt diff=git-crypt\n-secrets/.* filter=git-crypt diff=git-crypt\n+nixos/secrets/** filter=git-crypt diff=git-crypt\n+nixos/secrets/.* filter=git-crypt diff=git-crypt\ndiff --git a/README.md b/README.md\ndeleted file mode 100644\nindex 7a6ed8bbee98120338047d1b9e896ebe27034d98..0000000000000000000000000000000000000000\n--- a/README.md\n+++ /dev/null\n@@ -1,20 +0,0 @@\n-# Michal's Nix Flake\n-\n-Idk why you'd be reading this, but hi !\n-\n-It's likely that I maybe linked you to take a look at this flake as a reference for a Nix-related concept.\n-\n-It's also possible you just stumbled here by accident! Or that you were browsing my profile.\n-\n-### Feel free to:\n-- Fork this\n-- Copy any ideas, concepts, or formatting\n-- Donate all of your blood to me\n-- Frame me for a crime (As long as it's something cool, like running over your rival in a steamroller)\n-- Leave me an angry email about any topic. I read all of my emails and I think that'd be pretty funny\n-\n-If you have any questions, feel free to either message me on Matrix at @michal:tar.black,\n-Or if you're feeling particularly formal and/or antequated, you can e-mail me at me@mchal.lol\n-I'm also reachable by summoning circle, although you'd have to figure out the incantation for that yourself.\n-\n-Au revoir !\ndiff --git a/common/desktop/gnome.nix b/common/desktop/gnome.nix\ndeleted file mode 100644\nindex 75876d8c4c97ad2af9264bec2d46c551c5b4c9bb..0000000000000000000000000000000000000000\n--- a/common/desktop/gnome.nix\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-{pkgs, ...}: {\n-  services.xserver = {\n-    enable = true;\n-    displayManager.gdm.enable = true;\n-    desktopManager.gnome.enable = true;\n-  };\n-\n-  environment.systemPackages = with pkgs; [\n-    gnomeExtensions.blur-my-shell\n-    gnomeExtensions.caffeine\n-    gnomeExtensions.grand-theft-focus\n-    gnomeExtensions.valent\n-    gnomeExtensions.pano\n-    gnomeExtensions.hot-edge\n-    gnomeExtensions.top-bar-organizer\n-    gnomeExtensions.weather-oclock\n-    gnomeExtensions.forge\n-    gnomeExtensions.bluetooth-battery-meter\n-\n-    pkgs.gnome-tweaks\n-    pkgs.gnome-software\n-  ];\n-\n-  xdg.portal = {\n-    enable = true;\n-    extraPortals = with pkgs; [xdg-desktop-portal-gtk];\n-  };\n-\n-  programs = {\n-    kdeconnect = {\n-      enable = true;\n-      package = pkgs.valent;\n-    };\n-    gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;\n-  };\n-}\ndiff --git a/common/desktop/gui-apps.nix b/common/desktop/gui-apps.nix\ndeleted file mode 100644\nindex 789531a611efab10c9d6369415e82b11b5c8c92a..0000000000000000000000000000000000000000\n--- a/common/desktop/gui-apps.nix\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-{pkgs, ...}: {\n-  nixpkgs.config.allowUnfree = true;\n-\n-  environment.systemPackages = with pkgs; [\n-    vesktop\n-    mullvad-vpn\n-    obsidian\n-  ];\n-\n-  xdg.portal.enable = true;\n-\n-  services = {\n-    mullvad-vpn = {\n-      enable = true;\n-      package = pkgs.mullvad-vpn;\n-    };\n-    flatpak.enable = true;\n-  };\n-}\ndiff --git a/common/desktop/hyprland.nix b/common/desktop/hyprland.nix\ndeleted file mode 100644\nindex 9639f10da2d546af6920c703f69b63e56ad02c12..0000000000000000000000000000000000000000\n--- a/common/desktop/hyprland.nix\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-{\n-  lib,\n-  pkgs,\n-  ...\n-}: {\n-  programs = {\n-    hyprland = {\n-      enable = true;\n-      withUWSM = true;\n-      xwayland.enable = true;\n-    };\n-    hyprlock.enable = true;\n-    uwsm.enable = true;\n-    gnupg.agent.pinentryPackage = pkgs.wayprompt;\n-  };\n-\n-  services.displayManager.autoLogin = {\n-    enable = true;\n-    user = \"michal\";\n-  };\n-\n-  xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];\n-\n-  environment.systemPackages = with pkgs; [\n-    kitty\n-    rofi-wayland\n-    kdePackages.dolphin\n-    hyprpolkitagent\n-    hyprpanel\n-    adwaita-icon-theme\n-    wvkbd\n-    wf-recorder\n-    grimblast\n-    hyprpaper\n-  ];\n-}\ndiff --git a/common/desktop/media.nix b/common/desktop/media.nix\ndeleted file mode 100644\nindex 74d397345a8c3d0600256e0d3bd6057c15ce88e9..0000000000000000000000000000000000000000\n--- a/common/desktop/media.nix\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-{pkgs, ...}: {\n-  security.rtkit.enable = true;\n-  services.pipewire = {\n-    enable = true;\n-    alsa = {\n-      enable = true;\n-      support32Bit = true;\n-    };\n-    pulse.enable = true;\n-    jack.enable = true;\n-  };\n-\n-  services = {\n-    printing = {\n-      enable = true;\n-      drivers = with pkgs; [epson-escpr epson-escpr2];\n-    };\n-    avahi = {\n-      enable = true;\n-      nssmdns4 = true;\n-    };\n-    syncthing = {\n-      enable = true;\n-      user = \"michal\";\n-    };\n-  };\n-\n-  hardware.bluetooth.enable = true;\n-\n-  fonts.packages = with pkgs; [\n-    noto-fonts\n-    noto-fonts-cjk-sans\n-    noto-fonts-emoji\n-    nerd-fonts.jetbrains-mono\n-  ];\n-\n-  boot.plymouth.enable = true;\n-}\ndiff --git a/common/desktop/stylix.nix b/common/desktop/stylix.nix\ndeleted file mode 100644\nindex 2222d29a5f17e74141aefc744f945d657bdf6776..0000000000000000000000000000000000000000\n--- a/common/desktop/stylix.nix\n+++ /dev/null\n@@ -1,10 +0,0 @@\n-{pkgs, ...}: {\n-  stylix = {\n-    enable = true;\n-    image = pkgs.fetchurl {\n-      url = \"https://i.imgur.com/uMrsMXh.jpg\";\n-      sha256 = \"G0OZr+i8tI0yzCKaXzrsD7+a8NoAWRMAXSC7XUPPbHo=\";\n-    };\n-    polarity = \"dark\";\n-  };\n-}\ndiff --git a/common/dev/podman.nix b/common/dev/podman.nix\ndeleted file mode 100644\nindex f69f36d65fc3592eb0bfbff6c87ce7f8ab0c84b8..0000000000000000000000000000000000000000\n--- a/common/dev/podman.nix\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-{pkgs, ...}: {\n-  virtualisation = {\n-    podman = {\n-      enable = true;\n-      dockerCompat = true;\n-    };\n-  };\n-}\ndiff --git a/common/dev/zed.nix b/common/dev/zed.nix\ndeleted file mode 100644\nindex 76ea702fea6b691267620e636e7328c43a0387b1..0000000000000000000000000000000000000000\n--- a/common/dev/zed.nix\n+++ /dev/null\n@@ -1,3 +0,0 @@\n-{pkgs, ...}: {\n-  environment.systemPackages = with pkgs; [zed-editor];\n-}\ndiff --git a/common/nix.nix b/common/nix.nix\ndeleted file mode 100644\nindex 08f875e5c741e298f43d80ae00201ba0cfab5c4b..0000000000000000000000000000000000000000\n--- a/common/nix.nix\n+++ /dev/null\n@@ -1,28 +0,0 @@\n-{\n-  nix = {\n-    settings = {\n-      auto-optimise-store = true;\n-      trusted-users = [\"root\" \"michal\"];\n-    };\n-    gc = {\n-      automatic = true;\n-      dates = \"19:00\";\n-      persistent = true;\n-      options = \"--delete-older-than 7d\";\n-    };\n-    settings = {\n-      substituters = [\n-        \"https://cache.nichi.co\"\n-        \"https://cache.ztier.in\"\n-      ];\n-      trusted-public-keys = [\n-        \"hydra.nichi.co-0:P3nkYHhmcLR3eNJgOAnHDjmQLkfqheGyhZ6GLrUVHwk=\"\n-        \"cache.ztier.link-1:3P5j2ZB9dNgFFFVkCQWT3mh0E+S3rIWtZvoql64UaXM=\"\n-      ];\n-      experimental-features = [\n-        \"nix-command\"\n-        \"flakes\"\n-      ];\n-    };\n-  };\n-}\ndiff --git a/common/personal.nix b/common/personal.nix\ndeleted file mode 100644\nindex 288df5b1d8fb03fb8e839790b26d3a015b183444..0000000000000000000000000000000000000000\n--- a/common/personal.nix\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-{pkgs, ...}: {\n-  users.users.michal = {\n-    description = \"Michal S.\";\n-    shell = pkgs.fish;\n-    isNormalUser = true;\n-    extraGroups = [\"wheel\" \"users\" \"audio\" \"video\" \"networkmanager\" \"podman\" \"docker\" \"syncthing\"];\n-    uid = 1000;\n-    openssh.authorizedKeys.keys = [\n-      \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHxah5pnxmk+P7HtwRsryDoAHZsDs5RcGP9IPCNg1KFe cardno:FFFE_DE635855\"\n-    ];\n-  };\n-\n-  programs.fish.enable = true;\n-\n-  security.sudo.extraConfig = \"Defaults pwfeedback\";\n-}\ndiff --git a/devices/common.nix b/devices/common.nix\ndeleted file mode 100644\nindex 0c5bda326940197b04f6f3c96caa1596f7b024ea..0000000000000000000000000000000000000000\n--- a/devices/common.nix\n+++ /dev/null\n@@ -1,30 +0,0 @@\n-{lib, ...}: {\n-  boot = {\n-    tmp.cleanOnBoot = true;\n-    loader = {\n-      systemd-boot.enable = lib.mkDefault true;\n-      efi.canTouchEfiVariables = lib.mkDefault true;\n-    };\n-  };\n-\n-  networking = {\n-    networkmanager.enable = true;\n-    useDHCP = lib.mkDefault true;\n-  };\n-\n-  time.timeZone = \"Europe/London\";\n-\n-  services = {\n-    pcscd.enable = true;\n-    gnome.gnome-keyring.enable = lib.mkForce false;\n-  };\n-\n-  programs.gnupg.agent.enable = true;\n-\n-  zramSwap.enable = true;\n-\n-  hardware.graphics = {\n-    enable = lib.mkDefault true;\n-    enable32Bit = lib.mkDefault true;\n-  };\n-}\ndiff --git a/devices/israfel-alpha/base.nix b/devices/israfel-alpha/base.nix\ndeleted file mode 100644\nindex cdfc853a1cc7bd73c378c7bc236b44e96825051e..0000000000000000000000000000000000000000\n--- a/devices/israfel-alpha/base.nix\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{pkgs, ...}: {\n-  boot = {\n-    kernelPackages = pkgs.linuxPackages_rpi4;\n-    loader.efi.canTouchEfiVariables = false;\n-  };\n-\n-  networking = {\n-    hostName = \"israfel-alpha\";\n-    firewall = {\n-      enable = true;\n-      allowedTCPPorts = [22];\n-    };\n-  };\n-\n-  services = {\n-    sshd.enable = true;\n-  };\n-\n-  hardware.graphics.enable32Bit = false;\n-\n-  system.stateVersion = \"24.11\";\n-}\ndiff --git a/devices/israfel-alpha/hardware.nix b/devices/israfel-alpha/hardware.nix\ndeleted file mode 100644\nindex 1de411b169b850e0a9e3bb173c4f02b43649c90a..0000000000000000000000000000000000000000\n--- a/devices/israfel-alpha/hardware.nix\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-# Do not modify this file!  It was generated by ‘nixos-generate-config’\n-# and may be overwritten by future invocations.  Please make changes\n-# to /etc/nixos/configuration.nix instead.\n-{\n-  config,\n-  lib,\n-  pkgs,\n-  modulesPath,\n-  ...\n-}: {\n-  imports = [\n-    (modulesPath + \"/installer/scan/not-detected.nix\")\n-  ];\n-\n-  boot = {\n-    initrd.availableKernelModules = [];\n-    initrd.kernelModules = [];\n-    kernelModules = [];\n-    extraModulePackages = [];\n-  };\n-\n-  fileSystems.\"/\" = {\n-    device = \"/dev/disk/by-uuid/5402aba1-f628-4073-a413-4b17acc5fb77\";\n-    fsType = \"ext4\";\n-  };\n-\n-  fileSystems.\"/boot\" = {\n-    device = \"/dev/disk/by-uuid/6E39-C5F2\";\n-    fsType = \"vfat\";\n-    options = [\"fmask=0077\" \"dmask=0077\"];\n-  };\n-\n-  swapDevices = [\n-    {device = \"/dev/disk/by-uuid/4038c37b-ee3c-4ecd-a598-34172426e3f4\";}\n-  ];\n-\n-  nixpkgs.hostPlatform = lib.mkDefault \"aarch64-linux\";\n-}\ndiff --git a/devices/israfel-beta/base.nix b/devices/israfel-beta/base.nix\ndeleted file mode 100644\nindex 49e1426af5ae7abf45261c43deb6890955afafb7..0000000000000000000000000000000000000000\n--- a/devices/israfel-beta/base.nix\n+++ /dev/null\n@@ -1,23 +0,0 @@\n-{pkgs, ...}: {\n-  boot = {\n-    kernelPackages = pkgs.linuxPackages_rpi4;\n-    loader.efi.canTouchEfiVariables = false;\n-    kernelParams = [\"8250.nr_uarts=11\" \"console=ttyAMA10,9600\" \"console=tty0\"];\n-  };\n-\n-  networking = {\n-    hostName = \"israfel-beta\";\n-    firewall = {\n-      enable = true;\n-      allowedTCPPorts = [22];\n-    };\n-  };\n-\n-  services = {\n-    sshd.enable = true;\n-  };\n-\n-  hardware.graphics.enable32Bit = false;\n-\n-  system.stateVersion = \"24.11\";\n-}\ndiff --git a/devices/israfel-beta/hardware.nix b/devices/israfel-beta/hardware.nix\ndeleted file mode 100644\nindex d9fa81cc75c86ef1426064d2dc4e5872b2be0523..0000000000000000000000000000000000000000\n--- a/devices/israfel-beta/hardware.nix\n+++ /dev/null\n@@ -1,37 +0,0 @@\n-{\n-  config,\n-  lib,\n-  pkgs,\n-  modulesPath,\n-  ...\n-}: {\n-  imports = [\n-    (modulesPath + \"/installer/scan/not-detected.nix\")\n-  ];\n-\n-  boot = {\n-    initrd.availableKernelModules = [];\n-    initrd.kernelModules = [];\n-    kernelModules = [];\n-    extraModulePackages = [];\n-  };\n-\n-  fileSystems = {\n-    \"/\" = {\n-      device = \"/dev/disk/by-uuid/54ec595b-ff14-4288-80c5-1a9b24208314\";\n-      fsType = \"ext4\";\n-    };\n-\n-    \"/boot\" = {\n-      device = \"/dev/disk/by-uuid/ACA4-FCB6\";\n-      fsType = \"vfat\";\n-      options = [\"fmask=0077\" \"dmask=0077\"];\n-    };\n-  };\n-\n-  swapDevices = [\n-    {device = \"/dev/disk/by-uuid/55717be0-0288-48af-97e2-4fba12020a96\";}\n-  ];\n-\n-  nixpkgs.hostPlatform = lib.mkDefault \"aarch64-linux\";\n-}\ndiff --git a/devices/tabris/base.nix b/devices/tabris/base.nix\ndeleted file mode 100644\nindex b9c4af5c40969312495f98825ac84648b9fe799a..0000000000000000000000000000000000000000\n--- a/devices/tabris/base.nix\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-{\n-  pkgs,\n-  lib,\n-  ...\n-}: {\n-  networking.hostName = \"tabris\";\n-\n-  time.timeZone = \"Europe/London\";\n-\n-  boot.loader.timeout = 0;\n-\n-  services.handheld-daemon = {\n-    enable = true;\n-    user = \"michal\";\n-  };\n-\n-  services.displayManager.autoLogin = {\n-    enable = true;\n-    user = \"michal\";\n-  };\n-\n-  programs = {\n-    steam.enable = true;\n-    gamemode.enable = true;\n-  };\n-\n-  environment.systemPackages = with pkgs; [\n-    steam-run\n-    modrinth-app\n-  ];\n-\n-  systemd.services.decky = {\n-    enable = true;\n-    wantedBy = [\"multi-user.target\"];\n-    serviceConfig = {\n-      Type = \"simple\";\n-      Restart = \"always\";\n-      KillMode = \"process\";\n-      TimeoutStopSec = 15;\n-      ExecStart = \"${pkgs.steam-run}/bin/steam-run /home/michal/homebrew/services/PluginLoader\";\n-      WorkingDirectory = \"/home/michal/homebrew\";\n-      Environment = [\"UNPRIVILEGED_PATH=/home/michal/homebew\" \"PRIVILIGED_PATH=/home/michal/homebrew\"];\n-      WantedBy = \"multi-user.target\";\n-    };\n-  };\n-\n-  system.stateVersion = \"24.11\";\n-}\ndiff --git a/devices/tabris/hardware.nix b/devices/tabris/hardware.nix\ndeleted file mode 100644\nindex 2ad3b1aebd882d523b2d5fa8acb95589e594f03e..0000000000000000000000000000000000000000\n--- a/devices/tabris/hardware.nix\n+++ /dev/null\n@@ -1,46 +0,0 @@\n-# Do not modify this file!  It was generated by ‘nixos-generate-config’\n-# and may be overwritten by future invocations.  Please make changes\n-# to /etc/nixos/configuration.nix instead.\n-{\n-  config,\n-  lib,\n-  pkgs,\n-  modulesPath,\n-  ...\n-}: {\n-  imports = [\n-    (modulesPath + \"/installer/scan/not-detected.nix\")\n-  ];\n-\n-  boot = {\n-    initrd.availableKernelModules = [\"nvme\" \"xhci_pci\" \"thunderbolt\" \"usbhid\" \"usb_storage\" \"sd_mod\" \"rtsx_pci_sdmmc\"];\n-    initrd.kernelModules = [];\n-    kernelModules = [\"kvm-amd\"];\n-    extraModulePackages = [];\n-  };\n-\n-  fileSystems.\"/\" = {\n-    device = \"/dev/disk/by-uuid/e72163c6-aa6a-4a7a-af69-dfab1eeb4fb9\";\n-    fsType = \"ext4\";\n-  };\n-\n-  fileSystems.\"/boot\" = {\n-    device = \"/dev/disk/by-uuid/EAF9-BC49\";\n-    fsType = \"vfat\";\n-    options = [\"fmask=0077\" \"dmask=0077\"];\n-  };\n-\n-  swapDevices = [\n-    {device = \"/dev/disk/by-uuid/928af3ff-8799-4728-85b1-adef70a04f03\";}\n-  ];\n-\n-  # Enables DHCP on each ethernet and wireless interface. In case of scripted networking\n-  # (the default) this is the recommended approach. When using systemd-networkd it's\n-  # still possible to use this option, but it's recommended to use it in conjunction\n-  # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.\n-  networking.useDHCP = lib.mkDefault true;\n-  # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;\n-\n-  nixpkgs.hostPlatform = lib.mkDefault \"x86_64-linux\";\n-  hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;\n-}\ndiff --git a/flake.lock b/flake.lock\nindex cc8c3a5304c0067e457cbc5ccc8a37226e082744..f45531be430a20013052a96066e03aa27165dcd4 100644\n--- a/flake.lock\n+++ b/flake.lock\n@@ -1,49 +1,5 @@\n {\n   \"nodes\": {\n-    \"ags\": {\n-      \"inputs\": {\n-        \"astal\": \"astal\",\n-        \"nixpkgs\": [\n-          \"hyprpanel\",\n-          \"nixpkgs\"\n-        ]\n-      },\n-      \"locked\": {\n-        \"lastModified\": 1736090999,\n-        \"narHash\": \"sha256-B5CJuHqfJrzPa7tObK0H9669/EClSHpa/P7B9EuvElU=\",\n-        \"owner\": \"aylur\",\n-        \"repo\": \"ags\",\n-        \"rev\": \"5527c3c07d92c11e04e7fd99d58429493dba7e3c\",\n-        \"type\": \"github\"\n-      },\n-      \"original\": {\n-        \"owner\": \"aylur\",\n-        \"repo\": \"ags\",\n-        \"type\": \"github\"\n-      }\n-    },\n-    \"astal\": {\n-      \"inputs\": {\n-        \"nixpkgs\": [\n-          \"hyprpanel\",\n-          \"ags\",\n-          \"nixpkgs\"\n-        ]\n-      },\n-      \"locked\": {\n-        \"lastModified\": 1735172721,\n-        \"narHash\": \"sha256-rtEAwGsHSppnkR3Qg3eRJ6Xh/F84IY9CrBBLzYabalY=\",\n-        \"owner\": \"aylur\",\n-        \"repo\": \"astal\",\n-        \"rev\": \"6c84b64efc736e039a8a10774a4a1bf772c37aa2\",\n-        \"type\": \"github\"\n-      },\n-      \"original\": {\n-        \"owner\": \"aylur\",\n-        \"repo\": \"astal\",\n-        \"type\": \"github\"\n-      }\n-    },\n     \"base16\": {\n       \"inputs\": {\n         \"fromYaml\": \"fromYaml\"\n@@ -144,6 +100,24 @@       }\n     },\n     \"flake-parts\": {\n       \"inputs\": {\n+        \"nixpkgs-lib\": \"nixpkgs-lib\"\n+      },\n+      \"locked\": {\n+        \"lastModified\": 1743550720,\n+        \"narHash\": \"sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=\",\n+        \"owner\": \"hercules-ci\",\n+        \"repo\": \"flake-parts\",\n+        \"rev\": \"c621e8422220273271f52058f618c94e405bb0f5\",\n+        \"type\": \"github\"\n+      },\n+      \"original\": {\n+        \"owner\": \"hercules-ci\",\n+        \"repo\": \"flake-parts\",\n+        \"type\": \"github\"\n+      }\n+    },\n+    \"flake-parts_2\": {\n+      \"inputs\": {\n         \"nixpkgs-lib\": [\n           \"stylix\",\n           \"nur\",\n@@ -294,11 +268,11 @@           \"nixpkgs\"\n         ]\n       },\n       \"locked\": {\n-        \"lastModified\": 1744659400,\n-        \"narHash\": \"sha256-q0wwsR/hvOjj1G8ogdudX5cU0IE/Vgvgjo9g9OpQv5U=\",\n+        \"lastModified\": 1744833442,\n+        \"narHash\": \"sha256-BBMWW2m64Grcc5FlXz74+vdkUyCJOfUGnl+VcS/4x44=\",\n         \"owner\": \"nix-community\",\n         \"repo\": \"home-manager\",\n-        \"rev\": \"5a096a8822cb98584c5dc4f2616dcd5ed394bfd7\",\n+        \"rev\": \"c6b75d69b6994ba68ec281bd36faebcc56097800\",\n         \"type\": \"github\"\n       },\n       \"original\": {\n@@ -361,27 +335,6 @@         \"type\": \"file\",\n         \"url\": \"https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js\"\n       }\n     },\n-    \"hyprpanel\": {\n-      \"inputs\": {\n-        \"ags\": \"ags\",\n-        \"nixpkgs\": [\n-          \"nixpkgs\"\n-        ]\n-      },\n-      \"locked\": {\n-        \"lastModified\": 1744513377,\n-        \"narHash\": \"sha256-2ocy+qAVxTBmaK8MpAy7mpKIH+DYEzwf+KzXZX83oZ4=\",\n-        \"owner\": \"Jas-SinghFSU\",\n-        \"repo\": \"HyprPanel\",\n-        \"rev\": \"42943b3def85d8787d703778951944c8e791202b\",\n-        \"type\": \"github\"\n-      },\n-      \"original\": {\n-        \"owner\": \"Jas-SinghFSU\",\n-        \"repo\": \"HyprPanel\",\n-        \"type\": \"github\"\n-      }\n-    },\n     \"ibm-plex-mono-src\": {\n       \"flake\": false,\n       \"locked\": {\n@@ -437,11 +390,11 @@           \"nixpkgs\"\n         ]\n       },\n       \"locked\": {\n-        \"lastModified\": 1744576613,\n-        \"narHash\": \"sha256-CE2fumC0tBUej8bz2yT5UnZ4fxj3JZB1KXFXXsuIww4=\",\n+        \"lastModified\": 1744895575,\n+        \"narHash\": \"sha256-Ks1EfhB3ZVYOo/QcBajuEayNui5G7NKuQGKqO0yOu1A=\",\n         \"ref\": \"refs/heads/master\",\n-        \"rev\": \"991d523bebb2d537b645e4934cfe348437108838\",\n-        \"revCount\": 468,\n+        \"rev\": \"c91caee0934f827e5a981cbf185372e709aa9ed3\",\n+        \"revCount\": 478,\n         \"type\": \"git\",\n         \"url\": \"https://tangled.sh/@tangled.sh/core\"\n       },\n@@ -450,6 +403,21 @@         \"type\": \"git\",\n         \"url\": \"https://tangled.sh/@tangled.sh/core\"\n       }\n     },\n+    \"lite-config\": {\n+      \"locked\": {\n+        \"lastModified\": 1723691425,\n+        \"narHash\": \"sha256-xOroQo/+CAtocvJQsGPE5ukr1Btp72xlcWPB4tBZp6M=\",\n+        \"owner\": \"yelite\",\n+        \"repo\": \"lite-config\",\n+        \"rev\": \"34357ad12ad0a66b2de55a2457159bda36c71a06\",\n+        \"type\": \"github\"\n+      },\n+      \"original\": {\n+        \"owner\": \"yelite\",\n+        \"repo\": \"lite-config\",\n+        \"type\": \"github\"\n+      }\n+    },\n     \"lucide-src\": {\n       \"flake\": false,\n       \"locked\": {\n@@ -463,21 +431,6 @@         \"type\": \"tarball\",\n         \"url\": \"https://github.com/lucide-icons/lucide/releases/download/0.483.0/lucide-icons-0.483.0.zip\"\n       }\n     },\n-    \"nixos-hardware\": {\n-      \"locked\": {\n-        \"lastModified\": 1744633460,\n-        \"narHash\": \"sha256-fbWE4Xpw6eH0Q6in+ymNuDwTkqmFmtxcQEmtRuKDTTk=\",\n-        \"owner\": \"nixos\",\n-        \"repo\": \"nixos-hardware\",\n-        \"rev\": \"9a049b4a421076d27fee3eec664a18b2066824cb\",\n-        \"type\": \"github\"\n-      },\n-      \"original\": {\n-        \"owner\": \"nixos\",\n-        \"repo\": \"nixos-hardware\",\n-        \"type\": \"github\"\n-      }\n-    },\n     \"nixpkgs\": {\n       \"locked\": {\n         \"lastModified\": 1744463964,\n@@ -494,9 +447,24 @@         \"repo\": \"nixpkgs\",\n         \"type\": \"github\"\n       }\n     },\n+    \"nixpkgs-lib\": {\n+      \"locked\": {\n+        \"lastModified\": 1743296961,\n+        \"narHash\": \"sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=\",\n+        \"owner\": \"nix-community\",\n+        \"repo\": \"nixpkgs.lib\",\n+        \"rev\": \"e4822aea2a6d1cdd36653c134cacfd64c97ff4fa\",\n+        \"type\": \"github\"\n+      },\n+      \"original\": {\n+        \"owner\": \"nix-community\",\n+        \"repo\": \"nixpkgs.lib\",\n+        \"type\": \"github\"\n+      }\n+    },\n     \"nur\": {\n       \"inputs\": {\n-        \"flake-parts\": \"flake-parts\",\n+        \"flake-parts\": \"flake-parts_2\",\n         \"nixpkgs\": [\n           \"stylix\",\n           \"nixpkgs\"\n@@ -519,10 +487,10 @@       }\n     },\n     \"root\": {\n       \"inputs\": {\n+        \"flake-parts\": \"flake-parts\",\n         \"home-manager\": \"home-manager\",\n-        \"hyprpanel\": \"hyprpanel\",\n         \"knotserver\": \"knotserver\",\n-        \"nixos-hardware\": \"nixos-hardware\",\n+        \"lite-config\": \"lite-config\",\n         \"nixpkgs\": \"nixpkgs\",\n         \"stylix\": \"stylix\",\n         \"zen-browser\": \"zen-browser\"\n@@ -552,11 +520,11 @@         \"tinted-tmux\": \"tinted-tmux\",\n         \"tinted-zed\": \"tinted-zed\"\n       },\n       \"locked\": {\n-        \"lastModified\": 1744572782,\n-        \"narHash\": \"sha256-CFNluxLqxmDPQYxi37nBd4wrpB0lI4Os8nRA7UWAJK0=\",\n+        \"lastModified\": 1744668092,\n+        \"narHash\": \"sha256-XDmpI3ywMkypsHKRF2am6BzZ5OjwpQMulAe8L87Ek8U=\",\n         \"owner\": \"danth\",\n         \"repo\": \"stylix\",\n-        \"rev\": \"042db377bccc99b1a724b076c89ba803e411d889\",\n+        \"rev\": \"38aff11a7097f4da6b95d4c4d2c0438f25a08d52\",\n         \"type\": \"github\"\n       },\n       \"original\": {\n@@ -692,11 +660,11 @@           \"nixpkgs\"\n         ]\n       },\n       \"locked\": {\n-        \"lastModified\": 1744657060,\n-        \"narHash\": \"sha256-XOPpnwypaigN7TnRcIkk8PIoWIWg6ZGEWaGYL5e5ShA=\",\n+        \"lastModified\": 1744841864,\n+        \"narHash\": \"sha256-KytcQDopqwkBy65UaRdL9Aq/knlaZ7di9Qc1YPMsm58=\",\n         \"owner\": \"0xc000022070\",\n         \"repo\": \"zen-browser-flake\",\n-        \"rev\": \"3c15b3d88648349acbbf5a1c0564edd35544e4d9\",\n+        \"rev\": \"9ac562b3d3b8dc06d0663e0028eff8c66ff8b390\",\n         \"type\": \"github\"\n       },\n       \"original\": {\ndiff --git a/flake.nix b/flake.nix\nindex 8334e00d16f86f3e37015ef8d01926e00ba9787c..afb3ac87110d5da55a85964c72116e3a43442edb 100644\n--- a/flake.nix\n+++ b/flake.nix\n@@ -1,15 +1,10 @@\n {\n-  description = \"Michal's NixOS Flake\";\n-\n   inputs = {\n     nixpkgs.url = \"github:nixos/nixpkgs/nixos-unstable\";\n-    nixos-hardware.url = \"github:nixos/nixos-hardware\";\n+    flake-parts.url = \"github:hercules-ci/flake-parts\";\n+    lite-config.url = \"github:yelite/lite-config\";\n     home-manager = {\n       url = \"github:nix-community/home-manager\";\n-      inputs.nixpkgs.follows = \"nixpkgs\";\n-    };\n-    hyprpanel = {\n-      url = \"github:Jas-SinghFSU/HyprPanel\";\n       inputs.nixpkgs.follows = \"nixpkgs\";\n     };\n     knotserver = {\n@@ -26,141 +21,49 @@       inputs.nixpkgs.follows = \"nixpkgs\";\n     };\n   };\n \n-  outputs = {\n-    nixpkgs,\n-    nixos-hardware,\n-    home-manager,\n-    ...\n-  } @ inputs: let\n-    modules = {\n-      home = {\n-        common = [./users/michal/shell.nix ./users/michal/base.nix];\n-        dev = [./users/michal/git.nix ./users/michal/gpg.nix];\n-      };\n-      nixos = {\n-        common = [\n-          ./common/nix.nix\n-          ./common/personal.nix\n-        ];\n-        dev = [\n-          ./common/dev/podman.nix\n-          ./common/dev/zed.nix\n-        ];\n-        desktops = {\n-          common = [\n-            ./common/desktop/media.nix\n-            ./common/desktop/gui-apps.nix\n+  outputs = inputs @ {flake-parts, ...}:\n+    flake-parts.lib.mkFlake {inherit inputs;} ({inputs, ...}: {\n+      imports = [\n+        inputs.lite-config.flakeModule\n+      ];\n+\n+      config = {\n+        lite-config = {\n+          nixpkgs = {\n+            config = {\n+              allowUnfree = true;\n+            };\n+            overlays = [];\n+          };\n+\n+          systemModules = [\n+            ./nixos/common\n             inputs.stylix.nixosModules.stylix\n-            ./common/desktop/stylix.nix\n+            inputs.knotserver.nixosModules.knotserver\n+            inputs.home-manager.nixosModules.home-manager\n+            {\n+              home-manager = {\n+                useGlobalPkgs = true;\n+                useUserPackages = true;\n+                users.michal = {};\n+                sharedModules = [./home-manager];\n+              };\n+            }\n           ];\n-          hyprland =\n-            [\n-              ./common/desktop/hyprland.nix\n-              ./overlays/hyprpanel.nix\n-            ]\n-            ++ modules.nixos.desktops.common;\n-          gnome =\n-            [\n-              ./common/desktop/gnome.nix\n-            ]\n-            ++ modules.nixos.desktops.common;\n-        };\n-        server = [\n-          ./common/dev/podman.nix\n-          ./services/common.nix\n-          ./services/pds.nix\n-          ./services/knotserver.nix\n-          ./services/bots.nix\n-          ./services/atmo.lol.nix\n-          ./services/vaultwarden.nix\n-          ./services/syncthing.nix\n-          ./services/matrix.nix\n-          ./services/cockpit.nix\n-        ];\n-      };\n-    };\n+          homeModules = [./home-manager];\n+          hostModuleDir = ./nixos;\n \n-    pkgs = with nixpkgs.legacyPackages; {\n-      inherit x86_64-linux;\n-      inherit aarch64-linux;\n-    };\n-\n-    defaultModules = x:\n-      nixpkgs.lib.forEach [\"base.nix\" \"hardware.nix\"] (\n-        mod: (./. + \"/devices\" + (\"/\" + x) + (\"/\" + mod))\n-      )\n-      ++ [./devices/common.nix]\n-      ++ [\n-        home-manager.nixosModules.home-manager\n-        {\n-          home-manager = {\n-            useGlobalPkgs = true;\n-            useUserPackages = true;\n-            users.michal = {};\n-            sharedModules = modules.home.common ++ modules.home.dev;\n+          hosts = {\n+            tabris.system = \"x86_64-linux\";\n+            israfel-alpha.system = \"aarch64-linux\";\n+            israfel-beta.system = \"aarch64-linux\";\n+            ireul.system = \"riscv64-linux\";\n           };\n-        }\n-      ];\n-  in {\n-    homeConfigurations = {\n-      \"michal\" = home-manager.lib.homeManagerConfiguration {\n-        pkgs = pkgs.x86_64-linux;\n-        modules =\n-          modules.home.common\n-          ++ modules.home.dev;\n-      };\n-      \"michal@israfel-beta\" = home-manager.lib.homeManagerConfiguration {\n-        pkgs = pkgs.aarch64-linux;\n-        modules =\n-          modules.home.common\n-          ++ modules.home.dev;\n-      };\n-      \"michal@israfel-alpha\" = home-manager.lib.homeManagerConfiguration {\n-        pkgs = pkgs.aarch64-linux;\n-        modules =\n-          modules.home.common\n-          ++ modules.home.dev;\n-      };\n-    };\n-\n-    nixosConfigurations = {\n-      \"tabris\" = nixpkgs.lib.nixosSystem {\n-        system = \"x86_64-linux\";\n-        specialArgs = {inherit inputs;};\n-        modules =\n-          defaultModules \"tabris\"\n-          ++ modules.nixos.desktops.gnome\n-          ++ modules.nixos.common\n-          ++ modules.nixos.dev\n-          ++ [{environment.systemPackages = [inputs.zen-browser.packages.x86_64-linux.default];}];\n+        };\n+        perSystem = {pkgs, ...}: {\n+          formatter = pkgs.alejandra;\n+          devShells.default = pkgs.mkShell {buildInputs = with pkgs; [statix deadnix];};\n+        };\n       };\n-      \"israfel-beta\" = nixpkgs.lib.nixosSystem {\n-        system = \"aarch64-linux\";\n-        specialArgs = {inherit inputs;};\n-        modules =\n-          defaultModules \"israfel-beta\"\n-          ++ modules.nixos.desktops.hyprland\n-          ++ modules.nixos.common\n-          ++ modules.nixos.dev;\n-      };\n-      \"israfel-alpha\" = nixpkgs.lib.nixosSystem {\n-        system = \"aarch64-linux\";\n-        modules =\n-          defaultModules \"israfel-alpha\"\n-          ++ modules.nixos.server\n-          ++ modules.nixos.common\n-          ++ [inputs.knotserver.nixosModules.knotserver];\n-      };\n-    };\n-\n-    devShells = {\n-      x86_64-linux.default = pkgs.x86_64-linux.mkShell {buildInputs = with pkgs.x86_64-linux; [statix];};\n-      aarch64-linux.default = pkgs.aarch64-linux.mkShell {buildInputs = with pkgs.aarch64-linux; [statix];};\n-    };\n-\n-    formatter = {\n-      x86_64-linux = pkgs.x86_64-linux.alejandra;\n-      aarch64-linux = pkgs.aarch64-linux.alejandra;\n-    };\n-  };\n+    });\n }\ndiff --git a/home-manager/base.nix b/home-manager/base.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..eb7f6baffa7b391ac3b8c3a8d8e8ec924ab25de0\n--- /dev/null\n+++ b/home-manager/base.nix\n@@ -0,0 +1,14 @@\n+{lib, ...}: {\n+  home = {\n+    username = lib.mkDefault \"michal\";\n+    homeDirectory = lib.mkDefault \"/home/michal\";\n+    stateVersion = lib.mkDefault \"24.11\";\n+  };\n+\n+  home.file.\".face\".source = ./var/pfp.png;\n+  home.file.\".wallpaper.png\".source = ./var/wallpaper.png;\n+\n+  home.sessionVariables.NIXOS_OZONE_WL = \"1\";\n+\n+  stylix.targets.zed.enable = true;\n+}\ndiff --git a/home-manager/default.nix b/home-manager/default.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..cb7fc0ee2c7bb05d44ef8c11a24a923cddba0038\n--- /dev/null\n+++ b/home-manager/default.nix\n@@ -0,0 +1,8 @@\n+{\n+  imports = [\n+    ./base.nix\n+    ./shell.nix\n+    ./git.nix\n+    ./gpg.nix\n+  ];\n+}\ndiff --git a/home-manager/git.nix b/home-manager/git.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..e1ad0d1f502421d5e835d216a57bf61dac153dd7\n--- /dev/null\n+++ b/home-manager/git.nix\n@@ -0,0 +1,19 @@\n+{pkgs, ...}: {\n+  programs.git = {\n+    enable = true;\n+    userName = \"Michal S.\";\n+    userEmail = \"me@mchal.lol\";\n+    signing = {\n+      key = \"3958C1974D0E77ED3C6B083826B6F2A07E8E1A2B\";\n+      signByDefault = true;\n+    };\n+    extraConfig = {\n+      safe.directory = \"*\";\n+      init.defaultBranch = \"main\";\n+    };\n+  };\n+\n+  home.packages = with pkgs; [\n+    git-crypt\n+  ];\n+}\ndiff --git a/home-manager/gpg.nix b/home-manager/gpg.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..aedeac54177159c0711ffc75a5dd566ec16b4b84\n--- /dev/null\n+++ b/home-manager/gpg.nix\n@@ -0,0 +1,15 @@\n+{\n+  programs.gpg = {\n+    enable = true;\n+    scdaemonSettings = {\n+      card-timeout = \"5\";\n+      disable-ccid = true;\n+    };\n+  };\n+\n+  services.gpg-agent = {\n+    enable = true;\n+    enableSshSupport = true;\n+    enableScDaemon = true;\n+  };\n+}\ndiff --git a/home-manager/shell.nix b/home-manager/shell.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..31793e2d1839b9f1947f45683c8dd541a499a67c\n--- /dev/null\n+++ b/home-manager/shell.nix\n@@ -0,0 +1,101 @@\n+{pkgs, ...}: {\n+  programs = {\n+    fish = {\n+      enable = true;\n+      functions = {\n+        fish_greeting = \"\";\n+      };\n+      shellAliases = {\n+        cat = \"bat\";\n+        cd = \"z\";\n+        htop = \"btop\";\n+      };\n+      shellAbbrs = {nix-shell = \"nix-shell --run fish\";};\n+      shellInit = ''\n+        set -x HOSTNAME (hostname)\n+\n+        set DIRENV_LOG_FORMAT \"\"\n+        set SHELL ${pkgs.fish.out}/bin/fish\n+      '';\n+      plugins = [\n+        {\n+          name = \"tide\";\n+          src = pkgs.fetchFromGitHub {\n+            owner = \"IlanCosman\";\n+            repo = \"tide\";\n+            rev = \"d715de0a2ab4e33f202d30f5c6bd8da9cfc6c310\";\n+            sha256 = \"6ys1SEfcWO0cRRNawrpnUU9tPJVVZ0E6RcPmrE9qG5g=\";\n+          };\n+        }\n+\n+        {\n+          name = \"bass\";\n+          src = pkgs.fetchFromGitHub {\n+            owner = \"edc\";\n+            repo = \"bass\";\n+            rev = \"2fd3d2157d5271ca3575b13daec975ca4c10577a\";\n+            sha256 = \"fl4/Pgtkojk5AE52wpGDnuLajQxHoVqyphE90IIPYFU=\";\n+          };\n+        }\n+\n+        {\n+          name = \"fish-plugin-sudo\";\n+          src = pkgs.fetchFromGitHub {\n+            owner = \"eth-p\";\n+            repo = \"fish-plugin-sudo\";\n+            rev = \"e153fdea568cd370312f9c0809fac15fc7582bfd\";\n+            sha256 = \"bTK34G+J6AOoYmhOIG0XNXV2SN/u789+epXMBN3lnu4=\";\n+          };\n+        }\n+\n+        {\n+          name = \"puffer-fish\";\n+          src = pkgs.fetchFromGitHub {\n+            owner = \"nickeb96\";\n+            repo = \"puffer-fish\";\n+            rev = \"df333fff5130ef8bf153c9bafbf0661534f81d9c\";\n+            sha256 = \"VtFrRzI476Hkutwwgkkc9hoiCma6Xyknm7xHeghrLxo=\";\n+          };\n+        }\n+      ];\n+    };\n+    fzf = {\n+      enable = true;\n+      enableFishIntegration = true;\n+    };\n+    zoxide = {\n+      enable = true;\n+      enableFishIntegration = true;\n+    };\n+    direnv = {\n+      enable = true;\n+      nix-direnv.enable = true;\n+    };\n+    atuin = {\n+      enable = true;\n+      daemon.enable = true;\n+      enableFishIntegration = true;\n+      settings = {\n+        dialect = \"uk\";\n+        workspaces = true;\n+      };\n+    };\n+  };\n+\n+  services.gpg-agent.enableFishIntegration = true;\n+\n+  home.packages = with pkgs; [\n+    bat\n+    btop\n+    duf\n+    zellij\n+    zoxide\n+    neofetch\n+    ncdu\n+\n+    hostname\n+    ncurses\n+\n+    vim\n+  ];\n+}\ndiff --git a/home-manager/var/pfp.png b/home-manager/var/pfp.png\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..cc8eef3c51e064a08b020365f25973f862e900b7\nBinary files /dev/null and b/home-manager/var/pfp.png differ\ndiff --git a/home-manager/var/wallpaper.png b/home-manager/var/wallpaper.png\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..39620ee3ec67a5012d88688f520e953b72e8334d\nBinary files /dev/null and b/home-manager/var/wallpaper.png differ\ndiff --git a/nixos/common/default.nix b/nixos/common/default.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..ccad15c863df81060bc05cd42a4959f113d33945\n--- /dev/null\n+++ b/nixos/common/default.nix\n@@ -0,0 +1,37 @@\n+{lib, ...}: {\n+  imports = [\n+    ./nix.nix\n+    ./personal.nix\n+    ./dev.nix\n+    ./stylix.nix\n+  ];\n+\n+  boot = {\n+    tmp.cleanOnBoot = true;\n+    loader = {\n+      systemd-boot.enable = lib.mkDefault true;\n+      efi.canTouchEfiVariables = lib.mkDefault true;\n+    };\n+  };\n+\n+  networking = {\n+    networkmanager.enable = true;\n+    useDHCP = lib.mkDefault true;\n+  };\n+\n+  time.timeZone = \"Europe/London\";\n+\n+  services = {\n+    pcscd.enable = true;\n+    gnome.gnome-keyring.enable = lib.mkForce false;\n+  };\n+\n+  programs.gnupg.agent.enable = true;\n+\n+  zramSwap.enable = true;\n+\n+  hardware.graphics = {\n+    enable = lib.mkDefault true;\n+    enable32Bit = lib.mkDefault true;\n+  };\n+}\ndiff --git a/nixos/common/dev.nix b/nixos/common/dev.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..ae9796d83ffc0229d8ff1718d16ca1d8ca543c33\n--- /dev/null\n+++ b/nixos/common/dev.nix\n@@ -0,0 +1,9 @@\n+{pkgs, ...}: {\n+  virtualisation = {\n+    podman = {\n+      enable = true;\n+      dockerCompat = true;\n+    };\n+  };\n+  environment.systemPackages = with pkgs; [distrobox zed-editor];\n+}\ndiff --git a/nixos/common/nix.nix b/nixos/common/nix.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..08f875e5c741e298f43d80ae00201ba0cfab5c4b\n--- /dev/null\n+++ b/nixos/common/nix.nix\n@@ -0,0 +1,28 @@\n+{\n+  nix = {\n+    settings = {\n+      auto-optimise-store = true;\n+      trusted-users = [\"root\" \"michal\"];\n+    };\n+    gc = {\n+      automatic = true;\n+      dates = \"19:00\";\n+      persistent = true;\n+      options = \"--delete-older-than 7d\";\n+    };\n+    settings = {\n+      substituters = [\n+        \"https://cache.nichi.co\"\n+        \"https://cache.ztier.in\"\n+      ];\n+      trusted-public-keys = [\n+        \"hydra.nichi.co-0:P3nkYHhmcLR3eNJgOAnHDjmQLkfqheGyhZ6GLrUVHwk=\"\n+        \"cache.ztier.link-1:3P5j2ZB9dNgFFFVkCQWT3mh0E+S3rIWtZvoql64UaXM=\"\n+      ];\n+      experimental-features = [\n+        \"nix-command\"\n+        \"flakes\"\n+      ];\n+    };\n+  };\n+}\ndiff --git a/nixos/common/personal.nix b/nixos/common/personal.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..288df5b1d8fb03fb8e839790b26d3a015b183444\n--- /dev/null\n+++ b/nixos/common/personal.nix\n@@ -0,0 +1,16 @@\n+{pkgs, ...}: {\n+  users.users.michal = {\n+    description = \"Michal S.\";\n+    shell = pkgs.fish;\n+    isNormalUser = true;\n+    extraGroups = [\"wheel\" \"users\" \"audio\" \"video\" \"networkmanager\" \"podman\" \"docker\" \"syncthing\"];\n+    uid = 1000;\n+    openssh.authorizedKeys.keys = [\n+      \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHxah5pnxmk+P7HtwRsryDoAHZsDs5RcGP9IPCNg1KFe cardno:FFFE_DE635855\"\n+    ];\n+  };\n+\n+  programs.fish.enable = true;\n+\n+  security.sudo.extraConfig = \"Defaults pwfeedback\";\n+}\ndiff --git a/nixos/common/stylix.nix b/nixos/common/stylix.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..2222d29a5f17e74141aefc744f945d657bdf6776\n--- /dev/null\n+++ b/nixos/common/stylix.nix\n@@ -0,0 +1,10 @@\n+{pkgs, ...}: {\n+  stylix = {\n+    enable = true;\n+    image = pkgs.fetchurl {\n+      url = \"https://i.imgur.com/uMrsMXh.jpg\";\n+      sha256 = \"G0OZr+i8tI0yzCKaXzrsD7+a8NoAWRMAXSC7XUPPbHo=\";\n+    };\n+    polarity = \"dark\";\n+  };\n+}\ndiff --git a/nixos/desktop/default.nix b/nixos/desktop/default.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..59baae66711199dfa63f821de58048ad5ad68411\n--- /dev/null\n+++ b/nixos/desktop/default.nix\n@@ -0,0 +1,9 @@\n+{\n+  inputs,\n+  hostPlatform,\n+  ...\n+}: {\n+  imports =\n+    [./gnome.nix ./gui-apps.nix ./media.nix]\n+    ++ [{environment.systemPackages = [inputs.zen-browser.packages.\"${hostPlatform.system}\".default];}];\n+}\ndiff --git a/nixos/desktop/gnome.nix b/nixos/desktop/gnome.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..75876d8c4c97ad2af9264bec2d46c551c5b4c9bb\n--- /dev/null\n+++ b/nixos/desktop/gnome.nix\n@@ -0,0 +1,36 @@\n+{pkgs, ...}: {\n+  services.xserver = {\n+    enable = true;\n+    displayManager.gdm.enable = true;\n+    desktopManager.gnome.enable = true;\n+  };\n+\n+  environment.systemPackages = with pkgs; [\n+    gnomeExtensions.blur-my-shell\n+    gnomeExtensions.caffeine\n+    gnomeExtensions.grand-theft-focus\n+    gnomeExtensions.valent\n+    gnomeExtensions.pano\n+    gnomeExtensions.hot-edge\n+    gnomeExtensions.top-bar-organizer\n+    gnomeExtensions.weather-oclock\n+    gnomeExtensions.forge\n+    gnomeExtensions.bluetooth-battery-meter\n+\n+    pkgs.gnome-tweaks\n+    pkgs.gnome-software\n+  ];\n+\n+  xdg.portal = {\n+    enable = true;\n+    extraPortals = with pkgs; [xdg-desktop-portal-gtk];\n+  };\n+\n+  programs = {\n+    kdeconnect = {\n+      enable = true;\n+      package = pkgs.valent;\n+    };\n+    gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;\n+  };\n+}\ndiff --git a/nixos/desktop/gui-apps.nix b/nixos/desktop/gui-apps.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..94359a633f3004a1145829872527c45403d38653\n--- /dev/null\n+++ b/nixos/desktop/gui-apps.nix\n@@ -0,0 +1,17 @@\n+{pkgs, ...}: {\n+  environment.systemPackages = with pkgs; [\n+    vesktop\n+    mullvad-vpn\n+    obsidian\n+  ];\n+\n+  xdg.portal.enable = true;\n+\n+  services = {\n+    mullvad-vpn = {\n+      enable = true;\n+      package = pkgs.mullvad-vpn;\n+    };\n+    flatpak.enable = true;\n+  };\n+}\ndiff --git a/nixos/desktop/media.nix b/nixos/desktop/media.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..74d397345a8c3d0600256e0d3bd6057c15ce88e9\n--- /dev/null\n+++ b/nixos/desktop/media.nix\n@@ -0,0 +1,38 @@\n+{pkgs, ...}: {\n+  security.rtkit.enable = true;\n+  services.pipewire = {\n+    enable = true;\n+    alsa = {\n+      enable = true;\n+      support32Bit = true;\n+    };\n+    pulse.enable = true;\n+    jack.enable = true;\n+  };\n+\n+  services = {\n+    printing = {\n+      enable = true;\n+      drivers = with pkgs; [epson-escpr epson-escpr2];\n+    };\n+    avahi = {\n+      enable = true;\n+      nssmdns4 = true;\n+    };\n+    syncthing = {\n+      enable = true;\n+      user = \"michal\";\n+    };\n+  };\n+\n+  hardware.bluetooth.enable = true;\n+\n+  fonts.packages = with pkgs; [\n+    noto-fonts\n+    noto-fonts-cjk-sans\n+    noto-fonts-emoji\n+    nerd-fonts.jetbrains-mono\n+  ];\n+\n+  boot.plymouth.enable = true;\n+}\ndiff --git a/nixos/israfel-alpha/base.nix b/nixos/israfel-alpha/base.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..cdfc853a1cc7bd73c378c7bc236b44e96825051e\n--- /dev/null\n+++ b/nixos/israfel-alpha/base.nix\n@@ -0,0 +1,22 @@\n+{pkgs, ...}: {\n+  boot = {\n+    kernelPackages = pkgs.linuxPackages_rpi4;\n+    loader.efi.canTouchEfiVariables = false;\n+  };\n+\n+  networking = {\n+    hostName = \"israfel-alpha\";\n+    firewall = {\n+      enable = true;\n+      allowedTCPPorts = [22];\n+    };\n+  };\n+\n+  services = {\n+    sshd.enable = true;\n+  };\n+\n+  hardware.graphics.enable32Bit = false;\n+\n+  system.stateVersion = \"24.11\";\n+}\ndiff --git a/nixos/israfel-alpha/default.nix b/nixos/israfel-alpha/default.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..a61da37d772300b94eab31cceb0b2888a2fb7940\n--- /dev/null\n+++ b/nixos/israfel-alpha/default.nix\n@@ -0,0 +1,3 @@\n+{\n+  imports = [./base.nix ./hardware.nix ../services];\n+}\ndiff --git a/nixos/israfel-alpha/hardware.nix b/nixos/israfel-alpha/hardware.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..dd3d747d941cf9404dac431f55005fbdd65765b1\n--- /dev/null\n+++ b/nixos/israfel-alpha/hardware.nix\n@@ -0,0 +1,33 @@\n+{\n+  lib,\n+  modulesPath,\n+  ...\n+}: {\n+  imports = [\n+    (modulesPath + \"/installer/scan/not-detected.nix\")\n+  ];\n+\n+  boot = {\n+    initrd.availableKernelModules = [];\n+    initrd.kernelModules = [];\n+    kernelModules = [];\n+    extraModulePackages = [];\n+  };\n+\n+  fileSystems.\"/\" = {\n+    device = \"/dev/disk/by-uuid/5402aba1-f628-4073-a413-4b17acc5fb77\";\n+    fsType = \"ext4\";\n+  };\n+\n+  fileSystems.\"/boot\" = {\n+    device = \"/dev/disk/by-uuid/6E39-C5F2\";\n+    fsType = \"vfat\";\n+    options = [\"fmask=0077\" \"dmask=0077\"];\n+  };\n+\n+  swapDevices = [\n+    {device = \"/dev/disk/by-uuid/4038c37b-ee3c-4ecd-a598-34172426e3f4\";}\n+  ];\n+\n+  nixpkgs.hostPlatform = lib.mkDefault \"aarch64-linux\";\n+}\ndiff --git a/nixos/israfel-beta/base.nix b/nixos/israfel-beta/base.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..49e1426af5ae7abf45261c43deb6890955afafb7\n--- /dev/null\n+++ b/nixos/israfel-beta/base.nix\n@@ -0,0 +1,23 @@\n+{pkgs, ...}: {\n+  boot = {\n+    kernelPackages = pkgs.linuxPackages_rpi4;\n+    loader.efi.canTouchEfiVariables = false;\n+    kernelParams = [\"8250.nr_uarts=11\" \"console=ttyAMA10,9600\" \"console=tty0\"];\n+  };\n+\n+  networking = {\n+    hostName = \"israfel-beta\";\n+    firewall = {\n+      enable = true;\n+      allowedTCPPorts = [22];\n+    };\n+  };\n+\n+  services = {\n+    sshd.enable = true;\n+  };\n+\n+  hardware.graphics.enable32Bit = false;\n+\n+  system.stateVersion = \"24.11\";\n+}\ndiff --git a/nixos/israfel-beta/default.nix b/nixos/israfel-beta/default.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..7edd322662083f8a838329ac10403af0f7618e25\n--- /dev/null\n+++ b/nixos/israfel-beta/default.nix\n@@ -0,0 +1,3 @@\n+{\n+  imports = [./base.nix ./hardware.nix ../desktop];\n+}\ndiff --git a/nixos/israfel-beta/hardware.nix b/nixos/israfel-beta/hardware.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..ece0b7eed634f3b2ab15c4f5065e3e092101f5c9\n--- /dev/null\n+++ b/nixos/israfel-beta/hardware.nix\n@@ -0,0 +1,35 @@\n+{\n+  lib,\n+  modulesPath,\n+  ...\n+}: {\n+  imports = [\n+    (modulesPath + \"/installer/scan/not-detected.nix\")\n+  ];\n+\n+  boot = {\n+    initrd.availableKernelModules = [];\n+    initrd.kernelModules = [];\n+    kernelModules = [];\n+    extraModulePackages = [];\n+  };\n+\n+  fileSystems = {\n+    \"/\" = {\n+      device = \"/dev/disk/by-uuid/54ec595b-ff14-4288-80c5-1a9b24208314\";\n+      fsType = \"ext4\";\n+    };\n+\n+    \"/boot\" = {\n+      device = \"/dev/disk/by-uuid/ACA4-FCB6\";\n+      fsType = \"vfat\";\n+      options = [\"fmask=0077\" \"dmask=0077\"];\n+    };\n+  };\n+\n+  swapDevices = [\n+    {device = \"/dev/disk/by-uuid/55717be0-0288-48af-97e2-4fba12020a96\";}\n+  ];\n+\n+  nixpkgs.hostPlatform = lib.mkDefault \"aarch64-linux\";\n+}\ndiff --git a/nixos/secrets/.knot.env b/nixos/secrets/.knot.env\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..008979b3e8acee12aa3d1a33f4c9a8f0cdd0e22a\nBinary files /dev/null and b/nixos/secrets/.knot.env differ\ndiff --git a/nixos/secrets/bots/karxbot_private/characters.toml b/nixos/secrets/bots/karxbot_private/characters.toml\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..1a2e28b556b146c2bf944aba62be98884e0dc3d8\nBinary files /dev/null and b/nixos/secrets/bots/karxbot_private/characters.toml differ\ndiff --git a/nixos/secrets/bots/karxbot_private/config.toml b/nixos/secrets/bots/karxbot_private/config.toml\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..3f11bf5662d2e54c0e24c9f0b46851d83bc26663\nBinary files /dev/null and b/nixos/secrets/bots/karxbot_private/config.toml differ\ndiff --git a/nixos/secrets/bots/shanbot/config.toml b/nixos/secrets/bots/shanbot/config.toml\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..43675eff085cc5e9a5ddffa95d976007b8c7325d\nBinary files /dev/null and b/nixos/secrets/bots/shanbot/config.toml differ\ndiff --git a/nixos/secrets/pds.env b/nixos/secrets/pds.env\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..13350df41b2d5a366ee38aad1ce91ab7c3ed254b\nBinary files /dev/null and b/nixos/secrets/pds.env differ\ndiff --git a/nixos/services/atmo.lol.nix b/nixos/services/atmo.lol.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..b4505f046634a1b0958158e8b6327d9f3f7d6909\n--- /dev/null\n+++ b/nixos/services/atmo.lol.nix\n@@ -0,0 +1,21 @@\n+{\n+  virtualisation.oci-containers.containers = {\n+    atmolol_frontend = {\n+      image = \"atmolol_frontend:latest\";\n+      ports = [\"8001:3000\"];\n+      networks = [\"atproto\"];\n+      autoStart = true;\n+    };\n+    atmolol_backend = {\n+      image = \"atmolol_backend:latest\";\n+      ports = [\"8002:3000\"];\n+      networks = [\"atproto\"];\n+      autoStart = true;\n+    };\n+  };\n+\n+  services.caddy.virtualHosts = {\n+    \"www.atmo.lol\".extraConfig = \"reverse_proxy http://localhost:8001\";\n+    \"atmo.lol\".extraConfig = \"reverse_proxy http://localhost:8002\";\n+  };\n+}\ndiff --git a/nixos/services/bots.nix b/nixos/services/bots.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..71be018705fc4961ab156cd85bc9016f43d488b9\n--- /dev/null\n+++ b/nixos/services/bots.nix\n@@ -0,0 +1,35 @@\n+{\n+  virtualisation.oci-containers.containers = {\n+    karxbot_private = {\n+      image = \"ayanamibot:latest\";\n+      volumes = [\n+        \"/opt/bots/karxbot_private/config.toml:/app/config.toml\"\n+        \"/opt/bots/karxbot_private/characters.toml:/app/characters.toml\"\n+        \"/opt/bots/karxbot_private/database:/app/database\"\n+      ];\n+      environment = {\n+        ENABLE_RP = \"1\";\n+      };\n+      autoStart = true;\n+    };\n+\n+    shanbot = {\n+      image = \"ayanamibot:latest\";\n+      volumes = [\n+        \"/opt/bots/shanbot/config.toml:/app/config.toml\"\n+        \"/opt/bots/shanbot/database:/app/database\"\n+      ];\n+      environment = {\n+        ENABLE_ROLES = \"1\";\n+        ENABLE_GAMBLING = \"1\";\n+        ENABLE_STARBOARD = \"1\";\n+      };\n+      autoStart = true;\n+    };\n+  };\n+\n+  system.activationScripts.copyBotEnvs = ''\n+    mkdir -p /opt/bots\n+    cp -r ${../secrets/bots}/* /opt/bots/.\n+  '';\n+}\ndiff --git a/nixos/services/cockpit.nix b/nixos/services/cockpit.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..83103581c108effc1d6a4cb8e1467c103f78a3f6\n--- /dev/null\n+++ b/nixos/services/cockpit.nix\n@@ -0,0 +1,6 @@\n+{\n+  services.cockpit = {\n+    enable = true;\n+    openFirewall = true;\n+  };\n+}\ndiff --git a/nixos/services/default.nix b/nixos/services/default.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..f66bb446d0d340ae54cf2e03b833443aa12c8296\n--- /dev/null\n+++ b/nixos/services/default.nix\n@@ -0,0 +1,15 @@\n+{\n+  imports = [\n+    ./atmo.lol.nix\n+    ./bots.nix\n+    ./cockpit.nix\n+    ./knotserver.nix\n+    ./matrix.nix\n+    ./pds.nix\n+    ./syncthing.nix\n+    ./vaultwarden.nix\n+  ];\n+\n+  services.caddy.enable = true;\n+  networking.firewall.allowedTCPPorts = [443 80];\n+}\ndiff --git a/nixos/services/knotserver.nix b/nixos/services/knotserver.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..c621cc316e493765593b2e2d24f468ece5fd38de\n--- /dev/null\n+++ b/nixos/services/knotserver.nix\n@@ -0,0 +1,15 @@\n+{\n+  services.tangled-knotserver = {\n+    enable = true;\n+    server = {\n+      hostname = \"knot.mchal.lol:5555\";\n+      listenAddr = \"0.0.0.0:5555\";\n+      secretFile = ../secrets/.knot.env;\n+    };\n+    stateDir = \"/opt/knot\";\n+  };\n+\n+  services.caddy.virtualHosts = {\n+    \"knot.mchal.lol\".extraConfig = \"reverse_proxy http://localhost:5555\";\n+  };\n+}\ndiff --git a/nixos/services/matrix.nix b/nixos/services/matrix.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..7f01a7ae3f5c9a7bd184a8ef974ca981eecc24c4\n--- /dev/null\n+++ b/nixos/services/matrix.nix\n@@ -0,0 +1,18 @@\n+{\n+  services.matrix-synapse = {\n+    enable = true;\n+    dataDir = \"/opt/synapse\";\n+    enableRegistrationScript = true;\n+    settings = {\n+      server_name = \"matrix.mchal.lol\";\n+      public_baseurl = \"https://matrix.mchal.lol\";\n+      database.name = \"sqlite3\";\n+    };\n+  };\n+\n+  services.caddy.virtualHosts = {\n+    \"matrix.mchal.lol\".extraConfig = ''\n+      reverse_proxy http://localhost:8008\n+    '';\n+  };\n+}\ndiff --git a/nixos/services/pds.nix b/nixos/services/pds.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..aa71887512f66717107797ccb4ef3679a3f96916\n--- /dev/null\n+++ b/nixos/services/pds.nix\n@@ -0,0 +1,16 @@\n+{\n+  services.pds = {\n+    enable = true;\n+    environmentFiles = [../secrets/pds.env];\n+    pdsadmin.enable = true;\n+    settings = {\n+      PDS_HOSTNAME = \"pds.mchal.lol\";\n+      PDS_PORT = 6010;\n+      PDS_SERVICE_HANDLE_DOMAINS = \".pds.mchal.lol\";\n+    };\n+  };\n+\n+  services.caddy.virtualHosts = {\n+    \"pds.mchal.lol\".extraConfig = \"reverse_proxy http://localhost:6010\";\n+  };\n+}\ndiff --git a/nixos/services/syncthing.nix b/nixos/services/syncthing.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..b6d5a64cc4ea8f04158672ad27d790ff668c1ba8\n--- /dev/null\n+++ b/nixos/services/syncthing.nix\n@@ -0,0 +1,15 @@\n+{\n+  services.syncthing = {\n+    enable = true;\n+    openDefaultPorts = true;\n+    dataDir = \"/opt/syncthing\";\n+  };\n+\n+  services.caddy.virtualHosts = {\n+    \"sync.mchal.lol\".extraConfig = ''\n+      reverse_proxy http://127.0.0.1:8384 {\n+        header_up Host {upstream_hostport}\n+      }\n+    '';\n+  };\n+}\ndiff --git a/nixos/services/vaultwarden.nix b/nixos/services/vaultwarden.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..f25dfe71b62895301a56813d18264c768e0050a7\n--- /dev/null\n+++ b/nixos/services/vaultwarden.nix\n@@ -0,0 +1,16 @@\n+{\n+  services = {\n+    vaultwarden = {\n+      enable = true;\n+      backupDir = \"/opt/vaultwarden\";\n+      config = {\n+        SIGNUPS_ALLOWED = false;\n+        ROCKET_ADDRESS = \"::1\";\n+        ROCKET_PORT = 8222;\n+      };\n+    };\n+    caddy.virtualHosts = {\n+      \"vault.mchal.lol\".extraConfig = \"reverse_proxy http://localhost:8222\";\n+    };\n+  };\n+}\ndiff --git a/nixos/tabris/base.nix b/nixos/tabris/base.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..38fad1dd49327624be7b54f1e3157ea013d91c7a\n--- /dev/null\n+++ b/nixos/tabris/base.nix\n@@ -0,0 +1,44 @@\n+{pkgs, ...}: {\n+  networking.hostName = \"tabris\";\n+\n+  time.timeZone = \"Europe/London\";\n+\n+  boot.loader.timeout = 0;\n+\n+  services.handheld-daemon = {\n+    enable = true;\n+    user = \"michal\";\n+  };\n+\n+  services.displayManager.autoLogin = {\n+    enable = true;\n+    user = \"michal\";\n+  };\n+\n+  programs = {\n+    steam.enable = true;\n+    gamemode.enable = true;\n+  };\n+\n+  environment.systemPackages = with pkgs; [\n+    steam-run\n+    modrinth-app\n+  ];\n+\n+  systemd.services.decky = {\n+    enable = true;\n+    wantedBy = [\"multi-user.target\"];\n+    serviceConfig = {\n+      Type = \"simple\";\n+      Restart = \"always\";\n+      KillMode = \"process\";\n+      TimeoutStopSec = 15;\n+      ExecStart = \"${pkgs.steam-run}/bin/steam-run /home/michal/homebrew/services/PluginLoader\";\n+      WorkingDirectory = \"/home/michal/homebrew\";\n+      Environment = [\"UNPRIVILEGED_PATH=/home/michal/homebew\" \"PRIVILIGED_PATH=/home/michal/homebrew\"];\n+      WantedBy = \"multi-user.target\";\n+    };\n+  };\n+\n+  system.stateVersion = \"24.11\";\n+}\ndiff --git a/nixos/tabris/default.nix b/nixos/tabris/default.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..7edd322662083f8a838329ac10403af0f7618e25\n--- /dev/null\n+++ b/nixos/tabris/default.nix\n@@ -0,0 +1,3 @@\n+{\n+  imports = [./base.nix ./hardware.nix ../desktop];\n+}\ndiff --git a/nixos/tabris/hardware.nix b/nixos/tabris/hardware.nix\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..75acb34306c440ebdd4aa4344f1b554b5151fe9d\n--- /dev/null\n+++ b/nixos/tabris/hardware.nix\n@@ -0,0 +1,42 @@\n+{\n+  config,\n+  lib,\n+  modulesPath,\n+  ...\n+}: {\n+  imports = [\n+    (modulesPath + \"/installer/scan/not-detected.nix\")\n+  ];\n+\n+  boot = {\n+    initrd.availableKernelModules = [\"nvme\" \"xhci_pci\" \"thunderbolt\" \"usbhid\" \"usb_storage\" \"sd_mod\" \"rtsx_pci_sdmmc\"];\n+    initrd.kernelModules = [];\n+    kernelModules = [\"kvm-amd\"];\n+    extraModulePackages = [];\n+  };\n+\n+  fileSystems.\"/\" = {\n+    device = \"/dev/disk/by-uuid/e72163c6-aa6a-4a7a-af69-dfab1eeb4fb9\";\n+    fsType = \"ext4\";\n+  };\n+\n+  fileSystems.\"/boot\" = {\n+    device = \"/dev/disk/by-uuid/EAF9-BC49\";\n+    fsType = \"vfat\";\n+    options = [\"fmask=0077\" \"dmask=0077\"];\n+  };\n+\n+  swapDevices = [\n+    {device = \"/dev/disk/by-uuid/928af3ff-8799-4728-85b1-adef70a04f03\";}\n+  ];\n+\n+  # Enables DHCP on each ethernet and wireless interface. In case of scripted networking\n+  # (the default) this is the recommended approach. When using systemd-networkd it's\n+  # still possible to use this option, but it's recommended to use it in conjunction\n+  # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.\n+  networking.useDHCP = lib.mkDefault true;\n+  # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;\n+\n+  nixpkgs.hostPlatform = lib.mkDefault \"x86_64-linux\";\n+  hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;\n+}\ndiff --git a/overlays/hyprpanel.nix b/overlays/hyprpanel.nix\ndeleted file mode 100644\nindex c61a737de69233a41672e4f8476c630682b015b9..0000000000000000000000000000000000000000\n--- a/overlays/hyprpanel.nix\n+++ /dev/null\n@@ -1,3 +0,0 @@\n-{inputs, ...}: {\n-  nixpkgs.overlays = [inputs.hyprpanel.overlay];\n-}\ndiff --git a/secrets/.knot.env b/secrets/.knot.env\ndeleted file mode 100644\nindex 008979b3e8acee12aa3d1a33f4c9a8f0cdd0e22a..0000000000000000000000000000000000000000\nBinary files a/secrets/.knot.env and /dev/null differ\ndiff --git a/secrets/bots/karxbot_private/characters.toml b/secrets/bots/karxbot_private/characters.toml\ndeleted file mode 100644\nindex 1a2e28b556b146c2bf944aba62be98884e0dc3d8..0000000000000000000000000000000000000000\nBinary files a/secrets/bots/karxbot_private/characters.toml and /dev/null differ\ndiff --git a/secrets/bots/karxbot_private/config.toml b/secrets/bots/karxbot_private/config.toml\ndeleted file mode 100644\nindex 3f11bf5662d2e54c0e24c9f0b46851d83bc26663..0000000000000000000000000000000000000000\nBinary files a/secrets/bots/karxbot_private/config.toml and /dev/null differ\ndiff --git a/secrets/bots/shanbot/config.toml b/secrets/bots/shanbot/config.toml\ndeleted file mode 100644\nindex 43675eff085cc5e9a5ddffa95d976007b8c7325d..0000000000000000000000000000000000000000\nBinary files a/secrets/bots/shanbot/config.toml and /dev/null differ\ndiff --git a/secrets/pds.env b/secrets/pds.env\ndeleted file mode 100644\nindex 13350df41b2d5a366ee38aad1ce91ab7c3ed254b..0000000000000000000000000000000000000000\nBinary files a/secrets/pds.env and /dev/null differ\ndiff --git a/services/atmo.lol.nix b/services/atmo.lol.nix\ndeleted file mode 100644\nindex b4505f046634a1b0958158e8b6327d9f3f7d6909..0000000000000000000000000000000000000000\n--- a/services/atmo.lol.nix\n+++ /dev/null\n@@ -1,21 +0,0 @@\n-{\n-  virtualisation.oci-containers.containers = {\n-    atmolol_frontend = {\n-      image = \"atmolol_frontend:latest\";\n-      ports = [\"8001:3000\"];\n-      networks = [\"atproto\"];\n-      autoStart = true;\n-    };\n-    atmolol_backend = {\n-      image = \"atmolol_backend:latest\";\n-      ports = [\"8002:3000\"];\n-      networks = [\"atproto\"];\n-      autoStart = true;\n-    };\n-  };\n-\n-  services.caddy.virtualHosts = {\n-    \"www.atmo.lol\".extraConfig = \"reverse_proxy http://localhost:8001\";\n-    \"atmo.lol\".extraConfig = \"reverse_proxy http://localhost:8002\";\n-  };\n-}\ndiff --git a/services/bots.nix b/services/bots.nix\ndeleted file mode 100644\nindex 71be018705fc4961ab156cd85bc9016f43d488b9..0000000000000000000000000000000000000000\n--- a/services/bots.nix\n+++ /dev/null\n@@ -1,35 +0,0 @@\n-{\n-  virtualisation.oci-containers.containers = {\n-    karxbot_private = {\n-      image = \"ayanamibot:latest\";\n-      volumes = [\n-        \"/opt/bots/karxbot_private/config.toml:/app/config.toml\"\n-        \"/opt/bots/karxbot_private/characters.toml:/app/characters.toml\"\n-        \"/opt/bots/karxbot_private/database:/app/database\"\n-      ];\n-      environment = {\n-        ENABLE_RP = \"1\";\n-      };\n-      autoStart = true;\n-    };\n-\n-    shanbot = {\n-      image = \"ayanamibot:latest\";\n-      volumes = [\n-        \"/opt/bots/shanbot/config.toml:/app/config.toml\"\n-        \"/opt/bots/shanbot/database:/app/database\"\n-      ];\n-      environment = {\n-        ENABLE_ROLES = \"1\";\n-        ENABLE_GAMBLING = \"1\";\n-        ENABLE_STARBOARD = \"1\";\n-      };\n-      autoStart = true;\n-    };\n-  };\n-\n-  system.activationScripts.copyBotEnvs = ''\n-    mkdir -p /opt/bots\n-    cp -r ${../secrets/bots}/* /opt/bots/.\n-  '';\n-}\ndiff --git a/services/cockpit.nix b/services/cockpit.nix\ndeleted file mode 100644\nindex 83103581c108effc1d6a4cb8e1467c103f78a3f6..0000000000000000000000000000000000000000\n--- a/services/cockpit.nix\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-{\n-  services.cockpit = {\n-    enable = true;\n-    openFirewall = true;\n-  };\n-}\ndiff --git a/services/common.nix b/services/common.nix\ndeleted file mode 100644\nindex 4617b84c9233368ee889d945aa1065b98b83d993..0000000000000000000000000000000000000000\n--- a/services/common.nix\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-{pkgs, ...}: {\n-  services.caddy.enable = true;\n-  systemd.services.\"podman-network-atproto\" = {\n-    serviceConfig.Type = \"oneshot\";\n-    script = ''\n-      ${pkgs.podman}/bin/podman network inspect atproto > /dev/null 2>&1 || \\\n-      ${pkgs.podman}/bin/podman network create atproto\n-    '';\n-    wantedBy = [\"multi-user.target\"];\n-  };\n-  networking.firewall.allowedTCPPorts = [443 80];\n-}\ndiff --git a/services/knotserver.nix b/services/knotserver.nix\ndeleted file mode 100644\nindex c621cc316e493765593b2e2d24f468ece5fd38de..0000000000000000000000000000000000000000\n--- a/services/knotserver.nix\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-{\n-  services.tangled-knotserver = {\n-    enable = true;\n-    server = {\n-      hostname = \"knot.mchal.lol:5555\";\n-      listenAddr = \"0.0.0.0:5555\";\n-      secretFile = ../secrets/.knot.env;\n-    };\n-    stateDir = \"/opt/knot\";\n-  };\n-\n-  services.caddy.virtualHosts = {\n-    \"knot.mchal.lol\".extraConfig = \"reverse_proxy http://localhost:5555\";\n-  };\n-}\ndiff --git a/services/matrix.nix b/services/matrix.nix\ndeleted file mode 100644\nindex 7f01a7ae3f5c9a7bd184a8ef974ca981eecc24c4..0000000000000000000000000000000000000000\n--- a/services/matrix.nix\n+++ /dev/null\n@@ -1,18 +0,0 @@\n-{\n-  services.matrix-synapse = {\n-    enable = true;\n-    dataDir = \"/opt/synapse\";\n-    enableRegistrationScript = true;\n-    settings = {\n-      server_name = \"matrix.mchal.lol\";\n-      public_baseurl = \"https://matrix.mchal.lol\";\n-      database.name = \"sqlite3\";\n-    };\n-  };\n-\n-  services.caddy.virtualHosts = {\n-    \"matrix.mchal.lol\".extraConfig = ''\n-      reverse_proxy http://localhost:8008\n-    '';\n-  };\n-}\ndiff --git a/services/pds.nix b/services/pds.nix\ndeleted file mode 100644\nindex aa71887512f66717107797ccb4ef3679a3f96916..0000000000000000000000000000000000000000\n--- a/services/pds.nix\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-{\n-  services.pds = {\n-    enable = true;\n-    environmentFiles = [../secrets/pds.env];\n-    pdsadmin.enable = true;\n-    settings = {\n-      PDS_HOSTNAME = \"pds.mchal.lol\";\n-      PDS_PORT = 6010;\n-      PDS_SERVICE_HANDLE_DOMAINS = \".pds.mchal.lol\";\n-    };\n-  };\n-\n-  services.caddy.virtualHosts = {\n-    \"pds.mchal.lol\".extraConfig = \"reverse_proxy http://localhost:6010\";\n-  };\n-}\ndiff --git a/services/syncthing.nix b/services/syncthing.nix\ndeleted file mode 100644\nindex b6d5a64cc4ea8f04158672ad27d790ff668c1ba8..0000000000000000000000000000000000000000\n--- a/services/syncthing.nix\n+++ /dev/null\n@@ -1,15 +0,0 @@\n-{\n-  services.syncthing = {\n-    enable = true;\n-    openDefaultPorts = true;\n-    dataDir = \"/opt/syncthing\";\n-  };\n-\n-  services.caddy.virtualHosts = {\n-    \"sync.mchal.lol\".extraConfig = ''\n-      reverse_proxy http://127.0.0.1:8384 {\n-        header_up Host {upstream_hostport}\n-      }\n-    '';\n-  };\n-}\ndiff --git a/services/vaultwarden.nix b/services/vaultwarden.nix\ndeleted file mode 100644\nindex f25dfe71b62895301a56813d18264c768e0050a7..0000000000000000000000000000000000000000\n--- a/services/vaultwarden.nix\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-{\n-  services = {\n-    vaultwarden = {\n-      enable = true;\n-      backupDir = \"/opt/vaultwarden\";\n-      config = {\n-        SIGNUPS_ALLOWED = false;\n-        ROCKET_ADDRESS = \"::1\";\n-        ROCKET_PORT = 8222;\n-      };\n-    };\n-    caddy.virtualHosts = {\n-      \"vault.mchal.lol\".extraConfig = \"reverse_proxy http://localhost:8222\";\n-    };\n-  };\n-}\ndiff --git a/users/michal/base.nix b/users/michal/base.nix\ndeleted file mode 100644\nindex 0d702fb1cae8e0f7c1c23eee63879dc8d1ced83d..0000000000000000000000000000000000000000\n--- a/users/michal/base.nix\n+++ /dev/null\n@@ -1,31 +0,0 @@\n-{\n-  pkgs,\n-  lib,\n-  ...\n-}: {\n-  home = {\n-    username = lib.mkDefault \"michal\";\n-    homeDirectory = lib.mkDefault \"/home/michal\";\n-    stateVersion = lib.mkDefault \"24.11\";\n-  };\n-\n-  home.file.\".face\".source = ./var/pfp.png;\n-  home.file.\".wallpaper.png\".source = ./var/wallpaper.png;\n-\n-  # Hyprland\n-  home.file.\".config/hyprpanel\" = {\n-    source = ./config/hyprpanel;\n-    recursive = true;\n-  };\n-  home.file.\".config/rofi/config.rasi\".source = ./config/rofi/config.rasi;\n-\n-  wayland.windowManager.hyprland = {\n-    enable = true;\n-    plugins = with pkgs.hyprlandPlugins; [hyprgrass];\n-    extraConfig = lib.strings.fileContents ./config/hypr/hyprland.conf;\n-  };\n-\n-  home.sessionVariables.NIXOS_OZONE_WL = \"1\";\n-\n-  stylix.targets.zed.enable = true;\n-}\ndiff --git a/users/michal/config/hypr/hyprland.conf b/users/michal/config/hypr/hyprland.conf\ndeleted file mode 100644\nindex 98e625cabba5fe98cde2f9d6309913e77bbf53da..0000000000000000000000000000000000000000\n--- a/users/michal/config/hypr/hyprland.conf\n+++ /dev/null\n@@ -1,317 +0,0 @@\n-\n-# #######################################################################################\n-# AUTOGENERATED HYPRLAND CONFIG.\n-# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT,\n-# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.\n-# #######################################################################################\n-\n-\n-# This is an example Hyprland config file.\n-# Refer to the wiki for more information.\n-# https://wiki.hyprland.org/Configuring/\n-\n-# Please note not all available settings / options are set here.\n-# For a full list, see the wiki\n-\n-# You can split this configuration into multiple files\n-# Create your files separately and then link them to this file like this:\n-# source = ~/.config/hypr/myColors.conf\n-\n-\n-################\n-### MONITORS ###\n-################\n-\n-# See https://wiki.hyprland.org/Configuring/Monitors/\n-#monitor=,1360x768@60,0x0,1\n-monitor=eDP-1,preferred,auto,auto,transform, 1\n-device {\n-  name = nvtk0603:00-0603:f001\n-  transform = 1 \n-}\n-monitor=DP-2,preferred,auto,1\n-monitor=DP-3,preferred,auto,1\n-\n-\n-###################\n-### MY PROGRAMS ###\n-###################\n-\n-# See https://wiki.hyprland.org/Configuring/Keywords/\n-\n-# Set programs that you use\n-$terminal = kitty\n-$fileManager = dolphin\n-$menu = rofi -show drun\n-\n-\n-#################\n-### AUTOSTART ###\n-#################\n-\n-# Autostart necessary processes (like notifications daemons, status bars, etc.)\n-# Or execute your favorite apps at launch like this:\n-\n-exec-once = $terminal\n-exec-once = wvkbd-mobintl -L 250\n-exec-once = hyprpanel & hyprpaper & vesktop\n-\n-\n-#############################\n-### ENVIRONMENT VARIABLES ###\n-#############################\n-\n-# See https://wiki.hyprland.org/Configuring/Environment-variables/\n-\n-env = XCURSOR_SIZE,24\n-env = HYPRCURSOR_SIZE,24\n-\n-\n-#####################\n-### LOOK AND FEEL ###\n-#####################\n-\n-# Refer to https://wiki.hyprland.org/Configuring/Variables/\n-\n-# https://wiki.hyprland.org/Configuring/Variables/#general\n-general {\n-    gaps_in = 5\n-    gaps_out = 20\n-\n-    border_size = 2\n-\n-    # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors\n-    col.active_border = rgba(ffffffee) rgba(7e7e7eee) 45deg\n-    col.inactive_border = rgba(595959aa)\n-\n-    # Set to true enable resizing windows by clicking and dragging on borders and gaps\n-    resize_on_border = false\n-\n-    # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on\n-    allow_tearing = false\n-\n-    layout = dwindle\n-}\n-\n-# https://wiki.hyprland.org/Configuring/Variables/#decoration\n-decoration {\n-    rounding = 5\n-    rounding_power = 2\n-\n-    # Change transparency of focused and unfocused windows\n-    active_opacity = 1.0\n-    inactive_opacity = 0.8\n-\n-    shadow {\n-        enabled = true\n-        range = 4\n-        render_power = 3\n-        color = rgba(1a1a1aee)\n-    }\n-\n-    # https://wiki.hyprland.org/Configuring/Variables/#blur\n-    blur {\n-        enabled = true\n-        size = 3\n-        passes = 1\n-\n-        vibrancy = 0.1696\n-    }\n-\n-    dim_inactive = true\n-    dim_strength = 0.2\n-}\n-\n-# https://wiki.hyprland.org/Configuring/Variables/#animations\n-animations {\n-    enabled = yes, please :)\n-\n-    # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more\n-\n-    bezier = easeOutQuint,0.23,1,0.32,1\n-    bezier = easeInOutCubic,0.65,0.05,0.36,1\n-    bezier = linear,0,0,1,1\n-    bezier = almostLinear,0.5,0.5,0.75,1.0\n-    bezier = quick,0.15,0,0.1,1\n-\n-    animation = global, 1, 10, default\n-    animation = border, 1, 5.39, easeOutQuint\n-    animation = windows, 1, 4.79, easeOutQuint\n-    animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%\n-    animation = windowsOut, 1, 1.49, linear, popin 87%\n-    animation = fadeIn, 1, 1.73, almostLinear\n-    animation = fadeOut, 1, 1.46, almostLinear\n-    animation = fade, 1, 3.03, quick\n-    animation = layers, 1, 3.81, easeOutQuint\n-    animation = layersIn, 1, 4, easeOutQuint, fade\n-    animation = layersOut, 1, 1.5, linear, fade\n-    animation = fadeLayersIn, 1, 1.79, almostLinear\n-    animation = fadeLayersOut, 1, 1.39, almostLinear\n-    animation = workspaces, 1, 1.94, almostLinear, fade\n-    animation = workspacesIn, 1, 1.21, almostLinear, fade\n-    animation = workspacesOut, 1, 1.94, almostLinear, fade\n-}\n-\n-# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/\n-# \"Smart gaps\" / \"No gaps when only\"\n-# uncomment all if you wish to use that.\n-# workspace = w[tv1], gapsout:0, gapsin:0\n-# workspace = f[1], gapsout:0, gapsin:0\n-# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]\n-# windowrule = rounding 0, floating:0, onworkspace:w[tv1]\n-# windowrule = bordersize 0, floating:0, onworkspace:f[1]\n-# windowrule = rounding 0, floating:0, onworkspace:f[1]\n-\n-# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more\n-dwindle {\n-    pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below\n-    preserve_split = true # You probably want this\n-}\n-\n-# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more\n-master {\n-    new_status = master\n-}\n-\n-# https://wiki.hyprland.org/Configuring/Variables/#misc\n-misc {\n-    force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers\n-    disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(\n-}\n-\n-\n-#############\n-### INPUT ###\n-#############\n-\n-# https://wiki.hyprland.org/Configuring/Variables/#input\n-input {\n-    kb_layout = gb\n-    kb_variant =\n-    kb_model =\n-    kb_options =\n-    kb_rules =\n-    numlock_by_default = true\n-\n-    follow_mouse = 1\n-\n-    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.\n-\n-    touchpad {\n-        natural_scroll = false\n-    }\n-}\n-\n-# https://wiki.hyprland.org/Configuring/Variables/#gestures\n-gestures {\n-    workspace_swipe = false\n-}\n-\n-# Example per-device config\n-# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more\n-device {\n-    name = epic-mouse-v1\n-    sensitivity = -0.5\n-}\n-\n-\n-###################\n-### KEYBINDINGS ###\n-###################\n-\n-# See https://wiki.hyprland.org/Configuring/Keywords/\n-$mainMod = SUPER # Sets \"Windows\" key as main modifier\n-\n-# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more\n-bind = $mainMod, Q, exec, $terminal\n-bind = $mainMod, C, killactive,\n-bind = $mainMod, M, exit,\n-bind = $mainMod, E, exec, $fileManager\n-bind = $mainMod, V, togglefloating,\n-bind = $mainMod, R, exec, $menu\n-bind = $mainMod, P, pseudo, # dwindle\n-bind = $mainMod, J, togglesplit, # dwindle\n-\n-# Move focus with mainMod + arrow keys\n-bind = $mainMod, left, movefocus, l\n-bind = $mainMod, right, movefocus, r\n-bind = $mainMod, up, movefocus, u\n-bind = $mainMod, down, movefocus, d\n-\n-# Switch workspaces with mainMod + [0-9]\n-bind = $mainMod, 1, workspace, 1\n-bind = $mainMod, 2, workspace, 2\n-bind = $mainMod, 3, workspace, 3\n-bind = $mainMod, 4, workspace, 4\n-bind = $mainMod, 5, workspace, 5\n-bind = $mainMod, 6, workspace, 6\n-bind = $mainMod, 7, workspace, 7\n-bind = $mainMod, 8, workspace, 8\n-bind = $mainMod, 9, workspace, 9\n-bind = $mainMod, 0, workspace, 10\n-\n-# Move active window to a workspace with mainMod + SHIFT + [0-9]\n-bind = $mainMod SHIFT, 1, movetoworkspace, 1\n-bind = $mainMod SHIFT, 2, movetoworkspace, 2\n-bind = $mainMod SHIFT, 3, movetoworkspace, 3\n-bind = $mainMod SHIFT, 4, movetoworkspace, 4\n-bind = $mainMod SHIFT, 5, movetoworkspace, 5\n-bind = $mainMod SHIFT, 6, movetoworkspace, 6\n-bind = $mainMod SHIFT, 7, movetoworkspace, 7\n-bind = $mainMod SHIFT, 8, movetoworkspace, 8\n-bind = $mainMod SHIFT, 9, movetoworkspace, 9\n-bind = $mainMod SHIFT, 0, movetoworkspace, 10\n-\n-# Example special workspace (scratchpad)\n-bind = $mainMod, S, togglespecialworkspace, magic\n-bind = $mainMod SHIFT, S, movetoworkspace, special:magic\n-\n-# Scroll through existing workspaces with mainMod + scroll\n-bind = $mainMod, mouse_down, workspace, e+1\n-bind = $mainMod, mouse_up, workspace, e-1\n-\n-# Move/resize windows with mainMod + LMB/RMB and dragging\n-bindm = $mainMod, mouse:272, movewindow\n-bindm = $mainMod, mouse:273, resizewindow\n-\n-# Laptop multimedia keys for volume and LCD brightness\n-bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+\n-bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-\n-bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle\n-bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle\n-bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+\n-bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-\n-\n-# Requires playerctl\n-bindl = , XF86AudioNext, exec, playerctl next\n-bindl = , XF86AudioPause, exec, playerctl play-pause\n-bindl = , XF86AudioPlay, exec, playerctl play-pause\n-bindl = , XF86AudioPrev, exec, playerctl previous\n-\n-##############################\n-### WINDOWS AND WORKSPACES ###\n-##############################\n-\n-# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more\n-# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules\n-\n-# Example windowrule\n-# windowrule = float,class:^(kitty)$,title:^(kitty)$\n-\n-# Ignore maximize requests from apps. You'll probably like this.\n-windowrule = suppressevent maximize, class:.*\n-\n-# Fix some dragging issues with XWayland\n-windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0\n-\n-####################\n-### EXTRA CUSTOM ###\n-####################\n-hyprgrass-bind = , edge:d:u, exec, kill -34 $(ps -C wvkbd-mobintl | xargs | cut -d' ' -f5)\n-exec-once = hyprctl setcursor Adwaita 24\n-plugin {\n-  touch_gestures {\n-    sensitivity = 4.0\n-    edge_margin = 50\n-  }\n-}\ndiff --git a/users/michal/config/hyprpanel/config.json b/users/michal/config/hyprpanel/config.json\ndeleted file mode 100644\nindex 0e6cf050cf860b34bdd2d182005c9a53709dc7ef..0000000000000000000000000000000000000000\n--- a/users/michal/config/hyprpanel/config.json\n+++ /dev/null\n@@ -1,103 +0,0 @@\n-{\n-  \"theme.font.size\": \"0.75rem\",\n-  \"theme.bar.menus.enableShadow\": false,\n-  \"tear\": false,\n-  \"menus.dashboard.powermenu.avatar.image\": \"/home/michal/.face\",\n-  \"menus.power.showLabel\": true,\n-  \"theme.bar.floating\": false,\n-  \"theme.bar.buttons.enableBorders\": false,\n-  \"theme.bar.enableShadow\": false,\n-  \"bar.launcher.autoDetectIcon\": true,\n-  \"bar.workspaces.show_icons\": false,\n-  \"bar.workspaces.show_numbered\": false,\n-  \"bar.network.label\": true,\n-  \"bar.network.showWifiInfo\": false,\n-  \"menus.clock.weather.enabled\": true,\n-  \"bar.battery.label\": true,\n-  \"theme.bar.menus.menu.battery.scaling\": 100,\n-  \"bar.layouts\": {\n-    \"0\": {\n-      \"left\": [\n-        \"dashboard\",\n-        \"workspaces\",\n-        \"windowtitle\"\n-      ],\n-      \"middle\": [\n-        \"media\"\n-      ],\n-      \"right\": [\n-        \"volume\",\n-        \"network\",\n-        \"bluetooth\",\n-        \"systray\",\n-        \"clock\",\n-        \"notifications\"\n-      ]\n-    },\n-    \"1\": {\n-      \"left\": [\n-        \"dashboard\",\n-        \"workspaces\",\n-        \"windowtitle\"\n-      ],\n-      \"middle\": [\n-        \"media\"\n-      ],\n-      \"right\": [\n-        \"volume\",\n-        \"clock\",\n-        \"notifications\"\n-      ]\n-    },\n-    \"2\": {\n-      \"left\": [\n-        \"dashboard\",\n-        \"workspaces\",\n-        \"windowtitle\"\n-      ],\n-      \"middle\": [\n-        \"media\"\n-      ],\n-      \"right\": [\n-        \"volume\",\n-        \"clock\",\n-        \"notifications\"\n-      ]\n-    }\n-  },\n-  \"theme.bar.border.location\": \"none\",\n-  \"theme.bar.buttons.dashboard.enableBorder\": false,\n-  \"theme.font.weight\": 600,\n-  \"theme.font.name\": \"Ubuntu Nerd Font\",\n-  \"theme.font.label\": \"Ubuntu Nerd Font\",\n-  \"wallpaper.pywal\": false,\n-  \"wallpaper.image\": \"/home/michal/.wallpaper.png\",\n-  \"theme.bar.menus.monochrome\": false,\n-  \"theme.matugen\": true,\n-  \"theme.matugen_settings.mode\": \"dark\",\n-  \"theme.matugen_settings.scheme_type\": \"tonal-spot\",\n-  \"theme.matugen_settings.variation\": \"standard_1\",\n-  \"theme.bar.transparent\": false,\n-  \"menus.dashboard.shortcuts.left.shortcut4.command\": \"rofi -show drun\",\n-  \"menus.dashboard.shortcuts.left.shortcut3.command\": \"vesktop\",\n-  \"menus.dashboard.shortcuts.left.shortcut1.command\": \"firefox\",\n-  \"menus.dashboard.shortcuts.left.shortcut1.icon\": \"\",\n-  \"menus.dashboard.shortcuts.left.shortcut1.tooltip\": \"Firefox\",\n-  \"menus.dashboard.shortcuts.left.shortcut2.tooltip\": \"Zed\",\n-  \"menus.dashboard.shortcuts.left.shortcut2.command\": \"zeditor\",\n-  \"menus.dashboard.shortcuts.left.shortcut2.icon\": \"\",\n-  \"bar.launcher.icon\": \"󱄅\",\n-  \"bar.workspaces.showWsIcons\": true,\n-  \"bar.workspaces.showApplicationIcons\": true,\n-  \"theme.bar.buttons.innerRadiusMultiplier\": \"0.4\",\n-  \"theme.bar.buttons.radius\": \"0.3em\",\n-  \"bar.notifications.show_total\": true,\n-  \"menus.media.displayTime\": true,\n-  \"menus.clock.time.military\": true,\n-  \"menus.clock.time.hideSeconds\": false,\n-  \"menus.clock.weather.unit\": \"metric\",\n-  \"bar.clock.format\": \"%a %b %d  %H:%M:%S\",\n-  \"bar.clock.icon\": \"󰸗\",\n-  \"theme.bar.buttons.clock.spacing\": \"0.5em\",\n-  \"bar.clock.showIcon\": false\n-}\ndiff --git a/users/michal/config/hyprpanel/modules.json b/users/michal/config/hyprpanel/modules.json\ndeleted file mode 100644\nindex 9e26dfeeb6e641a33dae4961196235bdb965b21b..0000000000000000000000000000000000000000\n--- a/users/michal/config/hyprpanel/modules.json\n+++ /dev/null\n@@ -1 +0,0 @@\n-{}\n\\ No newline at end of file\ndiff --git a/users/michal/config/hyprpanel/modules.scss b/users/michal/config/hyprpanel/modules.scss\ndeleted file mode 100644\nindex e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000\nBinary files a/users/michal/config/hyprpanel/modules.scss and /dev/null differ\ndiff --git a/users/michal/config/onagre/theme.scss b/users/michal/config/onagre/theme.scss\ndeleted file mode 100644\nindex 13e3e43906f8f2830de50d91dc5b4376c2e8aa1e..0000000000000000000000000000000000000000\n--- a/users/michal/config/onagre/theme.scss\n+++ /dev/null\n@@ -1,4 +0,0 @@\n-.onagre {\n-  --icon-theme: \"Adwaita\";\n-  --font-family: \"JetBrains Mono,JetBrains Mono Nerd Font\";\n-}\ndiff --git a/users/michal/config/rofi/config.rasi b/users/michal/config/rofi/config.rasi\ndeleted file mode 100644\nindex 6485ec460a328de0f7ab096eed1f5c8d3d84f459..0000000000000000000000000000000000000000\n--- a/users/michal/config/rofi/config.rasi\n+++ /dev/null\n@@ -1,92 +0,0 @@\n-configuration {\n-\tmodi:\t\t\t\t\"drun\";\n-\tfont:\t\t\t\t\"JetBrains Mono Nerd Font 10\";\n-\tshow-icons:                     true;\n-\ticon-theme: \t\t\t\"Reversal-dark\";\n-\tdisplay-drun: \t\t\t\"\";\n-\tdrun-display-format:            \"{name}\";\n-\tsidebar-mode: \t\t\tfalse;\n-}\n-\n-@theme \"/dev/null\"\n-\n-* {\n-\tbg:\t\t\t\t#151515;\n-\tfg:\t\t\t\t#e8e8d3;\n-\taccent:\t\t\t\t#687363;\n-\tbutton:\t\t\t\t#1c1c1c;\n-\n-\tbackground-color:\t\t@bg;\n-\ttext-color:\t\t\t@fg;\n-}\n-\n-window {\n-\tborder-radius:                  7px;\n-\twidth:\t\t\t    \t50%;\n-\tpadding: \t\t\t32px;\n-}\n-\n-prompt {\n-\tbackground-color:\t\t@button;\n-\tenabled:\t\t\ttrue;\n-\tpadding:\t\t\t0.5% 32px 0% -0.5%;\n-\tfont:\t\t\t\t\"JetBrains Mono Nerd Font 10\";\n-}\n-\n-entry {\n-    \tplaceholder:\t\t\t\"Search\";\n-\tbackground-color:               @button;\n-    \tplaceholder-color:              @fg;\n-    \texpand:                         true;\n-    \tpadding:                        0.15% 0% 0% 0%;\n-}\n-\n-inputbar {\n-\tchildren:\t\t\t[ prompt, entry ];\n-    \tbackground-color:               @button;\n-    \texpand:                         false;\n-    \tborder-radius:                  6px;\n-    \tmargin:                         0%;\n-    \tpadding:                        10px;\n-}\n-\n-listview {\n-    \tcolumns:                        4;\n-    \tlines:\t                        3;\n-    \tcycle:                          false;\n-    \tdynamic:                        true;\n-    \tlayout:                         vertical;\n-}\n-\n-mainbox {\n-    \tchildren:                       [ inputbar, listview ];\n-    \tspacing:                       \t2%;\n-    \tpadding:                        2% 1% 2% 1%;\n-}\n-\n-element {\n-    \torientation:                    vertical;\n-    \tpadding:                        2% 0% 2% 0%;\n-}\n-\n-element-icon {\n-    \tsize:                           48px;\n-    \thorizontal-align:\t \t0.5;\n-}\n-\n-element-text {\n-    \texpand:                         true;\n-    \thorizontal-align:               0.5;\n-    \tvertical-align:                 0.5;\n-    \tmargin:                         0.5% 0.5% -0.5% 0.5%;\n-}\n-\n-element-text, element-icon {\n-\tbackground-color:\t\tinherit;\n-\ttext-color:\t\t\tinherit;\n-}\n-\n-element selected {\n-    \tbackground-color:               @button;\n-    \tborder-radius:                  6px;\n-}\ndiff --git a/users/michal/git.nix b/users/michal/git.nix\ndeleted file mode 100644\nindex 921c63f24243befee4512bdfcf4409080ee96171..0000000000000000000000000000000000000000\n--- a/users/michal/git.nix\n+++ /dev/null\n@@ -1,23 +0,0 @@\n-{\n-  lib,\n-  pkgs,\n-  ...\n-}: {\n-  programs.git = {\n-    enable = true;\n-    userName = \"Michal S.\";\n-    userEmail = \"me@mchal.lol\";\n-    signing = {\n-      key = \"3958C1974D0E77ED3C6B083826B6F2A07E8E1A2B\";\n-      signByDefault = true;\n-    };\n-    extraConfig = {\n-      safe.directory = \"*\";\n-      init.defaultBranch = \"main\";\n-    };\n-  };\n-\n-  home.packages = with pkgs; [\n-    git-crypt\n-  ];\n-}\ndiff --git a/users/michal/gpg.nix b/users/michal/gpg.nix\ndeleted file mode 100644\nindex 281bd59966ffd5ac716346ddeb67e7fdef88c2b3..0000000000000000000000000000000000000000\n--- a/users/michal/gpg.nix\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-{\n-  lib,\n-  pkgs,\n-  ...\n-}: {\n-  programs.gpg = {\n-    enable = true;\n-    scdaemonSettings = {\n-      card-timeout = \"5\";\n-      disable-ccid = true;\n-    };\n-  };\n-\n-  services.gpg-agent = {\n-    enable = true;\n-    enableSshSupport = true;\n-    enableScDaemon = true;\n-  };\n-}\ndiff --git a/users/michal/shell.nix b/users/michal/shell.nix\ndeleted file mode 100644\nindex 4671c6c75f0fdd00d7c517ab98fab9562eacf03b..0000000000000000000000000000000000000000\n--- a/users/michal/shell.nix\n+++ /dev/null\n@@ -1,111 +0,0 @@\n-{pkgs, ...}: {\n-  programs = {\n-    fish = {\n-      enable = true;\n-      functions = {\n-        fish_greeting = \"\";\n-      };\n-      shellAliases = {\n-        cat = \"bat\";\n-        cd = \"z\";\n-        htop = \"btop\";\n-      };\n-      shellAbbrs = {nix-shell = \"nix-shell --run fish\";};\n-      shellInit = ''\n-        set -x HOSTNAME (hostname)\n-\n-        set DIRENV_LOG_FORMAT \"\"\n-        set SHELL ${pkgs.fish.out}/bin/fish\n-\n-        if type -q uwsm\n-            uwsm check may-start && uwsm start default &> /dev/null\n-        end\n-      '';\n-      plugins = [\n-        {\n-          name = \"tide\";\n-          src = pkgs.fetchFromGitHub {\n-            owner = \"IlanCosman\";\n-            repo = \"tide\";\n-            rev = \"d715de0a2ab4e33f202d30f5c6bd8da9cfc6c310\";\n-            sha256 = \"6ys1SEfcWO0cRRNawrpnUU9tPJVVZ0E6RcPmrE9qG5g=\";\n-          };\n-        }\n-\n-        {\n-          name = \"bass\";\n-          src = pkgs.fetchFromGitHub {\n-            owner = \"edc\";\n-            repo = \"bass\";\n-            rev = \"2fd3d2157d5271ca3575b13daec975ca4c10577a\";\n-            sha256 = \"fl4/Pgtkojk5AE52wpGDnuLajQxHoVqyphE90IIPYFU=\";\n-          };\n-        }\n-\n-        {\n-          name = \"sponge\";\n-          src = pkgs.fetchFromGitHub {\n-            owner = \"andreiborisov\";\n-            repo = \"sponge\";\n-            rev = \"dcfcc9089939f48b25b861a9254a39de8e9f33a0\";\n-            sha256 = \"+GGfFC/hH7A8n9Wwojt5PW96fSzvRhThnZ3pLeWEqds=\";\n-          };\n-        }\n-\n-        {\n-          name = \"fish-plugin-sudo\";\n-          src = pkgs.fetchFromGitHub {\n-            owner = \"eth-p\";\n-            repo = \"fish-plugin-sudo\";\n-            rev = \"e153fdea568cd370312f9c0809fac15fc7582bfd\";\n-            sha256 = \"bTK34G+J6AOoYmhOIG0XNXV2SN/u789+epXMBN3lnu4=\";\n-          };\n-        }\n-\n-        {\n-          name = \"puffer-fish\";\n-          src = pkgs.fetchFromGitHub {\n-            owner = \"nickeb96\";\n-            repo = \"puffer-fish\";\n-            rev = \"df333fff5130ef8bf153c9bafbf0661534f81d9c\";\n-            sha256 = \"VtFrRzI476Hkutwwgkkc9hoiCma6Xyknm7xHeghrLxo=\";\n-          };\n-        }\n-      ];\n-    };\n-    fzf = {\n-      enable = true;\n-      enableFishIntegration = true;\n-    };\n-    zoxide = {\n-      enable = true;\n-      enableFishIntegration = true;\n-    };\n-    direnv = {\n-      enable = true;\n-      nix-direnv.enable = true;\n-    };\n-  };\n-\n-  services.gpg-agent.enableFishIntegration = true;\n-\n-  home.packages = with pkgs; [\n-    asciinema\n-    bat\n-    btop\n-    duf\n-    fd\n-    zellij\n-    zoxide\n-    neofetch\n-    ncdu\n-\n-    gnupg\n-    direnv\n-\n-    hostname\n-    ncurses\n-\n-    vim\n-  ];\n-}\ndiff --git a/users/michal/var/pfp.png b/users/michal/var/pfp.png\ndeleted file mode 100644\nindex cc8eef3c51e064a08b020365f25973f862e900b7..0000000000000000000000000000000000000000\nBinary files a/users/michal/var/pfp.png and /dev/null differ\ndiff --git a/users/michal/var/wallpaper.png b/users/michal/var/wallpaper.png\ndeleted file mode 100644\nindex 39620ee3ec67a5012d88688f520e953b72e8334d..0000000000000000000000000000000000000000\nBinary files a/users/michal/var/wallpaper.png and /dev/null differ\n",
    "title": "Draft: lite-config rewrite",
    "pullId": 1,
    "source": {
      "branch": "lite-config"
    },
    "targetRepo": "at://did:plc:w3aonw33w3mz3mwws34x5of6/sh.tangled.repo/3lmilepws7t22",
    "targetBranch": "main"
  }
}