diff --git a/grub b/grub
new file mode 160000
index 0000000..88f6124
--- /dev/null
+++ b/grub
@@ -0,0 +1 @@
+Subproject commit 88f6124757331fd3a37c8a69473021389b7663ad
diff --git a/grub.sh b/grub.sh
new file mode 100755
index 0000000..06b7f52
--- /dev/null
+++ b/grub.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+echo ":: Installing Grub Theme"
+cd ..
+git clone https://github.com/catppuccin/grub.git && cd grub
+sudo cp -r ~/script/src/catppuccin-mocha/ /usr/share/grub/themes/
+sudo cp ~/script/src/grub /etc/default/
+sudo grub-mkconfig -o /boot/grub/grub.cfg
+
diff --git a/install.sh b/install.sh
index 6b8b463..d10949f 100755
--- a/install.sh
+++ b/install.sh
@@ -22,11 +22,11 @@ case $answer in
[Yy]* )
echo ":: Install Continuing..."
#Copy mkinitcpio.conf
- sudo cp -r ~/script/mkinitcpio.conf /etc/mkinitcpio.conf
+ sudo cp -r ~/script/src/mkinitcpio.conf /etc/mkinitcpio.conf
#Make /etc/modprobe.d/nvidia.conf
sudo touch /etc/modprobe.d/nvidia.conf
- sudo cp -r ~/script/nvidia.conf /etc/modprobe.d/nvidia.conf
+ sudo cp -r ~/script/src/nvidia.conf /etc/modprobe.d/nvidia.conf
sudo mkinitcpio -P
@@ -37,8 +37,8 @@ case $answer in
makepkg -si
#Download and Install packages
- sudo pacman -S --needed - < ~/script/pacman.txt
- yay -S --needed - < ~/script/yay.txt
+ sudo pacman -S --needed - < ~/script/src/pacman.txt
+ yay -S --needed - < ~/script/src/yay.txt
#Clones Hyprcrux Repo and copies them to their correct locations.
cd ~/script/
@@ -56,3 +56,27 @@ esac
echo ":: Preparing to Install HyprPM Plugins..."
sleep 5
~/script/hyprpm.sh
+
+echo ":: Preparing to Install Grub Theme"
+~/script/grub.sh
+
+echo ":: Preparing to Install SDDM Theme"
+~/script/sddm.sh
+
+
+cat << "EOF"
+ You have succesfully installed
+-----------------------------------------------------------------------
+ ██░ ██▓██ ██▓ ██▓███ ██▀███ ▄████▄ ██▀███ █ ██ ▒██ ██▒
+▓██░ ██▒▒██ ██▒▓██░ ██▒▓██ ▒ ██▒▒██▀ ▀█ ▓██ ▒ ██▒ ██ ▓██▒▒▒ █ █ ▒░
+▒██▀▀██░ ▒██ ██░▓██░ ██▓▒▓██ ░▄█ ▒▒▓█ ▄ ▓██ ░▄█ ▒▓██ ▒██░░░ █ ░
+░▓█ ░██ ░ ▐██▓░▒██▄█▓▒ ▒▒██▀▀█▄ ▒▓▓▄ ▄██▒▒██▀▀█▄ ▓▓█ ░██░ ░ █ █ ▒
+░▓█▒░██▓ ░ ██▒▓░▒██▒ ░ ░░██▓ ▒██▒▒ ▓███▀ ░░██▓ ▒██▒▒▒█████▓ ▒██▒ ▒██▒
+ ▒ ░░▒░▒ ██▒▒▒ ▒▓▒░ ░ ░░ ▒▓ ░▒▓░░ ░▒ ▒ ░░ ▒▓ ░▒▓░░▒▓▒ ▒ ▒ ▒▒ ░ ░▓ ░
+ ▒ ░▒░ ░▓██ ░▒░ ░▒ ░ ░▒ ░ ▒░ ░ ▒ ░▒ ░ ▒░░░▒░ ░ ░ ░░ ░▒ ░
+ ░ ░░ ░▒ ▒ ░░ ░░ ░░ ░ ░ ░░ ░ ░░░ ░ ░ ░ ░
+ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░
+ ░ ░ ░
+-----------------------------------------------------------------------
+ Enjoy :)
+EOF
diff --git a/sddm.sh b/sddm.sh
new file mode 100755
index 0000000..c506c46
--- /dev/null
+++ b/sddm.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+sudo cp -r ~/script/src/catppuccin-mocha/ /usr/share/sddm/themes/
+sudo cp -r ~/script/src/sddm.conf /etc/
+
diff --git a/src/catppuccin-mocha/Components/Clock.qml b/src/catppuccin-mocha/Components/Clock.qml
new file mode 100644
index 0000000..f076d28
--- /dev/null
+++ b/src/catppuccin-mocha/Components/Clock.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.15
+import SddmComponents 2.0
+
+Clock {
+ id: time
+ color: config.text
+ timeFont.family: config.Font
+ dateFont.family: config.Font
+ anchors {
+ margins: 10
+ top: parent.top
+ right: parent.right
+ }
+}
diff --git a/src/catppuccin-mocha/Components/LoginPanel.qml b/src/catppuccin-mocha/Components/LoginPanel.qml
new file mode 100644
index 0000000..e0dec79
--- /dev/null
+++ b/src/catppuccin-mocha/Components/LoginPanel.qml
@@ -0,0 +1,147 @@
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+
+Item {
+ property var user: userField.text
+ property var password: passwordField.text
+ property var session: sessionPanel.session
+ property var inputHeight: Screen.height * 0.032
+ property var inputWidth: Screen.width * 0.16
+ Rectangle {
+ id: loginBackground
+ anchors {
+ verticalCenter: parent.verticalCenter
+ horizontalCenter: parent.horizontalCenter
+ }
+ height: inputHeight * 5.3
+ width: inputWidth * 1.2
+ radius: 5
+ visible: config.LoginBackground == "true" ? true : false
+ color: config.mantle
+ }
+ Column {
+ spacing: 8
+ anchors {
+ bottom: parent.bottom
+ left: parent.left
+ }
+ PowerButton {
+ id: powerButton
+ }
+ RebootButton {
+ id: rebootButton
+ }
+ SleepButton {
+ id: sleepButton
+ }
+ z: 5
+ }
+ Column {
+ spacing: 8
+ anchors {
+ bottom: parent.bottom
+ right: parent.right
+ }
+ SessionPanel {
+ id: sessionPanel
+ }
+ z: 5
+ }
+ Column {
+ spacing: 8
+ z: 5
+ width: inputWidth
+ anchors {
+ verticalCenter: parent.verticalCenter
+ horizontalCenter: parent.horizontalCenter
+ }
+ UserField {
+ id: userField
+ height: inputHeight
+ width: parent.width
+ }
+ PasswordField {
+ id: passwordField
+ height: inputHeight
+ width: parent.width
+ onAccepted: loginButton.clicked()
+ }
+ Button {
+ id: loginButton
+ height: inputHeight
+ width: parent.width
+ enabled: user != "" && password != "" ? true : false
+ hoverEnabled: true
+ contentItem: Text {
+ id: buttonText
+ renderType: Text.NativeRendering
+ font {
+ family: config.Font
+ pointSize: config.FontSize
+ bold: true
+ }
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: config.crust
+ text: "Login"
+ }
+ background: Rectangle {
+ id: buttonBackground
+ color: config.sapphire
+ radius: 3
+ }
+ states: [
+ State {
+ name: "pressed"
+ when: loginButton.down
+ PropertyChanges {
+ target: buttonBackground
+ color: config.teal
+ }
+ PropertyChanges {
+ target: buttonText
+ }
+ },
+ State {
+ name: "hovered"
+ when: loginButton.hovered
+ PropertyChanges {
+ target: buttonBackground
+ color: config.teal
+ }
+ PropertyChanges {
+ target: buttonText
+ }
+ },
+ State {
+ name: "enabled"
+ when: loginButton.enabled
+ PropertyChanges {
+ target: buttonBackground
+ }
+ PropertyChanges {
+ target: buttonText
+ }
+ }
+ ]
+ transitions: Transition {
+ PropertyAnimation {
+ properties: "color"
+ duration: 300
+ }
+ }
+ onClicked: {
+ sddm.login(user, password, session)
+ }
+ }
+ }
+ Connections {
+ target: sddm
+
+ function onLoginFailed() {
+ passwordField.text = ""
+ passwordField.focus = true
+ }
+ }
+}
diff --git a/src/catppuccin-mocha/Components/PasswordField.qml b/src/catppuccin-mocha/Components/PasswordField.qml
new file mode 100644
index 0000000..dd0f384
--- /dev/null
+++ b/src/catppuccin-mocha/Components/PasswordField.qml
@@ -0,0 +1,48 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+TextField {
+ id: passwordField
+ focus: true
+ selectByMouse: true
+ placeholderText: "Password"
+ echoMode: TextInput.Password
+ passwordCharacter: "•"
+ passwordMaskDelay: config.PasswordShowLastLetter
+ selectionColor: config.overlay0
+ renderType: Text.NativeRendering
+ font.family: config.Font
+ font.pointSize: config.FontSize
+ font.bold: true
+ color: config.text
+ horizontalAlignment: TextInput.AlignHCenter
+ background: Rectangle {
+ id: passFieldBackground
+ radius: 3
+ color: config.surface0
+ }
+ states: [
+ State {
+ name: "focused"
+ when: passwordField.activeFocus
+ PropertyChanges {
+ target: passFieldBackground
+ color: config.surface1
+ }
+ },
+ State {
+ name: "hovered"
+ when: passwordField.hovered
+ PropertyChanges {
+ target: passFieldBackground
+ color: config.surface1
+ }
+ }
+ ]
+ transitions: Transition {
+ PropertyAnimation {
+ properties: "color"
+ duration: 300
+ }
+ }
+}
diff --git a/src/catppuccin-mocha/Components/PowerButton.qml b/src/catppuccin-mocha/Components/PowerButton.qml
new file mode 100644
index 0000000..dc74269
--- /dev/null
+++ b/src/catppuccin-mocha/Components/PowerButton.qml
@@ -0,0 +1,41 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Item {
+ implicitHeight: powerButton.height
+ implicitWidth: powerButton.width
+ Button {
+ id: powerButton
+ height: inputHeight
+ width: inputHeight
+ hoverEnabled: true
+ icon {
+ source: Qt.resolvedUrl("../icons/power.svg")
+ height: height
+ width: width
+ color: config.crust
+ }
+ background: Rectangle {
+ id: powerButtonBackground
+ radius: 3
+ color: config.red
+ }
+ states: [
+ State {
+ name: "hovered"
+ when: powerButton.hovered
+ PropertyChanges {
+ target: powerButtonBackground
+ color: config.rosewater
+ }
+ }
+ ]
+ transitions: Transition {
+ PropertyAnimation {
+ properties: "color"
+ duration: 300
+ }
+ }
+ onClicked: sddm.powerOff()
+ }
+}
diff --git a/src/catppuccin-mocha/Components/RebootButton.qml b/src/catppuccin-mocha/Components/RebootButton.qml
new file mode 100644
index 0000000..a2c9b9f
--- /dev/null
+++ b/src/catppuccin-mocha/Components/RebootButton.qml
@@ -0,0 +1,41 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Item {
+ implicitHeight: rebootButton.height
+ implicitWidth: rebootButton.width
+ Button {
+ id: rebootButton
+ height: inputHeight
+ width: inputHeight
+ hoverEnabled: true
+ icon {
+ source: Qt.resolvedUrl("../icons/reboot.svg")
+ height: height
+ width: width
+ color: config.crust
+ }
+ background: Rectangle {
+ id: rebootButtonBackground
+ radius: 3
+ color: config.red
+ }
+ states: [
+ State {
+ name: "hovered"
+ when: rebootButton.hovered
+ PropertyChanges {
+ target: rebootButtonBackground
+ color: config.rosewater
+ }
+ }
+ ]
+ transitions: Transition {
+ PropertyAnimation {
+ properties: "color"
+ duration: 300
+ }
+ }
+ onClicked: sddm.reboot()
+ }
+}
diff --git a/src/catppuccin-mocha/Components/SessionPanel.qml b/src/catppuccin-mocha/Components/SessionPanel.qml
new file mode 100644
index 0000000..0edfcb3
--- /dev/null
+++ b/src/catppuccin-mocha/Components/SessionPanel.qml
@@ -0,0 +1,156 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQml.Models 2.15
+
+Item {
+ property var session: sessionList.currentIndex
+ implicitHeight: sessionButton.height
+ implicitWidth: sessionButton.width
+ DelegateModel {
+ id: sessionWrapper
+ model: sessionModel
+ delegate: ItemDelegate {
+ id: sessionEntry
+ height: inputHeight
+ width: parent.width
+ highlighted: sessionList.currentIndex == index
+ contentItem: Text {
+ renderType: Text.NativeRendering
+ font.family: config.Font
+ font.pointSize: config.FontSize
+ font.bold: true
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: config.text
+ text: name
+ }
+ background: Rectangle {
+ id: sessionEntryBackground
+ color: config.surface1
+ radius: 3
+ }
+ states: [
+ State {
+ name: "hovered"
+ when: sessionEntry.hovered
+ PropertyChanges {
+ target: sessionEntryBackground
+ color: config.surface2
+ }
+ }
+ ]
+ transitions: Transition {
+ PropertyAnimation {
+ property: "color"
+ duration: 300
+ }
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ sessionList.currentIndex = index
+ sessionPopup.close()
+ }
+ }
+ }
+ }
+ Button {
+ id: sessionButton
+ height: inputHeight
+ width: inputHeight
+ hoverEnabled: true
+ icon {
+ source: Qt.resolvedUrl("../icons/settings.svg")
+ height: height
+ width: width
+ color: config.text
+ }
+ background: Rectangle {
+ id: sessionButtonBackground
+ color: config.surface0
+ radius: 3
+ }
+ states: [
+ State {
+ name: "pressed"
+ when: sessionButton.down
+ PropertyChanges {
+ target: sessionButtonBackground
+ color: config.surface1
+ }
+ },
+ State {
+ name: "hovered"
+ when: sessionButton.hovered
+ PropertyChanges {
+ target: sessionButtonBackground
+ color: config.surface2
+ }
+ },
+ State {
+ name: "selection"
+ when: sessionPopup.visible
+ PropertyChanges {
+ target: sessionButtonBackground
+ color: config.surface2
+ }
+ }
+ ]
+ transitions: Transition {
+ PropertyAnimation {
+ properties: "color"
+ duration: 150
+ }
+ }
+ onClicked: {
+ sessionPopup.visible ? sessionPopup.close() : sessionPopup.open()
+ sessionButton.state = "pressed"
+ }
+ }
+ Popup {
+ id: sessionPopup
+ width: inputWidth + padding * 2
+ x: (sessionButton.width + sessionList.spacing) * -7.6
+ y: -(contentHeight + padding * 2) + sessionButton.height
+ padding: inputHeight / 10
+ background: Rectangle {
+ radius: 5.4
+ color: config.surface0
+ }
+ contentItem: ListView {
+ id: sessionList
+ implicitHeight: contentHeight
+ spacing: 8
+ model: sessionWrapper
+ currentIndex: sessionModel.lastIndex
+ clip: true
+ }
+ enter: Transition {
+ ParallelAnimation {
+ NumberAnimation {
+ property: "opacity"
+ from: 0
+ to: 1
+ duration: 400
+ easing.type: Easing.OutExpo
+ }
+ NumberAnimation {
+ property: "x"
+ from: sessionPopup.x + (inputWidth * 0.1)
+ to: sessionPopup.x
+ duration: 500
+ easing.type: Easing.OutExpo
+ }
+ }
+ }
+ exit: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 1
+ to: 0
+ duration: 300
+ easing.type: Easing.OutExpo
+ }
+ }
+ }
+}
diff --git a/src/catppuccin-mocha/Components/SleepButton.qml b/src/catppuccin-mocha/Components/SleepButton.qml
new file mode 100644
index 0000000..f4a4b7a
--- /dev/null
+++ b/src/catppuccin-mocha/Components/SleepButton.qml
@@ -0,0 +1,41 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Item {
+ implicitHeight: sleepButton.height
+ implicitWidth: sleepButton.width
+ Button {
+ id: sleepButton
+ height: inputHeight
+ width: inputHeight
+ hoverEnabled: true
+ icon {
+ source: Qt.resolvedUrl("../icons/sleep.svg")
+ height: height
+ width: width
+ color: config.crust
+ }
+ background: Rectangle {
+ id: sleepButtonBg
+ color: config.red
+ radius: 3
+ }
+ states: [
+ State {
+ name: "hovered"
+ when: sleepButton.hovered
+ PropertyChanges {
+ target: sleepButtonBg
+ color: config.rosewater
+ }
+ }
+ ]
+ transitions: Transition {
+ PropertyAnimation {
+ properties: "color"
+ duration: 300
+ }
+ }
+ onClicked: sddm.suspend()
+ }
+}
diff --git a/src/catppuccin-mocha/Components/UserField.qml b/src/catppuccin-mocha/Components/UserField.qml
new file mode 100644
index 0000000..9f8ca61
--- /dev/null
+++ b/src/catppuccin-mocha/Components/UserField.qml
@@ -0,0 +1,50 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+TextField {
+ id: userField
+ height: inputHeight
+ width: inputWidth
+ selectByMouse: true
+ echoMode: TextInput.Normal
+ selectionColor: config.overlay0
+ renderType: Text.NativeRendering
+ font {
+ family: config.Font
+ pointSize: config.FontSize
+ bold: true
+ }
+ color: config.text
+ horizontalAlignment: Text.AlignHCenter
+ placeholderText: "Username"
+ text: userModel.lastUser
+ background: Rectangle {
+ id: userFieldBackground
+ color: config.surface0
+ radius: 3
+ }
+ states: [
+ State {
+ name: "focused"
+ when: userField.activeFocus
+ PropertyChanges {
+ target: userFieldBackground
+ color: config.surface1
+ }
+ },
+ State {
+ name: "hovered"
+ when: userField.hovered
+ PropertyChanges {
+ target: userFieldBackground
+ color: config.surface1
+ }
+ }
+ ]
+ transitions: Transition {
+ PropertyAnimation {
+ properties: "color"
+ duration: 300
+ }
+ }
+}
diff --git a/src/catppuccin-mocha/Main.qml b/src/catppuccin-mocha/Main.qml
new file mode 100644
index 0000000..422054b
--- /dev/null
+++ b/src/catppuccin-mocha/Main.qml
@@ -0,0 +1,48 @@
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import "Components"
+
+Item {
+ id: root
+ height: Screen.height
+ width: Screen.width
+ Rectangle {
+ id: background
+ anchors.fill: parent
+ height: parent.height
+ width: parent.width
+ z: 0
+ color: config.base
+ }
+ Image {
+ id: backgroundImage
+ anchors.fill: parent
+ height: parent.height
+ width: parent.width
+ fillMode: Image.PreserveAspectCrop
+ visible: config.CustomBackground == "true" ? true : false
+ z: 1
+ source: config.Background
+ asynchronous: false
+ cache: true
+ mipmap: true
+ clip: true
+ }
+ Item {
+ id: mainPanel
+ z: 3
+ anchors {
+ fill: parent
+ margins: 50
+ }
+ Clock {
+ id: time
+ visible: config.ClockEnabled == "true" ? true : false
+ }
+ LoginPanel {
+ id: loginPanel
+ anchors.fill: parent
+ }
+ }
+}
diff --git a/src/catppuccin-mocha/assets/angle-down.png b/src/catppuccin-mocha/assets/angle-down.png
new file mode 100644
index 0000000..f621bfc
Binary files /dev/null and b/src/catppuccin-mocha/assets/angle-down.png differ
diff --git a/src/catppuccin-mocha/backgrounds/.gitkeep b/src/catppuccin-mocha/backgrounds/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/src/catppuccin-mocha/icons/power.svg b/src/catppuccin-mocha/icons/power.svg
new file mode 100644
index 0000000..70495dd
--- /dev/null
+++ b/src/catppuccin-mocha/icons/power.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/src/catppuccin-mocha/icons/reboot.svg b/src/catppuccin-mocha/icons/reboot.svg
new file mode 100644
index 0000000..5506bbb
--- /dev/null
+++ b/src/catppuccin-mocha/icons/reboot.svg
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/src/catppuccin-mocha/icons/settings.svg b/src/catppuccin-mocha/icons/settings.svg
new file mode 100644
index 0000000..9a64fbd
--- /dev/null
+++ b/src/catppuccin-mocha/icons/settings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/catppuccin-mocha/icons/sleep.svg b/src/catppuccin-mocha/icons/sleep.svg
new file mode 100644
index 0000000..4102f2d
--- /dev/null
+++ b/src/catppuccin-mocha/icons/sleep.svg
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/src/catppuccin-mocha/metadata.desktop b/src/catppuccin-mocha/metadata.desktop
new file mode 100644
index 0000000..82c1be2
--- /dev/null
+++ b/src/catppuccin-mocha/metadata.desktop
@@ -0,0 +1,14 @@
+[SddmGreeterTheme]
+Name=Catppuccin mocha
+Description=Soothing pastel theme for SDDM
+Type=sddm-theme
+Version=2.1
+Website=https://github.com/catppuccin/sddm
+Screenshot=preview.png
+MainScript=Main.qml
+ConfigFile=theme.conf
+TranslationsDirectory=translations
+Theme-Id=Catppuccin
+Theme-API=2.0
+License=MIT
+QtVersion=6
diff --git a/src/catppuccin-mocha/preview.png b/src/catppuccin-mocha/preview.png
new file mode 100644
index 0000000..ad78e68
Binary files /dev/null and b/src/catppuccin-mocha/preview.png differ
diff --git a/src/catppuccin-mocha/theme.conf b/src/catppuccin-mocha/theme.conf
new file mode 100644
index 0000000..35c3e9b
--- /dev/null
+++ b/src/catppuccin-mocha/theme.conf
@@ -0,0 +1,39 @@
+[General]
+Font="Noto Sans"
+FontSize=9
+ClockEnabled="true"
+CustomBackground="false"
+LoginBackground="false"
+Background="backgrounds/wall.jpg"
+
+# Uncomment this option to show the last letter of the password
+# for the number of milliseconds specified
+# PasswordShowLastLetter=1000
+
+# DON'T CHANGE THESE
+rosewater = "#f5e0dc"
+flamingo = "#f2cdcd"
+pink = "#f5c2e7"
+mauve = "#cba6f7"
+red = "#f38ba8"
+maroon = "#eba0ac"
+peach = "#fab387"
+yellow = "#f9e2af"
+green = "#a6e3a1"
+teal = "#94e2d5"
+sky = "#89dceb"
+sapphire = "#74c7ec"
+blue = "#89b4fa"
+lavender = "#b4befe"
+text = "#cdd6f4"
+subtext1 = "#bac2de"
+subtext0 = "#a6adc8"
+overlay2 = "#9399b2"
+overlay1 = "#7f849c"
+overlay0 = "#6c7086"
+surface2 = "#585b70"
+surface1 = "#45475a"
+surface0 = "#313244"
+base = "#1e1e2e"
+mantle = "#181825"
+crust = "#11111b"
diff --git a/src/grub b/src/grub
new file mode 100644
index 0000000..63b78a9
--- /dev/null
+++ b/src/grub
@@ -0,0 +1,62 @@
+# GRUB boot loader configuration
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISTRIBUTOR="Arch"
+GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
+GRUB_CMDLINE_LINUX="zswap.enabled=0 rootfstype=ext4"
+
+# Preload both GPT and MBR modules so that they are not missed
+GRUB_PRELOAD_MODULES="part_gpt part_msdos"
+
+# Uncomment to enable booting from LUKS encrypted devices
+#GRUB_ENABLE_CRYPTODISK=y
+
+# Set to 'countdown' or 'hidden' to change timeout behavior,
+# press ESC key to display menu.
+GRUB_TIMEOUT_STYLE=menu
+
+# Uncomment to use basic console
+GRUB_TERMINAL_INPUT=console
+
+# Uncomment to disable graphical terminal
+#GRUB_TERMINAL_OUTPUT=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `videoinfo'
+GRUB_GFXMODE=auto
+
+# Uncomment to allow the kernel use the same resolution used by grub
+GRUB_GFXPAYLOAD_LINUX=keep
+
+# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
+# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+GRUB_DISABLE_RECOVERY=true
+
+# Uncomment and set to the desired menu colors. Used by normal and wallpaper
+# modes only. Entries specified as foreground/background.
+#GRUB_COLOR_NORMAL="light-blue/black"
+#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
+
+# Uncomment one of them for the gfx desired, a image background or a gfxtheme
+#GRUB_BACKGROUND="/path/to/wallpaper"
+GRUB_THEME="/usr/share/grub/themes/catppuccin-mocha-grub-theme/theme.txt"
+# Uncomment to get a beep at GRUB start
+#GRUB_INIT_TUNE="480 440 1"
+
+# Uncomment to make GRUB remember the last selection. This requires
+# setting 'GRUB_DEFAULT=saved' above.
+#GRUB_SAVEDEFAULT=true
+
+# Uncomment to disable submenus in boot menu
+#GRUB_DISABLE_SUBMENU=y
+
+# Probing for other operating systems is disabled for security reasons. Read
+# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this
+# functionality install os-prober and uncomment to detect and include other
+# operating systems.
+#GRUB_DISABLE_OS_PROBER=false
diff --git a/src/mkinitcpio.conf b/src/mkinitcpio.conf
new file mode 100644
index 0000000..aa3c4b9
--- /dev/null
+++ b/src/mkinitcpio.conf
@@ -0,0 +1,4 @@
+MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
+BINARIES=()
+FILES=()
+HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck)
diff --git a/src/nvidia.conf b/src/nvidia.conf
new file mode 100644
index 0000000..4ad3f5a
--- /dev/null
+++ b/src/nvidia.conf
@@ -0,0 +1 @@
+options nvidia_drm modeset=1 fbdev=1
diff --git a/src/pacman.txt b/src/pacman.txt
new file mode 100644
index 0000000..a0b5a50
--- /dev/null
+++ b/src/pacman.txt
@@ -0,0 +1,82 @@
+amd-ucode
+archlinux-xdg-menu
+base
+base-devel
+blueman
+bluez
+bluez-utils
+btop
+cmake
+cpio
+discord
+dkms
+dolphin
+dunst
+efibootmgr
+egl-wayland
+firefox
+flatpak
+fzf
+git
+grim
+grub
+gst-plugin-pipewire
+htop
+hypridle
+hyprland
+hyprlock
+hyprwayland-scanner
+iwd
+kitty
+kservice5
+kvantum
+libpulse
+linux
+linux-firmware
+linux-headers
+lvm2
+meson
+mpv
+nano
+neofetch
+neovim
+network-manager-applet
+networkmanager
+nodejs
+npm
+nvidia-dkms
+nwg-look
+obs-studio
+pipewire
+pipewire-alsa
+pipewire-jack
+pipewire-pulse
+polkit-kde-agent
+python-pywal
+qt5-wayland
+qt5ct
+qt6-wayland
+qt6ct
+ripgrep
+rofi-wayland
+sddm
+slurp
+smartmontools
+swappy
+swaync
+swww
+unzip
+vim
+waybar
+wget
+wine
+wireless_tools
+wireplumber
+wl-clipboard
+wofi
+xdg-desktop-portal-hyprland
+xdg-utils
+xorg-server
+xorg-xinit
+zram-generator
+zsh
diff --git a/src/sddm.conf b/src/sddm.conf
new file mode 100644
index 0000000..2241ecf
--- /dev/null
+++ b/src/sddm.conf
@@ -0,0 +1,2 @@
+[Theme]
+Current=catppuccin-mocha
diff --git a/src/yay.txt b/src/yay.txt
new file mode 100644
index 0000000..14b0128
--- /dev/null
+++ b/src/yay.txt
@@ -0,0 +1,14 @@
+aylurs-gtk-shell
+beeper-latest-bin
+betterdiscord-installer
+cava
+grimblast-git
+nwg-displays
+oxygen-cursors
+pyprland
+pywal-discord-git
+spotify
+tty-clock
+unimatrix-git
+vesktop
+wlogout
diff --git a/yay-bin b/yay-bin
new file mode 160000
index 0000000..02b6d80
--- /dev/null
+++ b/yay-bin
@@ -0,0 +1 @@
+Subproject commit 02b6d8096ff282f183b6b8c474581a0120c57b4a