Initial commit

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

Change-Id: I4178e1185de319c45c6a4f2711fe035f50777e08
diff --git a/modules/nixos/audio/default.nix b/modules/nixos/audio/default.nix
new file mode 100644
index 0000000..7ded3fb
--- /dev/null
+++ b/modules/nixos/audio/default.nix
@@ -0,0 +1,10 @@
+{ ... }: {
+  services.pipewire = {
+    enable = true;
+    alsa = {
+      enable = true;
+      support32Bit = true;
+    };
+    pulse.enable = true;
+  };
+}
diff --git a/modules/nixos/browsers/default.nix b/modules/nixos/browsers/default.nix
new file mode 100644
index 0000000..33078e1
--- /dev/null
+++ b/modules/nixos/browsers/default.nix
@@ -0,0 +1,3 @@
+{ pkgs, ... }: {
+  environment.systemPackages = [ pkgs.firefox ];
+}
\ No newline at end of file
diff --git a/modules/nixos/editors/default.nix b/modules/nixos/editors/default.nix
new file mode 100644
index 0000000..df773e6
--- /dev/null
+++ b/modules/nixos/editors/default.nix
@@ -0,0 +1,7 @@
+{ pkgs, ... }: {
+  environment.systemPackages = [
+    pkgs.emacs
+    pkgs.neovim
+    pkgs.vscode-fhs
+  ];
+}
diff --git a/modules/nixos/git/default.nix b/modules/nixos/git/default.nix
new file mode 100644
index 0000000..9366bdf
--- /dev/null
+++ b/modules/nixos/git/default.nix
@@ -0,0 +1,3 @@
+{ pkgs, ... }: {
+  environment.systemPackages = [ pkgs.git ];
+}
\ No newline at end of file
diff --git a/modules/nixos/graphics/default.nix b/modules/nixos/graphics/default.nix
new file mode 100644
index 0000000..55a5ea4
--- /dev/null
+++ b/modules/nixos/graphics/default.nix
@@ -0,0 +1,10 @@
+{ pkgs, ... }: {
+  hardware.opengl = {
+    enable = true;
+    driSupport = true;
+    driSupport32Bit = true;
+    extraPackages = [
+      pkgs.vaapiVdpau
+    ];
+  };
+}
diff --git a/modules/nixos/home-manager/default.nix b/modules/nixos/home-manager/default.nix
new file mode 100644
index 0000000..9c96dd3
--- /dev/null
+++ b/modules/nixos/home-manager/default.nix
@@ -0,0 +1,5 @@
+{ inputs, system, ... }: {
+  environment.systemPackages = [
+    inputs.home-manager.defaultPackage.${system}
+  ];
+}
\ No newline at end of file
diff --git a/modules/nixos/hyprland/default.nix b/modules/nixos/hyprland/default.nix
new file mode 100644
index 0000000..90e38ce
--- /dev/null
+++ b/modules/nixos/hyprland/default.nix
@@ -0,0 +1,5 @@
+{ ... }: {
+  programs.hyprland.enable = true;
+
+  users.users.minion.extraGroups = [ "input" ];
+}
\ No newline at end of file
diff --git a/modules/nixos/nix/default.nix b/modules/nixos/nix/default.nix
new file mode 100644
index 0000000..307d6ea
--- /dev/null
+++ b/modules/nixos/nix/default.nix
@@ -0,0 +1,20 @@
+{ ... }: {
+  system.stateVersion = "24.05";
+  console.keyMap = "dvorak";
+
+  nix.settings = {
+    builders-use-substitutes = true;
+
+    substituters = [
+      "https://cache.nixos.org"
+      "https://anyrun.cachix.org"
+    ];
+
+    trusted-public-keys = [
+      "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
+      "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
+    ];
+
+    experimental-features = [ "nix-command" "flakes" ];
+  };
+}
diff --git a/modules/nixos/terminals/default.nix b/modules/nixos/terminals/default.nix
new file mode 100644
index 0000000..3b44e0b
--- /dev/null
+++ b/modules/nixos/terminals/default.nix
@@ -0,0 +1,5 @@
+{ pkgs, ... }: {
+  environment.systemPackages = [
+    pkgs.kitty
+  ];
+}
\ No newline at end of file
diff --git a/modules/nixos/users/default.nix b/modules/nixos/users/default.nix
new file mode 100644
index 0000000..5e4b0c1
--- /dev/null
+++ b/modules/nixos/users/default.nix
@@ -0,0 +1,13 @@
+{ pkgs, ... }: {
+  users.users.minion = {
+    isNormalUser = true;
+    extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
+    packages = [
+      pkgs.firefox
+      pkgs.tree
+    ];
+    initialPassword = "nixos";
+  };
+
+  security.pam.services.waylock = {};
+}
diff --git a/modules/nixos/wifi/default.nix b/modules/nixos/wifi/default.nix
new file mode 100644
index 0000000..fcd6ccf
--- /dev/null
+++ b/modules/nixos/wifi/default.nix
@@ -0,0 +1,7 @@
+{ ... }: {
+  networking.wireless = {
+    enable = true;
+    userControlled.enable = true;
+  };
+  hardware.enableRedistributableFirmware = true;
+}