diff --git a/.github/workflows/build-nix.yml b/.github/workflows/build-nix.yml deleted file mode 100644 index e60310d..0000000 --- a/.github/workflows/build-nix.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Build system configurations - -on: - pull_request: - -jobs: - build-x86_64-demeter: - runs-on: ubuntu-24.04 - permissions: - contents: read - id-token: write - steps: - - name: Free Disk Space (Ubuntu) - uses: Jayllyz/free-disk-space@perf/use-rmz - - uses: actions/checkout@v4 - - name: Check Nix flake Nixpkgs inputs - uses: DeterminateSystems/flake-checker-action@main - - uses: DeterminateSystems/nix-installer-action@main - with: - github-token: ${{ secrets.GH_TOKEN_FOR_UPDATES }} - - name: Build demeter - run: | - # nix flake check --all-systems - nix build .#nixosConfigurations.demeter.config.system.build.toplevel - build-aarch64-callisto: - runs-on: ubuntu-24.04-arm - permissions: - contents: read - id-token: write - steps: - - name: Free Disk Space (Ubuntu) - uses: Jayllyz/free-disk-space@perf/use-rmz - - uses: actions/checkout@v4 - - name: Check Nix flake Nixpkgs inputs - uses: DeterminateSystems/flake-checker-action@main - - uses: DeterminateSystems/nix-installer-action@main - with: - github-token: ${{ secrets.GH_TOKEN_FOR_UPDATES }} - - name: Build callisto - run: | - # nix flake check --all-systems - nix build .#nixosConfigurations.callisto.config.system.build.toplevel diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml deleted file mode 100644 index f57e1cd..0000000 --- a/.github/workflows/lock.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: update-flake-lock -on: - workflow_dispatch: # allows manual triggering - schedule: - # Runs weekly at 00:00 UTC on Sunday - - cron: "0 0 * * 0" -jobs: - lockfile: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Install Nix - uses: DeterminateSystems/nix-installer-action@main - with: - github-token: ${{ secrets.GH_TOKEN_FOR_UPDATES }} - - name: Update flake.lock - uses: DeterminateSystems/update-flake-lock@main - with: - token: ${{ secrets.GH_TOKEN_FOR_UPDATES }} - pr-title: "deps(flake.lock): update" - pr-labels: | - dependencies,auto-merge - pr-assignees: youwen5 diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml deleted file mode 100644 index 70793b9..0000000 --- a/.github/workflows/merge.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: auto-merge-labeled -on: - pull_request: -jobs: - auto-merge-labeled: - runs-on: ubuntu-latest - steps: - - id: auto-merge-labeled - name: Auto merge labeled - uses: isolomak/auto-merge-labeled@v1.0.1 - with: - label: 'lock' - commit-title: 'build(lock): update' - merge_method: 'squash' - env: - GITHUB_TOKEN: ${{ secrets.TOKEN }} diff --git a/README.md b/README.md index 0b8cf8b..791d9bd 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,9 @@ # KaitoianOS -> Fully customizable container-based operating system based on ```NixOS``` running Hyprland && Hyprscroller. +> Fully customizable container-based operating system based on ```NixOS``` running SwayDE. ## What even is this Config? So I believe I have no life, so I migrated from a super unstable and limited OS (DOS) to FreeBSD, however FreeBSD had limited packages being maintained on **Fresh Ports** so I figured might as well become a Linux user. After distro hopping for 3 months I was introduced to NixOS by [Youwen](https://youwen.dev) claiming that it would solve my problems of having to configure everything on seperate directories, common on most distros such as Arch or Debian. - - -## Why switch to Hyprland -Although Sway is a reliable and well developed window manager, it doesn't offer the same versatility as Hyprland in Wayland. Hyprland, although has too much eyecandy, it does offer a more polished and complete operating system especially to display beautiful color scheme. I adopted youwen's Hyprland configuration because it is preconfigured and it has all that I need in terms of productivity in this operating system. - +## Why Sway and Wayland +Wayland provides a more stable graphical enviornment due to the simplicity of the code and it's security; moreover, it peforms significantly better on intergrated and discrete graphics cards for most of my systems. Why Sway and not Hyprland? Sway is a simple port of the popular x11 DE known as i3. Hyprland has too much eyecandy for a DE, too much bells and whistles such as dynamic colors and rounded edges. Also removing eyecandy on my config makes my input smoother and crispier. ## What Basic Utilites do you have on here? - Firefox Developer Edition - Spotify (Spicetify) @@ -30,7 +27,7 @@ ROG (ASUS) Flow X13 2022 > 16 GB LPDDR4 -> 256 GB Kioxia +> 1TB Crucial (Allocated 128 for NixOS) ## How to Install or Clone @@ -55,6 +52,6 @@ cp /etc/nixos/hardware-configuration.nix ~/KaitoianOS/hosts/shiroko/hardware-con 5. Recompile your os by ```sh -sudo nixos-rebuild switch --flake .#shiroko #or kuroko +sudo nixos-rebuild switch --flake .\#shiroko #or kuroko ``` 6. Enjoy! diff --git a/flake.lock b/flake.lock index 8522081..d96e054 100644 --- a/flake.lock +++ b/flake.lock @@ -1,15 +1,32 @@ { "nodes": { + "aq": { + "flake": false, + "locked": { + "lastModified": 1736050555, + "narHash": "sha256-TUoKhJ2QMK2AYTRvBCRpYFmaSihiF/OgB+HDZjamZtI=", + "owner": "quantum9innovation", + "repo": "aquamarine", + "rev": "546ce7963d18cbd30b32bf8d464f9ab3f6d54f74", + "type": "github" + }, + "original": { + "owner": "quantum9innovation", + "ref": "patch-125", + "repo": "aquamarine", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1746562888, - "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", + "lastModified": 1732200724, + "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", + "rev": "153d52373b0fb2d343592871009a286ec8837aec", "type": "github" }, "original": { @@ -37,11 +54,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1748408240, - "narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=", + "lastModified": 1736852337, + "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e", + "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", "type": "github" }, "original": { @@ -53,60 +70,44 @@ "base16-vim": { "flake": false, "locked": { - "lastModified": 1732806396, - "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "lastModified": 1735953590, + "narHash": "sha256-YbQwaApLFJobn/0lbpMKcJ8N5axKlW2QIGkDS5+xoSU=", "owner": "tinted-theming", "repo": "base16-vim", - "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "rev": "c2a1232aa2c0ed27dcbf005779bcfe0e0ab5e85d", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "base16-vim", - "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", "type": "github" } }, "cpu-microcodes": { "flake": false, "locked": { - "lastModified": 1747081695, - "narHash": "sha256-nnim3432n3+iwD2alY1cigQE7GKnI8BkyZDJTzood+E=", + "lastModified": 1737223256, + "narHash": "sha256-aETUoryCkJSRWlxbgL8im40+2FfOm0u4X9aP5aZueME=", "owner": "platomav", "repo": "CPUMicrocodes", - "rev": "2bcc2d8cb648c3397ea7381ca6887a9e3fdd6164", + "rev": "984b766433e99c7e945b5cc17519bb088084b3fd", "type": "github" }, "original": { "owner": "platomav", "repo": "CPUMicrocodes", - "rev": "2bcc2d8cb648c3397ea7381ca6887a9e3fdd6164", - "type": "github" - } - }, - "crane": { - "locked": { - "lastModified": 1731098351, - "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=", - "owner": "ipetkov", - "repo": "crane", - "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", + "rev": "984b766433e99c7e945b5cc17519bb088084b3fd", "type": "github" } }, "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1748383148, - "narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", + "lastModified": 1736899990, + "narHash": "sha256-S79Hqn2EtSxU4kp99t8tRschSifWD4p/51++0xNWUxw=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", + "rev": "91ca1f82d717b02ceb03a3f423cbe8082ebbb26d", "type": "github" }, "original": { @@ -118,11 +119,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -132,12 +133,13 @@ } }, "flake-compat_2": { + "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -146,51 +148,12 @@ "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "lanzaboote", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1730504689, - "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "506278e768c2a08bec68eb62932193e341f55c90", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "stylix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "flake-utils": { "inputs": { - "systems": "systems" + "systems": [ + "stylix", + "systems" + ] }, "locked": { "lastModified": 1731533236, @@ -228,18 +191,18 @@ "stylix", "flake-compat" ], - "gitignore": "gitignore_2", + "gitignore": "gitignore", "nixpkgs": [ "stylix", "nixpkgs" ] }, "locked": { - "lastModified": 1747372754, - "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "lastModified": 1735882644, + "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", "type": "github" }, "original": { @@ -249,28 +212,6 @@ } }, "gitignore": { - "inputs": { - "nixpkgs": [ - "lanzaboote", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { "inputs": { "nixpkgs": [ "stylix", @@ -295,16 +236,16 @@ "gnome-shell": { "flake": false, "locked": { - "lastModified": 1744584021, - "narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=", + "lastModified": 1732369855, + "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=", "owner": "GNOME", "repo": "gnome-shell", - "rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae", + "rev": "dadd58f630eeea41d645ee225a63f719390829dc", "type": "github" }, "original": { "owner": "GNOME", - "ref": "48.1", + "ref": "47.2", "repo": "gnome-shell", "type": "github" } @@ -316,11 +257,11 @@ ] }, "locked": { - "lastModified": 1749400020, - "narHash": "sha256-0nTmHO8AYgRYk5v6zw5oZ3x9nh+feb+Isn7WNe318M0=", + "lastModified": 1737188535, + "narHash": "sha256-O2ttwW1/dUc/Y+Rf48Njtr4tZpRJhy8FhafikekIjMY=", "owner": "nix-community", "repo": "home-manager", - "rev": "2835e8ba0ad99ba86d4a5e497a962ec9fa35e48f", + "rev": "1e36429705f9af2d00a517ba46a4f21ef8a8194f", "type": "github" }, "original": { @@ -337,11 +278,11 @@ ] }, "locked": { - "lastModified": 1748737919, - "narHash": "sha256-5kvBbLYdp+n7Ftanjcs6Nv+UO6sBhelp6MIGJ9nWmjQ=", + "lastModified": 1736785676, + "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=", "owner": "nix-community", "repo": "home-manager", - "rev": "5675a9686851d9626560052a032c4e14e533c1fa", + "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d", "type": "github" }, "original": { @@ -350,91 +291,13 @@ "type": "github" } }, - "hyprscroller-src": { - "flake": false, - "locked": { - "lastModified": 1749141212, - "narHash": "sha256-YC9WEi74d9L1rjVnjNXqWCUPhHgCj6npQWZ0KT6l2nA=", - "owner": "cpiber", - "repo": "hyprscroller", - "rev": "80f9a9c6ec9423cfd3f17e801e92934ffc5d52d2", - "type": "github" - }, - "original": { - "owner": "cpiber", - "repo": "hyprscroller", - "type": "github" - } - }, - "iamb": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "nixpkgs" - ], - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1749177992, - "narHash": "sha256-B72RIr6pbf9kW0JhcbsgUhLSw22BxxODoKIdPd2YWFY=", - "owner": "ulyssa", - "repo": "iamb", - "rev": "33d3407694c9dece0f3e59aa577eda98c9384ea1", - "type": "github" - }, - "original": { - "owner": "ulyssa", - "repo": "iamb", - "type": "github" - } - }, - "jkernel": { - "flake": false, - "locked": { - "lastModified": 1733188630, - "narHash": "sha256-TlUFZOqFsTXh97vRpNeyoJJ+WNOwxgvu7u3JcLGN7iU=", - "owner": "tweag", - "repo": "jupyenv", - "rev": "55e42c3dea87d3c1e3e9dfde28df637e88d6bd39", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "jupyenv", - "type": "github" - } - }, - "lanzaboote": { - "inputs": { - "crane": "crane", - "flake-compat": "flake-compat", - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_2", - "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1737639419, - "narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=", - "owner": "nix-community", - "repo": "lanzaboote", - "rev": "a65905a09e2c43ff63be8c0e86a93712361f871e", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.4.2", - "repo": "lanzaboote", - "type": "github" - } - }, "nixCats": { "locked": { - "lastModified": 1741608660, - "narHash": "sha256-qikkAmt+z7fN2Zq6lU54x5nZ1KlE97wVAwaJk+/1PkI=", + "lastModified": 1735318798, + "narHash": "sha256-x1hq2uimNBQtYtkaJ4KODKQmdbAYvnd1hoxRyyPekWE=", "owner": "BirdeeHub", "repo": "nixCats-nvim", - "rev": "ad8d22d086cfb7a1cb0e9fda1fb871bbe370c942", + "rev": "58a8782879f926192b06b95f75538618456062ae", "type": "github" }, "original": { @@ -445,59 +308,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736320768, - "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1730741070, - "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1731919951, - "narHash": "sha256-vOM6ETpl1yu9KLi/icTmLJIPbbdJCdAVYUXZceO/Ce4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04386ac325a813047fc314d4b4d838a5b1e3c7fe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1749285348, - "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", + "lastModified": 1737062831, + "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", + "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c", "type": "github" }, "original": { @@ -507,35 +322,21 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1741462378, - "narHash": "sha256-ZF3YOjq+vTcH51S+qWa1oGA9FgmdJ67nTNPG2OIlXDc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "2d9e4457f8e83120c9fdf6f1707ed0bc603e5ac9", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixvim": { "inputs": { "nixCats": "nixCats", - "nixpkgs": "nixpkgs_4", + "nixpkgs": [ + "nixpkgs" + ], "plugins-blink-ripgrep": "plugins-blink-ripgrep", "plugins-pomo-nvim": "plugins-pomo-nvim" }, "locked": { - "lastModified": 1741660851, - "narHash": "sha256-kFlDqMvo0gNu3xJ9PDXhF21vPv18/NiuhjHr+yoxJp4=", + "lastModified": 1737164379, + "narHash": "sha256-/lERZhJCq+eXPUENu0a8MwVbO8CMMn2ooej3l3+jc1U=", "owner": "kaitotlex", "repo": "vix1", - "rev": "879bcb9e209dfac74e5e86e1a0066c952edee140", + "rev": "30506bcd245c0d44d8cfcda446ff7abb2b12ae1f", "type": "github" }, "original": { @@ -544,40 +345,14 @@ "type": "github" } }, - "nur": { - "inputs": { - "flake-parts": [ - "stylix", - "flake-parts" - ], - "nixpkgs": [ - "stylix", - "nixpkgs" - ], - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1748730660, - "narHash": "sha256-5LKmRYKdPuhm8j5GFe3AfrJL8dd8o57BQ34AGjJl1R0=", - "owner": "nix-community", - "repo": "NUR", - "rev": "2c0bc52fe14681e9ef60e3553888c4f086e46ecb", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "NUR", - "type": "github" - } - }, "plugins-blink-ripgrep": { "flake": false, "locked": { - "lastModified": 1741415505, - "narHash": "sha256-lEt5AUSyezmlthSj3KUHJ9cX4pQnB2/31j8bklIp5Mk=", + "lastModified": 1735411615, + "narHash": "sha256-V3Tf8bPpO7KjP/AwcgYjMZdTejydvBx/t33H3+wsNLo=", "owner": "mikavilpas", "repo": "blink-ripgrep.nvim", - "rev": "91aee73557237b0cc1313e4ed2b32f10de6cc65e", + "rev": "f4d9460a3552c735c7835a545ce32125610c1ce5", "type": "github" }, "original": { @@ -602,41 +377,11 @@ "type": "github" } }, - "pre-commit-hooks-nix": { - "inputs": { - "flake-compat": [ - "lanzaboote", - "flake-compat" - ], - "gitignore": "gitignore", - "nixpkgs": [ - "lanzaboote", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1731363552, - "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, "root": { "inputs": { + "aq": "aq", "home-manager": "home-manager", - "hyprscroller-src": "hyprscroller-src", - "iamb": "iamb", - "jkernel": "jkernel", - "lanzaboote": "lanzaboote", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs", "nixvim": "nixvim", "spicetify": "spicetify", "stylix": "stylix", @@ -645,58 +390,19 @@ "zen": "zen" } }, - "rust-overlay": { - "inputs": { - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1736994333, - "narHash": "sha256-v4Jrok5yXsZ6dwj2+2uo5cSyUi9fBTurHqHvNHLT1XA=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "848db855cb9e88785996e961951659570fc58814", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { + "spicetify": { "inputs": { + "flake-compat": "flake-compat", "nixpkgs": [ - "lanzaboote", "nixpkgs" ] }, "locked": { - "lastModified": 1731897198, - "narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "0be641045af6d8666c11c2c40e45ffc9667839b5", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "spicetify": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_2" - }, - "locked": { - "lastModified": 1749357231, - "narHash": "sha256-AbrPgGFVYR45TlYLHYTppayG0xzOG9XXhi+1j3Klbw8=", + "lastModified": 1737173687, + "narHash": "sha256-+WxaXc30KhTuCa9U8Nv2mJApIBq85CfA5fbcVsvdfxo=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "03783416f7416715c52166d4e8ba0492a7149397", + "rev": "c68c2ac0814ab386d2cbd3b9178e729b4fc805f0", "type": "github" }, "original": { @@ -713,27 +419,25 @@ "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", "flake-compat": "flake-compat_2", - "flake-parts": "flake-parts_2", + "flake-utils": "flake-utils", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_2", "nixpkgs": [ "nixpkgs" ], - "nur": "nur", - "systems": "systems_3", + "systems": "systems", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", - "tinted-schemes": "tinted-schemes", "tinted-tmux": "tinted-tmux", "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1749398498, - "narHash": "sha256-Usx6sGnT/D8ZnWiZg+J1OY3dp4ZssMQiN1XeXcsL/cs=", + "lastModified": 1737207873, + "narHash": "sha256-XTCuMv753lpm8DvdVf9q2mH3rhlfsKrCUYbaADPC/bA=", "owner": "danth", "repo": "stylix", - "rev": "5869510e48e64d916dc6905dc664a02b0f85f1bd", + "rev": "51ad2cec11e773a949bdbec88bed2524f098f49a", "type": "github" }, "original": { @@ -757,36 +461,6 @@ "type": "github" } }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "tinted-foot": { "flake": false, "locked": { @@ -807,43 +481,28 @@ "tinted-kitty": { "flake": false, "locked": { - "lastModified": 1735730497, - "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "lastModified": 1716423189, + "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=", "owner": "tinted-theming", "repo": "tinted-kitty", - "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "rev": "eb39e141db14baef052893285df9f266df041ff8", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "tinted-kitty", - "type": "github" - } - }, - "tinted-schemes": { - "flake": false, - "locked": { - "lastModified": 1748180480, - "narHash": "sha256-7n0XiZiEHl2zRhDwZd/g+p38xwEoWtT0/aESwTMXWG4=", - "owner": "tinted-theming", - "repo": "schemes", - "rev": "87d652edd26f5c0c99deda5ae13dfb8ece2ffe31", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "schemes", + "rev": "eb39e141db14baef052893285df9f266df041ff8", "type": "github" } }, "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1748740859, - "narHash": "sha256-OEM12bg7F4N5WjZOcV7FHJbqRI6jtCqL6u8FtPrlZz4=", + "lastModified": 1735737224, + "narHash": "sha256-FO2hRBkZsjlIRqzNHCPc/52yxg11kHGA8MEtSun9RwE=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "57d5f9683ff9a3b590643beeaf0364da819aedda", + "rev": "aead506a9930c717ebf81cc83a2126e9ca08fa64", "type": "github" }, "original": { @@ -868,38 +527,16 @@ "type": "github" } }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "stylix", - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, "ucodenix": { "inputs": { "cpu-microcodes": "cpu-microcodes" }, "locked": { - "lastModified": 1747656938, - "narHash": "sha256-LE5jjWIN3xzL24ph8U2CwzTPrCxS+uGzXCpSh6b+UPk=", + "lastModified": 1737386190, + "narHash": "sha256-r9UOn9nMqDjY+ohnNCKs8SgN55UXTPI+RWhka2RcsXY=", "owner": "e-tho", "repo": "ucodenix", - "rev": "86d47e4b5790cc68b3af14ec9969ef8128524d43", + "rev": "4c7931fcf713c4ddf730d275f07d916c5f4c4e7a", "type": "github" }, "original": { @@ -911,11 +548,11 @@ "wallpapers": { "flake": false, "locked": { - "lastModified": 1749185371, - "narHash": "sha256-M6QK9qLgyvFaM6gF9qH1d6su254cWfw/+1aO3nxeBmQ=", + "lastModified": 1737220047, + "narHash": "sha256-eLf45K7NvBas7bC5hO5KfpFdy3pzCoQEaW+DNZIFQhs=", "owner": "kaitotlex", "repo": "wallpaper", - "rev": "f1d9cf6f2d16b25ca57e684e1d20124e75413f7c", + "rev": "101647127869f5e91a569281fd181172b692b365", "type": "github" }, "original": { @@ -931,11 +568,11 @@ ] }, "locked": { - "lastModified": 1748971473, - "narHash": "sha256-0Xh6sZI86Ops6u7wyDQlVvV+MvRRXIDb1r3sMnLNk9M=", + "lastModified": 1737173095, + "narHash": "sha256-32xX3cAIQovRNtW5cHirLvSC87uoOfLcaYGUOrTyhx4=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "5cc269976ca876674d8ccc7f40debb61e05583ab", + "rev": "e91b2aa537c1492efd1c5f35f1f204c685e461ab", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index a13279a..29d2ab1 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,7 @@ }; nixvim = { url = "github:kaitotlex/vix1"; + inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:danth/stylix"; @@ -24,33 +25,22 @@ }; ucodenix = { url = "github:e-tho/ucodenix"; + inputs.nixpkgs.follows = "nixpkgs"; }; wallpapers = { url = "github:kaitotlex/wallpaper"; flake = false; }; - lanzaboote = { - url = "github:nix-community/lanzaboote/v0.4.2"; - }; - hyprscroller-src = { - url = "github:cpiber/hyprscroller"; + aq = { + url = "github:quantum9innovation/aquamarine/patch-125"; flake = false; }; - jkernel = { - url = "github:tweag/jupyenv"; - flake = false; - }; - iamb = { - url = "github:ulyssa/iamb"; - inputs.nixpkgs.follows = "nixpkgs"; - }; }; outputs = { nixpkgs, home-manager, - lanzaboote, ... }@inputs: { @@ -62,29 +52,6 @@ system = "x86_64-linux"; modules = [ ./hosts/kuroko - lanzaboote.nixosModules.lanzaboote - - ( - { pkgs, lib, ... }: - { - - environment.systemPackages = [ - # For debugging and troubleshooting Secure Boot. - pkgs.sbctl - ]; - - # Lanzaboote currently replaces the systemd-boot module. - # This setting is usually set to true in configuration.nix - # generated at installation time. So we force it to false - # for now. - boot.loader.systemd-boot.enable = lib.mkForce false; - - boot.lanzaboote = { - enable = true; - pkiBundle = "/var/lib/sbctl"; - }; - } - ) home-manager.nixosModules.home-manager { home-manager = { @@ -95,20 +62,7 @@ inherit inputs; }; users.kaitotlex = { - imports = [ - ./users/kaitotlex - { - wayland.windowManager.hyprland.settings.monitor = [ - "eDP-1,1920x1200@120,0x0,1" - "DP-1, 1920x1080@75.03,3840x0,1,transform, 1" - "HDMI-A-1,1920x1080@165,1920x0,1" - ]; - programs.git.signing = { - signByDefault = true; - key = "42F52D76F1B15B8D997E2AEE8AB934746F475D0B"; - }; - } - ]; + imports = [ ./users/kaitotlex ]; }; }; } @@ -121,29 +75,7 @@ system = "x86_64-linux"; modules = [ ./hosts/shiroko - lanzaboote.nixosModules.lanzaboote - ( - { pkgs, lib, ... }: - { - - environment.systemPackages = [ - # For debugging and troubleshooting Secure Boot. - pkgs.sbctl - ]; - - # Lanzaboote currently replaces the systemd-boot module. - # This setting is usually set to true in configuration.nix - # generated at installation time. So we force it to false - # for now. - boot.loader.systemd-boot.enable = lib.mkForce false; - - boot.lanzaboote = { - enable = true; - pkiBundle = "/var/lib/sbctl"; - }; - } - ) home-manager.nixosModules.home-manager { home-manager = { @@ -154,19 +86,7 @@ inherit inputs; }; users.kaitotlex = { - imports = [ - ./users/kaitotlex - { - wayland.windowManager.hyprland.settings.monitor = [ - "eDP-1,1920x1200@120,0x0,1" - "DP-1, 1920x1080@144.04,1920x0,1" - ]; - programs.git.signing = { - signByDefault = true; - key = "BC04C0C14AEDA705B8FBACE8C5F52A3C0F3B4A77"; - }; - } - ]; + imports = [ ./users/kaitotlex ]; }; }; } diff --git a/hosts/kuroko/configuration.nix b/hosts/kuroko/configuration.nix index c09f380..8cdaa62 100644 --- a/hosts/kuroko/configuration.nix +++ b/hosts/kuroko/configuration.nix @@ -18,17 +18,16 @@ # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; - #boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; virtualisation.waydroid.enable = true; - boot.kernelPackages = pkgs.linuxPackages_latest; + #boot.kernelPackages = pkgs.linuxPackages_5_15; #systemdefaults networking.hostName = "kuroko"; # Define your hostname. services.ratbagd.enable = true; hardware.pulseaudio.support32Bit = true; - boot.kernelParams = [ - "mem_sleep_default=deep" - ]; + # boot.kernelParams = [ + # "mem_sleep_default=deep" + # ]; # systemd.sleep.extraConfig = '' # AllowSuspend=yes # AllowHibernation=yes @@ -38,14 +37,12 @@ #Nvidia Hardware begins services.xserver.videoDrivers = [ - "amdgpu" "nvidia" + "amdgpu" ]; hardware.graphics.enable = true; hardware.graphics.enable32Bit = true; - hardware.graphics.extraPackages = with pkgs; [ - amdvlk - ]; + hardware.nvidia = { # custom option defined in graphics/default.nix #usePatchedAquamarine = true; @@ -61,7 +58,7 @@ # Fine-grained power management. Turns off GPU when not in use. # Experimental and only works on modern Nvidia GPUs (Turing or newer). - powerManagement.finegrained = lib.mkForce true; + powerManagement.finegrained = lib.mkForce false; # Use the NVidia open source kernel module (not to be confused with the # independent third-party "nouveau" open source driver). @@ -70,7 +67,7 @@ # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus # Only available from driver 515.43.04+ # Currently alpha-quality/buggy, so false is currently the recommended setting. - open = lib.mkForce false; + open = lib.mkForce true; # Enable the Nvidia settings menu, # accessible via `nvidia-settings`. @@ -80,11 +77,14 @@ package = config.boot.kernelPackages.nvidiaPackages.beta; #Power Saving Features prime = { - offload.enable = lib.mkForce true; + offload = { + enable = true; + enableOffloadCmd = true; + }; # Make sure to use the correct Bus ID values for your system! #intelBusId = "PCI:"; - nvidiaBusId = "PCI:1:0:0"; - amdgpuBusId = "PCI:8:0:0"; + nvidiaBusId = "PCI:01:00:0"; + amdgpuBusId = "PCI:08:00:0"; }; }; @@ -110,9 +110,7 @@ LC_TELEPHONE = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8"; }; - nixpkgs.config.permittedInsecurePackages = [ - "olm-3.2.16" - ]; + services.keyd = { enable = true; keyboards.default = { @@ -150,20 +148,13 @@ }; }; - #Asus Specific Packages - services.asusd.enable = true; - programs.rog-control-center.enable = true; - #System specific packages to install environment.systemPackages = with pkgs; [ - # nvtop + nvtop osu-lazer davinci-resolve wacomtablet obs-studio - asusctl - supergfxctl - thinkfan ]; # List services that you want to enable: diff --git a/hosts/kuroko/default.nix b/hosts/kuroko/default.nix index 928917f..a3cfae5 100644 --- a/hosts/kuroko/default.nix +++ b/hosts/kuroko/default.nix @@ -7,6 +7,5 @@ ../../modules/audio ../../modules/stylix ../../modules/electrical - ../../modules/desktop-environment ]; } diff --git a/hosts/kuroko/hardware-configuration.nix b/hosts/kuroko/hardware-configuration.nix index c970984..1120d78 100644 --- a/hosts/kuroko/hardware-configuration.nix +++ b/hosts/kuroko/hardware-configuration.nix @@ -8,20 +8,20 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; fileSystems."/" = - { device = "/dev/disk/by-uuid/def95f35-9630-4015-9e21-97d9518a014d"; + { device = "/dev/disk/by-uuid/50c34d14-4b3a-483c-874e-b6412a474cfe"; fsType = "ext4"; }; - boot.initrd.luks.devices."luks-c69579ed-9b9c-4435-b329-e5c95c945823".device = "/dev/disk/by-uuid/c69579ed-9b9c-4435-b329-e5c95c945823"; + boot.initrd.luks.devices."luks-efb1b312-b89c-493e-952a-f70fc2ab0fbf".device = "/dev/disk/by-uuid/efb1b312-b89c-493e-952a-f70fc2ab0fbf"; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/02A5-BCDF"; + { device = "/dev/disk/by-uuid/1826-F6B8"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; }; diff --git a/hosts/kurokoNightly/configuration.nix b/hosts/kurokoNightly/configuration.nix index 9b58dcc..bc40d07 100644 --- a/hosts/kurokoNightly/configuration.nix +++ b/hosts/kurokoNightly/configuration.nix @@ -161,16 +161,16 @@ events = [ "key" ]; command = "pamixer -d 5"; } - # { - # keys = [ 237 ]; - # events = [ "key" ]; - # command = "${pkgs.brightnessctl} -d asus::kbd_backlight set 1-"; - # } - # { - # keys = [ 238 ]; - # events = [ "key" ]; - # command = "${pkgs.brightnessctl} -d asus::kbd_backlight set +1"; - # } + { + keys = [ 237 ]; + events = [ "key" ]; + command = "brightnessctl -d asus::kbd_backlight set 1-"; + } + { + keys = [ 238 ]; + events = [ "key" ]; + command = "brightnessctl -d asus::kbd_backlight set +1"; + } #{ keys = [ ]; events = [ "key" ]; command = "brightnessctl -d amdgpu_bl2 set +10%"; } #{ keys = [ ]; events = [ "key" ]; command = "brightnessctl -d amdgpu_bl2 set +10%"; } diff --git a/hosts/shiroko/configuration.nix b/hosts/shiroko/configuration.nix index 2e9728a..328aab5 100644 --- a/hosts/shiroko/configuration.nix +++ b/hosts/shiroko/configuration.nix @@ -13,32 +13,13 @@ ]; services.fprintd.enable = true; security.pam.services.login.fprintAuth = true; - hardware.graphics.extraPackages = with pkgs; [ - vaapiIntel - intel-media-driver - ]; - hardware.graphics.enable32Bit = true; - hardware.opengl = { - enable = true; - extraPackages = with pkgs; [ - # your Open GL, Vulkan and VAAPI drivers - vpl-gpu-rt # for newer GPUs on NixOS >24.05 or unstable - # onevpl-intel-gpu # for newer GPUs on NixOS <= 24.05 - # intel-media-sdk # for older GPUs - ]; - }; hardware = { + graphics.enable32Bit = true; pulseaudio.support32Bit = true; openrazer.enable = true; }; - virtualisation.podman = { - enable = true; - dockerCompat = true; - }; - nixpkgs.config.permittedInsecurePackages = [ - "olm-3.2.16" - ]; + boot = { # Bootloader. loader.systemd-boot.enable = true; @@ -114,9 +95,9 @@ enable = true; settings = { CPU_SCALING_GOVERNOR_ON_AC = "performance"; - CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + CPU_SCALING_GOVERNOR_ON_BAT = "performance"; - CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + CPU_ENERGY_PERF_POLICY_ON_BAT = "performance"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_MIN_PERF_ON_AC = 0; @@ -132,7 +113,6 @@ }; environment.systemPackages = with pkgs; [ openrazer-daemon - distrobox ]; # Set your time zone. time.timeZone = "America/Los_Angeles"; # Asia/Taipei lib.mkDefault @@ -155,46 +135,6 @@ }; }; # Select internationalisation properties. - - networking.firewall = { - allowedUDPPorts = [ 51820 ]; # Clients and peers can use the same port, see listenport - }; - # Enable WireGuard - # networking.wireguard.interfaces = { - # # "wg0" is the network interface name. You can name the interface arbitrarily. - # wg0 = { - # # Determines the IP address and subnet of the client's end of the tunnel interface. - # ips = [ "10.100.0.2/24" ]; - # listenPort = 51820; # to match firewall allowedUDPPorts (without this wg uses random port numbers) - # - # # Path to the private key file. - # # - # # Note: The private key can also be included inline via the privateKey option, - # # but this makes the private key world-readable; thus, using privateKeyFile is - # # recommended. - # privateKeyFile = "path to private key file"; - # - # peers = [ - # # For a client configuration, one peer entry for the server will suffice. - # - # { - # # Public key of the server (not a file path). - # publicKey = "{server public key}"; - # - # # Forward all the traffic via VPN. - # allowedIPs = [ "0.0.0.0/0" ]; - # # Or forward only particular subnets - # #allowedIPs = [ "10.100.0.1" "91.108.12.0/22" ]; - # - # # Set this to the server IP and port. - # endpoint = "{server ip}:51820"; # ToDo: route to endpoint not automatically configured https://wiki.archlinux.org/index.php/WireGuard#Loop_routing https://discourse.nixos.org/t/solved-minimal-firewall-setup-for-wireguard-client/7577 - # - # # Send keepalives every 25 seconds. Important to keep NAT tables alive. - # persistentKeepalive = 25; - # } - # ]; - # }; - # }; i18n.defaultLocale = "en_US.UTF-8"; i18n.extraLocaleSettings = { diff --git a/hosts/shiroko/default.nix b/hosts/shiroko/default.nix index 928917f..a3cfae5 100644 --- a/hosts/shiroko/default.nix +++ b/hosts/shiroko/default.nix @@ -7,6 +7,5 @@ ../../modules/audio ../../modules/stylix ../../modules/electrical - ../../modules/desktop-environment ]; } diff --git a/modules/core/default.nix b/modules/core/default.nix index 7298a94..908bea6 100644 --- a/modules/core/default.nix +++ b/modules/core/default.nix @@ -4,6 +4,9 @@ ... }: { + imports = [ + ../graphics + ]; # Enable the X11 windowing system. # You can disable this if you're only using the Wayland session. services.xserver.enable = false; diff --git a/modules/desktop-environment/default.nix b/modules/desktop-environment/default.nix deleted file mode 100644 index 653b2b3..0000000 --- a/modules/desktop-environment/default.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.liminalOS.desktop; -in -{ - options.liminalOS.desktop = { - enable = lib.mkOption { - type = lib.types.bool; - default = true; - description = '' - Whether to enable the liminalOS desktop environment. - ''; - }; - hyprland.enable = lib.mkOption { - type = lib.types.bool; - default = cfg.enable; - description = '' - Whether to enable Hyprland. Sets up a default configuration at the system and user level, and installs xdg-desktop-portal-gtk. - ''; - }; - }; - - options.liminalOS.formFactor = lib.mkOption { - type = lib.types.nullOr ( - lib.types.enum [ - "laptop" - "desktop" - ] - ); - default = "desktop"; - description = '' - Form factor of the machine. Adjusts some UI settings. - ''; - }; - - options.liminalOS.powersave = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Whether to set some options to reduce power consumption (mostly Hyprland). - ''; - }; - - config = lib.mkIf cfg.enable { - xdg.portal = lib.mkIf cfg.hyprland.enable { - enable = true; - extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - }; - - programs.hyprland.enable = cfg.hyprland.enable; - - # programs.niri.enable = cfg.niri.enable; - - # programs.xwayland.enable = lib.mkIf cfg.niri.enable (lib.mkForce true); - - services.xserver.enable = false; - - services.xserver = { - xkb.layout = "us"; - xkb.variant = ""; - }; - }; -} diff --git a/modules/graphics/default.nix b/modules/graphics/default.nix new file mode 100644 index 0000000..094830e --- /dev/null +++ b/modules/graphics/default.nix @@ -0,0 +1,23 @@ +{ + config, + lib, + inputs, + ... +}: +let + cfg = config.hardware.nvidia; +in +{ + options.hardware.nvidia.usePatchedAquamarine = lib.mkEnableOption "q9i's patched aquamarine with working sleep on Nvidia"; + + config = lib.mkIf cfg.usePatchedAquamarine { + nixpkgs.overlays = [ + (final: prev: { + aquamarine = prev.aquamarine.overrideAttrs { + src = inputs.aq; + version = inputs.aq.rev; + }; + }) + ]; + }; +} diff --git a/modules/stylix/default.nix b/modules/stylix/default.nix index 83eb960..4c5fa61 100644 --- a/modules/stylix/default.nix +++ b/modules/stylix/default.nix @@ -6,9 +6,9 @@ stylix = { enable = true; - image = "${inputs.wallpapers}/anime/N25/mafuAura.png"; + image = "${inputs.wallpapers}/vtubers/nordMachi-resized.png"; polarity = "dark"; - base16Scheme = "${pkgs.base16-schemes}/share/themes/heetch.yaml"; + base16Scheme = "${pkgs.base16-schemes}/share/themes/rose-pine.yaml"; fonts = { serif = { diff --git a/modules/wm/default.nix b/modules/wm/default.nix index 6ab06fb..3a3b4a2 100644 --- a/modules/wm/default.nix +++ b/modules/wm/default.nix @@ -4,10 +4,7 @@ enable = true; settings = { default_session = { - command = '' - ${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland --remember --asterisks --greeting "Welcome, generation $(readlink /nix/var/nix/profiles/system | grep -o '[0-9]*'). Access is restricted to authorized personnel only." - ''; - # --remember tuigreet --time --cmd Hyprland --remember --asterisks --greeting 'Access granted for those who don't touch grass' + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway --remember --greeting 'Access is restricted to authorized personnel only.'"; user = "greeter"; }; }; diff --git a/pkgs/hyprland/hyprscroller.nix b/pkgs/hyprland/hyprscroller.nix deleted file mode 100644 index 4d5351d..0000000 --- a/pkgs/hyprland/hyprscroller.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - lib, - fetchFromGitHub, - hyprland, - pkg-config, - cmake, - unstableGitUpdater, - ... -}: -let - mkHyprlandPlugin = - hyprland: - args@{ pluginName, ... }: - hyprland.stdenv.mkDerivation ( - args - // { - pname = "${pluginName}"; - nativeBuildInputs = [ pkg-config ] ++ args.nativeBuildInputs or [ ]; - buildInputs = [ hyprland ] ++ hyprland.buildInputs ++ (args.buildInputs or [ ]); - meta = args.meta // { - description = args.meta.description or ""; - longDescription = - (args.meta.longDescription or "") - + "\n\nPlugins can be installed via a plugin entry in the Hyprland NixOS or Home Manager options."; - }; - } - ); -in -mkHyprlandPlugin hyprland { - pluginName = "hyprscroller"; - version = "0-unstable-2025-05-16"; - - src = fetchFromGitHub { - owner = "cpiber"; - repo = "hyprscroller"; - rev = "de97924b6d1086d84939b6f6688637f7b21d8d80"; - hash = "sha256-m9689UH+w8Z/qP/DKYtzQfIGfiE4jgBAfO+uH34cfNs="; - }; - - nativeBuildInputs = [ cmake ]; - - installPhase = '' - runHook preInstall - - mkdir -p $out/lib - mv hyprscroller.so $out/lib/libhyprscroller.so - - runHook postInstall - ''; - - passthru.updateScript = unstableGitUpdater { }; - - meta = { - homepage = "https://github.com/cpiber/hyprscroller"; - description = "Hyprland layout plugin providing a scrolling layout like PaperWM"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ youwen5 ]; - platforms = lib.platforms.linux; - }; -} diff --git a/users/kaitotlex/de/default.nix b/users/kaitotlex/de/default.nix new file mode 100644 index 0000000..d021f05 --- /dev/null +++ b/users/kaitotlex/de/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./sway + ./waybar + #./rofi + ]; +} diff --git a/users/kaitotlex/de/sway/default.nix b/users/kaitotlex/de/sway/default.nix new file mode 100644 index 0000000..6fcf452 --- /dev/null +++ b/users/kaitotlex/de/sway/default.nix @@ -0,0 +1,89 @@ +{ + wayland.windowManager.sway = { + enable = true; + config = rec { + terminal = "kitty"; + modifier = "Mod4"; + menu = "rofi -show combi"; + #lock = "swaylock"; + bars = [ + { + command = "waybar"; + } + ]; + gaps = { + inner = 12; + }; + # colors = { + # focused = { + # background = "#191724"; + # border = "#6e6a86"; + # childBorder = "#6e6a86"; + # indicator = "#26233a"; + # text = "#e0def4"; + # }; + # focusedInactive = { + # background = "#797593"; + # border = "#393552"; + # childBorder = "#393552"; + # indicator = "#ea9d34"; + # text = "#e0def4"; + # }; + # placeholder = { + # background = "#1f1d2e"; + # border = "#000000"; + # childBorder = "#9893a5"; + # indicator = "#000000"; + # text = "#e0def4"; + # }; + # unfocused = { + # background = "#1f1d2e"; + # border = "#1f1d2e"; + # childBorder = "#1f1d2e"; + # indicator = "#797593"; + # text = "#e0def4"; + # }; + # urgent = { + # background = "#2a273f"; + # border = "#ea9a97"; + # childBorder = "#ea9a97"; + # indicator = "#1f1d2e"; + # text = "#e0def4"; + # }; + # }; + window = { + border = 3; + titlebar = false; + }; + # startup = [ + # { + # always = true; + # command = "swaybg -i /home/kaitotlex/Pictures/eff.png"; + # } + # ]; + }; + xwayland = true; + extraConfig = '' + bindsym XF86AudioRaiseVolume exec pamixer -i 5 + bindsym XF86AudioLowerVolume exec pamixer -d 5 + bindsym XF86AudioMute exec pamixer -t + bindsym XF86MonBrightnessUp exec brightnessctl s 5%+ + bindsym XF86MonBrightnessDown exec brightnessctl s 5%- + bindsym XF86AudioMicMute exec spotify + input "type:touchpad" { + natural_scroll enabled + tap enabled # enables click-on-tap + tap_button_map lrm # tap with 1 finger = left click, 2 fingers = right click, 3 fingers = middle click + #dwt enabled # disable (touchpad) while typing + } + bindsym XF86KbdBrightnessDown exec brightnessctl -d asus::kbd_backlight s 1- + bindsym XF86KbdBrightnessUp exec brightnessctl -d asus::kbd_backlight s +1 + bindsym XF86Tools exec brightnessctl s 0 + bindsym XF86WebCam exec systemctl sleep + bindsym Prior exec playerctl previous + bindsym Next exec playerctl next + bindsym XF86RotateWindows exec playerctl play-pause + ''; + }; + +} diff --git a/users/kaitotlex/de/waybar/default.nix b/users/kaitotlex/de/waybar/default.nix new file mode 100644 index 0000000..0d7fb89 --- /dev/null +++ b/users/kaitotlex/de/waybar/default.nix @@ -0,0 +1,172 @@ +{ pkgs, ... }: +{ + programs.waybar = { + enable = true; + style = ./style.css; + settings = { + mainBar = { + name = "bar0"; + + layer = "top"; + position = "top"; + + height = 28; + # "width" = 1920; + + "margin" = "5px 10px 0px 10px"; + "spacing" = 10; + + "mode" = "top"; + # "exclusive" = true; + + # "output" = "eDP-1"; + + reload_style_on_change = true; + + modules-left = [ + "sway/workspaces" + "sway/window" + ]; + modules-right = [ + "tray" + "idle_inhibitor" + "backlight" + "wireplumber" + "network" + "battery" + "disk" + "memory" + "cpu" + "temperature" + "clock" + ]; + + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = "󰛊 "; + deactivated = "󰾫 "; + }; + }; + + network = { + format = "{ifname}"; + format-wifi = "{icon}{essid}"; + format-ethernet = " {essid}"; + format-disconnected = "󰤯 Disconnected"; + format-icons = [ + "󰤟 " + "󰤢 " + "󰤨 " + ]; + tooltip-format = " {bandwidthUpBits} |  {bandwidthDownBits}"; + tooltip-format-wifi = " {bandwidthUpBits} |  {bandwidthDownBits} | 󱄙 {signalStrength}"; + }; + + backlight = { + interval = 2; + format = "󰖨 {percent}%"; + on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -d amdgpu_bl2 set 10%"; + on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -d amdgpu_bl2 set 10%-"; + }; + + wireplumber = { + format = "{icon} {volume}%"; + format-muted = "󰝟 "; + on-click = "pamixer -t"; + on-scroll-up = "${pkgs.pamixer}/bin/pamixer set 5%+"; + on-scroll-down = "${pkgs.pamixer}/bin/pamixer set 5%-"; + format-icons = [ + "" + "" + "" + "" + "" + ]; + }; + + battery = { + interval = 10; + format = "{icon} {capacity}%"; + format-icons = [ + "󰂎" + "󰁺" + "󰁻" + "󰁼" + "󰁽" + "󰁾" + "󰁿" + "󰂀" + "󰂁" + "󰂂" + "󰁹" + ]; + tooltip = true; + tooltip-format = "{timeTo}"; + }; + + disk = { + intervel = 30; + format = "󰋊 {percentage_used}%"; + tooltip-format = "{used} used out of {total} on \"{path}\" ({percentage_used}%)"; + }; + + memory = { + interval = 10; + format = " {used}"; + tooltip-format = "{used}GiB used of {total}GiB ({percentage}%)"; + }; + + cpu = { + interval = 10; + format = " {usage}%"; + }; + + temperature = { + interval = 10; + }; + + clock = { + interval = 1; + format = "{:%H:%M:%S}"; + }; + + "hyprland/workspaces" = { + show-special = true; + persistent-workspaces = { + "*" = [ + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + ]; + }; + format = "{icon}"; + format-icons = { + active = ""; + empty = ""; + default = ""; + urgent = ""; + special = "󰠱"; + }; + }; + "hyprland/window" = { + icon = true; + icon-size = 20; + max-length = 50; + rewrite = { + "(.*) — firefox" = "$1"; + "(.*) — chromium" = "$1"; + "^$" = "👾"; + }; + }; + }; + }; + }; +} diff --git a/users/kaitotlex/de/waybar/nord.css b/users/kaitotlex/de/waybar/nord.css new file mode 100644 index 0000000..7ae564f --- /dev/null +++ b/users/kaitotlex/de/waybar/nord.css @@ -0,0 +1,27 @@ +@define-color bg #2E3440; +/*@define-color bg #353C4A;*/ +@define-color light #D8DEE9; +/*@define-color dark @nord_dark_font;*/ +@define-color warning #ebcb8b; +@define-color critical #BF616A; +@define-color mode #434C5E; +/*@define-color workspaces @bg;*/ +/*@define-color workspaces @nord_dark_font;*/ +/*@define-color workspacesfocused #434C5E;*/ +@define-color workspacesfocused #4C566A; +@define-color tray @workspacesfocused; +@define-color sound #EBCB8B; +@define-color network #5D7096; +@define-color memory #546484; +@define-color cpu #596A8D; +@define-color temp #4D5C78; +@define-color layout #5e81ac; +@define-color battery #88c0d0; +@define-color date #434C5E; +@define-color time #434C5E; +@define-color backlight #434C5E; +@define-color nord_bg #434C5E; +@define-color nord_bg_blue #546484; +@define-color nord_light #D8DEE9; +@define-color nord_light_font #D8DEE9; +@define-color nord_dark_font #434C5E; diff --git a/users/kaitotlex/de/waybar/rose-pine-dawn.css b/users/kaitotlex/de/waybar/rose-pine-dawn.css new file mode 100644 index 0000000..a85bab2 --- /dev/null +++ b/users/kaitotlex/de/waybar/rose-pine-dawn.css @@ -0,0 +1,23 @@ +/* +* Variant: Rosé Pine Dawn +* Maintainer: DankChoir +*/ + +@define-color base #faf4ed; +@define-color surface #fffaf3; +@define-color overlay #f2e9e1; + +@define-color muted #9893a5; +@define-color subtle #797593; +@define-color text #575279; + +@define-color love #b4637a; +@define-color gold #ea9d34; +@define-color rose #d7827e; +@define-color pine #286983; +@define-color foam #56949f; +@define-color iris #907aa9; + +@define-color highlightLow #f4ede8; +@define-color highlightMed #dfdad9; +@define-color highlightHigh #cecacd; diff --git a/users/kaitotlex/de/waybar/style.css b/users/kaitotlex/de/waybar/style.css new file mode 100644 index 0000000..b87b208 --- /dev/null +++ b/users/kaitotlex/de/waybar/style.css @@ -0,0 +1,75 @@ +@import "./nord.css"; +window#waybar { + font-family: "CaskaydiaCove Nerd Font"; + background-color: @bg; + font-size: 0.8rem; + border-radius: 0.5rem; +} + +.modules-left { + opacity: 1; + background-color: #95a3bb; + border-radius: 0.5rem; + padding: 2px; +} + +.modules-center { + opacity: 0; +} + +.modules-right { + opacity: 1; + background-color: #95a3bb; + border-radius: 0.5rem; + padding: 2px 2px 2px 10px +} + +/* label.module { + margin-left: -1px; +} */ + +#workspaces { + background-color: #6e7581; + border-radius: 0.5rem; + padding: 0 2px; +} + +#workspaces button { + font-size: 0.6rem; + padding: 0 0.3rem 0 0; +} + +#window { + background-color: #95a3bb; + border-radius: 0.5rem; + padding: 2px 5px; +} + +#clock { + border-radius: 0.5rem; + padding: 0 3px 0 0; +} + +#battery { + color: @date; +} + +#memory { + color: @memory; +} + +#disk { + color: @date; +} + +#cpu { + color: @cpu; +} + +#temperature { + color: @temp; +} + +#network { + color: @network; +} diff --git a/users/kaitotlex/de/waybar/style.css.bak b/users/kaitotlex/de/waybar/style.css.bak new file mode 100644 index 0000000..9fbd8ff --- /dev/null +++ b/users/kaitotlex/de/waybar/style.css.bak @@ -0,0 +1,76 @@ +@import "./rose-pine-dawn.css"; +window#waybar { + font-family: "CaskaydiaCove Nerd Font"; + background-color: @base; + font-size: 0.8rem; + border-radius: 0.5rem; +} + +.modules-left { + opacity: 1; + background: linear-gradient(45deg, @muted, @subtle); + border-radius: 0.5rem; + padding: 2px; +} + +.modules-center { + opacity: 0; +} + +.modules-right { + opacity: 1; + background-color: @subtle; + border-radius: 0.5rem; + padding: 2px 2px 2px 10px +} + +/* label.module { + margin-left: -1px; +} */ + +#workspaces { + background-color: @rose; + border-radius: 0.5rem; + padding: 0 2px; +} + +#workspaces button { + font-size: 0.6rem; + padding: 0 0.3rem 0 0; +} + +#window { + background-color: @iris; + border-radius: 0.5rem; + padding: 2px 5px; +} + +#clock { + border-radius: 0.5rem; + padding: 0 3px 0 0; +} + +#battery { + color: @foam; +} + +#memory { + color: @iris; +} + +#disk { + color: @gold; +} + +#cpu { + color: @rose; +} + +#temperature { + color: @foam; +} + +#network { + color: @rose; +} + diff --git a/users/kaitotlex/default.nix b/users/kaitotlex/default.nix index 42f8144..51cda52 100644 --- a/users/kaitotlex/default.nix +++ b/users/kaitotlex/default.nix @@ -2,10 +2,7 @@ imports = [ ./home.nix ./spicetify.nix + ./de ./stylix - ./desktop-environment ]; - - liminalOS.formFactor = "laptop"; - liminalOS.powersave = false; } diff --git a/users/kaitotlex/desktop-environment/default.nix b/users/kaitotlex/desktop-environment/default.nix deleted file mode 100644 index 18ac71f..0000000 --- a/users/kaitotlex/desktop-environment/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - osConfig, - lib, - ... -}: -{ - imports = [ - ./hyprland - ./waybar - ./swaync.nix - ]; - - options.liminalOS.desktop = { - enable = lib.mkOption { - type = lib.types.bool; - default = osConfig.liminalOS.desktop.enable; - description = '' - Whether to enable the default configuration for the userland portions of the liminalOS desktop environment. - ''; - }; - }; -} diff --git a/users/kaitotlex/desktop-environment/hyprland/binds.nix b/users/kaitotlex/desktop-environment/hyprland/binds.nix deleted file mode 100644 index 6886fe4..0000000 --- a/users/kaitotlex/desktop-environment/hyprland/binds.nix +++ /dev/null @@ -1,99 +0,0 @@ -{ - lib, - pkgs, - config, - ... -}: -let - cfg = config.liminalOS.desktop.hyprland; - hyprnome = "${pkgs.hyprnome}/bin/hyprnome"; -in -{ - wayland.windowManager.hyprland.settings = lib.mkIf cfg.enable { - bind = [ - "$mod+Shift, $Left, scroller:movewindow, l" - "$mod+Shift, $Right, scroller:movewindow, r" - "$mod+Shift, $Up, scroller:movewindow, u" - "$mod+Shift, $Down, scroller:movewindow, d" - - # Move around - "$mod, $Left, scroller:movefocus, l" - "$mod, $Right, scroller:movefocus, r" - "$mod, $Up, scroller:movefocus, u" - "$mod, $Down, scroller:movefocus, d" - "$mod, comma, scroller:admitwindow" - "$mod, period, scroller:expelwindow" - "$mod, F, scroller:fitsize, active" - "$mod, Y, scroller:fitsize, all" - "$mod, semicolon, scroller:cyclesize, next" - "$mod, apostrophe, scroller:cyclesize, previous" - - "$mod+Shift, U, exec, ${hyprnome} --move" - "$mod+Shift, I, exec, ${hyprnome} --previous --move" - - "$mod, U, exec, ${hyprnome}" - "$mod, I, exec, ${hyprnome} --previous" - - "$mod, C, scroller:setmode, c" - "$mod, V, scroller:setmode, r" - - "$mod, G, scroller:jump" - "$mod+Ctrl, G, scroller:toggleoverview" - # Window actions - "$mod, Q, killactive" - "$mod, W, togglefloating" - "$mod, Return, fullscreen" - - # Utilities - "$mod, Space, exec, pkill -x rofi || rofi -show drun" # Run rofi application launcher - "$mod, X, exec, pkill -x rofi || rofi -show window" # Run rofi window switcher - - "$mod, Backspace, exec, pkill -x wlogout || wlogout" # show logout menu - - "$mod, Z, exec, loginctl lock-session" - - # Media controls - ",XF86AudioMute, exec, ${pkgs.pamixer}/bin/pamixer -t" - ",XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox play-pause" - ",XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox next" - ",XF86AudioRewind, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox previous" - - "$mod, S, togglespecialworkspace" - "$mod+Alt, S, movetoworkspacesilent, special" - "$mod, Tab, workspace, previous" - ''$mod+Shift, P, exec, ${pkgs.grim}/bin/grim - | ${pkgs.swappy}/bin/swappy -f -'' # Screenshot full screen - ''$mod, P, exec, ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | ${pkgs.swappy}/bin/swappy -f -'' # Screenshot - - "$mod, B, exec, zen" - - "$mod, N, exec, sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw" - # Application Keybinds - "$mod, R, exec, ${pkgs.pavucontrol}/bin/pavucontrol -t 3" # open pavucontrol on 'outputs' tab - "$mod, T, exec, ${pkgs.kitty}/bin/kitty" - "$mod, E, exec, ${pkgs.xfce.thunar}/bin/thunar" - "$mod, M, exec, ${pkgs.thunderbird}/bin/thunderbird" - ]; - - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - bindel = [ - ",XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%-" - ",XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%+" - ",XF86KbdBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl -d asus::kbd_backlight set 1-" - ",XF86KbdBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl -d asus::kbd_backlight set 1-" - ",XF86Launch1, exec, ${pkgs.supergfxctl}/bin/supergfxctl --mode Hybrid" - ",XF86Launch4, exec, ${pkgs.supergfxctl}/bin/supergfxctl --mode Integrated" - ",XF86AudioRaiseVolume, exec, ${pkgs.pamixer}/bin/pamixer -i 5" - ",XF86AudioLowerVolume, exec, ${pkgs.pamixer}/bin/pamixer -d 5" - ]; - binde = [ - # Resize windows - "$mod+Alt, $Right, resizeactive, 30 0" - "$mod+Alt, $Left, resizeactive, -30 0" - "$mod+Alt, $Up, resizeactive, 0 -30" - "$mod+Alt, $Down, resizeactive, 0 30" - ]; - }; -} diff --git a/users/kaitotlex/desktop-environment/hyprland/default.nix b/users/kaitotlex/desktop-environment/hyprland/default.nix deleted file mode 100644 index ddd9dde..0000000 --- a/users/kaitotlex/desktop-environment/hyprland/default.nix +++ /dev/null @@ -1,248 +0,0 @@ -{ - pkgs, - config, - lib, - osConfig, - inputs, - ... -}: -let - cfg = config.liminalOS.desktop.hyprland; -in -{ - imports = [ - ./binds.nix - ./utilities.nix - ./windowrules.nix - ]; - - options.liminalOS.formFactor = lib.mkOption { - type = lib.types.nullOr ( - lib.types.enum [ - "laptop" - "desktop" - ] - ); - default = osConfig.liminalOS.formFactor; - description = '' - Form factor of the machine. Adjusts some UI settings. - ''; - }; - - options.liminalOS.powersave = lib.mkOption { - type = lib.types.bool; - default = osConfig.liminalOS.powersave; - description = '' - Whether to set some options to reduce power consumption (mostly Hyprland). - ''; - }; - - options.liminalOS.desktop.hyprland = { - enable = lib.mkOption { - type = lib.types.bool; - default = config.liminalOS.desktop.enable; - description = '' - Whether to enable and rice Hyprland as well as some basic desktop utilities. - ''; - }; - gtkUseOpenGL = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Whether to set GSK_RENDERER environment variable to stop GTK apps from crashing. - ''; - }; - idleDaemon.enable = lib.mkOption { - type = lib.types.bool; - default = cfg.enable; - description = '' - Whether to setup and enable Hypridle with some defaults to automatically lock the screen and suspend after idling. - ''; - }; - screenlocker.enable = lib.mkOption { - type = lib.types.bool; - default = cfg.enable && cfg.idleDaemon.enable; - description = '' - Whether to set up Hyprlock for screen locking. - ''; - }; - screenlocker.useCrashFix = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Whether to use a workaround for Hyprlock background blur not working on some machines. Before locking, a screenshot will be taken and placed at `/tmp/__hyprlock-monitor-screenshot.png`. - ''; - }; - screenlocker.monitor = lib.mkOption { - type = lib.types.nullOr lib.types.str; - default = null; - description = '' - Monitor to use for screen locker. Use `hyprctl monitors` to determine. - ''; - }; - bluelight.enable = lib.mkOption { - type = lib.types.bool; - default = true; - description = '' - Whether to enable `hyprsunset` as a daemon. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - home.packages = with pkgs; [ - wl-clipboard - libsForQt5.qtstyleplugin-kvantum - libsForQt5.qt5ct - papirus-icon-theme - libsForQt5.qt5ct - hyprland-qtutils - ]; - - wayland.windowManager.hyprland = - let - hyprscroller = pkgs.callPackage ../../../../pkgs/hyprland/hyprscroller.nix { - src = inputs.hyprscroller-src; - version = inputs.hyprscroller-src.lastModified; - }; - in - { - enable = true; - plugins = [ hyprscroller ]; - settings = { - input.touchpad = lib.mkIf (config.liminalOS.formFactor == "laptop") { - natural_scroll = true; - disable_while_typing = true; - clickfinger_behavior = true; - tap-to-click = true; - scroll_factor = 0.15; - }; - - exec-once = [ - "hyprctl dispatch workspace 100000" - ]; - "$mod" = "SUPER"; - "$Left" = "H"; - "$Right" = "L"; - "$Up" = "K"; - "$Down" = "J"; - env = ( - lib.optionals cfg.gtkUseOpenGL [ - "GSK_RENDERER,ngl" - ] - ); - layerrule = [ - "blur,rofi" - "ignorezero,rofi" - "animation slide bottom 0.2 0.2 wind,rofi" - "blur,notifications" - "ignorezero,notifications" - "blur,swaync-notification-window" - "animation slide right 0.5 0.5,swaync-control-center" - "animation slide right 0.5 0.5,notifications" - "animation slide right 0.5 0.5,swaync-notification-window" - "ignorezero,swaync-notification-window" - "blur,swaync-control-center" - "ignorezero,swaync-control-center" - "blur,logout_dialog" - ]; - dwindle = { - pseudotile = "yes"; - preserve_split = "yes"; - }; - animations = { - enabled = "yes"; - bezier = [ - "wind, 0.05, 0.9, 0.1, 1.05" - "winIn, 0.1, 1.1, 0.1, 1.1" - "winOut, 0.3, -0.3, 0, 1" - "liner, 1, 1, 1, 1" - "windup, 0.05, 0.9, 0.1, 1.05" - ]; - animation = - [ - "windows, 1, 6, wind, slide" - "windowsIn, 1, 6, winIn, slide" - "windowsOut, 1, 5, winOut, slide" - "windowsMove, 1, 5, wind, slide" - "fade, 1, 10, default" - # "layers, 1, 8, default, slide" - "workspaces, 1, 5, wind, slidefadevert" - ] - ++ (lib.optionals (!osConfig.liminalOS.powersave) [ - "border, 1, 1, liner" - "borderangle, 1, 30, liner, loop" - ]); - }; - - general = - let - inherit (config.lib.stylix) colors; - in - { - gaps_in = "3"; - gaps_out = "8"; - border_size = "2"; - # "col.active_border" = pkgs.lib.mkForce "rgba(ca9ee6ff) rgba(f2d5cfff) 45deg"; - # "col.inactive_border" = pkgs.lib.mkForce "rgba(b4befecc) rgba(6c7086cc) 45deg"; - "col.active_border" = "rgba(${colors.base0A}ff) rgba(${colors.base09}ff) 45deg"; - "col.inactive_border" = "rgba(${colors.base01}cc) rgba(${colors.base02}cc) 45deg"; - layout = "scroller"; - resize_on_border = "true"; - }; - - misc = { - disable_hyprland_logo = true; - disable_splash_rendering = true; - }; - - cursor = { - hide_on_key_press = true; - }; - - decoration = { - rounding = "10"; - dim_special = "0.3"; - blur = { - enabled = "yes"; - size = "6"; - passes = "3"; - new_optimizations = "on"; - ignore_opacity = "on"; - xray = "false"; - special = true; - }; - shadow = { - enabled = false; - }; - }; - input = { - sensitivity = "-0.25"; - }; - plugin.scroller = { - column_widths = "onethird onehalf twothirds one"; - column_heights = "onethird onehalf twothirds one"; - }; - experimental.xx_color_management_v4 = true; - }; - }; - - # wayland.windowManager.hyprland.settings.input.touchpad = - # lib.mkIf (config.liminalOS.formFactor == "laptop") - # { - # natural_scroll = true; - # disable_while_typing = true; - # clickfinger_behavior = true; - # tap-to-click = false; - # scroll_factor = 0.15; - # }; - # - assertions = [ - { - assertion = - !cfg.screenlocker.useCrashFix || (cfg.screenlocker.useCrashFix && cfg.screenlocker.monitor != null); - message = "To use the Nvidia crash fix, you must set screenlocker.monitor to the monitor you want to use as the lock screen that blurs! Use `hyprctl monitors` to determine the monitor codes (should be something like DP-1, HDMI-A-1, etc)."; - } - ]; - }; -} diff --git a/users/kaitotlex/desktop-environment/hyprland/utilities.nix b/users/kaitotlex/desktop-environment/hyprland/utilities.nix deleted file mode 100644 index 40b3fff..0000000 --- a/users/kaitotlex/desktop-environment/hyprland/utilities.nix +++ /dev/null @@ -1,183 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.liminalOS.desktop.hyprland; -in -{ - config = lib.mkIf cfg.enable { - systemd.user.services = lib.mkIf cfg.bluelight.enable { - hyprsunset = { - Unit = { - Description = "Start the hyprsunset daemon"; - PartOf = "hyprland-session.target"; - After = "hyprland-session.target"; - }; - Service = { - Type = "simple"; - ExecStart = "${pkgs.hyprsunset}/bin/hyprsunset"; - Restart = "on-failure"; - RestartSec = 3; - }; - Install = { - WantedBy = [ "hyprland-session.target" ]; - }; - }; - }; - - services.hyprpaper.enable = true; - - programs.wlogout.enable = true; - - programs.rofi = { - enable = true; - package = pkgs.rofi-wayland; - terminal = "${pkgs.kitty}/bin/kitty"; - theme = - let - inherit (config.lib.formats.rasi) mkLiteral; - mkRgba = - opacity: color: - let - c = config.lib.stylix.colors; - r = c."${color}-rgb-r"; - g = c."${color}-rgb-g"; - b = c."${color}-rgb-b"; - in - mkLiteral "rgba ( ${r}, ${g}, ${b}, ${opacity} % )"; - mkRgb = mkRgba "100"; - rofiOpacity = builtins.toString (builtins.ceil (config.stylix.opacity.popups * 100)); - in - { - "*" = { - font = "${config.stylix.fonts.monospace.name} ${toString config.stylix.fonts.sizes.popups}"; - text-color = mkRgb "base05"; - background-color = mkRgba rofiOpacity "base00"; - }; - "window" = { - height = mkLiteral "20em"; - width = mkLiteral "30em"; - border-radius = mkLiteral "8px"; - border-width = mkLiteral "2px"; - padding = mkLiteral "1.5em"; - }; - "mainbox" = { - background-color = mkRgba rofiOpacity "base01"; - }; - "inputbar" = { - margin = mkLiteral "0 0 1em 0"; - }; - "prompt" = { - enabled = false; - }; - "entry" = { - placeholder = "Search..."; - padding = mkLiteral "1em 1em"; - text-color = mkRgb "base05"; - background-color = mkRgba rofiOpacity "base00"; - border-radius = mkLiteral "8px"; - }; - "element-text" = { - padding = mkLiteral "0.5em 1em"; - margin = mkLiteral "0 0.5em"; - }; - "element-icon" = { - size = mkLiteral "3ch"; - }; - "element-text selected" = { - background-color = mkRgba rofiOpacity "base0A"; - text-color = mkRgb "base01"; - border-radius = mkLiteral "8px"; - }; - }; - }; - - services.swayosd.enable = true; - - programs.hyprlock = lib.mkIf cfg.screenlocker.enable { - enable = true; - settings = { - general = { - hide_cursor = true; - grace = 0; - }; - background = { - monitor = cfg.screenlocker.monitor; - path = - if cfg.screenlocker.useCrashFix then "/tmp/__hyprlock-monitor-screenshot.png" else "screenshot"; - blur_passes = 3; - blur_size = 7; - noise = 0.0117; - contrast = 0.8916; - brightness = 0.8172; - vibrancy = 0.1696; - vibrancy_darkness = 0.0; - }; - input-field = { - monitor = ""; - size = "200, 50"; - outline_thickness = 3; - dots_size = 0.33; - dots_spacing = 0.15; - dots_center = false; - dots_rounding = -1; - outer_color = "rgb(151515)"; - inner_color = "rgb(200, 200, 200)"; - font_color = "rgb(10, 10, 10)"; - fade_on_empty = true; - fade_timeout = 1000; - placeholder_text = "Input Password..."; - hide_input = false; - rounding = -1; - check_color = "rgb(204, 136, 34)"; - fail_color = "rgb(204, 34, 34)"; - fail_text = "$FAIL ($ATTEMPTS)"; - fail_timeout = 2000; - fail_transition = 300; - capslock_color = -1; - numlock_color = -1; - bothlock_color = -1; - invert_numlock = false; - swap_font_color = false; - - position = "0, -20"; - halign = "center"; - valign = "center"; - }; - }; - }; - - services.hypridle = lib.mkIf cfg.idleDaemon.enable { - enable = true; - settings = { - general = { - lock_cmd = - if cfg.screenlocker.useCrashFix then - "pidof hyprlock || ${pkgs.grim}/bin/grim -o ${config.programs.hyprlock.settings.background.monitor} /tmp/__hyprlock-monitor-screenshot.png && ${pkgs.hyprlock}/bin/hyprlock" - else - "pidof hyprlock || hyprlock"; - before_sleep_cmd = "loginctl lock-session"; # lock before suspend. - after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display. - }; - listener = [ - { - timeout = 1500; - on-timeout = "loginctl lock-session"; - } - { - timeout = 330; # 5.5min - on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed - on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired. - } - { - timeout = 1800; - on-timeout = "systemctl suspend"; - } - ]; - }; - }; - }; -} diff --git a/users/kaitotlex/desktop-environment/hyprland/windowrules.nix b/users/kaitotlex/desktop-environment/hyprland/windowrules.nix deleted file mode 100644 index 017128d..0000000 --- a/users/kaitotlex/desktop-environment/hyprland/windowrules.nix +++ /dev/null @@ -1,95 +0,0 @@ -{ config, lib, ... }: -{ - config.wayland.windowManager.hyprland.settings.windowrulev2 = - lib.mkIf config.liminalOS.desktop.hyprland.enable - [ - "opacity 0.90 0.90,class:^(librewolf)$" - "opacity 0.90 0.90,class:^(floorp)$" - "opacity 0.90 0.90,class:^(zen-alpha)$" - "opacity 0.90 0.90,class:^(zen-beta)$" - "opacity 0.90 0.90,class:^(zen)$" - "opacity 0.90 0.90,class:^(Brave-browser)$" - "opacity 0.80 0.80,class:^(Steam)$" - "opacity 0.80 0.80,class:^(steam)$" - "opacity 0.80 0.80,class:^(steamwebhelper)$" - "opacity 0.80 0.80,class:^(Spotify)$" - "opacity 0.80 0.80,initialTitle:^(Spotify Premium)$" - "opacity 0.80 0.80,initialTitle:^(Spotify Free)$" - "opacity 0.80 0.80,class:^(code-oss)$" - "opacity 0.80 0.80,class:^(Code)$" - "opacity 0.80 0.80,class:^(code-url-handler)$" - "opacity 0.80 0.80,class:^(code-insiders-url-handler)$" - "opacity 0.80 0.80,class:^(kitty)$" - "opacity 0.80 0.80,class:^(neovide)$" - "opacity 0.80 0.80,class:^(org.kde.dolphin)$" - "opacity 0.80 0.80,class:^(thunar)$" - "opacity 0.80 0.80,class:^(org.kde.ark)$" - "opacity 0.80 0.80,class:^(nwg-look)$" - "opacity 0.80 0.80,class:^(qt5ct)$" - "opacity 0.80 0.80,class:^(qt6ct)$" - "opacity 0.80 0.80,class:^(kvantummanager)$" - "opacity 0.80 0.80,class:^(waypaper)$" - "opacity 0.80 0.80,class:^(org.pulseaudio.pavucontrol)$" - "opacity 0.80 0.80,class:^(com.github.wwmm.easyeffects)$" - "opacity 0.80 0.80,class:^(thunderbird)$" - - "opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk" - "opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk" - "opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk" - "opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt" - "opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk" - "opacity 0.80 0.80,class:^(discord)$ # Discord-Electron" - "opacity 0.80 0.80,class:^(vesktop)$ # Vesktop-Electron" - "opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron" - "opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk" - "opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt" - "opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk" - "opacity 0.80 0.80,class:^(signal)$ # Signal-Gtk" - "opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk" - "opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk" - "opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk" - "opacity 0.80 0.80,class:^(lutris)$ # Lutris game launcher" - - "opacity 0.80 0.70,class:^(pavucontrol)$" - "opacity 0.80 0.70,class:^(blueman-manager)$" - "opacity 0.80 0.70,class:^(nm-applet)$" - "opacity 0.80 0.70,class:^(nm-connection-editor)$" - "opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$" - - "float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$" - "float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$" - "float,title:^(Picture-in-Picture)$" - "float,class:^(librewolf)$,title:^(Library)$" - "float,class:^(floorp)$,title:^(Library)$" - "float,class:^(zen-alpha)$,title:^(Library)$" - "float,class:^(zen-beta)$,title:^(Library)$" - "float,class:^(zen)$,title:^(Library)$" - ''float,class:^(zen)$,title:^(.*Extension: \(Bitwarden Password Manager\).*)$'' - "float,class:^(vlc)$" - "float,class:^(kvantummanager)$" - "float,class:^(qt5ct)$" - "float,class:^(qt6ct)$" - "float,class:^(nwg-look)$" - "float,class:^(org.kde.ark)$" - "float,class:^(org.pulseaudio.pavucontrol)$" - "float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk" - "float,class:^(app.drey.Warp)$ # Warp-Gtk" - "float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt" - "float,class:^(yad)$ # Protontricks-Gtk" - "float,class:^(eog)$ # Imageviewer-Gtk" - "float,class:^(io.github.alainm23.planify)$ # planify-Gtk" - "float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk" - "float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk" - "float,class:^(blueman-manager)$" - "float,class:^(nm-applet)$" - "float,class:^(nm-connection-editor)$" - "float,class:^(org.kde.polkit-kde-authentication-agent-1)$" - "opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.gtk)$" - "opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.hyprland)$" - - ''size 70% 70%,class:^(zen)$,title:^(.*Extension: \(Bitwarden Password Manager\).*)$'' - "size 50% 50%,class:^(org.pulseaudio.pavucontrol)" - - "stayfocused, class:^(pinentry-)" # fix pinentry losing focus - ]; -} diff --git a/users/kaitotlex/desktop-environment/swaync.nix b/users/kaitotlex/desktop-environment/swaync.nix deleted file mode 100644 index 73b1b3e..0000000 --- a/users/kaitotlex/desktop-environment/swaync.nix +++ /dev/null @@ -1,325 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.liminalOS.desktop.swaync; -in -{ - options.liminalOS.desktop.swaync = { - enable = lib.mkOption { - type = lib.types.bool; - default = config.liminalOS.desktop.enable; - description = '' - Whether to enable the swaync notification center and daemon. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - services.swaync.enable = true; - services.swaync.settings = { - positionX = "right"; - positionY = "top"; - control-center-margin-top = 10; - control-center-margin-bottom = 10; - control-center-margin-right = 10; - control-center-margin-left = 10; - notification-icon-size = 64; - notification-body-image-height = 100; - notification-body-image-width = 200; - timeout = 10; - timeout-low = 5; - timeout-critical = 0; - fit-to-screen = false; - control-center-width = 500; - control-center-height = 800; - notification-window-width = 500; - keyboard-shortcuts = true; - image-visibility = "when-available"; - transition-time = 200; - hide-on-clear = false; - hide-on-action = true; - script-fail-notify = true; - widgets = [ - "title" - "mpris" - "volume" - "backlight" - "dnd" - "notifications" - ]; - widget-config = { - title = { - text = "Mission Control"; - clear-all-button = "true"; - button-text = " All Systems Go"; - }; - dnd = { - text = "Do Not Disturb"; - }; - label = { - max-lines = 1; - text = "Mission Control"; - }; - mpris = { - image-size = 96; - image-radius = 7; - }; - volume = { - label = "󰕾"; - }; - backlight = { - label = "󰃟"; - }; - }; - }; - - home.file.".config/swaync/style.css".text = '' - * { - font-family: ${config.stylix.fonts.monospace.name}; - } - .control-center .notification-row:focus, - .control-center .notification-row:hover { - background: #${config.lib.stylix.colors.base00} - } - .notification-row { - outline: none; - margin: 10px; - padding: 0; - } - .notification { - background: transparent; - padding: 0; - margin: 0px; - opacity: 0.75; - } - .notification-content { - background: #${config.lib.stylix.colors.base00}; - padding: 10px; - border-radius: 5px; - border: 2px solid #${config.lib.stylix.colors.base05}; - margin: 0; - } - .notification-default-action { - margin: 0; - padding: 0; - border-radius: 5px; - } - .close-button { - background: #${config.lib.stylix.colors.base08}; - color: #${config.lib.stylix.colors.base00}; - text-shadow: none; - padding: 0; - border-radius: 5px; - margin-top: 5px; - margin-right: 5px; - } - .close-button:hover { - box-shadow: none; - background: #${config.lib.stylix.colors.base0D}; - transition: all .15s ease-in-out; - border: none - } - .notification-action { - border: 2px solid #${config.lib.stylix.colors.base0D}; - border-top: none; - border-radius: 5px; - } - .notification-default-action:hover, - .notification-action:hover { - color: #${config.lib.stylix.colors.base0B}; - background: #${config.lib.stylix.colors.base0B} - } - .notification-default-action { - border-radius: 5px; - margin: 0px; - } - .notification-default-action:not(:only-child) { - border-bottom-left-radius: 7px; - border-bottom-right-radius: 7px - } - .notification-action:first-child { - border-bottom-left-radius: 10px; - background: #${config.lib.stylix.colors.base00} - } - .notification-action:last-child { - border-bottom-right-radius: 10px; - background: #${config.lib.stylix.colors.base00} - } - .inline-reply { - margin-top: 8px - } - .inline-reply-entry { - background: #${config.lib.stylix.colors.base00}; - color: #${config.lib.stylix.colors.base05}; - caret-color: #${config.lib.stylix.colors.base05}; - border: 1px solid #${config.lib.stylix.colors.base09}; - border-radius: 5px - } - .inline-reply-button { - margin-left: 4px; - background: #${config.lib.stylix.colors.base00}; - border: 1px solid #${config.lib.stylix.colors.base09}; - border-radius: 5px; - color: #${config.lib.stylix.colors.base05} - } - .inline-reply-button:disabled { - background: initial; - color: #${config.lib.stylix.colors.base03}; - border: 1px solid transparent - } - .inline-reply-button:hover { - background: #${config.lib.stylix.colors.base00} - } - .body-image { - margin-top: 6px; - background-color: #${config.lib.stylix.colors.base05}; - border-radius: 5px - } - .summary { - font-size: 16px; - font-weight: 700; - background: transparent; - color: rgba(158, 206, 106, 1); - text-shadow: none - } - .time { - font-size: 16px; - font-weight: 700; - background: transparent; - color: #${config.lib.stylix.colors.base05}; - text-shadow: none; - margin-right: 18px - } - .body { - font-size: 15px; - font-weight: 400; - background: transparent; - color: #${config.lib.stylix.colors.base05}; - text-shadow: none - } - .control-center { - background: #${config.lib.stylix.colors.base00}; - border: 2px solid #${config.lib.stylix.colors.base0C}; - border-radius: 5px; - opacity: 0.85; - } - .control-center-list { - background: transparent - } - .control-center-list-placeholder { - opacity: .5 - } - .floating-notifications { - background: transparent - } - .blank-window { - background: alpha(black, 0) - } - .widget-title { - color: #${config.lib.stylix.colors.base0B}; - background: #${config.lib.stylix.colors.base00}; - padding: 5px 10px; - margin: 10px 10px 5px 10px; - font-size: 1.5rem; - border-radius: 5px; - } - .widget-title>button { - font-size: 1rem; - color: #${config.lib.stylix.colors.base05}; - text-shadow: none; - background: #${config.lib.stylix.colors.base00}; - box-shadow: none; - border-radius: 5px; - } - .widget-title>button:hover { - background: #${config.lib.stylix.colors.base08}; - color: #${config.lib.stylix.colors.base00}; - } - .widget-dnd { - background: #${config.lib.stylix.colors.base00}; - padding: 5px 10px; - margin: 10px 10px 5px 10px; - border-radius: 5px; - font-size: large; - color: #${config.lib.stylix.colors.base0B}; - } - .widget-dnd>switch { - border-radius: 5px; - /* border: 1px solid #${config.lib.stylix.colors.base0B}; */ - background: #${config.lib.stylix.colors.base0B}; - } - .widget-dnd>switch:checked { - background: #${config.lib.stylix.colors.base08}; - border: 1px solid #${config.lib.stylix.colors.base08}; - } - .widget-dnd>switch slider { - background: #${config.lib.stylix.colors.base00}; - border-radius: 5px - } - .widget-dnd>switch:checked slider { - background: #${config.lib.stylix.colors.base00}; - border-radius: 5px - } - .widget-label { - margin: 10px 10px 5px 10px; - } - .widget-label>label { - font-size: 1rem; - color: #${config.lib.stylix.colors.base05}; - } - .widget-mpris { - color: #${config.lib.stylix.colors.base05}; - padding: 5px 10px; - margin: 10px 10px 5px 10px; - border-radius: 5px; - } - .widget-mpris > box > button { - border-radius: 5px; - } - .widget-mpris-player { - padding: 5px 10px; - margin: 10px - } - .widget-mpris-title { - font-weight: 700; - font-size: 1.25rem - } - .widget-mpris-subtitle { - font-size: 1.1rem - } - .widget-menubar>box>.menu-button-bar>button { - border: none; - background: transparent - } - .topbar-buttons>button { - border: none; - background: transparent - } - .widget-volume { - background: #${config.lib.stylix.colors.base01}; - padding: 5px; - margin: 10px 10px 5px 10px; - border-radius: 5px; - font-size: x-large; - color: #${config.lib.stylix.colors.base05}; - } - .widget-volume>box>button { - background: #${config.lib.stylix.colors.base0B}; - border: none - } - .per-app-volume { - background-color: #${config.lib.stylix.colors.base00}; - padding: 4px 8px 8px; - margin: 0 8px 8px; - border-radius: 5px; - } - .widget-backlight { - background: #${config.lib.stylix.colors.base01}; - padding: 5px; - margin: 10px 10px 5px 10px; - border-radius: 5px; - font-size: x-large; - color: #${config.lib.stylix.colors.base05} - } - ''; - }; -} diff --git a/users/kaitotlex/desktop-environment/waybar/default.nix b/users/kaitotlex/desktop-environment/waybar/default.nix deleted file mode 100644 index e8b9def..0000000 --- a/users/kaitotlex/desktop-environment/waybar/default.nix +++ /dev/null @@ -1,424 +0,0 @@ -{ - pkgs, - config, - lib, - osConfig, - ... -}: -let - cfg = config.liminalOS.desktop.waybar; - theme = config.lib.stylix; - palette = theme.colors; -in -{ - options.liminalOS.desktop.waybar = { - enable = lib.mkOption { - type = lib.types.bool; - default = config.liminalOS.desktop.enable; - description = '' - Whether to enable Waybar and the liminalOS rice. - ''; - }; - }; - config = lib.mkIf cfg.enable { - home.packages = with pkgs; [ playerctl ]; - programs.waybar = - let - isDesktop = osConfig.liminalOS.formFactor == "desktop"; - isLaptop = osConfig.liminalOS.formFactor == "laptop"; - in - { - enable = true; - systemd.enable = true; - systemd.target = lib.mkIf config.liminalOS.desktop.hyprland.enable "hyprland-session.target"; - settings.mainBar = { - name = "bar0"; - reload_style_on_change = true; - position = "top"; - layer = "top"; - height = 37; - margin-top = 0; - margin-bottom = 0; - margin-left = 0; - margin-right = 0; - modules-left = - [ - "custom/launcher" - ] - ++ (lib.optionals isDesktop [ - - "custom/playerctl#backward" - "custom/playerctl#play" - "custom/playerctl#foward" - ]) - ++ [ - "custom/playerlabel" - ] - ++ (lib.optionals isLaptop [ - "hyprland/workspaces" - ]); - modules-center = lib.mkIf isDesktop [ - "cava#left" - "hyprland/workspaces" - "cava#right" - ]; - modules-right = [ - "tray" - "battery" - "pulseaudio" - "network" - "clock" - ]; - clock = { - format = " {:%a, %D, %T}"; - tooltip = "true"; - tooltip-format = "{:%Y %B}\n{calendar}"; - format-alt = " {:%d/%m}"; - }; - "hyprland/workspaces" = { - disable-scroll = false; - on-scroll-down = "${pkgs.hyprnome}/bin/hyprnome"; - on-scroll-up = "${pkgs.hyprnome}/bin/hyprnome --previous"; - format = "{icon}"; - on-click = "activate"; - format-icons = { - active = ""; - default = ""; - urgent = ""; - special = "󰠱"; - }; - sort-by-number = true; - }; - "cava#left" = { - framerate = 60; - autosens = 1; - bars = 18; - lower_cutoff_freq = 50; - higher_cutoff_freq = 10000; - method = "pipewire"; - source = "auto"; - stereo = true; - reverse = false; - bar_delimiter = 0; - monstercat = false; - waves = false; - input_delay = 2; - format-icons = [ - "" - "" - "" - "" - "" - "" - "" - "" - ]; - }; - "cava#right" = { - framerate = 60; - autosens = 1; - bars = 18; - lower_cutoff_freq = 50; - higher_cutoff_freq = 10000; - method = "pipewire"; - source = "auto"; - stereo = true; - reverse = false; - bar_delimiter = 0; - monstercat = false; - waves = false; - input_delay = 2; - format-icons = [ - "" - "" - "" - "" - "" - "" - "" - "" - ]; - }; - "custom/playerctl#backward" = { - format = "󰙣 "; - on-click = "playerctl previous"; - on-scroll-up = "playerctl volume .05+"; - on-scroll-down = "playerctl volume .05-"; - }; - "custom/playerctl#play" = { - format = "{icon}"; - return-type = "json"; - exec = "playerctl -a metadata --format '{\"text\": \"{{artist}} - {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F"; - on-click = "playerctl play-pause"; - on-scroll-up = "playerctl volume .05+"; - on-scroll-down = "playerctl volume .05-"; - format-icons = { - Playing = "󰏥 "; - Paused = ""; - Stopped = ""; - }; - }; - "custom/playerctl#foward" = { - format = "󰙡 "; - on-click = "playerctl next"; - on-scroll-up = "playerctl volume .05+"; - on-scroll-down = "playerctl volume .05-"; - }; - "custom/playerlabel" = { - format = "󰎈 {} 󰎈"; - return-type = "json"; - max-length = 40; - exec = "playerctl -a metadata --format '{\"text\": \"{{artist}} - {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F"; - on-click = ""; - }; - battery = { - states = { - good = 95; - warning = 30; - critical = 15; - }; - format = "{icon} {capacity}%"; - format-charging = " {capacity}%"; - format-plugged = " {capacity}% "; - format-alt = "{icon} {time}"; - format-icons = [ - "" - "" - "" - "" - "" - ]; - }; - - memory = { - format = "󰍛 {}%"; - format-alt = "󰍛 {used}/{total} GiB"; - interval = 5; - }; - cpu = { - format = "󰻠 {usage}%"; - format-alt = "󰻠 {avg_frequency} GHz"; - interval = 5; - }; - network = { - format-wifi = " {signalStrength}%"; - format-ethernet = "󰈀 100% "; - tooltip-format = "Connected to {essid} {ifname} via {gwaddr}"; - format-linked = "{ifname} (No IP)"; - format-disconnected = "󰖪 0% "; - }; - tray = { - icon-size = 20; - spacing = 8; - }; - pulseaudio = { - format = "{icon} {volume}%"; - format-muted = "󰝟"; - format-icons = { - default = [ - "󰕿" - "󰖀" - "󰕾" - ]; - }; - scroll-step = 5; - on-click = "${pkgs.pavucontrol}/bin/pavucontrol"; - }; - "custom/launcher" = - let - toggle-colorscheme = pkgs.writeShellScriptBin "toggle-colorscheme.sh" '' - POLARITY_FILE="/etc/polarity" - - if [[ ! -f "$POLARITY_FILE" ]]; then - exit 0 - elif [[ ! -r "$POLARITY_FILE" ]]; then - echo "Error: Cannot read $POLARITY_FILE. Check permissions." >&2 - exit 1 - fi - - current_scheme=$(cat "$POLARITY_FILE") - if [[ $? -ne 0 ]]; then - echo "Error: Failed to read content from $POLARITY_FILE." >&2 - exit 1 - fi - - current_scheme=$(echo "$current_scheme" | xargs) - - target_service="" - case "$current_scheme" in - dawn) - target_service="colorscheme-dusk.service" - ;; - dusk) - target_service="colorscheme-dawn.service" - ;; - *) - echo "Error: Invalid content '$current_scheme' found in $POLARITY_FILE. Expected 'dawn' or 'dusk'." >&2 - exit 1 - ;; - esac - - echo "Current scheme: '$current_scheme'. Attempting to start '$target_service'..." - systemctl start "$target_service" - - if [[ $? -ne 0 ]]; then - echo "Error: Failed to execute 'systemctl start $target_service'. Check systemctl logs or permissions." >&2 - exit 1 - else - echo "Command 'systemctl start $target_service' executed successfully." - fi - - exit 0 - ''; - in - { - format = ""; - on-click = "pkill -9 rofi || rofi -show drun"; - on-click-right = "${toggle-colorscheme}/bin/toggle-colorscheme.sh"; - tooltip = "false"; - }; - }; - style = - '' - * { - border: none; - border-radius: 0px; - font-family: GeistMono Nerd Font; - font-size: 13px; - min-height: 0; - } - window#waybar { - background: #${palette.base01}; - } - - #cava.left, #cava.right { - background: #${palette.base00}; - margin: 4px; - padding: 6px 16px; - color: #${palette.base00}; - } - #cava.left { - border-radius: 24px 10px 24px 10px; - } - #cava.right { - border-radius: 10px 24px 10px 24px; - } - #workspaces { - background: #${palette.base00}; - color: #${palette.base00} - } - #workspaces button { - padding: 0px 5px; - margin: 0px 3px; - border-radius: 16px; - color: transparent; - background: #${palette.base01}; - transition: all 0.3s ease-in-out; - } - - #workspaces button.active { - background-color: #${palette.base0A}; - color: #${palette.base01}; - border-radius: 16px; - min-width: 50px; - background-size: 400% 400%; - transition: all 0.3s ease-in-out; - } - - #workspaces button:hover { - background-color: #${palette.base05}; - color: #${palette.base01}; - border-radius: 16px; - min-width: 50px; - background-size: 400% 400%; - } - - #tray, #pulseaudio, #network, #battery, - #custom-playerctl.backward, #custom-playerctl.play, #custom-playerctl.foward{ - background: #${palette.base00}; - font-weight: bold; - margin: 4px 0px; - } - #tray, #pulseaudio, #network, #battery{ - color: #${palette.base05}; - border-radius: 10px 24px 10px 24px; - padding: 0 20px; - margin-left: 7px; - } - #clock { - color: #${palette.base05}; - background: #${palette.base00}; - border-radius: 0px 0px 0px 40px; - padding: 8px 10px 8px 25px; - margin-left: 7px; - font-weight: bold; - font-size: 14px; - } - #custom-launcher { - color: #${palette.base0A}; - background: #${palette.base00}; - border-radius: 0px 0px 40px 0px; - margin: 0px; - padding: 0px 35px 0px 15px; - font-size: 24px; - } - - #custom-playerctl.backward, #custom-playerctl.play, #custom-playerctl.foward { - background: #${palette.base00}; - font-size: 20px; - } - #custom-playerctl.backward:hover, #custom-playerctl.play:hover, #custom-playerctl.foward:hover{ - color: #${palette.base05}; - } - #custom-playerctl.backward { - color: #${palette.base08}; - border-radius: 24px 0px 0px 10px; - padding-left: 16px; - margin-left: 7px; - } - #custom-playerctl.play { - color: #${palette.base0A}; - padding: 0 5px; - } - #custom-playerctl.foward { - color: #${palette.base08}; - border-radius: 0px 10px 24px 0px; - padding-right: 12px; - margin-right: 7px - } - #custom-playerlabel { - background: #${palette.base00}; - color: #${palette.base05}; - padding: 0 20px; - border-radius: 24px 10px 24px 10px; - margin: 4px 0; - font-weight: bold; - } - #window{ - background: #${palette.base00}; - padding-left: 15px; - padding-right: 15px; - border-radius: 16px; - margin-top: 4px; - margin-bottom: 4px; - font-weight: normal; - font-style: normal; - } - '' - + (lib.optionalString isLaptop '' - #workspaces { - margin: 4px; - padding: 6px 16px; - border-radius: 24px 10px 24px 10px; - } - '') - + (lib.optionalString isDesktop '' - #workspaces { - margin: 4px 5px; - padding: 6px 5px; - border-radius: 16px; - } - ''); - }; - }; -} diff --git a/users/kaitotlex/home.nix b/users/kaitotlex/home.nix index d50bd1f..e13837c 100644 --- a/users/kaitotlex/home.nix +++ b/users/kaitotlex/home.nix @@ -22,25 +22,6 @@ home.packages = with pkgs; [ # here is some command line tools I use frequently # feel free to add your own or remove some of them - #gfortran1 - gqrx - urh - rtl_433 - rng-tools - nheko - openvpn - tor-browser - bambu-studio - gimp3 - openssl - cmake - obs-studio - python312Packages.pip - pipx - rpcs3 - dolphin-emu - affine-bin - elmPackages.elm kicad android-tools wacomtablet @@ -52,6 +33,7 @@ arduino-language-server geoclue2 lua + tetrio-desktop prismlauncher asciiquarium-transparent fortune @@ -98,6 +80,7 @@ sl piper nwg-displays + dolphin xfce.thunar tailwindcss @@ -162,7 +145,7 @@ # productivity glow # markdown previewer in terminal obsidian # markdown previewer - #thunderbird-unwrapped # Full Feature Email Client + thunderbird-unwrapped # Full Feature Email Client #sway Modules swaybg @@ -183,6 +166,7 @@ texlivePackages.csquotes texlivePackages.csquotes-de texlivePackages.collection-latexextra + texpresso btop # replacement of htop/nmon iotop # io monitoring @@ -208,6 +192,7 @@ git-credential-oauth # messaging apps + vesktop signal-desktop gh @@ -215,7 +200,7 @@ netcat nmap metasploit - #john + john lynis hydra-cli #ghidra @@ -230,12 +215,24 @@ extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; }; - programs.vesktop.enable = true; + programs.rofi = { + enable = true; + cycle = true; + location = "center"; + package = pkgs.rofi-wayland; + }; + + services.dunst.enable = true; programs.git = { enable = true; userName = "KaitoTLex"; - userEmail = "renl@kaitotlex.systems"; + userEmail = "wlin@kaitotlex.systems"; + signing = { + signByDefault = true; + key = "2AE6771F14386F9B85E48685A9209668BFA39C0E"; + }; + }; programs.neovim.defaultEditor = true; @@ -247,38 +244,7 @@ enableBashIntegration = true; enableFishIntegration = true; }; - programs.iamb = { - enable = true; - package = inputs.iamb.packages.${pkgs.stdenv.targetPlatform.system}.default; - settings = { - profiles."matrix.org".user_id = "@kaitotlex:matrix.org"; - settings = { - image_preview = { }; - notifications = { - enabled = true; - show_message = true; - }; - }; - }; - }; - # programs.iamb = { - # enable = true; - # packages = inputs.iamb.packages.${pkgs.stdenv.targetPlatform.system}.default; - # settings = { - # profiles."matrix.org" = { - # user_id = "@kaitotlex:matrix.org"; - # style = "restore"; - # }; - # settings = { - # image_preview = { }; - # image_preview.protocol.type = "kitty"; - # notifications = { - # enabled = true; - # show_message = true; - # }; - # }; - # }; - # }; + programs.kitty = { enable = true; settings = { @@ -299,10 +265,10 @@ }; }; - # programs.firefox = { - # enable = true; - # package = pkgs.firefox-devedition; - # }; + programs.firefox = { + enable = true; + package = pkgs.firefox-devedition; + }; programs.ripgrep.enable = true; programs.oh-my-posh = { diff --git a/users/kaitotlex/stylix/default.nix b/users/kaitotlex/stylix/default.nix index 035671e..5ad9af1 100644 --- a/users/kaitotlex/stylix/default.nix +++ b/users/kaitotlex/stylix/default.nix @@ -3,9 +3,7 @@ waybar.enable = false; kitty.variant256Colors = true; neovim.enable = false; - hyprland.enable = false; - hyprlock.enable = false; - rofi.enable = false; - swaync.enable = false; + sway.enable = true; + swaylock.enable = true; }; }