Initial commit

- Create a basic bootable system with Hyprland, a browser and some
  basic utilities

Change-Id: I4178e1185de319c45c6a4f2711fe035f50777e08
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..afc5748
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,68 @@
+{
+  description = "All my Nix configurations";
+
+  inputs = {
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+    snowfall-lib = {
+      url = "github:snowfallorg/lib";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+
+    home-manager = {
+      url = "github:nix-community/home-manager";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+
+    nix-index-database = {
+      url = "github:nix-community/nix-index-database";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+
+    hyprland.url = "github:hyprwm/Hyprland";
+
+    anyrun = {
+      url = "github:Kirottu/anyrun";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+
+    ewwsalmoomedits--eww-widgets = {
+      url = "github:saimoomedits/eww-widgets";
+      flake = false;
+    };
+  };
+
+  outputs = { self, nixpkgs, ... }@inputs:
+    inputs.snowfall-lib.mkFlake {
+      inherit inputs;
+      src = ./.;
+
+      homes.modules = [
+        # TODO: inputs.nix-index-database.hmModules.nix-index
+      ];
+
+      homes.users."minion@greylag".modules = [
+        inputs.hyprland.homeManagerModules.default
+        inputs.anyrun.homeManagerModules.default
+      ];
+
+      system.modules.nixos = [
+        inputs.hyprland.nixosModules.default
+      ];
+
+      snowfall = {
+        namespace = "minion";
+
+        meta.name = "minion";
+        meta.title = "Minion's Nix Configurations";
+      };
+
+      outputs-builder = channels: {
+        formatter = nixpkgs.legacyPackages.${channels.nixpkgs.system}.nixfmt;
+      };
+
+      channels-config = {
+        allowUnfree = true;
+      };
+    };
+}